Пример #1
0
        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();
        }