summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlenn Rice <glennricster@gmail.com>2012-12-18 09:03:31 -0600
committerGlenn Rice <glennricster@gmail.com>2012-12-18 09:03:31 -0600
commit018d90b580740f518f2e03bd6b00707bd12cbe02 (patch)
tree4c09e317a0abd57b2bd4bec0cc67d6dd7db02744
parent4dbe2b2307124d93533a6cd1e14477883d61424e (diff)
Update the annots demo to be able to toggle flags.
-rw-r--r--examples/demo/annots.cc82
-rw-r--r--examples/demo/annots.h6
2 files changed, 85 insertions, 3 deletions
diff --git a/examples/demo/annots.cc b/examples/demo/annots.cc
index 34c7089..1b09a1e 100644
--- a/examples/demo/annots.cc
+++ b/examples/demo/annots.cc
@@ -317,9 +317,21 @@ Annots::Annots(const Glib::RefPtr<Poppler::Document>& document) :
m_TreeView.append_column_numeric("Y2", m_StoreColumns.m_Y2, "%.2f");
m_TreeView.append_column("Type", m_StoreColumns.m_AnnotType);
m_TreeView.append_column("Color", m_StoreColumns.m_Color);
- m_TreeView.append_column("Invisible", m_StoreColumns.m_FlagInvisible);
- m_TreeView.append_column("Hidden", m_StoreColumns.m_FlagHidden);
- m_TreeView.append_column("Print", m_StoreColumns.m_FlagPrint);
+
+ int col_num = m_TreeView.append_column("Invisible", m_StoreColumns.m_FlagInvisible);
+ Gtk::CellRendererToggle* cell_renderer = (Gtk::CellRendererToggle*)m_TreeView.get_column_cell_renderer(col_num - 1);
+ cell_renderer->set_activatable();
+ cell_renderer->signal_toggled().connect(sigc::mem_fun(*this, &Annots::invisible_flag_toggled));
+
+ col_num = m_TreeView.append_column("Hidden", m_StoreColumns.m_FlagHidden);
+ cell_renderer = (Gtk::CellRendererToggle*)m_TreeView.get_column_cell_renderer(col_num - 1);
+ cell_renderer->set_activatable();
+ cell_renderer->signal_toggled().connect(sigc::mem_fun(*this, &Annots::hidden_flag_toggled));
+
+ col_num = m_TreeView.append_column("Print", m_StoreColumns.m_FlagPrint);
+ cell_renderer = (Gtk::CellRendererToggle*)m_TreeView.get_column_cell_renderer(col_num - 1);
+ cell_renderer->set_activatable();
+ cell_renderer->signal_toggled().connect(sigc::mem_fun(*this, &Annots::print_flag_toggled));
m_TreeView.get_selection()->signal_changed().connect(sigc::mem_fun(*this, &Annots::selection_changed));
@@ -543,4 +555,68 @@ void Annots::selection_changed()
else m_AnnotView.set_annot(Glib::RefPtr<Poppler::Annot>());
}
+void Annots::flags_toggled(const std::string& path_str,
+ const Gtk::TreeModelColumn<bool>& column,
+ const Poppler::AnnotFlag flag_bit)
+{
+ Gtk::TreeIter iter = m_AnnotStore->get_iter(path_str);
+
+ bool fixed = (*iter)[column];
+ Glib::RefPtr<Poppler::Annot> annot = (*iter)[m_StoreColumns.m_Annot];
+
+ fixed ^= true;
+ Poppler::AnnotFlag flags = annot->get_flags();
+
+ if (fixed)
+ flags |= flag_bit;
+ else
+ flags &= ~flag_bit;
+
+ annot->set_flags(flags);
+ (*iter)[column] = fixed;
+
+ m_AnnotView.set_annot(annot);
+
+#if 0
+ GtkTreeIter iter;
+ gboolean fixed;
+ PopplerAnnot *annot;
+ PopplerAnnotFlag flags;
+ GtkTreePath *path = gtk_tree_path_new_from_string (path_str);
+ GtkTreeModel *model = GTK_TREE_MODEL (demo->model);
+
+ gtk_tree_model_get_iter (model, &iter, path);
+ gtk_tree_model_get (model, &iter, column, &fixed, ANNOTS_COLUMN, &annot,-1);
+
+ fixed ^= 1;
+ flags = poppler_annot_get_flags (annot);
+
+ if (fixed)
+ flags |= flag_bit;
+ else
+ flags &= ~flag_bit;
+
+ poppler_annot_set_flags (annot, flags);
+ gtk_list_store_set (GTK_LIST_STORE (model), &iter, column, fixed, -1);
+
+ pgd_annot_view_set_annot (demo, annot);
+ gtk_tree_path_free (path);
+#endif
+}
+
+void Annots::hidden_flag_toggled(const Glib::ustring& path_str)
+{
+ flags_toggled(path_str, m_StoreColumns.m_FlagHidden, Poppler::ANNOT_FLAG_HIDDEN);
+}
+
+void Annots::print_flag_toggled(const Glib::ustring& path_str)
+{
+ flags_toggled(path_str, m_StoreColumns.m_FlagPrint, Poppler::ANNOT_FLAG_PRINT);
+}
+
+void Annots::invisible_flag_toggled(const Glib::ustring& path_str)
+{
+ flags_toggled(path_str, m_StoreColumns.m_FlagInvisible, Poppler::ANNOT_FLAG_INVISIBLE);
+}
+
}
diff --git a/examples/demo/annots.h b/examples/demo/annots.h
index 988e8f5..b6beb5e 100644
--- a/examples/demo/annots.h
+++ b/examples/demo/annots.h
@@ -61,6 +61,12 @@ class Annots : public Gtk::Box
void remove_annot();
void get_annots();
void selection_changed();
+ void flags_toggled(const std::string& path_str,
+ const Gtk::TreeModelColumn<bool>& column,
+ const Poppler::AnnotFlag flag_bit);
+ void hidden_flag_toggled(const Glib::ustring& path_str);
+ void print_flag_toggled(const Glib::ustring& path_str);
+ void invisible_flag_toggled(const Glib::ustring& path_str);
const Glib::RefPtr<Poppler::Document> m_Document;
int m_Page;