2 * Acess2 GUI (AxWin) Version 3
3 * - By John Hodge (thePowersGang)
12 #include <axwin3/keysyms.h>
14 #include "include/lowlevel.h"
17 extern void Video_Setup(void);
18 extern void WM_Initialise(void);
19 extern int Renderer_Menu_Init(void);
20 extern int Renderer_Widget_Init(void);
21 extern int Renderer_Background_Init(void);
22 extern int Renderer_Framebuffer_Init(void);
23 extern int Renderer_RichText_Init(void);
24 extern void WM_Update(void);
25 extern void WM_Hotkey_Register(int nKeys, uint32_t *Keys, const char *ActionName);
28 void ParseCommandline(int argc, char **argv);
31 const char *gsTerminalDevice = NULL;
32 const char *gsMouseDevice = NULL;
34 int giScreenWidth = 640;
35 int giScreenHeight = 480;
37 int giTerminalFD = -1;
38 int giTerminalFD_Input = 0;
41 #define __INSTALL_ROOT "/Acess/Apps/AxWin/3.0"
43 const char *gsInstallRoot = __INSTALL_ROOT;
44 const char *gsInterfaceApp = __INSTALL_ROOT"/AxWinUI";
49 * \brief Program Entrypoint
51 int main(int argc, char *argv[])
53 ParseCommandline(argc, argv);
55 if( gsTerminalDevice == NULL ) {
56 gsTerminalDevice = "/Devices/VTerm/6";
58 if( gsMouseDevice == NULL ) {
59 gsMouseDevice = "/Devices/Mouse/system";
67 Renderer_Widget_Init();
68 Renderer_Background_Init();
69 Renderer_Framebuffer_Init();
70 Renderer_RichText_Init();
73 // TODO: Move these to config
75 keys[0] = KEYSYM_LEFTGUI; keys[1] = KEYSYM_r;
76 WM_Hotkey_Register(2, keys, "Interface>Run");
77 keys[0] = KEYSYM_LEFTGUI; keys[1] = KEYSYM_t;
78 WM_Hotkey_Register(2, keys, "Interface>Terminal");
79 keys[0] = KEYSYM_LEFTGUI; keys[1] = KEYSYM_e;
80 WM_Hotkey_Register(2, keys, "Interface>TextEdit");
82 // Spawn interface root
85 int server_tid = gettid();
86 _SysDebug("server_tid = %i", server_tid);
87 char server_info[] = "AXWIN3_SERVER=00000";
88 const char *envp[] = {server_info, NULL};
89 const char *argv[] = {gsInterfaceApp, NULL};
90 _SysDebug("server_tid = %i, &server_tid = %p", server_tid, &server_tid);
91 sprintf(server_info, "AXWIN3_SERVER=%i", server_tid);
92 // TODO: Does the client need FDs?
93 int rv = _SysSpawn(gsInterfaceApp, argv, envp, 0, NULL, NULL);
95 _SysDebug("_SysSpawn chucked a sad, rv=%i, errno=%i", rv, _errno);
108 Input_FillSelect(&nfds, &fds);
109 IPC_FillSelect(&nfds, &fds);
112 if( _SysSelect(nfds, &fds, NULL, NULL, NULL, THREAD_EVENT_IPCMSG) == -1 ) {
113 _SysDebug("ERROR: select() returned -1");
117 Input_HandleSelect(&fds);
118 IPC_HandleSelect(&fds);
123 void PrintUsage(void)
125 fprintf(stderr, "Arguments:\n");
126 fprintf(stderr, " --no-ui : Don't spawn the UI process\n");
129 void ParseCommandline(int argc, char **argv)
131 for( int i = 1; i < argc; i ++ )
133 if( argv[i][0] != '-' ) {
138 else if( argv[i][1] != '-' ) {
145 if( strcmp(argv[i], "--no-ui") == 0 ) {