From 356efaf89afdad141b313767e1a2b89de3c08d0a Mon Sep 17 00:00:00 2001 From: neoraider Date: Sun, 6 Apr 2008 13:29:03 +0000 Subject: zoomedit: Recreated ZoomEdit based on Glademm. --- SidebarToolbox.cpp | 126 ----------------------------------------------------- 1 file changed, 126 deletions(-) delete mode 100644 SidebarToolbox.cpp (limited to 'SidebarToolbox.cpp') diff --git a/SidebarToolbox.cpp b/SidebarToolbox.cpp deleted file mode 100644 index b264835..0000000 --- a/SidebarToolbox.cpp +++ /dev/null @@ -1,126 +0,0 @@ -#include "SidebarToolbox.h" -#include "Window.h" - - -void SidebarToolbox::buttonToggled(GtkWidget *button, SidebarToolbox *toolbox) { - if(!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button))) - return; - - toolbox->activateTool(toolbox->buttonsRev[button]); - - toolbox->window->update(); -} - -void SidebarToolbox::sizeAllocate(GtkWidget *widget, GtkAllocation *allocation, SidebarToolbox *toolbox) { - toolbox->updateRows(false); -} - - -void SidebarToolbox::updateRows(bool changed) { - GtkRequisition requisition; - - gtk_widget_size_request(buttons[tools.front()], &requisition); - - int cols = MAX(1, widget->allocation.width/requisition.width); - int rows = (tools.size()+cols-1)/cols; - - if(changed || this->cols != cols || this->rows != rows) { - this->cols = cols; - this->rows = rows; - - for(std::map::iterator button = buttons.begin(); button != buttons.end(); button++) { - if(gtk_widget_get_parent(button->second)) - gtk_container_remove(GTK_CONTAINER(widget), button->second); - } - - gtk_table_resize(GTK_TABLE(widget), MAX(1, rows), MAX(1, cols)); - - int iCol = 0, iRow = 0; - for(std::list::iterator tool = tools.begin(); tool != tools.end(); tool++) { - gtk_table_attach(GTK_TABLE(widget), buttons[*tool], iCol, iCol+1, iRow, iRow+1, GTK_FILL, GTK_FILL, 0, 0); - - iCol++; - if(iCol >= cols) { - iRow++; - iCol = 0; - } - } - } -} - -void SidebarToolbox::activateTool(Tool *tool) { - if(activeTool == tool) - return; - - if(activeTool) - activeTool->deactivate(); - - activeTool = tool; - tool->activate(); -} - -SidebarToolbox::SidebarToolbox(Window *window) : toolSelector(&window->getEditManager()) { - this->window = window; - - widget = gtk_table_new(1, 1, TRUE); - g_object_ref_sink(G_OBJECT(widget)); - - g_signal_connect(G_OBJECT(widget), "size-allocate", G_CALLBACK(sizeAllocate), this); - - addTool(&toolSelector); - activeTool = NULL; - activateTool(&toolSelector); - - gtk_widget_show(widget); -} - -SidebarToolbox::~SidebarToolbox() { - for(std::map::iterator button = buttons.begin(); button != buttons.end(); button++) { - g_object_unref(G_OBJECT(button->second)); - } - - g_object_unref(G_OBJECT(widget)); -} - -void SidebarToolbox::addTool(Tool *tool) { - GtkWidget *button; - if(tools.empty()) - button = gtk_radio_button_new(NULL); - else - button = gtk_radio_button_new_from_widget(GTK_RADIO_BUTTON(buttons[tools.front()])); - g_object_ref_sink(G_OBJECT(button)); - gtk_toggle_button_set_mode(GTK_TOGGLE_BUTTON(button), FALSE); - gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); - gtk_button_set_image(GTK_BUTTON(button), tool->getImage()); - - gtk_widget_show(button); - g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(buttonToggled), this); - - tools.push_back(tool); - buttons.insert(std::pair(tool, button)); - buttonsRev.insert(std::pair(button, tool)); - - updateRows(true); - update(); -} - -void SidebarToolbox::removeTool(Tool *tool) { - if(tool == activeTool) { - activateTool(&toolSelector); - } - - tools.remove(tool); - - buttonsRev.erase(buttons[tool]); - g_object_unref(G_OBJECT(buttons[tool])); - buttons.erase(tool); - - updateRows(true); -} - -void SidebarToolbox::update() { - for(std::list::iterator tool = tools.begin(); tool != tools.end(); tool++) { - gtk_widget_set_tooltip_text(buttons[*tool], (*tool)->getName()); - gtk_widget_set_sensitive(buttons[*tool], (*tool)->isSensitive()); - } -} -- cgit v1.2.3