[gtkmm] PrintJob: Added get/set_page_ranges().



commit 6c0927e5a105b19ab2111311c48b6cd7d24c430f
Author: Murray Cumming <murrayc murrayc com>
Date:   Sun Sep 16 19:54:32 2012 +0200

    PrintJob: Added get/set_page_ranges().
    
            * gtk/src/printjob.[hg|ccg]: Based on the implementations of the similar
    functions in PrintSettings.

 ChangeLog                |    7 +++++++
 gtk/src/printjob.ccg     |   18 ++++++++++++++++++
 gtk/src/printjob.hg      |   10 ++++++++--
 gtk/src/printsettings.hg |    2 ++
 4 files changed, 35 insertions(+), 2 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 1cf63d0..9631ab3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2012-09-16  Murray Cumming  <murrayc murrayc com>
+
+        PrintJob: Added get/set_page_ranges().
+
+        * gtk/src/printjob.[hg|ccg]: Based on the implementations of the similar
+	functions in PrintSettings.
+
 2012-09-13  Kjell Ahlstedt  <kjell ahlstedt bredband net>
 
 	Use std::time_t instead of ::time_t.
diff --git a/gtk/src/printjob.ccg b/gtk/src/printjob.ccg
index 74f6671..2263faa 100644
--- a/gtk/src/printjob.ccg
+++ b/gtk/src/printjob.ccg
@@ -56,4 +56,22 @@ void PrintJob::send(const SlotPrintJobComplete& slot)
   gtk_print_job_send(gobj(), &SignalProxy_Custom_gtk_callback, slot_copy, &SignalProxy_Custom_gtk_callback_destroy);
 }
 
+std::vector<PrintSettings::PageRange> PrintJob::get_page_ranges() const
+{
+  int num_ranges (0);
+  GtkPageRange* page_ranges =
+    gtk_print_job_get_page_ranges(const_cast<GtkPrintJob*>(gobj()), &num_ranges);
+
+  // no need for deep ownership.
+  return Glib::ArrayHandler<PrintSettings::PageRange, PrintSettings::PageRangeTraits>::array_to_vector(page_ranges, num_ranges, Glib::OWNERSHIP_SHALLOW);
+}
+
+void PrintJob::set_page_ranges(const std::vector<PrintSettings::PageRange>& page_ranges)
+{
+  gtk_print_job_set_page_ranges(gobj(),
+    Glib::ArrayHandler<PrintSettings::PageRange, PrintSettings::PageRangeTraits>::vector_to_array(page_ranges).data (),
+    page_ranges.size ());
+}
+
+
 } // namespace Gtk
diff --git a/gtk/src/printjob.hg b/gtk/src/printjob.hg
index 085c1fe..fba56a7 100644
--- a/gtk/src/printjob.hg
+++ b/gtk/src/printjob.hg
@@ -86,8 +86,14 @@ public:
 
   _WRAP_METHOD(PrintPages get_pages() const, gtk_print_job_get_pages)
   _WRAP_METHOD(void set_pages(PrintPages pages), gtk_print_job_set_pages)
-//TODO:  _WRAP_METHOD(PageRange* get_page_ranges(int *n_ranges), gtk_print_job_get_page_ranges)
-//TODO: _WRAP_METHOD(void set_page_ranges(GtkPageRange* ranges, int n_ranges), gtk_print_job_set_page_ranges)
+
+  std::vector<PrintSettings::PageRange> get_page_ranges() const;
+  _IGNORE(gtk_print_job_get_page_ranges)
+
+  void set_page_ranges(const std::vector<PrintSettings::PageRange>& ranges);
+  _IGNORE(gtk_print_job_set_page_ranges)
+
+
   _WRAP_METHOD(PageSet get_page_set() const, gtk_print_job_get_page_set)
   _WRAP_METHOD(void set_page_set(PageSet page_set), gtk_print_job_set_page_set)
   _WRAP_METHOD(int get_num_copies() const, gtk_print_job_get_num_copies)
diff --git a/gtk/src/printsettings.hg b/gtk/src/printsettings.hg
index 8374d94..06de81a 100644
--- a/gtk/src/printsettings.hg
+++ b/gtk/src/printsettings.hg
@@ -262,6 +262,8 @@ public:
   _WRAP_METHOD(PrintPages get_print_pages() const, gtk_print_settings_get_print_pages)
   _WRAP_METHOD(void set_print_pages(PrintPages print_pages), gtk_print_settings_set_print_pages)
 
+  //TODO: Move this out of the class when we can break ABI,
+  //because this is also used in PringJob.
   //This corresponds to GtkPageRange.
   class PageRange
   {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]