AxWin2 - Huge changes, getting to the working point
[tpg/acess2.git] / Usermode / Applications / axwin2_src / WM / interface.c
index 36e0124..91396ee 100644 (file)
 /*
  * Acess GUI (AxWin) Version 2
  * By John Hodge (thePowersGang)
+ * 
+ * interface.c
+ * > Main Overarching UI
  */
 #include "common.h"
+#include "resources/LogoSmall.sif.res.h"
+
+// === GLOBALS ==
+ int   giInterface_Width = 0;
+ int   giInterface_HeaderBarSize = 20;
+ int   giInterface_TabBarSize = 20;
+tElement       *gpInterface_Sidebar;
+tElement       *gpInterface_ProgramList;
+tElement       *gpInterface_MainArea;
+tElement       *gpInterface_HeaderBar;
+tElement       *gpInterface_TabBar;
+tElement       *gpInterface_TabContent;
+const char     csLogoSmall[] = "base64:///"RESOURCE_LogoSmall_sif;
+tApplication   *gpInterface_CurrentApp;
+
+typedef struct sApplicationLink        tApplicationLink;
+
+struct sApplicationLink {
+       tApplication    *App;
+       tElement        *Button;
+       char    Name[];
+};
 
 // === CODE ===
+/**
+ * \brief Initialise the UI
+ */
+void Interface_Init(void)
+{
+       tElement        *btn, *text;
+       tElement        *ele;
+
+       // Calculate sizes
+       giInterface_Width = giScreenWidth/16;
+       
+       // Set root window to no-border
+       AxWin_SetFlags(NULL, 0);
+       
+       // -- Create Sidebar (Menu and Window List) --
+       gpInterface_Sidebar = AxWin_CreateElement(NULL, ELETYPE_TOOLBAR, ELEFLAG_VERTICAL, "Sidebar");
+       AxWin_SetSize( gpInterface_Sidebar, giInterface_Width );
+       
+       // > System Menu Button
+       btn = AxWin_CreateElement(gpInterface_Sidebar, ELETYPE_BUTTON, ELEFLAG_NOSTRETCH, "SystemMenu");
+       AxWin_SetSize(btn, giInterface_Width-4);
+       //text = AxWin_CreateElement(btn, ELETYPE_IMAGE, ELEFLAG_SCALE, "MenuLogo");
+       text = AxWin_CreateElement(btn, ELETYPE_IMAGE, 0, "MenuLogo");
+       //AxWin_SetText(text, "file:///LogoSmall.sif");
+       AxWin_SetText(text, csLogoSmall);
+       
+       // > Plain <hr/> style spacer
+       ele = AxWin_CreateElement(gpInterface_Sidebar, ELETYPE_SPACER, ELEFLAG_NOSTRETCH, "SideBar Spacer Top");
+       AxWin_SetSize(ele, 4);
+       
+       // > Application List (Window list on most OSs)
+       gpInterface_ProgramList = AxWin_CreateElement(gpInterface_Sidebar, ELETYPE_BOX, ELEFLAG_VERTICAL, "ProgramList");
+       
+       // > Plain <hr/> style spacer
+       ele = AxWin_CreateElement(gpInterface_Sidebar, ELETYPE_SPACER, ELEFLAG_NOSTRETCH, "SideBar Spacer Bottom");
+       AxWin_SetSize(ele, 4);
+       
+       // > Version/Time
+       text = AxWin_CreateElement(gpInterface_Sidebar, ELETYPE_TEXT, ELEFLAG_NOSTRETCH, "Version String");
+       AxWin_SetSize(text, 20);
+       AxWin_SetText(text, "2.0");
+       
+       // --
+       // -- Create Main Area and regions within --
+       // --
+       // > Righthand Area
+       gpInterface_MainArea = AxWin_CreateElement(NULL, ELETYPE_BOX, ELEFLAG_VERTICAL, "MainArea");
+       //  > Header Bar (Title)
+       gpInterface_HeaderBar = AxWin_CreateElement(gpInterface_MainArea, ELETYPE_BOX, 0, "HeaderBar");
+       AxWin_SetSize(gpInterface_HeaderBar, giInterface_HeaderBarSize);
+       text = AxWin_CreateElement(gpInterface_HeaderBar, ELETYPE_TEXT, 0, NULL);
+       AxWin_SetText(text, "Acess2 GUI - By thePowersGang (John Hodge)");
+       //  > Tab Bar (Current windows)
+       gpInterface_TabBar = AxWin_CreateElement(gpInterface_MainArea, ELETYPE_TABBAR, 0, "TabBar");
+       AxWin_SetSize(gpInterface_TabBar, giInterface_TabBarSize);
+       //  > Application Space
+       gpInterface_TabContent = AxWin_CreateElement(gpInterface_MainArea, ELETYPE_BOX, 0, "TabContent");
+}
+
+void Interface_Update(void)
+{
+//     tApplication    *app;
+//     tApplicationLink        *lnk;
+       giInterface_Width = giScreenWidth/16;
+       AxWin_SetSize( gpInterface_Sidebar, giInterface_Width );
+
+       // Scan application list for changes
+       // - HACK for now, just directly access it
+//     for( app = gWM_Applications; app; app = app->Next )
+//     {
+//             AxWin_CreateElement();
+//     }
+
+       // Update current tab list
+}
+
 void Interface_Render(void)
 {
        Video_FillRect(
                0, 0,
-               giScreenWidth/16, giScreenHeight,
+               giInterface_Width, giScreenHeight,
                0xDDDDDD);
        
        Video_Update();

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