virtual void initialiseModule(const ApplicationContext& ctx) { rMessage() << getName() << "::initialiseModule called." << std::endl; // Associated "def_head" with an empty property editor instance GlobalEntityInspector().registerPropertyEditor( ui::DEF_HEAD_KEY, ui::IPropertyEditorPtr(new ui::AIHeadPropertyEditor()) ); GlobalEntityInspector().registerPropertyEditor( ui::DEF_VOCAL_SET_KEY, ui::IPropertyEditorPtr(new ui::AIVocalSetPropertyEditor()) ); GlobalCommandSystem().addCommand("FixupMapDialog", ui::FixupMapDialog::RunDialog); GlobalEventManager().addCommand("FixupMapDialog", "FixupMapDialog"); GlobalUIManager().getMenuManager().add("main/map", "FixupMapDialog", ui::menuItem, _("Fixup Map..."), // caption "", // icon "FixupMapDialog" ); GlobalRadiant().signal_radiantStarted().connect( sigc::ptr_fun(ui::AIEditingPanel::onRadiantStartup) ); }
void shutdownModule() { ui::AIEditingPanel::Shutdown(); // Remove associated property keys GlobalEntityInspector().unregisterPropertyEditor(ui::DEF_VOCAL_SET_KEY); GlobalEntityInspector().unregisterPropertyEditor(ui::DEF_HEAD_KEY); }
void RegularLayout::activate() { GtkWindow* parent = GlobalMainFrame().getTopLevelWindow(); // Create a new camera window and parent it _camWnd = GlobalCamera().createCamWnd(); // greebo: The mainframe window acts as parent for the camwindow _camWnd->setContainer(parent); // Pack in the camera window GtkWidget* camWindow = gtkutil::FramedWidget(_camWnd->getWidget()); // Allocate a new OrthoView and set its ViewType to XY XYWndPtr xyWnd = GlobalXYWnd().createEmbeddedOrthoView(); xyWnd->setViewType(XY); // Create a framed window out of the view's internal widget GtkWidget* xyView = gtkutil::FramedWidget(xyWnd->getWidget()); // Create the texture window GtkWidget* texWindow = gtkutil::FramedWidget( GlobalTextureBrowser().constructWindow(parent) ); // Now pack those widgets into the paned widgets gtkutil::Paned texCamPane(gtkutil::Paned::Vertical); // First, pack the texwindow and the camera texCamPane.setFirstChild(camWindow, true); // allow shrinking texCamPane.setSecondChild(texWindow, true); // allow shrinking _regular.texCamPane = texCamPane.getWidget(); // Depending on the viewstyle, pack the xy left or right gtkutil::Paned horizPane(gtkutil::Paned::Horizontal); if (_regularLeft) { horizPane.setFirstChild(_regular.texCamPane, true); // allow shrinking horizPane.setSecondChild(xyView, true); // allow shrinking } else { // This is "regular", put the xyview to the left horizPane.setFirstChild(xyView, true); // allow shrinking horizPane.setSecondChild(_regular.texCamPane, true); // allow shrinking } _regular.horizPane = horizPane.getWidget(); // Retrieve the main container of the main window GtkWidget* mainContainer = GlobalMainFrame().getMainContainer(); gtk_container_add(GTK_CONTAINER(mainContainer), GTK_WIDGET(_regular.horizPane)); // Set some default values for the width and height gtk_paned_set_position(GTK_PANED(_regular.horizPane), 500); gtk_paned_set_position(GTK_PANED(_regular.texCamPane), 350); // Connect the pane position trackers _regular.posHPane.connect(_regular.horizPane); _regular.posTexCamPane.connect(_regular.texCamPane); // Now attempt to load the paned positions from the registry restoreStateFromPath(RKEY_REGULAR_ROOT); GlobalGroupDialog().showDialogWindow(); // greebo: Now that the dialog is shown, tell the Entity Inspector to reload // the position info from the Registry once again. GlobalEntityInspector().restoreSettings(); GlobalGroupDialog().hideDialogWindow(); gtk_widget_show_all(mainContainer); // Hide the camera toggle option for non-floating views GlobalUIManager().getMenuManager().setVisibility("main/view/cameraview", false); // Hide the console/texture browser toggles for non-floating/non-split views GlobalUIManager().getMenuManager().setVisibility("main/view/textureBrowser", false); }
void SplitPaneLayout::constructLayout() { _splitPane = SplitPaneView(); _cameraPosition = getCameraPositionFromRegistry(); const Glib::RefPtr<Gtk::Window>& parent = GlobalMainFrame().getTopLevelWindow(); // Create a new camera window and parent it _camWnd = GlobalCamera().createCamWnd(); // greebo: The mainframe window acts as parent for the camwindow _camWnd->setContainer(parent); _camera = Gtk::manage(new gtkutil::FramedWidget(*_camWnd->getWidget())); // Allocate paned widgets _splitPane.horizPane.reset(new Gtk::HPaned); _splitPane.vertPane1 = Gtk::manage(new Gtk::VPaned); _splitPane.vertPane2 = Gtk::manage(new Gtk::VPaned); // Arrange the widgets into the paned views _splitPane.horizPane->pack1(*_splitPane.vertPane1, true, true); _splitPane.horizPane->pack2(*_splitPane.vertPane2, true, true); // Retrieve the main container of the main window Gtk::Container* mainContainer = GlobalMainFrame().getMainContainer(); mainContainer->add(*_splitPane.horizPane); _splitPane.horizPane->set_position(200); _splitPane.vertPane1->set_position(200); _splitPane.vertPane2->set_position(400); _splitPane.posHPane.connect(_splitPane.horizPane.get()); _splitPane.posVPane1.connect(_splitPane.vertPane1); _splitPane.posVPane2.connect(_splitPane.vertPane2); // Attempt to restore this layout's state, this will also construct the orthoviews restoreStateFromPath(RKEY_SPLITPANE_ROOT); // Distribute widgets among quadrants distributeWidgets(); { Gtk::Frame* textureBrowser = Gtk::manage(new gtkutil::FramedWidget( *GlobalTextureBrowser().constructWindow(parent) )); // Add the Media Browser page GlobalGroupDialog().addPage( "textures", // name "Textures", // tab title "icon_texture.png", // tab icon *textureBrowser, // page widget _("Texture Browser") ); } GlobalGroupDialog().showDialogWindow(); // greebo: Now that the dialog is shown, tell the Entity Inspector to reload // the position info from the Registry once again. GlobalEntityInspector().restoreSettings(); GlobalGroupDialog().hideDialogWindow(); mainContainer->show_all(); }
void SplitPaneLayout::constructLayout() { _splitPane.clear(); wxFrame* topLevelParent = GlobalMainFrame().getWxTopLevelWindow(); // Main splitter _splitPane.horizPane = new wxSplitterWindow(topLevelParent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_LIVE_UPDATE | wxSP_3D | wxWANTS_CHARS, "SplitPaneHorizPane"); GlobalMainFrame().getWxMainContainer()->Add(_splitPane.horizPane, 1, wxEXPAND); // Two sub-splitters _splitPane.vertPane1 = new wxSplitterWindow(_splitPane.horizPane, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_LIVE_UPDATE | wxSP_3D | wxWANTS_CHARS, "SplitPaneVertPane1"); _splitPane.vertPane2 = new wxSplitterWindow(_splitPane.horizPane, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_LIVE_UPDATE | wxSP_3D | wxWANTS_CHARS, "SplitPaneVertPane2"); _splitPane.vertPane1->SetMinimumPaneSize(1); // disallow unsplitting _splitPane.vertPane2->SetMinimumPaneSize(1); // disallow unsplitting _splitPane.horizPane->SplitVertically(_splitPane.vertPane1, _splitPane.vertPane2); _splitPane.posHPane.connect(_splitPane.horizPane); _splitPane.posVPane1.connect(_splitPane.vertPane1); _splitPane.posVPane2.connect(_splitPane.vertPane2); // Create the views and place them into the splitters createViews(); // Attempt to restore this layout's state, this will also construct the orthoviews restoreStateFromPath(RKEY_SPLITPANE_ROOT); // Add a new texture browser to the group dialog pages wxWindow* textureBrowser = new TextureBrowser(topLevelParent); // Texture Page { IGroupDialog::PagePtr page(new IGroupDialog::Page); page->name = "textures"; page->windowLabel = _("Texture Browser"); page->page = textureBrowser; page->tabIcon = "icon_texture.png"; page->tabLabel = _("Textures"); GlobalGroupDialog().addPage(page); } GlobalGroupDialog().showDialogWindow(); // greebo: Now that the dialog is shown, tell the Entity Inspector to reload // the position info from the Registry once again. GlobalEntityInspector().restoreSettings(); GlobalGroupDialog().hideDialogWindow(); topLevelParent->Layout(); }
void RegularLayout::activate() { wxFrame* topLevelParent = GlobalMainFrame().getWxTopLevelWindow(); // Main splitter _regular.horizPane = new wxSplitterWindow(topLevelParent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_LIVE_UPDATE | wxSP_3D | wxWANTS_CHARS, "RegularHorizPane"); _regular.horizPane->SetSashGravity(0.5); _regular.horizPane->SetSashPosition(500); _regular.horizPane->SetMinimumPaneSize(1); // disallow unsplitting GlobalMainFrame().getWxMainContainer()->Add(_regular.horizPane, 1, wxEXPAND); // Allocate a new OrthoView and set its ViewType to XY XYWndPtr xywnd = GlobalXYWnd().createEmbeddedOrthoView(XY, _regular.horizPane); // Texture/Camera Pane _regular.texCamPane = new wxSplitterWindow(_regular.horizPane, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_LIVE_UPDATE | wxSP_3D | wxWANTS_CHARS, "RegularTexCamPane"); _regular.texCamPane->SetSashGravity(0.5); _regular.texCamPane->SetSashPosition(350); _regular.texCamPane->SetMinimumPaneSize(1); // disallow unsplitting // Create a new camera window and parent it _camWnd = GlobalCamera().createCamWnd(_regular.texCamPane); // Texture Window wxWindow* texBrowser = GlobalTextureBrowser().constructWindow(_regular.texCamPane); _regular.texCamPane->SplitHorizontally(_camWnd->getMainWidget(), texBrowser); if (_regularLeft) { _regular.horizPane->SplitVertically(_regular.texCamPane, xywnd->getGLWidget()); } else { // This is "regular", put the xyview to the left _regular.horizPane->SplitVertically(xywnd->getGLWidget(), _regular.texCamPane); } // Connect the pane position trackers _regular.posHPane.connect(_regular.horizPane); _regular.posTexCamPane.connect(_regular.texCamPane); // Now attempt to load the paned positions from the registry restoreStateFromPath(RKEY_REGULAR_ROOT); GlobalGroupDialog().showDialogWindow(); // greebo: Now that the dialog is shown, tell the Entity Inspector to reload // the position info from the Registry once again. GlobalEntityInspector().restoreSettings(); GlobalGroupDialog().hideDialogWindow(); topLevelParent->Layout(); // Hide the camera toggle option for non-floating views GlobalUIManager().getMenuManager().setVisibility("main/view/cameraview", false); // Hide the console/texture browser toggles for non-floating/non-split views GlobalUIManager().getMenuManager().setVisibility("main/view/textureBrowser", false); }