LayerWindow::LayerWindow(MainWindow & mw) : OptionBox("Layers"), m_currentModel(0) { // destroy.connect(slot(this, &LayerWindow::destroy_handler)); // Gtk::VBox * vbox = manage( new Gtk::VBox(false, 2) ); Gtk::VBox * vbox = this; Gtk::HBox * tophbox = manage( new Gtk::HBox() ); tophbox->pack_start(*(manage( new Gtk::Label("Model:") )), Gtk::PACK_SHRINK, 2); m_modelMenu = manage( new Gtk::OptionMenu() ); tophbox->pack_start(*m_modelMenu, Gtk::PACK_EXPAND_WIDGET, 2); tophbox->pack_start(*(manage( new Gtk::Label("WOOT") ) ), Gtk::PACK_SHRINK, 2); vbox->pack_start(*tophbox, Gtk::PACK_SHRINK, 2); m_columns = new Gtk::TreeModelColumnRecord(); m_visColumn = new Gtk::TreeModelColumn<bool>(); m_typeColumn = new Gtk::TreeModelColumn<Glib::ustring>(); m_nameColumn = new Gtk::TreeModelColumn<Glib::ustring>(); m_ptrColumn = new Gtk::TreeModelColumn<Layer*>(); m_columns->add(*m_visColumn); m_columns->add(*m_typeColumn); m_columns->add(*m_nameColumn); m_columns->add(*m_ptrColumn); m_treeModel = Gtk::ListStore::create(*m_columns); m_treeView = manage( new Gtk::TreeView() ); m_treeView->set_model( m_treeModel ); Gtk::CellRendererToggle * crt = manage( new Gtk::CellRendererToggle() ); crt->signal_toggled().connect( sigc::mem_fun(*this, &LayerWindow::visibleToggled) ); int column_no = m_treeView->append_column("Visible", *crt); Gtk::TreeViewColumn * column = m_treeView->get_column(column_no - 1); column->add_attribute(crt->property_active(), *m_visColumn); column->set_clickable(); m_treeView->append_column("Type", *m_typeColumn); m_treeView->append_column("Name", *m_nameColumn); m_refTreeSelection = m_treeView->get_selection(); m_refTreeSelection->set_mode(Gtk::SELECTION_SINGLE); m_refTreeSelection->signal_changed().connect( sigc::mem_fun(*this, &LayerWindow::selectionChanged) ); vbox->pack_start(*manage(new Gtk::HSeparator()), Gtk::PACK_SHRINK); Gtk::ScrolledWindow *scrolled_window = manage(new Gtk::ScrolledWindow()); scrolled_window->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_ALWAYS); scrolled_window->set_size_request(250,150); scrolled_window->add(*m_treeView); vbox->pack_start(*scrolled_window); Gtk::HBox * bothbox = manage( new Gtk::HBox() ); Gtk::Button * b = manage( new Gtk::Button() ); Glib::RefPtr<Gdk::Bitmap> pixmask; Glib::RefPtr<Gdk::Pixmap> p = Gdk::Pixmap::create_from_xpm(get_colormap(), pixmask, newlayer_xpm); b->add_pixmap(p, pixmask); b->signal_clicked().connect(sigc::mem_fun(*this, &LayerWindow::newLayerRequested)); bothbox->pack_start(*b, Gtk::PACK_EXPAND_PADDING, 6); b = manage( new Gtk::Button() ); p = Gdk::Pixmap::create_from_xpm(get_colormap(), pixmask, raise_xpm); b->add_pixmap(p, pixmask); b->signal_clicked().connect(sigc::mem_fun(*this, &LayerWindow::raiseLayer)); bothbox->pack_start(*b, Gtk::PACK_EXPAND_PADDING, 6); b = manage( new Gtk::Button() ); p = Gdk::Pixmap::create_from_xpm(get_colormap(), pixmask, lower_xpm); b->add_pixmap(p, pixmask); b->signal_clicked().connect(sigc::mem_fun(*this, &LayerWindow::lowerLayer)); bothbox->pack_start(*b, Gtk::PACK_EXPAND_PADDING, 6); b = manage( new Gtk::Button() ); p = Gdk::Pixmap::create_from_xpm(get_colormap(), pixmask, duplicate_xpm); b->add_pixmap(p, pixmask); bothbox->pack_start(*b, Gtk::PACK_EXPAND_PADDING, 6); b = manage( new Gtk::Button() ); p = Gdk::Pixmap::create_from_xpm(get_colormap(), pixmask, delete_xpm); b->add_pixmap(p, pixmask); bothbox->pack_start(*b, Gtk::PACK_EXPAND_PADDING, 6); vbox->pack_start(*bothbox, Gtk::PACK_SHRINK, 6); // add(*vbox); // set_title("Layers"); set_sensitive(false); // FIXME Organise the xpms //m_eye = gdk_pixmap_create_from_xpm_d(m_clist->gtkobj()->clist_window, //&m_eyemask, >K_WIDGET(m_clist->gtkobj())->style->white, eye_xpm); //m_null = gdk_pixmap_create_from_xpm_d(m_clist->gtkobj()->clist_window, //&m_nullmask, >K_WIDGET(m_clist->gtkobj())->style->white, null_xpm); m_newLayerWindow = new NewLayerWindow(); // show_all(); mw.modelAdded.connect(sigc::mem_fun(*this, &LayerWindow::modelAdded)); mw.currentModelChanged.connect(sigc::mem_fun(*this, &LayerWindow::currentModelChanged)); signal_delete_event().connect(sigc::mem_fun(*this, &LayerWindow::deleteEvent)); }