[Debtags-commits] [svn] r2039 - in debtags-edit/1.2: . src

Enrico Zini enrico at alioth.debian.org
Tue Oct 31 23:58:04 CET 2006


Author: enrico
Date: Tue Oct 31 23:58:04 2006
New Revision: 2039

Added:
   debtags-edit/1.2/src/AddButtons.h
Modified:
   debtags-edit/1.2/   (props changed)
   debtags-edit/1.2/src/Makefile.am
   debtags-edit/1.2/src/TagEditor.cc
   debtags-edit/1.2/src/TagEditor.h
   debtags-edit/1.2/src/TagSelector.cc
   debtags-edit/1.2/src/TagSelector.h
Log:
 r3584 at viaza:  enrico | 2006-10-31 23:57:35 +0100
 Factored out common add button code into AddButtons.h


Modified: debtags-edit/1.2/src/Makefile.am
==============================================================================
--- debtags-edit/1.2/src/Makefile.am	(original)
+++ debtags-edit/1.2/src/Makefile.am	Tue Oct 31 23:58:04 2006
@@ -20,4 +20,4 @@
 
 INCLUDES = $(LIBEPT_CFLAGS) $(GTKMM_CFLAGS)
 
-EXTRA_DIST = DebtagsDocument.h DebtagsEditOptions.h DebtagsEditor.h Environment.h FilterPanel.h Mutex.h PatchReview.h RelatedPanel.h TagEditor.h TagMenu.h TagMenu.tcc TagSelector.h Thread.h
+EXTRA_DIST = AddButtons.h DebtagsDocument.h DebtagsEditOptions.h DebtagsEditor.h Environment.h FilterPanel.h Mutex.h PatchReview.h RelatedPanel.h TagEditor.h TagMenu.h TagMenu.tcc TagSelector.h Thread.h

Modified: debtags-edit/1.2/src/TagEditor.cc
==============================================================================
--- debtags-edit/1.2/src/TagEditor.cc	(original)
+++ debtags-edit/1.2/src/TagEditor.cc	Tue Oct 31 23:58:04 2006
@@ -21,6 +21,7 @@
 #include "TagEditor.h"
 #include "TagMenu.h"
 #include "DebtagsDocument.h"
+#include "AddButtons.h"
 
 #include "Environment.h"
 
@@ -43,85 +44,6 @@
 }
 
 template<class DOC>
