This repository has been archived on 2025-03-02. You can view files and clone it, but cannot push or open issues or pull requests.
neofx-zoomedit/SidebarManager.cpp

56 lines
1.5 KiB
C++
Raw Normal View History

#include "SidebarManager.h"
SidebarManager::SidebarManager(EditManager *editor)
: sidebarToolbox(editor), sidebarView(editor), sidebarAdd(editor), toolAddPolygon(editor)
{
this->editor = editor;
activeSidebar = NULL;
2007-12-04 21:35:01 +00:00
sidebar = gtk_vbox_new(FALSE, 0);
g_object_ref_sink(G_OBJECT(sidebar));
gtk_box_pack_start_defaults(GTK_BOX(sidebar), sidebarToolbox.getWidget());
scrolledWindow = gtk_scrolled_window_new(NULL, NULL);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledWindow), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
gtk_box_pack_end_defaults(GTK_BOX(sidebar), scrolledWindow);
gtk_widget_show(scrolledWindow);
viewport = gtk_viewport_new(NULL, NULL);
2007-12-04 21:35:01 +00:00
gtk_container_add(GTK_CONTAINER(scrolledWindow), viewport);
gtk_viewport_set_shadow_type(GTK_VIEWPORT(viewport), GTK_SHADOW_NONE);
sidebarToolbox.addTool(&toolAddPolygon);
2007-12-04 21:35:01 +00:00
gtk_widget_show(sidebar);
}
SidebarManager::~SidebarManager() {
g_object_unref(G_OBJECT(sidebar));
}
void SidebarManager::update() {
Sidebar *newSidebar = activeSidebar;
switch(editor->getMode()) {
case EditManager::VIEW:
newSidebar = &sidebarView;
break;
case EditManager::ADD:
newSidebar = &sidebarAdd;
}
if(activeSidebar != newSidebar) {
if(activeSidebar)
gtk_container_remove(GTK_CONTAINER(viewport), gtk_bin_get_child(GTK_BIN(viewport)));
gtk_container_add(GTK_CONTAINER(viewport), newSidebar->getWidget());
activeSidebar = newSidebar;
}
2007-12-04 21:35:01 +00:00
sidebarToolbox.update();
activeSidebar->update();
}