ソースを参照

Modal window title bar works
Improvements to progress bar window

Marko Pintera 11 年 前
コミット
a3acfcc7d4
2 ファイル変更37 行追加16 行削除
  1. 12 11
      BansheeEditor/Source/BsModalWindow.cpp
  2. 25 5
      MBansheeEditor/ProgressBar.cs

+ 12 - 11
BansheeEditor/Source/BsModalWindow.cpp

@@ -15,33 +15,34 @@ namespace BansheeEngine
 		:EditorWindowBase(true), mTitleBarArea(nullptr), mTitleBarBgArea(nullptr), 
 		:EditorWindowBase(true), mTitleBarArea(nullptr), mTitleBarBgArea(nullptr), 
 		mCloseButton(nullptr), mTitleBarBg(nullptr), mTitle(nullptr)
 		mCloseButton(nullptr), mTitleBarBg(nullptr), mTitle(nullptr)
 	{
 	{
-		mTitleBarBgArea = GUIArea::createStretchedXY(*mGUI, 1, 1, 1, 1, 1);
+		mTitleBarBgArea = GUIArea::createStretchedXY(*mGUI, 1, 1, 1, 1, std::numeric_limits<UINT16>::max() - 1);
 		mTitleBarArea = GUIArea::createStretchedXY(*mGUI, 1, 1, 1, 1, 0);
 		mTitleBarArea = GUIArea::createStretchedXY(*mGUI, 1, 1, 1, 1, 0);
 
 
 		mTitleBarBg = GUITexture::create(GUIOptions(GUIOption::flexibleWidth()), "TitleBarBackground");
 		mTitleBarBg = GUITexture::create(GUIOptions(GUIOption::flexibleWidth()), "TitleBarBackground");
 		mTitle = GUILabel::create(title);
 		mTitle = GUILabel::create(title);
 
 
-		GUILayout& bgLayout = mTitleBarBgArea->getLayout().addLayoutX();
+		GUILayout& bgLayout = mTitleBarBgArea->getLayout().addLayoutY();
 		bgLayout.addElement(mTitleBarBg);
 		bgLayout.addElement(mTitleBarBg);
 		bgLayout.addFlexibleSpace();
 		bgLayout.addFlexibleSpace();
 
 
-		GUILayout& contentLayout = mTitleBarArea->getLayout().addLayoutX();
-		contentLayout.addFlexibleSpace();
-		contentLayout.addElement(mTitle);
-		contentLayout.addFlexibleSpace();
+		GUILayout& contentLayoutY = mTitleBarArea->getLayout().addLayoutY();
+		GUILayout& contentLayoutX = contentLayoutY.addLayoutX();
+		contentLayoutX.addFlexibleSpace();
+		GUILayout& titleLayout = contentLayoutX.addLayoutY();
+		titleLayout.addFlexibleSpace();
+		titleLayout.addElement(mTitle);
+		titleLayout.addFlexibleSpace();
+		contentLayoutX.addFlexibleSpace();
 
 
 		if (hasCloseButton)
 		if (hasCloseButton)
 		{
 		{
 			mCloseButton = GUIButton::create(HString(L""), "WinCloseBtn");
 			mCloseButton = GUIButton::create(HString(L""), "WinCloseBtn");
-
-			GUILayout& contentLayout = mTitleBarArea->getLayout().addLayoutX();
-			contentLayout.addFlexibleSpace();
-			contentLayout.addElement(mCloseButton);
+			contentLayoutX.addElement(mCloseButton);
 			
 			
 			mCloseButton->onClick.connect(std::bind(&ModalWindow::close, this));
 			mCloseButton->onClick.connect(std::bind(&ModalWindow::close, this));
 		}
 		}
 
 
-		mTitleBarArea->getLayout().addFlexibleSpace();
+		contentLayoutY.addFlexibleSpace();
 		
 		
 		updateSize();
 		updateSize();
 	}
 	}

+ 25 - 5
MBansheeEditor/ProgressBar.cs

@@ -8,6 +8,7 @@ namespace BansheeEditor
         private static ProgressBar instance;
         private static ProgressBar instance;
 
 
         private GUIProgressBar progressBar;
         private GUIProgressBar progressBar;
+        private LocString message;
 
 
         public float Percent
         public float Percent
         {
         {
@@ -16,15 +17,21 @@ namespace BansheeEditor
         }
         }
 
 
         public static void Show(LocString title, float percent)
         public static void Show(LocString title, float percent)
+        {
+            Show(title, "", percent);
+        }
+
+        public static void Show(LocString title, LocString message, float percent)
         {
         {
             if (instance == null)
             if (instance == null)
                 instance = new ProgressBar();
                 instance = new ProgressBar();
 
 
-            instance.Width = 200;
-            instance.Height = 100;
+            instance.Width = 250;
+            instance.Height = 75;
 
 
             instance.Title = title;
             instance.Title = title;
             instance.Percent = percent;
             instance.Percent = percent;
+            instance.message = message;
         }
         }
 
 
         public static void Hide()
         public static void Hide()
@@ -43,9 +50,22 @@ namespace BansheeEditor
         {
         {
             progressBar = new GUIProgressBar();
             progressBar = new GUIProgressBar();
 
 
-            GUI.layout.AddFlexibleSpace();
-            GUI.layout.AddElement(progressBar);
-            GUI.layout.AddFlexibleSpace();
+            GUILayoutY layoutY = GUI.layout.AddLayoutY();
+
+            layoutY.AddFlexibleSpace();
+            GUILayoutX messageLayout = layoutY.AddLayoutX();
+            messageLayout.AddFlexibleSpace();
+            messageLayout.AddElement(new GUILabel(message));
+            messageLayout.AddFlexibleSpace();
+
+            layoutY.AddSpace(10);
+
+            GUILayoutX barLayout = layoutY.AddLayoutX();
+            barLayout.AddSpace(10);
+            barLayout.AddElement(progressBar);
+            barLayout.AddSpace(10);
+
+            layoutY.AddFlexibleSpace();
         }
         }
     }
     }
 }
 }