-bool TagEditor<DOC>::on_titleAdd_event(GdkEvent* e)
-{
-	if (e->type == GDK_BUTTON_PRESS && doc.current() != Package())
-	{
-		TagMenu<DOC>* addMenu = manage(new TagMenu<DOC>());
-		addMenu->populateUnselected(doc, doc.currentTags());
-		addMenu->signal_selected().connect(
-					sigc::mem_fun(*this, &TagEditor<DOC>::on_add_to_selection));
-		addMenu->popup(e->button.button, e->button.time);
-		return true;
-	}
-	return false;
-}
-
-template<class DOC>
-bool TagEditor<DOC>::on_titleAddDiscriminant_event(GdkEvent* e)
-{
-	if (e->type == GDK_BUTTON_PRESS && doc.current() != Package())
-	{
-		std::vector<Tag> tags = doc.subCollection.tagsInDiscriminanceOrder();
-		std::set<Tag> current = doc.currentTags();
-		Gtk::Menu* addMenu = manage(new Gtk::Menu());
-
-		int count = 0;
-		for (typename std::vector<Tag>::const_reverse_iterator i = tags.rbegin();
-				i != tags.rend(); ++i)
-		{
-			// Only show tags that are not in the package yet
-			if (current.find(*i) != current.end())
-				continue;
-			if (count >= 21)
-				break;
-
-			addMenu->items().push_back(Gtk::Menu_Helpers::MenuElem(
-						"[" + i->fullname() + "] " + i->shortDescription(),
-						sigc::bind<Tag>(
-							sigc::mem_fun(*this, &TagEditor<DOC>::on_add_to_selection), *i)));
-			++count;
-		}
-
-		addMenu->popup(e->button.button, e->button.time);
-		return true;
-	}
-	return false;
-}
-
-template<class DOC>
-bool TagEditor<DOC>::on_titleAddRelevant_event(GdkEvent* e)
-{
-	if (e->type == GDK_BUTTON_PRESS && doc.current() != Package())
-	{
-		std::vector<Tag> tags = doc.subCollection.tagsInRelevanceOrder(doc.debtags());
-		std::set<Tag> current = doc.currentTags();
-		Gtk::Menu* addMenu = manage(new Gtk::Menu());
-
-		int count = 0;
-		for (typename std::vector<Tag>::const_reverse_iterator i = tags.rbegin();
-				i != tags.rend(); ++i)
-		{
-			// Only show tags that are not in the package yet
-			if (current.find(*i) != current.end())
-				continue;
-			if (count >= 21)
-				break;
-
-			addMenu->items().push_back(Gtk::Menu_Helpers::MenuElem(
-						"[" + i->fullname() + "] " + i->shortDescription(),
-						sigc::bind<Tag>(
-							sigc::mem_fun(*this, &TagEditor<DOC>::on_add_to_selection), *i)));
-			++count;
-		}
-
-		addMenu->popup(e->button.button, e->button.time);
-		return true;
-	}
-	return false;
-}
-
-template<class DOC>
 bool TagEditor<DOC>::on_facetAdd_event(GdkEvent* e, Facet facet)
 {
 	if (e->type == GDK_BUTTON_PRESS)
@@ -213,6 +135,7 @@
 	time_t start = time(NULL);
 	//TagSet allTags = doc.vocabulary().getTags();
 	//_selected = _selected ^ allTags;
+
 	updateView();
 	time_t end = time(NULL);
 	if (end != start)
@@ -332,22 +255,20 @@
 	Gtk::HBox* hbox = manage(new Gtk::HBox());
 	pack_start(*hbox, false, false);
 
-	Gtk::Button* titleAdd = manage(new Gtk::Button("Add"));
-	hbox->pack_start(*titleAdd, true, true);
-	titleAdd->add_events(Gdk::BUTTON_PRESS_MASK);
-	titleAdd->signal_event().connect(sigc::mem_fun(*this, &TagEditor<DOC>::on_titleAdd_event));
-
-	Gtk::Button* titleAddDiscriminant = manage(new Gtk::Button("Add discriminant"));
-	hbox->pack_start(*titleAddDiscriminant, true, true);
-	titleAddDiscriminant->add_events(Gdk::BUTTON_PRESS_MASK);
-	titleAddDiscriminant->signal_event().connect(
-			sigc::mem_fun(*this, &TagEditor<DOC>::on_titleAddDiscriminant_event));
-
-	Gtk::Button* titleAddRelevant = manage(new Gtk::Button("Add relevant"));
-	hbox->pack_start(*titleAddRelevant, true, true);
-	titleAddRelevant->add_events(Gdk::BUTTON_PRESS_MASK);
-	titleAddRelevant->signal_event().connect(
-			sigc::mem_fun(*this, &TagEditor<DOC>::on_titleAddRelevant_event));
+	AddButton<DOC>* add = newAddAllButton(doc, doc, "Add");
+	buttonAdd = manage(add);
+	hbox->pack_start(*add, true, true);
+	add->signal_selected().connect(sigc::mem_fun(*this, &TagEditor<DOC>::on_add_to_selection));
+
+	AddButton<DOC>* addD = newAddDiscriminantButton(doc, doc, "Add discriminant");
+	buttonAddD = manage(addD);
+	hbox->pack_start(*addD, true, true);
+	addD->signal_selected().connect(sigc::mem_fun(*this, &TagEditor<DOC>::on_add_to_selection));
+
+	AddButton<DOC>* addR = newAddRelevantButton(doc, doc, "Add relevant");
+	buttonAddR = manage(addR);
+	hbox->pack_start(*addR, true, true);
+	addR->signal_selected().connect(sigc::mem_fun(*this, &TagEditor<DOC>::on_add_to_selection));
 
 	updateView();
 
@@ -402,6 +323,10 @@
 		}
 	}
 
+	buttonAdd->set_sensitive(doc.current() != Package());
+	buttonAddD->set_sensitive(doc.current() != Package());
+	buttonAddR->set_sensitive(doc.current() != Package());
+
 	time_t end = time(NULL);
 	if (end != start)
 		fprintf(stderr, "TagEditor<DOC>::updateList: %ld seconds\n", (end-start));

