瀏覽代碼

More Menubar work

Josh Engebretson 10 年之前
父節點
當前提交
24dca26699

+ 1 - 0
Data/AtomicEditor/Resources/EditorData/AtomicEditor/editor/ui/mainframe.tb.txt

@@ -1,6 +1,7 @@
 definitions
 	menubutton		
 		lp: height: 28
+		font: name: Vera
 		skin TBButton.flat
 TBLayout: distribution: gravity, axis: y
 	TBContainer: skin: AEContainer, gravity: all, id: mainframecontainer

+ 1 - 0
Source/Atomic/UI/TBUI.cpp

@@ -289,6 +289,7 @@ void TBUI::Initialize()
     register_freetype_font_renderer();
 
     tb::g_font_manager->AddFontInfo("AtomicEditor/resources/MesloLGS-Regular.ttf", "Monaco");
+    tb::g_font_manager->AddFontInfo("AtomicEditor/resources/MesloLGS-Bold.ttf", "Monaco-Bold");
     tb::g_font_manager->AddFontInfo("AtomicEditor/resources/vera.ttf", "Vera");
 
     tb::TBFontDescription fd;

+ 4 - 1
Source/AtomicEditor/Source/AEEditorStrings.cpp

@@ -44,13 +44,16 @@ void EditorStrings::InitializeStrings()
     stringLookup_[ShortcutCopy] = "⌘C";
     stringLookup_[ShortcutPaste] = "⌘V";
     stringLookup_[ShortcutFind] = "⌘F";
-    stringLookup_[ShortcutBeautify] = "⌘B";
+    stringLookup_[ShortcutBeautify] = "⌘I";
 
     stringLookup_[ShortcutSaveFile] = "⌘S";
     stringLookup_[ShortcutCloseFile] = "⌘W";
 
     stringLookup_[ShortcutPlay] = "⌘P";
 
+    stringLookup_[ShortcutBuild] = "⌘B";
+    stringLookup_[ShortcutBuildSettings] = "⇧⌘B";
+
 
 }
 

+ 3 - 1
Source/AtomicEditor/Source/AEEditorStrings.h

@@ -33,7 +33,9 @@ public:
         ShortcutBeautify,
         ShortcutCloseFile,
         ShortcutSaveFile,
-        ShortcutPlay
+        ShortcutPlay,
+        ShortcutBuild,
+        ShortcutBuildSettings,
     };
 
 

+ 26 - 25
Source/AtomicEditor/Source/UI/UIMainFrame.cpp

@@ -54,12 +54,12 @@ MainFrame::MainFrame(Context* context) :
 
     // Instead of TBGenericStringItem here, we need custom item so can have shortcuts be right aligned
 
-    menuAtomicEditorSource.AddItem(new TBGenericStringItem("About Atomic Editor", TBIDC("about atomic editor")));
-    menuAtomicEditorSource.AddItem(new TBGenericStringItem("-"));
-    menuAtomicEditorSource.AddItem(new TBGenericStringItem("Manage License", TBIDC("manage license")));
-    menuAtomicEditorSource.AddItem(new TBGenericStringItem("-"));
-    menuAtomicEditorSource.AddItem(new TBGenericStringItem("Check for Updates", TBIDC("check update")));
-    menuAtomicEditorSource.AddItem(new TBGenericStringItem("Quit", TBIDC("quit")));
+    menuAtomicEditorSource.AddItem(new MenubarItem("About Atomic Editor", TBIDC("about atomic editor")));
+    menuAtomicEditorSource.AddItem(new MenubarItem("-"));
+    menuAtomicEditorSource.AddItem(new MenubarItem("Manage License", TBIDC("manage license")));
+    menuAtomicEditorSource.AddItem(new MenubarItem("-"));
+    menuAtomicEditorSource.AddItem(new MenubarItem("Check for Updates", TBIDC("check update")));
+    menuAtomicEditorSource.AddItem(new MenubarItem("Quit", TBIDC("quit")));
 
     menuFileSource.AddItem(new MenubarItem("New Project", TBIDC("new project")));
     menuFileSource.AddItem(new MenubarItem("Open Project", TBIDC("open project")));
@@ -70,8 +70,9 @@ MainFrame::MainFrame(Context* context) :
     menuFileSource.AddItem(new MenubarItem("Save File", TBIDC("save file"), EDITOR_STRING(ShortcutSaveFile)));
     menuFileSource.AddItem(new MenubarItem("Close File", TBIDC("close file"), EDITOR_STRING(ShortcutCloseFile)));
 
