[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