MetaDataTree::MetaDataTree() : editable_(false) { { Gtk::TreeView::Column* column = Gtk::manage( new Gtk::TreeView::Column(_("Key")) ); cell_renderer_key = Gtk::manage( new Gtk::CellRendererText() ); column->pack_start(*cell_renderer_key,true); column->add_attribute(cell_renderer_key->property_text(), model.key); cell_renderer_key->signal_edited().connect(sigc::mem_fun(*this,&studio::MetaDataTree::on_edited_key)); column->set_reorderable(); column->set_resizable(); column->set_clickable(); column->set_sort_column(model.key); append_column(*column); } { Gtk::TreeView::Column* column = Gtk::manage( new Gtk::TreeView::Column(_("Data")) ); cell_renderer_data = Gtk::manage( new Gtk::CellRendererText() ); column->pack_start(*cell_renderer_data,true); column->add_attribute(cell_renderer_data->property_text(), model.data); cell_renderer_data->signal_edited().connect(sigc::mem_fun(*this,&studio::MetaDataTree::on_edited_data)); column->set_reorderable(); column->set_resizable(); column->set_clickable(false); append_column(*column); } set_rules_hint(); add_events(Gdk::BUTTON_PRESS_MASK | Gdk::BUTTON_RELEASE_MASK); }
TimeTrackView() { int label_index(append_column_editable(_("Name"),model.label)); Gtk::TreeView::Column* label_column = get_column(label_index-1); { // --- T I M E T R A C K -------------------------------------------- Gtk::TreeView::Column* column = Gtk::manage( new Gtk::TreeView::Column(_("Time Track")) ); // Set up the value-node cell-renderer cellrenderer_time_track=LayerParamTreeStore::add_cell_renderer_value_node(column); cellrenderer_time_track->property_mode()=Gtk::CELL_RENDERER_MODE_ACTIVATABLE; cellrenderer_time_track->signal_waypoint_clicked_cellrenderer().connect(sigc::mem_fun(*this, &TimeTrackView::on_waypoint_clicked_timetrackview)); cellrenderer_time_track->signal_waypoint_changed().connect(sigc::mem_fun(*this, &TimeTrackView::on_waypoint_changed) ); column->add_attribute(cellrenderer_time_track->property_value_desc(), model.value_desc); column->add_attribute(cellrenderer_time_track->property_canvas(), model.canvas); //column->add_attribute(cellrenderer_time_track->property_visible(), model.is_value_node); //column->pack_start(*cellrenderer_time_track); // Finish setting up the column column->set_reorderable(); column->set_resizable(); column->set_min_width(200); append_column(*column); } set_rules_hint(); set_expander_column(*label_column); label_column->set_visible(false); set_headers_visible(false); set_size_request(-1,64); }
void Portfolio::reflesh() { //Fill the TreeView's model m_refTreeModel->clear(); m_TreeView.remove_all_columns(); //Add the TreeView's view columns: m_TreeView.append_column("Currency", m_Columns.m_col_currency); m_TreeView.append_column("Amount", m_Columns.m_col_amount); vector<AccountDatum*> accountData = OutgoingRequest::requestAccountData(); vector<double> in_yens; vector<double> percentages; double sum; for(size_t i=0; i<accountData.size(); i++) { string symbol = accountData.at(i)->currency; double rate = lexical_cast<double>(OutgoingRequest::requestLatestRate(symbol, "JPY")); double in_yen = accountData.at(i)->amount * rate; in_yens.push_back(in_yen); } sum = boost::accumulate(in_yens, 0); for(size_t i=0; i<accountData.size(); i++) { double percentage = in_yens.at(i)/sum * 100; percentages.push_back(percentage); } Gtk::TreeModel::Row row; for(size_t i=0; i<accountData.size(); i++){ row = *(m_refTreeModel->append()); row[m_Columns.m_col_currency] = accountData.at(i)->currency; row[m_Columns.m_col_amount] = accountData.at(i)->amount; row[m_Columns.m_col_percentage] = percentages.at(i); } Gtk::CellRendererProgress* cell = Gtk::manage(new Gtk::CellRendererProgress); int cols_count = m_TreeView.append_column("Percentage", *cell); Gtk::TreeViewColumn* pColumn = m_TreeView.get_column(cols_count - 1); if(pColumn) { pColumn->add_attribute(cell->property_value(), m_Columns.m_col_percentage); } for(guint i = 0; i < 2; i++) { Gtk::TreeView::Column* pColumn = m_TreeView.get_column(i); pColumn->set_reorderable(); } show_all_children(); }
void playlistWindow::configureTreeview(void) { // create the data model playlistStore = Gtk::ListStore::create(playlistColumns); // set the data model playlistTreeview->set_model(playlistStore); //Add the TreeView's view columns playlistTreeview->append_column("", playlistColumns.playlistidcol); playlistTreeview->append_column("Name", playlistColumns.playlistnamecol); playlistTreeview->append_column("Length", playlistColumns.playlistlengthcol); playlistTreeview->append_column("Format", playlistColumns.playlistformatcol); playlistTreeview->append_column("Date of creation", playlistColumns.playlistdateofcreationcol); playlistTreeview->append_column("Cell background color", playlistColumns.playlistcellbgcolorcol); Gtk::TreeView::Column* pColumn; for(guint i = 1; i < 5; i++) { pColumn = playlistTreeview->get_column(i); Gtk::CellRenderer* cellRenderer = playlistTreeview->get_column_cell_renderer(i); pColumn->add_attribute(cellRenderer->property_cell_background(), playlistColumns.playlistcellbgcolorcol); pColumn->set_reorderable(); switch(i) { case 1 : pColumn->set_sort_column(playlistColumns.playlistnamecol); break; case 2 : pColumn->set_sort_column(playlistColumns.playlistlengthcol); break; case 3 : pColumn->set_sort_column(playlistColumns.playlistformatcol); break; case 4 : pColumn->set_sort_column(playlistColumns.playlistdateofcreationcol); break; } } pColumn = playlistTreeview->get_column(5); pColumn->set_visible(false); //All the items to be reordered with drag-and-drop // Set the visibility state of the headers. playlistTreeview->set_headers_visible(true); // Allow the column title buttons to be clicked playlistTreeview->set_headers_clickable(true); // Resize all columns to their optimal width. playlistTreeview->columns_autosize(); // all element are reordorable playlistTreeview->set_reorderable(); playlistTreeview->set_rules_hint(); // grab the treeview selection playlistTreeviewSelection = playlistTreeview->get_selection(); // connect signal to dectect when tree selection change playlistTreeview->signal_button_press_event().connect(sigc::mem_fun(*this, &playlistWindow::on_playlist_selection_changed),false); initPlaylistStates(); }
ObjectsTreeView::ObjectsTreeView(std::shared_ptr<CG::World> world) : _world(world) { _refObjectsTreeModel = Gtk::ListStore::create(_objectsModelColumns); set_model(_refObjectsTreeModel); append_column("Name", _objectsModelColumns.colName); append_column("Type", _objectsModelColumns.colType); // _refObjectsTreeModel->set_sort_column(0, Gtk::SORT_ASCENDING); //Make all the columns reorderable for(guint i = 0; i < 2; i++) { Gtk::TreeView::Column* pColumn = get_column(i); pColumn->set_reorderable(); } init_popup_menu(); }
KeyframeTree::KeyframeTree() { const KeyframeTreeStore::Model model; { Gtk::TreeView::Column* column = Gtk::manage( new Gtk::TreeView::Column(_("Time")) ); cell_renderer_time = Gtk::manage( new CellRenderer_Time() ); column->pack_start(*cell_renderer_time,true); column->add_attribute(cell_renderer_time->property_time(), model.time); cell_renderer_time->signal_edited().connect(sigc::mem_fun(*this,&studio::KeyframeTree::on_edited_time)); column->set_reorderable(); column->set_resizable(); column->set_clickable(); column->set_sort_column(model.time); append_column(*column); } { Gtk::TreeView::Column* column = Gtk::manage( new Gtk::TreeView::Column(_("Length")) ); cell_renderer_time_delta = Gtk::manage( new CellRenderer_Time() ); column->pack_start(*cell_renderer_time_delta,true); column->add_attribute(cell_renderer_time_delta->property_time(), model.time_delta); cell_renderer_time_delta->signal_edited().connect(sigc::mem_fun(*this,&studio::KeyframeTree::on_edited_time_delta)); column->set_reorderable(); column->set_resizable(); column->set_clickable(false); // column->set_sort_column(model.time_delta); append_column(*column); } { Gtk::TreeView::Column* column = Gtk::manage( new Gtk::TreeView::Column(_("Jump")) ); Gtk::CellRendererText* cell_renderer_jump=Gtk::manage(new Gtk::CellRendererText()); column->pack_start(*cell_renderer_jump,true); cell_renderer_jump->property_text()=_("(JMP)"); cell_renderer_jump->property_foreground()="#003a7f"; column->set_reorderable(); column->set_resizable(); column->set_clickable(false); column->set_sort_column(COLUMNID_JUMP); // without this, (JMP) needs a double click?! append_column(*column); } { Gtk::TreeView::Column* column = Gtk::manage( new Gtk::TreeView::Column(_("Description")) ); cell_renderer_description=Gtk::manage(new Gtk::CellRendererText()); column->pack_start(*cell_renderer_description,true); column->add_attribute(cell_renderer_description->property_text(), model.description); cell_renderer_description->signal_edited().connect(sigc::mem_fun(*this,&studio::KeyframeTree::on_edited_description)); column->set_reorderable(); column->set_resizable(); column->set_clickable(); column->set_sort_column(model.description); append_column(*column); } set_enable_search(true); set_search_column(model.description); // This makes things easier to read. set_rules_hint(); // Make us more sensitive to several events add_events(Gdk::BUTTON_PRESS_MASK | Gdk::BUTTON_RELEASE_MASK); }
ChildrenTree::ChildrenTree() { const ChildrenTreeStore::Model model; { // --- N A M E -------------------------------------------------------- Gtk::TreeView::Column* column = Gtk::manage( new Gtk::TreeView::Column(_("ID")) ); // Set up the icon cell-renderer Gtk::CellRendererPixbuf* icon_cellrenderer = Gtk::manage( new Gtk::CellRendererPixbuf() ); column->pack_start(*icon_cellrenderer,false); column->add_attribute(icon_cellrenderer->property_pixbuf(), model.icon); // Pack the label into the column column->pack_start(model.label,true); // Finish setting up the column column->set_reorderable(); column->set_resizable(); column->set_clickable(); column->set_min_width(150); column->set_sort_column(model.label); tree_view.append_column(*column); } { // --- T Y P E -------------------------------------------------------- int cols_count = tree_view.append_column(_("Type"),model.type); Gtk::TreeViewColumn* column = tree_view.get_column(cols_count-1); if(column) { column->set_reorderable(); column->set_resizable(); column->set_clickable(); column->set_sort_column(model.type); } } { // --- V A L U E ----------------------------------------------------- Gtk::TreeView::Column* column = Gtk::manage( new Gtk::TreeView::Column(_("ValueBase")) ); // Set up the value cell-renderer cellrenderer_value=ChildrenTreeStore::add_cell_renderer_value(column); cellrenderer_value->signal_edited().connect(sigc::mem_fun(*this, &studio::ChildrenTree::on_edited_value)); cellrenderer_value->property_value()=synfig::ValueBase(); column->add_attribute(cellrenderer_value->property_value_desc(), model.value_desc); // Finish setting up the column tree_view.append_column(*column); column->set_sizing(Gtk::TREE_VIEW_COLUMN_AUTOSIZE); column->set_min_width(150); column->set_reorderable(); column->set_resizable(); column->set_clickable(false); } { // --- T I M E T R A C K -------------------------------------------- Gtk::TreeView::Column* column = Gtk::manage( new Gtk::TreeView::Column(_("Time Track")) ); column_time_track=column; // Set up the value-node cell-renderer cellrenderer_time_track=ChildrenTreeStore::add_cell_renderer_value_node(column); cellrenderer_time_track->property_mode()=Gtk::CELL_RENDERER_MODE_ACTIVATABLE; cellrenderer_time_track->signal_waypoint_clicked_cellrenderer().connect(sigc::mem_fun(*this, &studio::ChildrenTree::on_waypoint_clicked_childrentree) ); column->add_attribute(cellrenderer_time_track->property_value_desc(), model.value_desc); column->add_attribute(cellrenderer_time_track->property_canvas(), model.canvas); //column->pack_start(*cellrenderer_time_track); // Finish setting up the column column->set_reorderable(); column->set_resizable(); tree_view.append_column(*column); } // This makes things easier to read. tree_view.set_rules_hint(); // Make us more sensitive to several events tree_view.add_events(Gdk::BUTTON_PRESS_MASK | Gdk::BUTTON_RELEASE_MASK | Gdk::BUTTON1_MOTION_MASK | Gdk::BUTTON2_MOTION_MASK|Gdk::POINTER_MOTION_MASK); tree_view.signal_event().connect(sigc::mem_fun(*this, &studio::ChildrenTree::on_tree_event)); tree_view.signal_query_tooltip().connect(sigc::mem_fun(*this, &studio::ChildrenTree::on_tree_view_query_tooltip)); // Create a scrolled window for that tree Gtk::ScrolledWindow *scroll_children_tree = manage(new class Gtk::ScrolledWindow()); scroll_children_tree->set_flags(Gtk::CAN_FOCUS); scroll_children_tree->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); scroll_children_tree->add(tree_view); scroll_children_tree->set_shadow_type(Gtk::SHADOW_ETCHED_IN); scroll_children_tree->show(); attach(*scroll_children_tree, 0, 3, 0, 1, Gtk::EXPAND|Gtk::FILL,Gtk::EXPAND|Gtk::FILL, 0, 0); hbox=manage(new Gtk::HBox()); attach(*hbox, 0, 1, 1, 2, Gtk::FILL|Gtk::SHRINK, Gtk::SHRINK, 0, 0); tree_view.set_enable_search(true); tree_view.set_search_column(model.label); /* // Buttons to raise/lower/duplicate/delete children valuenodes // Commented out because these functions are not implemented // and children sort themselves alphabetically Gtk::Image *icon; //Gtk::IconSize iconsize(Gtk::IconSize::from_name("synfig-small_icon")); Gtk::IconSize iconsize(Gtk::ICON_SIZE_SMALL_TOOLBAR); SMALL_BUTTON(button_raise,"gtk-go-up",_("Raise")); SMALL_BUTTON(button_lower,"gtk-go-down",_("Lower")); SMALL_BUTTON(button_duplicate,"synfig-duplicate",_("Duplicate")); SMALL_BUTTON(button_delete,"gtk-delete",_("Delete")); hbox->pack_start(*button_raise,Gtk::PACK_SHRINK); hbox->pack_start(*button_lower,Gtk::PACK_SHRINK); hbox->pack_start(*button_duplicate,Gtk::PACK_SHRINK); hbox->pack_start(*button_delete,Gtk::PACK_SHRINK); button_raise->signal_clicked().connect(sigc::mem_fun(*this, &studio::ChildrenTree::on_raise_pressed)); button_lower->signal_clicked().connect(sigc::mem_fun(*this, &studio::ChildrenTree::on_lower_pressed)); button_duplicate->signal_clicked().connect(sigc::mem_fun(*this, &studio::ChildrenTree::on_duplicate_pressed)); button_delete->signal_clicked().connect(sigc::mem_fun(*this, &studio::ChildrenTree::on_delete_pressed)); button_raise->set_sensitive(false); button_lower->set_sensitive(false); button_duplicate->set_sensitive(false); button_delete->set_sensitive(false); */ get_selection()->signal_changed().connect(sigc::mem_fun(*this, &studio::ChildrenTree::on_selection_changed)); tree_view.set_reorderable(true); hbox->show(); tree_view.show(); tree_view.set_has_tooltip(); //get_selection()->set_mode(Gtk::SELECTION_MULTIPLE); }
KeyframeTree::KeyframeTree() { const KeyframeTreeStore::Model model; { // --- O N / O F F ---------------------------------------------------- Gtk::TreeView::Column* column = Gtk::manage( new Gtk::TreeView::Column(_(" ")) ); // Set up the on/off cell-renderer Gtk::CellRendererToggle* cellrenderer = Gtk::manage( new Gtk::CellRendererToggle() ); cellrenderer->signal_toggled().connect(sigc::mem_fun(*this, &studio::KeyframeTree::on_keyframe_toggle)); column->pack_start(*cellrenderer,false); column->add_attribute(cellrenderer->property_active(), model.active); append_column(*column); } { Gtk::TreeView::Column* column = Gtk::manage( new Gtk::TreeView::Column(_("Time")) ); cell_renderer_time = Gtk::manage( new CellRenderer_Time() ); column->pack_start(*cell_renderer_time,true); column->add_attribute(cell_renderer_time->property_time(), model.time); cell_renderer_time->signal_edited().connect(sigc::mem_fun(*this,&studio::KeyframeTree::on_edited_time)); column->set_reorderable(); column->set_resizable(); column->set_clickable(); column->set_sort_column(model.time); append_column(*column); } { Gtk::TreeView::Column* column = Gtk::manage( new Gtk::TreeView::Column(_("Length")) ); cell_renderer_time_delta = Gtk::manage( new CellRenderer_Time() ); column->pack_start(*cell_renderer_time_delta,true); column->add_attribute(cell_renderer_time_delta->property_time(), model.time_delta); cell_renderer_time_delta->signal_edited().connect(sigc::mem_fun(*this,&studio::KeyframeTree::on_edited_time_delta)); column->set_reorderable(); column->set_resizable(); column->set_clickable(false); // column->set_sort_column(model.time_delta); append_column(*column); } { Gtk::TreeView::Column* column = Gtk::manage( new Gtk::TreeView::Column(_("Jump")) ); Gtk::CellRendererText* cell_renderer_jump=Gtk::manage(new Gtk::CellRendererText()); column->pack_start(*cell_renderer_jump,true); cell_renderer_jump->property_text()=_("(JMP)"); cell_renderer_jump->property_foreground()="#003a7f"; column->set_reorderable(); column->set_resizable(); column->set_clickable(false); append_column(*column); } { Gtk::TreeView::Column* column = Gtk::manage( new Gtk::TreeView::Column(_("Description")) ); cell_renderer_description=Gtk::manage(new Gtk::CellRendererText()); column->pack_start(*cell_renderer_description,true); column->add_attribute(cell_renderer_description->property_text(), model.description); cell_renderer_description->signal_edited().connect(sigc::mem_fun(*this,&studio::KeyframeTree::on_edited_description)); column->set_reorderable(); column->set_resizable(); column->set_clickable(); column->set_sort_column(model.description); append_column(*column); } set_enable_search(true); set_search_column(model.description); // This makes things easier to read. set_rules_hint(); // Make us more sensitive to several events add_events(Gdk::BUTTON_PRESS_MASK | Gdk::BUTTON_RELEASE_MASK); // Listen to the changed selection signal to perform kf synchro thrue canvas interface get_selection()->signal_changed().connect(sigc::mem_fun(*this, &studio::KeyframeTree::on_selection_changed)); send_selection = false; }
TimeTrackView() { //Text attributes must be the same that layer param tree's to have aligned rows Pango::AttrList attr_list; { Pango::AttrInt pango_size(Pango::Attribute::create_attr_size(Pango::SCALE*8)); pango_size.set_start_index(0); pango_size.set_end_index(64); attr_list.change(pango_size); } int label_index(append_column_editable(_("Name"),model.label)); Gtk::TreeView::Column* label_column = get_column(label_index-1); label_column->set_sizing(Gtk::TREE_VIEW_COLUMN_AUTOSIZE); { // --- T I M E T R A C K -------------------------------------------- Gtk::TreeView::Column* column = Gtk::manage( new Gtk::TreeView::Column(_("Time Track")) ); Gtk::TreeView::Column* column2 = Gtk::manage( new Gtk::TreeView::Column("Align") ); // Set up the value-node cell-renderer cellrenderer_time_track=LayerParamTreeStore::add_cell_renderer_value_node(column); cellrenderer_time_track->property_mode()=Gtk::CELL_RENDERER_MODE_ACTIVATABLE; cellrenderer_time_track->signal_waypoint_clicked_cellrenderer().connect(sigc::mem_fun(*this, &TimeTrackView::on_waypoint_clicked_timetrackview)); cellrenderer_time_track->signal_waypoint_changed().connect(sigc::mem_fun(*this, &TimeTrackView::on_waypoint_changed) ); //column->add_attribute(cellrenderer_time_track->property_value_desc(), model.value_desc); //column->add_attribute(cellrenderer_time_track->property_canvas(), model.canvas); //column->add_attribute(cellrenderer_time_track->property_visible(), model.is_value_node); //column->pack_start(*cellrenderer_time_track); // Add a fixed size (same that layer param tree) empty text renderer // to align the rows with params dock when the text is taller than value_type icons height Gtk::CellRendererText* text_cellrenderer = Gtk::manage( new Gtk::CellRendererText() ); text_cellrenderer->property_attributes()=attr_list; column2->pack_end(*text_cellrenderer,false); text_cellrenderer->set_fixed_size (1,-1); // Add a fixed size (1pixel widht, same height than value_type icon) empty (alpha) icon // to align the rows with params dock when the text is smaller than value_type icons height Gtk::CellRendererPixbuf* icon_cellrenderer = Gtk::manage( new Gtk::CellRendererPixbuf() ); Glib::RefPtr<Gdk::Pixbuf> pixbuf; pixbuf=Gtk::Button().render_icon_pixbuf(Gtk::StockID("synfig-utils_timetrack_align"),Gtk::ICON_SIZE_SMALL_TOOLBAR); icon_cellrenderer->property_pixbuf() = pixbuf; column2->pack_end(*icon_cellrenderer,false); icon_cellrenderer->set_fixed_size(1,-1); // Finish setting up the columns column->set_reorderable(); column->set_sizing(Gtk::TREE_VIEW_COLUMN_AUTOSIZE); column->set_resizable(); column->set_expand(true); // Commented during Align rows fixing // http://www.synfig.org/issues/thebuggenie/synfig/issues/161 // column->set_min_width(200); column2->set_resizable(); column2->set_fixed_width(1); append_column(*column); append_column(*column2); } set_rules_hint(); set_expander_column(*label_column); label_column->set_visible(false); set_headers_visible(false); set_size_request(-1,64); }