X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;ds=sidebyside;f=Usermode%2FApplications%2Faxwin3_src%2FInterface%2Fmain.c;h=e39d9050f663d98a45325c7c4e3fb7d92fb7dadc;hb=d9b454656314400cf673ac7cb2923ac0f2bbd676;hp=d43845b5716a1be51efc570e4785c164fc88342a;hpb=2f16fec349eabb42f5e23ea2b821f149fa6b767e;p=tpg%2Facess2.git
diff --git a/Usermode/Applications/axwin3_src/Interface/main.c b/Usermode/Applications/axwin3_src/Interface/main.c
index d43845b5..e39d9050 100644
--- a/Usermode/Applications/axwin3_src/Interface/main.c
+++ b/Usermode/Applications/axwin3_src/Interface/main.c
@@ -13,12 +13,16 @@
#define SIDEBAR_WIDTH 40
#define RUN_WIDTH 200
-#define RUN_HEIGHT 70
+#define RUN_HEIGHT 60
// === PROTOTYPES ===
void create_sidebar(void);
void create_mainmenu(void);
void create_run_dialog(void);
+void mainmenu_run_dialog(void *unused);
+void mainmenu_app_terminal(void *unused);
+void mainmenu_app_textedit(void *unused);
+void update_time(void);
// === GLOBALS ===
tHWND gSidebar;
@@ -26,8 +30,12 @@ tAxWin3_Widget *gSidebarRoot;
tHWND gSystemMenu;
tHWND gRunDialog;
tAxWin3_Widget *gRunInput;
+
+tAxWin3_Widget *gWindowList;
+tAxWin3_Widget *gTimeDisplay;
int giScreenWidth;
int giScreenHeight;
+char **gEnvion;
// === CODE ===
int systembutton_fire(tAxWin3_Widget *Widget)
@@ -37,8 +45,9 @@ int systembutton_fire(tAxWin3_Widget *Widget)
return 0;
}
-int main(int argc, char *argv[])
+int main(int argc, char *argv[], char **envp)
{
+ gEnvion = envp;
// Connect to AxWin3 Server
AxWin3_Connect(NULL);
@@ -49,6 +58,10 @@ int main(int argc, char *argv[])
create_mainmenu();
create_run_dialog();
+ AxWin3_RegisterAction(gSidebar, "Interface>Run", (tAxWin3_HotkeyCallback)mainmenu_run_dialog);
+ AxWin3_RegisterAction(gSidebar, "Interface>Terminal", (tAxWin3_HotkeyCallback)mainmenu_app_terminal);
+ AxWin3_RegisterAction(gSidebar, "Interface>TextEdit", (tAxWin3_HotkeyCallback)mainmenu_app_textedit);
+
// Idle loop
AxWin3_MainLoop();
@@ -76,17 +89,22 @@ void create_sidebar(void)
AxWin3_Widget_SetSize(ele, 4);
// TODO: Program list
- ele = AxWin3_Widget_AddWidget(gSidebarRoot, ELETYPE_BOX, ELEFLAG_VERTICAL, "ProgramList");
+ gWindowList = AxWin3_Widget_AddWidget(gSidebarRoot, ELETYPE_BOX, ELEFLAG_VERTICAL, "ProgramList");
// - Plain
style spacer
ele = AxWin3_Widget_AddWidget(gSidebarRoot, ELETYPE_SPACER, ELEFLAG_NOSTRETCH, "SideBar Spacer Top");
AxWin3_Widget_SetSize(ele, 4);
// > Version/Time
- ele = AxWin3_Widget_AddWidget(gSidebarRoot, ELETYPE_BOX, ELEFLAG_VERTICAL|ELEFLAG_NOSTRETCH, "Version/Time");
- txt = AxWin3_Widget_AddWidget(ele, ELETYPE_TEXT, ELEFLAG_NOSTRETCH, "Version String");
- AxWin3_Widget_SetSize(txt, 20);
- AxWin3_Widget_SetText(txt, "3.0");
+ ele = AxWin3_Widget_AddWidget(gSidebarRoot,
+ ELETYPE_BOX,
+ ELEFLAG_VERTICAL|ELEFLAG_ALIGN_CENTER|ELEFLAG_NOSTRETCH,
+ "Version/Time"
+ );
+ gTimeDisplay = AxWin3_Widget_AddWidget(ele, ELETYPE_TEXT, ELEFLAG_NOSTRETCH, "Time");
+ AxWin3_Widget_SetSize(gTimeDisplay, 20);
+ //AxWin3_Widget_SetText(gTimeDisplay, "--:--");
+ update_time();
// Turn off decorations
AxWin3_DecorateWindow(gSidebar, 0);
@@ -96,15 +114,31 @@ void create_sidebar(void)
}
+void update_time(void)
+{
+ char tmpbuf[2+1+2+1] = "--:--";
+ //strftime(tmpbuf, sizeof(tmpbuf), "%H:%M", NULL);
+ AxWin3_Widget_SetText(gTimeDisplay, tmpbuf);
+}
+
void mainmenu_app_textedit(void *unused)
{
- _SysDebug("TODO: Launch text editor");
+// _SysDebug("TODO: Launch text editor");
+ const char *args[] = {"ate",NULL};
+ _SysSpawn("/Acess/Apps/AxWin/3.0/ate", args, (const char **)gEnvion, 0, NULL, NULL);
+}
+
+void mainmenu_app_terminal(void *unused)
+{
+ _SysDebug("Launch terminal emulator");
+ const char *args[] = {"terminal",NULL};
+ _SysSpawn("/Acess/Apps/AxWin/3.0/terminal", args, (const char **)gEnvion, 0, NULL, NULL);
}
void mainmenu_run_dialog(void *unused)
{
- _SysDebug("TODO: Show run dialog");
AxWin3_ShowWindow(gRunDialog, 1);
+ AxWin3_FocusWindow(gRunDialog);
}
void create_mainmenu(void)
@@ -112,19 +146,30 @@ void create_mainmenu(void)
gSystemMenu = AxWin3_Menu_Create(NULL);
AxWin3_Menu_AddItem(gSystemMenu, "Text &Editor\tWin+E", mainmenu_app_textedit, NULL, 0, NULL);
+ AxWin3_Menu_AddItem(gSystemMenu, "&Terminal Emulator\tWin+T", mainmenu_app_terminal, NULL, 0, NULL);
AxWin3_Menu_AddItem(gSystemMenu, NULL, NULL, NULL, 0, NULL);
- AxWin3_Menu_AddItem(gSystemMenu, "Run\tWin+R", mainmenu_run_dialog, NULL, 0, NULL);
+ AxWin3_Menu_AddItem(gSystemMenu, "&Run\tWin+R", mainmenu_run_dialog, NULL, 0, NULL);
}
+// --------------------------------------------------------------------
+// "Run" Dialog box
+// --------------------------------------------------------------------
int run_dorun(tAxWin3_Widget *unused)
{
-// char *cmd = AxWin3_Widget_GetText(gRunInput);
+ _SysDebug("DoRun pressed");
+ char *cmd = AxWin3_Widget_GetText(gRunInput);
+ _SysDebug("Command string '%s'", cmd);
+
+ // TODO: Parse the command string into components
+ // TODO: Call _SysSpawn
+
AxWin3_ShowWindow(gRunDialog, 0);
return 0;
}
int run_close(tAxWin3_Widget *unused)
{
+ _SysDebug("Run diaglog closed");
AxWin3_ShowWindow(gRunDialog, 0);
return 0;
}
@@ -132,10 +177,12 @@ int run_close(tAxWin3_Widget *unused)
tAxWin3_Widget *make_textbutton(tAxWin3_Widget *Parent, const char *Label, tAxWin3_Widget_FireCb handler)
{
tAxWin3_Widget *ret, *txt;
- ret = AxWin3_Widget_AddWidget(Parent, ELETYPE_BUTTON, ELEFLAG_NOSTRETCH, "_btn");
+ ret = AxWin3_Widget_AddWidget(Parent, ELETYPE_BUTTON, ELEFLAG_ALIGN_CENTER, "_btn");
AxWin3_Widget_SetFireHandler(ret, handler);
- txt = AxWin3_Widget_AddWidget(ret, ELETYPE_TEXT, 0, "_txt");
+ AxWin3_Widget_AddWidget(ret, ELETYPE_NONE, 0, "_spacer1");
+ txt = AxWin3_Widget_AddWidget(ret, ELETYPE_TEXT, ELEFLAG_NOSTRETCH|ELEFLAG_NOEXPAND, "_txt");
AxWin3_Widget_SetText(txt, Label);
+ AxWin3_Widget_AddWidget(ret, ELETYPE_NONE, 0, "_spacer2");
return ret;
}
@@ -145,14 +192,14 @@ void create_run_dialog(void)
gRunDialog = AxWin3_Widget_CreateWindow(NULL, RUN_WIDTH, RUN_HEIGHT, ELEFLAG_VERTICAL);
AxWin3_SetWindowTitle(gRunDialog, "Run Program...");
-
AxWin3_MoveWindow(gRunDialog, giScreenWidth/2-RUN_WIDTH/2, giScreenHeight/2-RUN_HEIGHT/2);
+
root = AxWin3_Widget_GetRoot(gRunDialog);
- gRunInput = AxWin3_Widget_AddWidget(root, ELETYPE_TEXTINPUT, 0, "Input");
+ gRunInput = AxWin3_Widget_AddWidget(root, ELETYPE_TEXTINPUT, ELEFLAG_NOSTRETCH, "Input");
AxWin3_Widget_SetFireHandler(gRunInput, run_dorun);
- box = AxWin3_Widget_AddWidget(root, ELETYPE_BOX, ELEFLAG_ALIGN_CENTER|ELEFLAG_NOSTRETCH, "Button Area");
+ box = AxWin3_Widget_AddWidget(root, ELETYPE_BOX, ELEFLAG_ALIGN_CENTER, "Button Area");
make_textbutton(box, "Ok", run_dorun);
make_textbutton(box, "Cancel", run_close);
}