EnginesTree::EnginesTree(VBox *enginesVbox, PinotSettings &settings) : TreeView(), m_settings(settings) { ScrolledWindow *enginesScrolledwindow = manage(new ScrolledWindow()); // This is the actual engines tree set_events(Gdk::BUTTON_PRESS_MASK); set_flags(CAN_FOCUS); set_headers_visible(true); set_reorderable(false); set_enable_search(false); enginesScrolledwindow->set_flags(CAN_FOCUS); enginesScrolledwindow->set_shadow_type(SHADOW_NONE); enginesScrolledwindow->set_policy(POLICY_AUTOMATIC, POLICY_AUTOMATIC); enginesScrolledwindow->property_window_placement().set_value(CORNER_TOP_LEFT); enginesScrolledwindow->add(*this); // Position the scrolled window enginesVbox->pack_start(*enginesScrolledwindow, Gtk::PACK_EXPAND_WIDGET, 0); // Associate the columns model to the engines tree m_refStore = TreeStore::create(m_enginesColumns); set_model(m_refStore); TreeViewColumn *pColumn = new TreeViewColumn(_("Search Engines")); // Pack an icon renderer for engines icons CellRendererPixbuf *pIconRenderer = new CellRendererPixbuf(); pColumn->pack_start(*manage(pIconRenderer), false); pColumn->set_cell_data_func(*pIconRenderer, SigC::slot(*this, &EnginesTree::renderEngineIcon)); pColumn->pack_end(m_enginesColumns.m_name, false); append_column(*manage(pColumn)); // Make headers clickable set_headers_clickable(true); // Allow multiple selection get_selection()->set_mode(SELECTION_MULTIPLE); // Handle button presses signal_button_press_event().connect_notify(SigC::slot(*this, &EnginesTree::onButtonPressEvent)); // Control which rows can be selected get_selection()->set_select_function(SigC::slot(*this, &EnginesTree::onSelectionSelect)); // Listen for style changes signal_style_changed().connect_notify(SigC::slot(*this, &EnginesTree::onStyleChanged)); // Render the icons m_engineFolderIconPixbuf = render_icon(Stock::DIRECTORY, ICON_SIZE_MENU, "MetaSE-pinot"); // Populate populate(); // Show all show(); enginesScrolledwindow->show(); }
ResultsTree::ResultsTree(VBox *resultsVbox, Menu *pPopupMenu, PinotSettings &settings) : TreeView(), m_pPopupMenu(pPopupMenu), m_settings(settings), m_extractScrolledwindow(NULL), m_extractTextview(NULL), m_showExtract(true) { HBox *extractHbox = manage(new class Gtk::HBox(false, 0)); ScrolledWindow *resultsScrolledwindow = manage(new ScrolledWindow()); m_extractScrolledwindow = manage(new ScrolledWindow()); m_extractTextview = manage(new TextView()); // This is the actual results tree set_events(Gdk::BUTTON_PRESS_MASK); set_flags(CAN_FOCUS); set_headers_visible(true); set_rules_hint(true); set_reorderable(false); set_enable_search(true); resultsScrolledwindow->set_flags(CAN_FOCUS); resultsScrolledwindow->set_border_width(4); resultsScrolledwindow->set_shadow_type(SHADOW_NONE); resultsScrolledwindow->set_policy(POLICY_AUTOMATIC, POLICY_ALWAYS); resultsScrolledwindow->property_window_placement().set_value(CORNER_TOP_LEFT); resultsScrolledwindow->add(*this); // That's for the extract view m_extractTextview->set_flags(CAN_FOCUS); m_extractTextview->set_editable(false); m_extractTextview->set_cursor_visible(false); m_extractTextview->set_pixels_above_lines(0); m_extractTextview->set_pixels_below_lines(0); m_extractTextview->set_pixels_inside_wrap(0); m_extractTextview->set_left_margin(0); m_extractTextview->set_right_margin(0); m_extractTextview->set_indent(0); m_extractTextview->set_wrap_mode(WRAP_WORD); m_extractTextview->set_justification(JUSTIFY_LEFT); m_extractScrolledwindow->set_flags(CAN_FOCUS); m_extractScrolledwindow->set_border_width(4); m_extractScrolledwindow->set_shadow_type(SHADOW_NONE); m_extractScrolledwindow->set_policy(POLICY_AUTOMATIC, POLICY_AUTOMATIC); m_extractScrolledwindow->property_window_placement().set_value(CORNER_TOP_LEFT); m_extractScrolledwindow->add(*m_extractTextview); // Position the scrolled windows resultsVbox->pack_start(*resultsScrolledwindow, Gtk::PACK_EXPAND_WIDGET, 0); resultsVbox->pack_start(*m_extractScrolledwindow, Gtk::PACK_SHRINK, 0); // Associate the columns model to the results tree m_refStore = TreeStore::create(m_resultsColumns); set_model(m_refStore); // The title column is also used for status icons TreeViewColumn *treeColumn = new TreeViewColumn(_("Title")); // Pack an icon renderer for the viewed status CellRendererPixbuf *iconRenderer = new CellRendererPixbuf(); treeColumn->pack_start(*manage(iconRenderer), false); treeColumn->set_cell_data_func(*iconRenderer, SigC::slot(*this, &ResultsTree::renderViewStatus)); // Pack a second icon renderer for the indexed status iconRenderer = new CellRendererPixbuf(); treeColumn->pack_start(*manage(iconRenderer), false); treeColumn->set_cell_data_func(*iconRenderer, SigC::slot(*this, &ResultsTree::renderIndexStatus)); // And a third one for the ranking iconRenderer = new CellRendererPixbuf(); treeColumn->pack_start(*manage(iconRenderer), false); treeColumn->set_cell_data_func(*iconRenderer, SigC::slot(*this, &ResultsTree::renderRanking)); treeColumn->pack_end(m_resultsColumns.m_text, false); treeColumn->set_resizable(true); append_column(*manage(treeColumn)); // The last column is for the URL append_column(_("URL"), m_resultsColumns.m_url); // Make headers clickable set_headers_clickable(true); // Allow multiple selection get_selection()->set_mode(SELECTION_MULTIPLE); // Handle button presses signal_button_press_event().connect_notify(SigC::slot(*this, &ResultsTree::onButtonPressEvent)); // Enable interactive search set_search_column(m_resultsColumns.m_text.index()); set_search_equal_func(SigC::slot(*this, &ResultsTree::onSearchEqual)); // Control which rows can be selected get_selection()->set_select_function(SigC::slot(*this, &ResultsTree::onSelectionSelect)); // Listen for style changes signal_style_changed().connect_notify(SigC::slot(*this, &ResultsTree::onStyleChanged)); // Render the icons m_indexedIconPixbuf = render_icon(Stock::INDEX, ICON_SIZE_MENU, "MetaSE-pinot"); m_viewededIconPixbuf = render_icon(Stock::YES, ICON_SIZE_MENU, "MetaSE-pinot"); m_newIconPixbuf = render_icon(Stock::NEW, ICON_SIZE_MENU, "MetaSE-pinot"); m_upIconPixbuf = render_icon(Stock::GO_UP, ICON_SIZE_MENU, "MetaSE-pinot"); m_downIconPixbuf = render_icon(Stock::GO_DOWN, ICON_SIZE_MENU, "MetaSE-pinot"); // Show all show(); resultsScrolledwindow->show(); m_extractTextview->show(); m_extractScrolledwindow->show(); extractHbox->show(); }