Modified: debtags-edit/1.2/src/TagEditor.h
==============================================================================
--- debtags-edit/1.2/src/TagEditor.h	(original)
+++ debtags-edit/1.2/src/TagEditor.h	Tue Oct 31 23:58:04 2006
@@ -50,6 +50,10 @@
 	Gtk::ScrolledWindow scrolledItemList;
 	Glib::RefPtr<Gtk::ListStore> itemListModel;
 
+	Gtk::Widget* buttonAdd;
+	Gtk::Widget* buttonAddR;
+	Gtk::Widget* buttonAddD;
+
 	// Tree model columns
 	class ItemListModelColumns : public Gtk::TreeModel::ColumnRecord
 	{
@@ -68,9 +72,6 @@
 
 	void updateView();
 
-	bool on_titleAdd_event(GdkEvent* e);
-	bool on_titleAddDiscriminant_event(GdkEvent* e);
-	bool on_titleAddRelevant_event(GdkEvent* e);
 	bool on_facetAdd_event(GdkEvent* e, Facet facet);
 	bool on_tag_popup_event(GdkEvent* e, Tag tag);
 	void on_add_to_selection(Tag tag);

Modified: debtags-edit/1.2/src/TagSelector.cc
==============================================================================
--- debtags-edit/1.2/src/TagSelector.cc	(original)
+++ debtags-edit/1.2/src/TagSelector.cc	Tue Oct 31 23:58:04 2006
@@ -20,6 +20,7 @@
 
 #include "TagSelector.h"
 #include "TagMenu.h"
+#include "AddButtons.h"
 
 #include "Environment.h"
 
@@ -46,86 +47,6 @@
 	_signal_remove_tag.emit(tag);
 }
 