-    menuBuildSource.AddItem(new TBGenericStringItem("Build", TBIDC("project_build")));
-    menuBuildSource.AddItem(new TBGenericStringItem("Build Settings", TBIDC("project_build_settings")));
+    menuBuildSource.AddItem(new MenubarItem("Build", TBIDC("project_build"), EDITOR_STRING(ShortcutBuild)));
+    menuBuildSource.AddItem(new MenubarItem("-"));
+    menuBuildSource.AddItem(new MenubarItem("Build Settings", TBIDC("project_build_settings"), EDITOR_STRING(ShortcutBuildSettings)));
 
     menuToolsSource.AddItem(new MenubarItem("Tiled Map Editor", TBIDC("tools tiled")));
 
@@ -87,40 +88,40 @@ MainFrame::MainFrame(Context* context) :
     menuEditSource.AddItem(new MenubarItem("-"));
     menuEditSource.AddItem(new MenubarItem("Play", TBIDC("play"),  EDITOR_STRING(ShortcutPlay)));
 
-    menuResourcesSource.AddItem(new TBGenericStringItem("Create", &menuResourcesCreateSource));
-    menuResourcesSource.AddItem(new TBGenericStringItem("-"));
-    menuResourcesSource.AddItem(new TBGenericStringItem("Reveal in Finder", TBIDC("reveal")));
+    menuResourcesSource.AddItem(new MenubarItem("Create", &menuResourcesCreateSource));
+    menuResourcesSource.AddItem(new MenubarItem("-"));
+    menuResourcesSource.AddItem(new MenubarItem("Reveal in Finder", TBIDC("reveal")));
 
-    TBGenericStringItem* item;
-    item = new TBGenericStringItem("Folder", TBIDC("create_folder"));
+    MenubarItem* item;
+    item = new MenubarItem("Folder", TBIDC("create_folder"));
     item->SetSkinImage(TBIDC("Folder.icon"));
     menuResourcesCreateSource.AddItem(item);
 
-    menuResourcesCreateSource.AddItem(new TBGenericStringItem("-"));
+    menuResourcesCreateSource.AddItem(new MenubarItem("-"));
 
-    item = new TBGenericStringItem("Component", TBIDC("create_component"));
+    item = new MenubarItem("Component", TBIDC("create_component"));
     item->SetSkinImage(TBIDC("JavascriptBitmap"));
     menuResourcesCreateSource.AddItem(item);
-    item = new TBGenericStringItem("Script", TBIDC("create_script"));
+    item = new MenubarItem("Script", TBIDC("create_script"));
     item->SetSkinImage(TBIDC("JavascriptBitmap"));
     menuResourcesCreateSource.AddItem(item);
-    item = new TBGenericStringItem("Module", TBIDC("create_module"));
+    item = new MenubarItem("Module", TBIDC("create_module"));
     item->SetSkinImage(TBIDC("JavascriptBitmap"));
     menuResourcesCreateSource.AddItem(item);
 
-    menuResourcesCreateSource.AddItem(new TBGenericStringItem("-"));
+    menuResourcesCreateSource.AddItem(new MenubarItem("-"));
 
-    item = new TBGenericStringItem("2D Level", TBIDC("create_2d_level"));
+    item = new MenubarItem("2D Level", TBIDC("create_2d_level"));
     item->SetSkinImage(TBIDC("2DLevelBitmap"));
     menuResourcesCreateSource.AddItem(item);
 
-    menuHelpSource.AddItem(new TBGenericStringItem("API Documentation", TBIDC("help_api")));
-    menuHelpSource.AddItem(new TBGenericStringItem("-"));
-    menuHelpSource.AddItem(new TBGenericStringItem("Forums", TBIDC("help_forums")));
-    menuHelpSource.AddItem(new TBGenericStringItem("-"));
-    menuHelpSource.AddItem(new TBGenericStringItem("Atomic Game Engine on GitHub", TBIDC("help_github")));
+    menuHelpSource.AddItem(new MenubarItem("API Documentation", TBIDC("help_api")));
+    menuHelpSource.AddItem(new MenubarItem("-"));
+    menuHelpSource.AddItem(new MenubarItem("Forums", TBIDC("help_forums")));
+    menuHelpSource.AddItem(new MenubarItem("-"));
+    menuHelpSource.AddItem(new MenubarItem("Atomic Game Engine on GitHub", TBIDC("help_github")));
 
