X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FApplications%2Faxwin3_src%2FInterface%2Fmain.c;fp=Usermode%2FApplications%2Faxwin3_src%2FInterface%2Fmain.c;h=f8e35273cf372f8ab4b43aa6f0071da1fc04ab99;hb=cee7338738f1a68c7eb7b956cab8d9fb83f95714;hp=b4f0199566e6e75c5cae4434b8c42c45f084d211;hpb=e20b7220513e6010d883ae76ca1cf2c8f0ec26af;p=tpg%2Facess2.git diff --git a/Usermode/Applications/axwin3_src/Interface/main.c b/Usermode/Applications/axwin3_src/Interface/main.c index b4f01995..f8e35273 100644 --- a/Usermode/Applications/axwin3_src/Interface/main.c +++ b/Usermode/Applications/axwin3_src/Interface/main.c @@ -12,15 +12,20 @@ #include #define SIDEBAR_WIDTH 36 +#define RUN_WIDTH 200 +#define RUN_HEIGHT 70 // === PROTOTYPES === void create_sidebar(void); void create_mainmenu(void); +void create_run_dialog(void); // === GLOBALS === tHWND gSidebar; -tHWND gSystemMenu; tAxWin3_Widget *gSidebarRoot; +tHWND gSystemMenu; +tHWND gRunDialog; +tAxWin3_Widget *gRunInput; int giScreenWidth; int giScreenHeight; @@ -36,9 +41,13 @@ int main(int argc, char *argv[]) { // Connect to AxWin3 Server AxWin3_Connect(NULL); + + // TODO: Register to be told when the display layout changes + AxWin3_GetDisplayDims(0, NULL, NULL, &giScreenWidth, &giScreenHeight); create_sidebar(); create_mainmenu(); + create_run_dialog(); // Idle loop AxWin3_MainLoop(); @@ -50,9 +59,6 @@ void create_sidebar(void) { tAxWin3_Widget *btn, *txt, *ele; - // TODO: Register to be told when the display layout changes - AxWin3_GetDisplayDims(0, NULL, NULL, &giScreenWidth, &giScreenHeight); - // Create sidebar gSidebar = AxWin3_Widget_CreateWindow(NULL, SIDEBAR_WIDTH, giScreenHeight, ELEFLAG_VERTICAL); AxWin3_MoveWindow(gSidebar, 0, 0); @@ -82,6 +88,9 @@ void create_sidebar(void) AxWin3_Widget_SetSize(txt, 20); AxWin3_Widget_SetText(txt, "3.0"); + // Turn off decorations + AxWin3_DecorateWindow(gSidebar, 0); + // Show! AxWin3_ShowWindow(gSidebar, 1); @@ -95,6 +104,7 @@ void mainmenu_app_textedit(void *unused) void mainmenu_run_dialog(void *unused) { _SysDebug("TODO: Show run dialog"); + AxWin3_ShowWindow(gRunDialog, 1); } void create_mainmenu(void) @@ -106,3 +116,44 @@ void create_mainmenu(void) AxWin3_Menu_AddItem(gSystemMenu, "Run\tWin+R", mainmenu_run_dialog, NULL, 0, NULL); } +int run_dorun(tAxWin3_Widget *unused) +{ +// char *cmd = AxWin3_Widget_GetText(gRunInput); + AxWin3_ShowWindow(gRunDialog, 0); + return 0; +} + +int run_close(tAxWin3_Widget *unused) +{ + AxWin3_ShowWindow(gRunDialog, 0); + return 0; +} + +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"); + AxWin3_Widget_SetFireHandler(ret, handler); + txt = AxWin3_Widget_AddWidget(ret, ELETYPE_TEXT, 0, "_txt"); + AxWin3_Widget_SetText(ret, Label); + return ret; +} + +void create_run_dialog(void) +{ + tAxWin3_Widget *root, *box, *ele; + + 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"); + AxWin3_Widget_SetFireHandler(gRunInput, run_dorun); + + box = AxWin3_Widget_AddWidget(root, ELETYPE_BOX, ELEFLAG_ALIGN_CENTER|ELEFLAG_NOSTRETCH, "Button Area"); + ele = make_textbutton(box, "Ok", run_dorun); + ele = make_textbutton(box, "Cancel", run_close); +} +