Subversion Repositories Kolibri OS

Rev

Rev 6559 | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. #include <stdlib.h>
  2. #include <string.h>
  3. #include <stdint.h>
  4. #include <kos32sys.h>
  5. #include <kolibri_gui.h>
  6. #include <kolibri_kmenu.h>
  7.  
  8. int main()
  9. {
  10.   /* Load all libraries, initialize global tables like system color table and
  11.      operations table. kolibri_gui_init() will EXIT with mcall -1 if it fails
  12.      to do it's job. This is all you need to call and all libraries and GUI
  13.      elements can be used after a successful call to this function
  14.   */
  15.   kolibri_gui_init();
  16.   kolibri_kmenu_init();
  17.   /* Set gui_event to REDRAW so that window is drawn in first iteration  */
  18.   unsigned int gui_event = KOLIBRI_EVENT_REDRAW;
  19.   oskey_t key;
  20.  
  21.   kolibri_window *main_window = kolibri_new_window(50, 50, 400, 200, "kmenu example");
  22.  
  23.   kmenu_init(NULL);
  24.  
  25.   ksubmenu_t *sub_menu1 = ksubmenu_new();
  26.   ksubmenu_add(sub_menu1, kmenuitem_new(KMENUITEM_NORMAL, "Open", 101));
  27.   ksubmenu_add(sub_menu1, kmenuitem_new(KMENUITEM_NORMAL, "Save", 102));
  28.   ksubmenu_add(sub_menu1, kmenuitem_new(KMENUITEM_SEPARATOR, NULL, 0));
  29.   ksubmenu_add(sub_menu1, kmenuitem_new(KMENUITEM_NORMAL, "Exit", 103));
  30.  
  31.   ksubmenu_t *sub_menu2 = ksubmenu_new();
  32.   ksubmenu_add(sub_menu2, kmenuitem_new(KMENUITEM_NORMAL, "Find", 201));
  33.   ksubmenu_add(sub_menu2, kmenuitem_new(KMENUITEM_NORMAL, "Replace", 202));
  34.  
  35.   ksubmenu_t *sub_menu22 = ksubmenu_new();
  36.   ksubmenu_add(sub_menu22, kmenuitem_new(KMENUITEM_NORMAL, "CP1251", 211));
  37.   ksubmenu_add(sub_menu22, kmenuitem_new(KMENUITEM_NORMAL, "UTF-8", 212));
  38.   ksubmenu_add(sub_menu2, kmenuitem__submenu_new(KMENUITEM_SUBMENU, "Encoding", sub_menu22));
  39.  
  40.   ksubmenu_t *main_menu = ksubmenu_new();
  41.   ksubmenu_add(main_menu, kmenuitem__submenu_new(KMENUITEM_SUBMENU, "File", sub_menu1));
  42.   ksubmenu_add(main_menu, kmenuitem__submenu_new(KMENUITEM_SUBMENU, "Edit", sub_menu2));
  43.  
  44.   unsigned press_key;
  45.  
  46.   do  /* Start of main activity loop */
  47.     {
  48.       if(gui_event == KOLIBRI_EVENT_REDRAW)
  49.  
  50.         {
  51.           kolibri_handle_event_redraw(main_window);
  52.           kmainmenu_draw(main_menu);
  53.         }
  54.       else if(gui_event == KOLIBRI_EVENT_KEY)
  55.         {
  56.           key = get_key();
  57.           switch (key.code)
  58.           {
  59.           }
  60.           press_key = key.val;
  61.  
  62.           kolibri_handle_event_key(main_window, key);
  63.         }
  64.       else if(gui_event == KOLIBRI_EVENT_BUTTON)
  65.         {
  66.           unsigned int pressed_button = kolibri_button_get_identifier();
  67.           switch (pressed_button)
  68.           {
  69.               case 101:
  70.                 debug_board_write_str("File->Open\n");
  71.                         break;
  72.               case 102:
  73.                 debug_board_write_str("File->Save\n");
  74.                         break;
  75.               case 103:
  76.                 debug_board_write_str("File->Exit\n");
  77.                         break;
  78.               case 201:
  79.                 debug_board_write_str("Edit->Find\n");
  80.                         break;
  81.               case 202:
  82.                 debug_board_write_str("Edit->Replace\n");
  83.                         break;
  84.               case 211:
  85.                 debug_board_write_str("Edit->Encoding->cp1251\n");
  86.                         break;
  87.               case 212:
  88.                 debug_board_write_str("Edit->Encoding->UTF-8\n");
  89.                         break;
  90.               case BUTTON_CLOSE:
  91.                         kolibri_exit();
  92.           }
  93.          }
  94.       else if(gui_event == KOLIBRI_EVENT_MOUSE)
  95.         {
  96.           kolibri_handle_event_mouse(main_window);
  97.           kmainmenu_dispatch_cursorevent(main_menu);
  98.         }
  99.  
  100.     } while((gui_event = get_os_event())); /* End of main activity loop */
  101.  
  102.   /* kolibri_quit(); */
  103.  
  104.   return 0;
  105. }
  106.