ClassEditor::ClassEditor(StimTypes& stimTypes) : Gtk::VBox(false, 6), _stimTypes(stimTypes), _updatesDisabled(false) { set_border_width(6); _list = Gtk::manage(new Gtk::TreeView); _list->set_size_request(TREE_VIEW_WIDTH, TREE_VIEW_HEIGHT); // Connect the signals to the callbacks _list->get_selection()->signal_changed().connect(sigc::mem_fun(*this, &ClassEditor::onSRSelectionChange)); _list->signal_key_press_event().connect(sigc::mem_fun(*this, &ClassEditor::onTreeViewKeyPress), false); _list->signal_button_release_event().connect( sigc::bind(sigc::mem_fun(*this, &ClassEditor::onTreeViewButtonRelease), _list)); // Add the columns to the treeview // ID number Gtk::TreeViewColumn* numCol = Gtk::manage(new Gtk::TreeViewColumn("#")); Gtk::CellRendererText* numRenderer = Gtk::manage(new Gtk::CellRendererText); numCol->pack_start(*numRenderer, false); numCol->add_attribute(numRenderer->property_text(), SREntity::getColumns().index); numCol->add_attribute(numRenderer->property_foreground(), SREntity::getColumns().colour); _list->append_column(*numCol); // The S/R icon Gtk::TreeViewColumn* classCol = Gtk::manage(new Gtk::TreeViewColumn(_("S/R"))); Gtk::CellRendererPixbuf* pixbufRenderer = Gtk::manage(new Gtk::CellRendererPixbuf); classCol->pack_start(*pixbufRenderer, false); classCol->add_attribute(pixbufRenderer->property_pixbuf(), SREntity::getColumns().srClass); _list->append_column(*classCol); // The Type Gtk::TreeViewColumn* typeCol = Gtk::manage(new Gtk::TreeViewColumn(_("Type"))); Gtk::CellRendererPixbuf* typeIconRenderer = Gtk::manage(new Gtk::CellRendererPixbuf); typeCol->pack_start(*typeIconRenderer, false); typeCol->add_attribute(typeIconRenderer->property_pixbuf(), SREntity::getColumns().icon); Gtk::CellRendererText* typeTextRenderer = Gtk::manage(new Gtk::CellRendererText); typeCol->pack_start(*typeTextRenderer, false); typeCol->add_attribute(typeTextRenderer->property_text(), SREntity::getColumns().caption); typeCol->add_attribute(typeTextRenderer->property_foreground(), SREntity::getColumns().colour); _list->append_column(*typeCol); }
void PluginDisplay::display_type(Gtk::CellRenderer *cell, const Gtk::TreeIter& it) { PortDesc *q = it->get_value(port_liststore->col.port); Gtk::CellRendererText *tcell = dynamic_cast<Gtk::CellRendererText*>(cell); if (q->is_set(ChangeableValues::tp_set)) { tcell->property_foreground().set_value("red"); } else { tcell->property_foreground_set().set_value(false); } }
Gtk::Widget& DifficultyEditor::createTreeView() { // First, create the treeview _settingsView = Gtk::manage(new Gtk::TreeView(_settings->getTreeStore())); _settingsView->set_size_request(TREE_VIEW_MIN_WIDTH, -1); // Connect the tree view selection Glib::RefPtr<Gtk::TreeSelection> selection = _settingsView->get_selection(); selection->signal_changed().connect(sigc::mem_fun(*this, &DifficultyEditor::onSettingSelectionChange)); // Add columns to this view Gtk::CellRendererText* textRenderer = Gtk::manage(new Gtk::CellRendererText); Gtk::TreeViewColumn* settingCol = Gtk::manage(new Gtk::TreeViewColumn); settingCol->pack_start(*textRenderer, false); settingCol->set_title(_("Setting")); settingCol->set_sizing(Gtk::TREE_VIEW_COLUMN_AUTOSIZE); settingCol->set_spacing(3); _settingsView->append_column(*settingCol); settingCol->add_attribute(textRenderer->property_text(), _settings->getColumns().description); settingCol->add_attribute(textRenderer->property_foreground(), _settings->getColumns().colour); settingCol->add_attribute(textRenderer->property_strikethrough(), _settings->getColumns().isOverridden); Gtk::ScrolledWindow* frame = Gtk::manage(new gtkutil::ScrolledFrame(*_settingsView)); // Create the action buttons Gtk::HBox* buttonHBox = Gtk::manage(new Gtk::HBox(false, 6)); // Create button _createSettingButton = Gtk::manage(new Gtk::Button(Gtk::Stock::ADD)); _createSettingButton->signal_clicked().connect(sigc::mem_fun(*this, &DifficultyEditor::onSettingCreate)); // Delete button _deleteSettingButton = Gtk::manage(new Gtk::Button(Gtk::Stock::DELETE)); _deleteSettingButton->signal_clicked().connect(sigc::mem_fun(*this, &DifficultyEditor::onSettingDelete)); _refreshButton = Gtk::manage(new Gtk::Button(Gtk::Stock::REFRESH)); _refreshButton->signal_clicked().connect(sigc::mem_fun(*this, &DifficultyEditor::onRefresh)); buttonHBox->pack_start(*_createSettingButton, true, true, 0); buttonHBox->pack_start(*_deleteSettingButton, true, true, 0); buttonHBox->pack_start(*_refreshButton, true, true, 0); Gtk::VBox* vbox = Gtk::manage(new Gtk::VBox(false, 6)); vbox->pack_start(*frame, true, true, 0); vbox->pack_start(*buttonHBox, false, false, 0); vbox->set_border_width(12); return *vbox; }
void PluginDisplay::display_upper(Gtk::CellRenderer *cell, const Gtk::TreeIter& it) { PortDesc *q = it->get_value(port_liststore->col.port); Gtk::CellRendererText *tcell = dynamic_cast<Gtk::CellRendererText*>(cell); tcell->property_foreground_set().set_value(false); tcell->property_background_set().set_value(false); DisplayType tp = q->get_tp(); if (tp == tp_toggle || tp == tp_display_toggle || tp == tp_none) { cell->property_visible().set_value(false); return; } cell->property_visible().set_value(true); if (q->is_set(ChangeableValues::up_set)) { tcell->property_foreground().set_value("red"); } else if (q->fake_up) { tcell->property_background().set_value("grey"); } }