Пример #1
0
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();
}
Пример #2
0
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();
}