0065686b50b83f89bda883314c68ba9932d291e6
[tpg/acess2.git] / Usermode / Applications / axwin3_src / Interface / main.c
1 /*
2  * Acess2 GUI v3 User Interface
3  * - By John Hodge (thePowersGang)
4  *
5  * main.c
6  * - Interface core
7  */
8 #include <acess/sys.h>
9 #include <stdlib.h>
10 #include <axwin3/axwin.h>
11 #include <axwin3/widget.h>
12 #include <axwin3/menu.h>
13
14 #define SIDEBAR_WIDTH   36
15
16 // === PROTOTYPES ===
17 void    create_sidebar(void);
18 void    create_mainmenu(void);
19
20 // === GLOBALS ===
21 tHWND   gSidebar;
22 tHWND   gSystemMenu;
23 tAxWin3_Widget  *gSidebarRoot;
24  int    giScreenWidth;
25  int    giScreenHeight;
26
27 // === CODE ===
28 int systembutton_fire(tAxWin3_Widget *Widget)
29 {
30         _SysDebug("SystemButton pressed");
31         AxWin3_Menu_ShowAt(gSystemMenu, SIDEBAR_WIDTH, 0);
32         return 0;
33 }
34
35 int main(int argc, char *argv[])
36 {
37         // Connect to AxWin3 Server
38         AxWin3_Connect(NULL);
39         
40         create_sidebar();
41         create_mainmenu();
42         
43         // Idle loop
44         AxWin3_MainLoop();
45         
46         return 0;
47 }
48
49 void create_sidebar(void)
50 {
51         tAxWin3_Widget  *btn, *txt, *ele;
52
53         // TODO: Register to be told when the display layout changes
54         AxWin3_GetDisplayDims(0, NULL, NULL, &giScreenWidth, &giScreenHeight);
55
56         // Create sidebar
57         gSidebar = AxWin3_Widget_CreateWindow(NULL, SIDEBAR_WIDTH, giScreenHeight, ELEFLAG_VERTICAL);
58         AxWin3_MoveWindow(gSidebar, 0, 0);
59         gSidebarRoot = AxWin3_Widget_GetRoot(gSidebar); 
60
61         // - Main menu
62         btn = AxWin3_Widget_AddWidget(gSidebarRoot, ELETYPE_BUTTON, ELEFLAG_NOSTRETCH, "SystemButton");
63         AxWin3_Widget_SetSize(btn, SIDEBAR_WIDTH);
64         AxWin3_Widget_SetFireHandler(btn, systembutton_fire);
65         txt = AxWin3_Widget_AddWidget(btn, ELETYPE_IMAGE, 0, "SystemLogo");
66         AxWin3_Widget_SetText(txt, "file:///Acess/Apps/AxWin/3.0/AcessLogoSmall.sif");
67         
68         // - Plain <hr/> style spacer
69         ele = AxWin3_Widget_AddWidget(gSidebarRoot, ELETYPE_SPACER, ELEFLAG_NOSTRETCH, "SideBar Spacer Top");
70         AxWin3_Widget_SetSize(ele, 4);
71
72         // TODO: Program list
73         ele = AxWin3_Widget_AddWidget(gSidebarRoot, ELETYPE_BOX, ELEFLAG_VERTICAL, "ProgramList");
74
75         // - Plain <hr/> style spacer
76         ele = AxWin3_Widget_AddWidget(gSidebarRoot, ELETYPE_SPACER, ELEFLAG_NOSTRETCH, "SideBar Spacer Top");
77         AxWin3_Widget_SetSize(ele, 4);
78
79         // > Version/Time
80         ele = AxWin3_Widget_AddWidget(gSidebarRoot, ELETYPE_BOX, ELEFLAG_VERTICAL|ELEFLAG_NOSTRETCH, "Version/Time");
81         txt = AxWin3_Widget_AddWidget(ele, ELETYPE_TEXT, ELEFLAG_NOSTRETCH, "Version String");
82         AxWin3_Widget_SetSize(txt, 20);
83         AxWin3_Widget_SetText(txt, "3.0");
84
85         // Show!
86         AxWin3_ShowWindow(gSidebar, 1); 
87         
88 }
89
90 void mainmenu_app_textedit(void *unused)
91 {
92         _SysDebug("TODO: Launch text editor");
93 }
94
95 void mainmenu_run_dialog(void *unused)
96 {
97         _SysDebug("TODO: Show run dialog");
98 }
99
100 void create_mainmenu(void)
101 {
102         gSystemMenu = AxWin3_Menu_Create(gSidebar);
103         
104         AxWin3_Menu_AddItem(gSystemMenu, "Text &Editor\tWin+E", mainmenu_app_textedit, NULL, 0, NULL);
105         AxWin3_Menu_AddItem(gSystemMenu, NULL, NULL, NULL, 0, NULL);
106         AxWin3_Menu_AddItem(gSystemMenu, "Run\tWin+R", mainmenu_run_dialog, NULL, 0, NULL);
107 }
108

UCC git Repository :: git.ucc.asn.au