private void AddWidgetsAndShow(EditorMode editorMode) { /* Set a handler for delete_event that immediately * exits GTK. */ DeleteEvent += delete_event; if (null != TopLevelHBox) { TopLevelHBox.Hide(); TopLevelHBox.Destroy(); TopLevelHBox = null; } CurrentMode = editorMode; EditorWidget = null; switch (editorMode) { case EditorMode.Level: EditorWidget = new LevelEditLayout(); ((LevelEditLayout)EditorWidget).TreeRefreshNeeded += TreeRefreshNeeded_Event; break; case EditorMode.Turret: EditorWidget = new TurretEditLayout(); ((TurretEditLayout)EditorWidget).TreeRefreshNeeded += TreeRefreshNeeded_Event; break; case EditorMode.Enemy: EditorWidget = new EnemyEditLayout(); ((EnemyEditLayout)EditorWidget).TreeRefreshNeeded += TreeRefreshNeeded_Event; break; case EditorMode.Projectile: EditorWidget = new ProjectileEditLayout(); ((ProjectileEditLayout)EditorWidget).TreeRefreshNeeded += TreeRefreshNeeded_Event; break; case EditorMode.Analysis: EditorWidget = new LevelAnalysisLayout(); ((LevelAnalysisLayout)EditorWidget).TreeRefreshNeeded += TreeRefreshNeeded_Event; break; } TopLevelHBox = new HBox(false, 0); Add(TopLevelHBox); TopLevelHBox.Show(); // // Lefthand column // VBox vbox = new VBox(false, 0); TopLevelHBox.PackStart(vbox, false, true, 5); vbox.SetSizeRequest(100, -1); vbox.Show(); Button addLevelButton = new Button("+"); addLevelButton.Clicked += AddButton_Clicked; vbox.PackStart(addLevelButton, false, false, 5); addLevelButton.Show(); Button removeLevelButton = new Button("-"); removeLevelButton.Clicked += RemoveButton_Clicked; vbox.PackStart(removeLevelButton, false, false, 5); removeLevelButton.Show(); tree = new TreeView(); vbox.PackStart(tree, true, true, 0); // Create a column for the artist name TreeViewColumn levelColumn = new TreeViewColumn(); CellRendererText levelCellRenderer = new CellRendererText(); levelColumn.PackStart(levelCellRenderer, true); levelColumn.AddAttribute(levelCellRenderer, "text", 0); tree.AppendColumn(levelColumn); ListModel = new ListStore(typeof(string)); tree.Model = ListModel; tree.Selection.Mode = SelectionMode.Single; tree.Selection.Changed += TreeSelection_Changed; switch (editorMode) { case EditorMode.Level: levelColumn.Title = "Levels"; PopulateTreeWithLevels(); break; case EditorMode.Turret: levelColumn.Title = "Turrets"; PopulateTreeWithTurrets(); break; case EditorMode.Enemy: levelColumn.Title = "Enemies"; PopulateTreeWithEnemies(); break; case EditorMode.Projectile: levelColumn.Title = "Projectiles"; PopulateTreeWithProjectilees(); break; case EditorMode.Analysis: levelColumn.Title = "Analysis"; PopulateTreeWithLevels(); break; } tree.Show(); // // Righthand column // vbox = new VBox(false, 0); TopLevelHBox.PackStart(vbox, true, true, 5); vbox.Show(); HBox modeHbox = new HBox(true, 0); vbox.PackStart(modeHbox, false, true, 0); modeHbox.Show(); Button modeButton = new Button("Level"); modeButton.Show(); modeButton.Clicked += level_clicked_event; modeHbox.PackStart(modeButton, false, false, 5); modeButton = new Button("Turret"); modeButton.Show(); modeButton.Clicked += turret_clicked_event; modeHbox.PackStart(modeButton, false, false, 5); modeButton = new Button("Enemy"); modeButton.Show(); modeButton.Clicked += enemy_clicked_event; modeHbox.PackStart(modeButton, false, false, 5); modeButton = new Button("Projectile"); modeButton.Show(); modeButton.Clicked += projectile_clicked_event; modeHbox.PackStart(modeButton, false, false, 5); modeButton = new Button("Analysis"); modeButton.Show(); modeButton.Clicked += analysis_clicked_event; modeHbox.PackStart(modeButton, false, false, 5); vbox.PackStart(EditorWidget, true, true, 5); EditorWidget.Show(); ShowAll(); LevelManager.WriteAssetDirectory(); }