desktop_example.anubis 5.89 KB

   
   
   
   An example using 'widgets3/desktop.anubis'. 
   

read widgets3/host_window.anubis   
read widgets3/tools.anubis
read widgets3/image.anubis   
read widgets3/box.anubis   
read widgets3/table.anubis   
read widgets3/text.anubis   
read widgets3/button.anubis   
read widgets3/desktop.anubis   
read widgets3/menu_manager.anubis   
read widgets3/menus.anubis   
read widgets3/window.anubis   
   
   
define Widget
   my_support
     (
       WidgetParameters parms, 
       String jpg_filename
     ) =
   with image = create_image(anubis_directory+"/library/widgets3/"+jpg_filename), 
   create_box(frame(parms),6,create_window_automatic(parms,var((Int32)250),var((Int32)200),image)). 
   
define Widget
   my_support2
     (
       WidgetParameters parms, 
       String jpg_filename
     ) =
   create_image(anubis_directory+"/library/widgets3/"+jpg_filename).
  
   
   
define Widget
   command_button
     (
       WidgetParameters parms, 
       WidgetParameters grey_parms, 
       WidgetSupport supp, 
       String text
     ) =
   create_button
     (
       100,25,
       push_down(grey_parms), 
       (WidgetEventToolBox etb) |-> command(supp) <-
          if *command(supp) is 
            {
              hide   then show,
              show   then hide, 
              expose then alert, 
              delete then alert
            },
   
       (One u) |-> if *command(supp) is hide
         then center_text(grey_parms,text)
         else center_text(parms,text),
   
       []
     ). 

   
define MenuItem
   command_menu
     (
       String name, 
       WidgetParameters parms, 
       WidgetSupport supp, 
     ) =
   item((One u) |-> if *command(supp) is show then "* "+name else "    "+name, 
     (WidgetEventToolBox etb) |-> command(supp) <-
     if *command(supp) is 
       {
         hide then show, 
         show then hide,
         expose then alert, 
         delete then alert
       }).

   
define List(MenuItem)   
   numbers_list
     (
       Var(MenuCommand) menu_command_v, 
       WidgetParameters parms,
       Int32 n
     ) =
   if n =< 0 then [] else
   with action = (WidgetEventToolBox etb) |-> print("You choosed "+n+"\n");
                    menu_command_v <- clear, 
   if n (mod 10) = 0
   then [separator,
         item(integer_to_string(n),action) 
          . numbers_list(menu_command_v,parms,n-1)]
   else [item(integer_to_string(n),action) 
          . numbers_list(menu_command_v,parms,n-1)].
   
   
global define One
   try_desktop
     (
       List(String) args 
     ) =   
   if create_default_parameters_set is 
     {
       failure then print("Cannot create default parameter set.\n"),
       success(parms) then if create_default_parameters_set is 
     {
       failure then print("Cannot create default parameter set.\n"),
       success(grey_parms) then 
         font_color_v(grey_parms) <- *light_color_v(grey_parms); 
   with support1 = support(20,10,my_support(parms,"flowers.jpg"),var((WidgetSupportCommand)show)),
   with support2 = support(150,300,my_support2(parms,"alienor.jpg"),var((WidgetSupportCommand)show)),
   with support2a = support(150,300,my_support2(parms,"alienor.jpg"),var((WidgetSupportCommand)show)),
   with support2b = support(150,300,my_support2(parms,"alienor.jpg"),var((WidgetSupportCommand)show)),
   with support3 = support(10,100,my_support(parms,"anubis.jpg"),var((WidgetSupportCommand)show)),
   with support3a = support(10,100,my_support(parms,"anubis.jpg"),var((WidgetSupportCommand)show)),
   with support4 = support(200,200,my_support(parms,"gisant_alienor.jpg"),var((WidgetSupportCommand)show)),
   with menu_command_v = var((MenuCommand)clear), 
   forget(
   open_host_window("Desktop Example",
   create_menu_manager(parms,menu_command_v,
   create_table(borders(parms,2,2),0,0,
     [
       [
         cell(center,left,create_button(100,25,push_down(parms),
           (WidgetEventToolBox etb) |-> 
              menu_command_v <- add_top_bottom(etb, 
                create_menu(parms,
                    [
                     sub_menu("Numbers",
                              reverse(numbers_list(menu_command_v,parms,100))), 
                     sub_menu("Images",
                              [
                                command_menu("Flowers",parms,support1),
                                separator, 
                                command_menu("Alienor 1",parms,support2),
                                command_menu("Anubis",parms,support3),
                                command_menu("Alienor 2",parms,support4)
                              ]), 
                     separator, 
                     item("Quit",(WidgetEventToolBox etb1) |-> forget(queue_event(etb,quit))),
                    ],menu_command_v),rect(0,0,100,25)),
           (One u) |-> center_text(parms,"Menu"),
         []))
       ],
       [ cell(center,center,
         create_desktop(600,400,
                       rgb(100,100,100),
                       failure, 
                       (One u) |-> not_handled([]), 
                       [support4,support3,support3a,support2,support2a,support2b,support1],
                       var((WidgetDesktopCommand)none)))
       ],
       [ cell(top,left,
           create_table(nude,0,0,
            [[
              cell(top,left,command_button(parms,grey_parms,support1,"Flowers")),
              cell(top,left,command_button(parms,grey_parms,support2,"Alienor 1")),
              cell(top,left,command_button(parms,grey_parms,support3,"Anubis")),
              cell(top,left,command_button(parms,grey_parms,support4,"Alienor 2")),
            ]]))
       ],
       [ cell(center,left,
           create_text(
     "Above is a grey 'desktop' containing several 'supports'. Click on a support\n"+ 
     "for moving it or putting it on top of the 'stack' of supports. Also use the\n"+
     "buttons which make the corresponding support disappear or reappear.",
                       *font_v(parms),rgb(0,0,0),10))
       ]
     ]))))}}.