-bool TagSelector::on_titleAdd_event(GdkEvent* e)
-{
-	if (e->type == GDK_BUTTON_PRESS)
-	{
-		TagMenu<DebtagsDocument>* addMenu = manage(new TagMenu<DebtagsDocument>());
-		//addMenu->populateAvailable(doc, _selected);
-		if (doc.getComputeIntensive())
-		{
-			addMenu->populateAvailableSmart(doc, _selected, doc.subCollection);
-		} else {
-			addMenu->populateAvailable(doc, _selected, doc.subCollection);
-		}
-		addMenu->signal_selected().connect(
-					sigc::mem_fun(*this, &TagSelector::on_add_to_selection));
-		addMenu->popup(e->button.button, e->button.time);
-		return true;
-	}
-	return false;
-}
-
-bool TagSelector::on_titleAddDiscriminant_event(GdkEvent* e)
-{
-	if (e->type == GDK_BUTTON_PRESS)
-	{
-		std::vector<Tag> tags = doc.subCollection.tagsInDiscriminanceOrder();
-		Gtk::Menu* addMenu = manage(new Gtk::Menu());
-
-		int count = 0;
-		for (std::vector<Tag>::const_reverse_iterator i = tags.rbegin();
-				i != tags.rend(); ++i)
-		{
-			// Only show tags that are not in the package yet
-			if (_selected.find(*i) != _selected.end())
-				continue;
-			if (count >= 21)
-				break;
-
-			addMenu->items().push_back(Gtk::Menu_Helpers::MenuElem(
-						"[" + i->fullname() + "] " + i->shortDescription(),
-						sigc::bind<Tag>(
-							sigc::mem_fun(*this, &TagSelector::on_add_to_selection), *i)));
-			++count;
-		}
-
-		addMenu->popup(e->button.button, e->button.time);
-		return true;
-	}
-	return false;
-}
-
-bool TagSelector::on_titleAddRelevant_event(GdkEvent* e)
-{
-	if (e->type == GDK_BUTTON_PRESS)
-	{
-		std::vector<Tag> tags = doc.subCollection.tagsInRelevanceOrder(doc.debtags());
-		Gtk::Menu* addMenu = manage(new Gtk::Menu());
-
-		int count = 0;
-		for (std::vector<Tag>::const_reverse_iterator i = tags.rbegin();
-				i != tags.rend(); ++i)
-		{
-			// Only show tags that are not in the package yet
-			if (_selected.find(*i) != _selected.end())
-				continue;
-			if (count >= 21)
-				break;
-
-			addMenu->items().push_back(Gtk::Menu_Helpers::MenuElem(
-						"[" + i->fullname() + "] " + i->shortDescription(),
-						sigc::bind<Tag>(
-							sigc::mem_fun(*this, &TagSelector::on_add_to_selection), *i)));
-			++count;
-		}
-
-		addMenu->popup(e->button.button, e->button.time);
-		return true;
-	}
-	return false;
-}
-
 bool TagSelector::on_facetAdd_event(GdkEvent* e, DebtagsDocument::Facet facet)
 {
 	if (e->type == GDK_BUTTON_PRESS)
@@ -379,29 +300,25 @@
 	Gtk::HBox* hbox = manage(new Gtk::HBox());
 	table->attach(*hbox, 0, 3, row, row+1);
 
-	Gtk::Button* titleAdd = manage(new Gtk::Button("Add"));
-	hbox->pack_start(*titleAdd, true, true);
-	titleAdd->add_events(Gdk::BUTTON_PRESS_MASK);
-	titleAdd->signal_event().connect(sigc::mem_fun(*this, &TagSelector::on_titleAdd_event));
-
-	Gtk::Button* titleAddD = manage(new Gtk::Button("Add disc"));
-	hbox->pack_start(*titleAddD, true, true);
-	titleAddD->add_events(Gdk::BUTTON_PRESS_MASK);
-	titleAddD->signal_event().connect(sigc::mem_fun(*this, &TagSelector::on_titleAddDiscriminant_event));
-
-	Gtk::Button* titleAddR = manage(new Gtk::Button("Add rel"));
-	hbox->pack_start(*titleAddR, true, true);
-	titleAddR->add_events(Gdk::BUTTON_PRESS_MASK);
-	titleAddR->signal_event().connect(sigc::mem_fun(*this, &TagSelector::on_titleAddRelevant_event));
-
+	AddButton<DebtagsDocument>* add = newAddAllButton(doc, *this, "Add");
+	manage(add);
+	hbox->pack_start(*add, true, true);
+	add->signal_selected().connect(sigc::mem_fun(*this, &TagSelector::on_add_to_selection));
+
+	AddButton<DebtagsDocument>* addD = newAddDiscriminantButton(doc, *this, "Add disc");
+	manage(addD);
+	hbox->pack_start(*addD, true, true);
+	addD->signal_selected().connect(sigc::mem_fun(*this, &TagSelector::on_add_to_selection));
+
+	AddButton<DebtagsDocument>* addR = newAddRelevantButton(doc, *this, "Add rel");
+	manage(addR);
+	hbox->pack_start(*addR, true, true);
+	addR->signal_selected().connect(sigc::mem_fun(*this, &TagSelector::on_add_to_selection));
 
 	table->show();
 	table->show_all_children(true);
 
 /*
-	
-
-	
 	OpSet<string> companions = doc.collection().getCompanionTags(_selected);
 	OpSet<string> unavl = allTags - _selected - companions;
 

Modified: debtags-edit/1.2/src/TagSelector.h
==============================================================================
--- debtags-edit/1.2/src/TagSelector.h	(original)
+++ debtags-edit/1.2/src/TagSelector.h	Tue Oct 31 23:58:04 2006
@@ -53,9 +53,6 @@
 
 	void updateView();
 
-	bool on_titleAdd_event(GdkEvent* e);
-	bool on_titleAddDiscriminant_event(GdkEvent* e);
-	bool on_titleAddRelevant_event(GdkEvent* e);
 	bool on_facetAdd_event(GdkEvent* e, DebtagsDocument::Facet facet);
 	bool on_tag_popup_event(GdkEvent* e, DebtagsDocument::Tag tag);
 	void on_add_to_selection(DebtagsDocument::Tag tag);
@@ -74,6 +71,7 @@
 	type_signal_add_tag signal_add_tag() throw () { return _signal_add_tag; }
 	type_signal_remove_tag signal_remove_tag() throw () { return _signal_remove_tag; }
 
+	std::set<Tag> currentTags() const { return _selected; }
 	virtual void do_changed();
 	virtual void do_add_tag(DebtagsDocument::Tag tag);
 	virtual void do_remove_tag(DebtagsDocument::Tag tag);



More information about the Debtags-commits mailing list