comparison MainWindow.cs @ 28:5ee15def17e7

Re #244: Create "New Unit" dialog in Qt# app * Add handler to feed back event (Qt widgets and events can't contain enough data) * Add actions to toolbar as army changes * Add initial "new unit" dialog by stripping down "new army" dialog
author IBBoard <dev@ibboard.co.uk>
date Sat, 31 Jul 2010 20:32:01 +0000
parents 55d4f16c982b
children 246237c88b9b
comparison
equal deleted inserted replaced
27:7eaa8a1715e2 28:5ee15def17e7
12 using IBBoard.WarFoundry.API; 12 using IBBoard.WarFoundry.API;
13 using IBBoard.WarFoundry.API.Exporters; 13 using IBBoard.WarFoundry.API.Exporters;
14 using IBBoard.WarFoundry.API.Factories; 14 using IBBoard.WarFoundry.API.Factories;
15 using IBBoard.WarFoundry.API.Objects; 15 using IBBoard.WarFoundry.API.Objects;
16 using IBBoard.WarFoundry.API.Savers; 16 using IBBoard.WarFoundry.API.Savers;
17 using IBBoard.WarFoundry.GUI.QtSharp.Handler;
17 18
18 namespace IBBoard.WarFoundry.GUI.QtSharp 19 namespace IBBoard.WarFoundry.GUI.QtSharp
19 { 20 {
20 public class MainWindow : QMainWindow 21 public class MainWindow : QMainWindow
21 { 22 {
26 private string loadedFilePath; 27 private string loadedFilePath;
27 private CommandStack commandStack; 28 private CommandStack commandStack;
28 private QFileDialog saveArmyDialog; 29 private QFileDialog saveArmyDialog;
29 private QFileDialog openArmyDialog; 30 private QFileDialog openArmyDialog;
30 private Preferences preferences; 31 private Preferences preferences;
32 private QAction[] categoryActions;
31 33
32 public MainWindow () 34 public MainWindow ()
33 { 35 {
34 layout = new Ui_MainWindowLayout(); 36 layout = new Ui_MainWindowLayout();
35 layout.SetupUi(this); 37 layout.SetupUi(this);
58 openArmyDialog.SetDirectory(new QDir(Environment.GetFolderPath(Environment.SpecialFolder.Personal))); 60 openArmyDialog.SetDirectory(new QDir(Environment.GetFolderPath(Environment.SpecialFolder.Personal)));
59 SetUpActionIcons(); 61 SetUpActionIcons();
60 ConnectMenuActions(); 62 ConnectMenuActions();
61 SetUpToolbar(); 63 SetUpToolbar();
62 layout.unitTabs.Clear(); 64 layout.unitTabs.Clear();
65 categoryActions = new QAction[0];
63 WarFoundryCore.ArmyChanged+= HandleWarFoundryCoreArmyChanged; 66 WarFoundryCore.ArmyChanged+= HandleWarFoundryCoreArmyChanged;
64 CommandStack.CommandStackUpdated+= HandleCommandStackCommandStackUpdated; 67 CommandStack.CommandStackUpdated+= HandleCommandStackCommandStackUpdated;
65 } 68 }
66 69
67 protected override void CloseEvent(QCloseEvent arg1) 70 protected override void CloseEvent(QCloseEvent arg1)
143 private void HandleWarFoundryCoreArmyChanged(Army oldValue, Army newValue) 146 private void HandleWarFoundryCoreArmyChanged(Army oldValue, Army newValue)
144 { 147 {
145 CommandStack.Reset(); 148 CommandStack.Reset();
146 loadedFilePath = null; 149 loadedFilePath = null;
147 layout.actionSaveArmy.Enabled = false; 150 layout.actionSaveArmy.Enabled = false;
151 SetCategoryButtons(newValue == null ? new Category[0] : newValue.Race.Categories);
148 SetPointsPanelText(); 152 SetPointsPanelText();
149 SetAppTitle(); 153 SetAppTitle();
150 } 154 }
151 155
152 private void SetPointsPanelText () 156 private void SetPointsPanelText ()
471 } 475 }
472 476
473 layout.armyTree.SetModel(treeModel); 477 layout.armyTree.SetModel(treeModel);
474 } 478 }
475 479
480 private QVariant WrapObject(WarFoundryObject obj)
481 {
482 return QVariant.FromValue<WarFoundryObject>(obj);
483 }
484
476 private QStandardItem CreateTreeItem(WarFoundryObject obj) 485 private QStandardItem CreateTreeItem(WarFoundryObject obj)
477 { 486 {
478 QVariant wrappedObject = QVariant.FromValue<WarFoundryObject>(obj); 487 QVariant wrappedObject = WrapObject(obj);
479 QStandardItem item = new QStandardItem(obj.Name); 488 QStandardItem item = new QStandardItem(obj.Name);
480 item.SetData(wrappedObject); 489 item.SetData(wrappedObject);
481 return item; 490 return item;
482 } 491 }
483 492
494 QStandardItem item = CreateTreeItem(obj); 503 QStandardItem item = CreateTreeItem(obj);
495 rootItem.AppendRow(item); 504 rootItem.AppendRow(item);
496 return item; 505 return item;
497 } 506 }
498 507
499 void SetCategoryButtons (Category[] categories) 508 private void SetCategoryButtons(Category[] categories)
500 { 509 {
501 //TODO create category buttons 510 foreach (QAction action in categoryActions)
502 } 511 {
503 512 layout.toolBar.RemoveAction(action);
513 }
514
515 if (categories != null && categories.Length > 0)
516 {
517 int catCount = categories.Length;
518 categoryActions = new QAction[catCount];
519 int i = 0;
520
521 foreach (Category category in categories)
522 {
523 QAction action = new QAction(this);
524 action.icon = new QIcon("icons/ui/add.png");
525 NewUnitEventHandler handler = new NewUnitEventHandler(category, AddUnit);
526 ConnectMenuAction(action, handler.CreateNewUnit);
527 categoryActions[i] = action;
528 layout.toolBar.AddAction(action);
529 i++;
530 }
531 }
532 }
533
534 private void AddUnit(Category cat)
535 {
536 QMessageBox.Information(this, "Add unit", cat.Name);
537 }
538
504 void EnableCategoryButtons () 539 void EnableCategoryButtons ()
505 { 540 {
506 //TODO enable category buttons 541 //TODO enable category buttons
507 } 542 }
508 543