-    menuDeveloperSource.AddItem(new TBGenericStringItem("Set 1920x1080 Resolution", TBIDC("developer_resolution")));
+    menuDeveloperSource.AddItem(new MenubarItem("Set 1920x1080 Resolution", TBIDC("developer_resolution")));
 
 
     TBUI* tbui = GetSubsystem<TBUI>();

+ 6 - 6
Source/AtomicEditor/Source/UI/UIMainFrame.h

@@ -36,15 +36,15 @@ class MainFrame : public AEWidget
 {
     OBJECT(MainFrame);
 
-    TBGenericStringItemSource menuAtomicEditorSource;
+    MenubarItemSource menuAtomicEditorSource;
     MenubarItemSource menuFileSource;
     MenubarItemSource menuEditSource;
-    TBGenericStringItemSource menuBuildSource;
+    MenubarItemSource menuBuildSource;
 
-    TBGenericStringItemSource menuResourcesSource;
-    TBGenericStringItemSource menuResourcesCreateSource;
-    TBGenericStringItemSource menuHelpSource;
-    TBGenericStringItemSource menuDeveloperSource;
+    MenubarItemSource menuResourcesSource;
+    MenubarItemSource menuResourcesCreateSource;
+    MenubarItemSource menuHelpSource;
+    MenubarItemSource menuDeveloperSource;
 
     MenubarItemSource menuToolsSource;
 

+ 36 - 5
Source/AtomicEditor/Source/UI/UIMenubar.cpp

@@ -10,6 +10,29 @@
 
 using namespace tb;
 
+namespace tb {
+
+
+// THIS MUST MATCH TBSimpleLayoutItemWidget in tb_select_item.cpp
+class TBSimpleLayoutItemWidget : public TBLayout, private TBWidgetListener
+{
+public:
+    TBSimpleLayoutItemWidget(TBID image, TBSelectItemSource *source, const char *str);
+    ~TBSimpleLayoutItemWidget();
+    virtual bool OnEvent(const TBWidgetEvent &ev);
+private:
+    TBSelectItemSource *m_source;
+    TBTextField m_textfield;
+    TBSkinImage m_image;
+    TBSkinImage m_image_arrow;
+    TBMenuWindow *m_menu; ///< Points to the submenu window if opened
+    virtual void OnWidgetDelete(TBWidget *widget);
+    void OpenSubMenu();
+    void CloseSubMenu();
+};
+
+}
+
 namespace AtomicEditor
 {
 
@@ -29,8 +52,8 @@ MenubarItemWidget::MenubarItemWidget(MenubarItem *item, MenubarItemSource *sourc
     TBWidget* root = GetContentRoot();
 
     TBFontDescription fd;
-    fd.SetID(TBIDC("Vera"));
-    fd.SetSize(13);
+    fd.SetID(TBIDC("Monaco-Bold"));
+    fd.SetSize(12);
 
     TBTextField* text = new TBTextField();
     text->SetIgnoreInput(true);
@@ -76,7 +99,16 @@ bool MenubarItemSource::Filter(int index, const char *filter)
 TBWidget *MenubarItemSource::CreateItemWidget(int index, TBSelectItemViewer *viewer)
 {
     const char *string = GetItemString(index);
-    if (string && *string == '-')
+
+    TBSelectItemSource *sub_source = GetItemSubSource(index);
+    TBID image = GetItemImage(index);
+
+    if (sub_source || image)
+    {
+        if (TBSimpleLayoutItemWidget *itemwidget = new TBSimpleLayoutItemWidget(image, sub_source, string))
+            return itemwidget;
+    }
+    else if (string && *string == '-')
     {
         if (TBSeparator *separator = new TBSeparator)
         {
@@ -85,8 +117,7 @@ TBWidget *MenubarItemSource::CreateItemWidget(int index, TBSelectItemViewer *vie
             return separator;
         }
     }
-
-    if (TBLayout *layout = new MenubarItemWidget(GetItem(index), this, viewer, index))
+    else if (TBLayout *layout = new MenubarItemWidget(GetItem(index), this, viewer, index))
     {
         layout->SetID(GetItem(index)->id);
         return layout;

+ 2 - 0
Source/AtomicEditor/Source/UI/UIMenubar.h

@@ -26,6 +26,8 @@ public:
 
     }
 
+    MenubarItem(const char *str, TBSelectItemSource *sub_source) : TBGenericStringItem(str, sub_source) {}
+
     String shortcut_;
 
 };