Code

This is the first c++ification commit from me. It handles sp-line, sp-polyline, sp...
[inkscape.git] / src / ui / dialog / tracedialog.cpp
index 2c041864f0940fc441578ea31db0120a4783854d..f6dd6cb2826c0fe58d67a4b6fc2d8418b57ada23 100644 (file)
@@ -1,8 +1,7 @@
-/*
- * A simple dialog for setting the parameters for autotracing a
- * bitmap <image> into an svg <path>
- *
- * Authors:
+/** @file
+ * @brief Bitmap tracing settings dialog - implementation
+ */
+/* Authors:
  *   Bob Jamison <rjamison@titan.com>
  *   Stéphane Gimenez <dev@gim.name>
  *   Other dudes from The Inkscape Organization
@@ -23,7 +22,7 @@
 #include <gtk/gtkdialog.h> //for GTK_RESPONSE* types
 #include <glibmm/i18n.h>
 
-
+#include "desktop.h"
 
 #include "tracedialog.h"
 #include "trace/potrace/inkscape-potrace.h"
@@ -176,7 +175,6 @@ class TraceDialogImpl : public TraceDialog
 
     //#### Credits
 
-    Gtk::Frame            potraceCreditsFrame;
     Gtk::VBox             potraceCreditsVBox;
     Gtk::Label            potraceCreditsLabel;
 
@@ -210,6 +208,10 @@ class TraceDialogImpl : public TraceDialog
  */
 void TraceDialogImpl::potraceProcess(bool do_i_trace)
 {
+    SPDesktop *desktop = SP_ACTIVE_DESKTOP;
+    if (desktop)
+        desktop->setWaitingCursor();
+
     //##### Get the tracer and engine
     Inkscape::Trace::Potrace::PotraceTracingEngine pte;
 
@@ -317,6 +319,8 @@ void TraceDialogImpl::potraceProcess(bool do_i_trace)
             mainOkButton->set_sensitive(true);
         }
 
+    if (desktop)
+        desktop->clearWaitingCursor();
 }
 
 
@@ -325,11 +329,17 @@ void TraceDialogImpl::potraceProcess(bool do_i_trace)
  */
 void TraceDialogImpl::abort()
 {
-    //### Do some GUI thing
+    SPDesktop *desktop = SP_ACTIVE_DESKTOP;
+    if (desktop)
+        desktop->setWaitingCursor();
+
+    if (mainCancelButton)
+        mainCancelButton->set_sensitive(false);
+    if (mainOkButton)
+        mainOkButton->set_sensitive(true);
 
     //### Make the abort() call to the tracer
     tracer.abort();
-
 }
 
 
@@ -376,10 +386,11 @@ void TraceDialogImpl::responseCallback(int response_id)
 /**
  * Constructor
  */
-TraceDialogImpl::TraceDialogImpl()
+TraceDialogImpl::TraceDialogImpl() :
+    TraceDialog()
 {
 
-    Gtk::VBox *mainVBox = get_vbox();
+    Gtk::Box *contents = _getContents();
 
 #define MARGIN 2
     //#### begin left panel
@@ -399,7 +410,7 @@ TraceDialogImpl::TraceDialogImpl()
                  _("Trace by a given brightness level"));
 
     modeBrightnessSpinner.set_digits(3);
-    modeBrightnessSpinner.set_increments(0.01, 0.1);
+    modeBrightnessSpinner.set_increments(0.01, 0);
     modeBrightnessSpinner.set_range(0.0, 1.0);
     modeBrightnessSpinner.set_value(0.45);
     modeBrightnessBox.pack_end(modeBrightnessSpinner, false, false, MARGIN);
@@ -426,13 +437,13 @@ TraceDialogImpl::TraceDialogImpl()
     modeCannyLoSpinnerLabel.set_label(_("Low"));
     modeCannyBox.pack_start(modeCannyLoSpinnerLabel);
     modeCannyLoSpinner.set_digits(5);
-    modeCannyLoSpinner.set_increments(0.01, 0.1);
+    modeCannyLoSpinner.set_increments(0.01, 0);
     modeCannyLoSpinner.set_range(0.0, 1.0);
     modeCannyLoSpinner.set_value(0.1);
     modeCannyBox.pack_start(modeCannyLoSpinner);
     */
     modeCannyHiSpinner.set_digits(3);
-    modeCannyHiSpinner.set_increments(0.01, 0.1);
+    modeCannyHiSpinner.set_increments(0.01, 0);
     modeCannyHiSpinner.set_range(0.0, 1.0);
     modeCannyHiSpinner.set_value(0.65);
     modeCannyBox.pack_end(modeCannyHiSpinner, false, false, MARGIN);
@@ -456,7 +467,7 @@ TraceDialogImpl::TraceDialogImpl()
                  _("Trace along the boundaries of reduced colors"));
 
     modeQuantNrColorSpinner.set_digits(0);
-    modeQuantNrColorSpinner.set_increments(1.0, 4.0);
+    modeQuantNrColorSpinner.set_increments(1.0, 0);
     modeQuantNrColorSpinner.set_range(2.0, 64.0);
     modeQuantNrColorSpinner.set_value(8.0);
     modeQuantBox.pack_end(modeQuantNrColorSpinner, false, false, MARGIN);
@@ -490,7 +501,7 @@ TraceDialogImpl::TraceDialogImpl()
                  _("Trace the given number of brightness levels"));
 
     modeMultiScanNrColorSpinner.set_digits(0);
-    modeMultiScanNrColorSpinner.set_increments(1.0, 4.0);
+    modeMultiScanNrColorSpinner.set_increments(1.0, 0);
     modeMultiScanNrColorSpinner.set_range(2.0, 256.0);
     modeMultiScanNrColorSpinner.set_value(8.0);
     modeMultiScanHBox1.pack_end(modeMultiScanNrColorSpinner, false, false, MARGIN);
@@ -561,7 +572,7 @@ TraceDialogImpl::TraceDialogImpl()
     optionsSpecklesButton.set_active(true);
     optionsSpecklesBox.pack_start(optionsSpecklesButton, false, false, MARGIN);
     optionsSpecklesSizeSpinner.set_digits(0);
-    optionsSpecklesSizeSpinner.set_increments(1, 10);
+    optionsSpecklesSizeSpinner.set_increments(1, 0);
     optionsSpecklesSizeSpinner.set_range(0, 1000);
     optionsSpecklesSizeSpinner.set_value(2);
     tips.set_tip(optionsSpecklesSizeSpinner,
@@ -576,7 +587,7 @@ TraceDialogImpl::TraceDialogImpl()
     optionsCornersButton.set_active(true);
     optionsCornersBox.pack_start(optionsCornersButton, false, false, MARGIN);
     optionsCornersThresholdSpinner.set_digits(2);
-    optionsCornersThresholdSpinner.set_increments(0.01, 0.1);
+    optionsCornersThresholdSpinner.set_increments(0.01, 0);
     optionsCornersThresholdSpinner.set_range(0.0, 1.34);
     optionsCornersThresholdSpinner.set_value(1.0);
     optionsCornersBox.pack_end(optionsCornersThresholdSpinner, false, false, MARGIN);
@@ -591,7 +602,7 @@ TraceDialogImpl::TraceDialogImpl()
                  _("Try to optimize paths by joining adjacent Bezier curve segments"));
     optionsOptimBox.pack_start(optionsOptimButton, false, false, MARGIN);
     optionsOptimToleranceSpinner.set_digits(2);
-    optionsOptimToleranceSpinner.set_increments(0.05, 0.25);
+    optionsOptimToleranceSpinner.set_increments(0.05, 0);
     optionsOptimToleranceSpinner.set_range(0.0, 5.0);
     optionsOptimToleranceSpinner.set_value(0.2);
     optionsOptimBox.pack_end(optionsOptimToleranceSpinner, false, false, MARGIN);
@@ -611,19 +622,16 @@ TraceDialogImpl::TraceDialogImpl()
 
     notebook.append_page(optionsPageBox, _("Options"));
 
-    //### end notebook
-
-    leftVBox.pack_start(notebook, true, true, MARGIN);
-
     //### credits
 
-    potraceCreditsLabel.set_text(_("Thanks to Peter Selinger, http://potrace.sourceforge.net"));
+    potraceCreditsLabel.set_text(_("Inkscape bitmap tracing\nis based on Potrace,\ncreated by Peter Selinger\n\nhttp://potrace.sourceforge.net"));
     potraceCreditsVBox.pack_start(potraceCreditsLabel, false, false, MARGIN);
-    potraceCreditsFrame.set_label(_("Credits"));
-    potraceCreditsFrame.set_shadow_type(Gtk::SHADOW_NONE);
-    potraceCreditsFrame.add(potraceCreditsVBox);
 
-    leftVBox.pack_start(potraceCreditsFrame, false, false, 0);
+    notebook.append_page(potraceCreditsVBox, _("Credits"));
+
+    //### end notebook
+
+    leftVBox.pack_start(notebook, true, true, MARGIN);
 
     //#### end left panel
 
@@ -663,32 +671,31 @@ TraceDialogImpl::TraceDialogImpl()
 
     //#### Global stuff
 
-    mainVBox->pack_start(mainHBox);
+    contents->pack_start(mainHBox);
 
     //## The OK button
-    mainCancelButton = add_button(Gtk::Stock::STOP, GTK_RESPONSE_CANCEL);
-    if (mainCancelButton)
-        {
-        tips.set_tip((*mainCancelButton), _("Abort a trace in progress"));
-        mainCancelButton->set_sensitive(false);
-        }
-    mainOkButton     = add_button(Gtk::Stock::OK,   GTK_RESPONSE_OK);
+    mainCancelButton = addResponseButton(Gtk::Stock::STOP, GTK_RESPONSE_CANCEL);
+    if (mainCancelButton) {
+       tips.set_tip((*mainCancelButton), _("Abort a trace in progress"));
+       mainCancelButton->set_sensitive(false);
+    }
+    mainOkButton = addResponseButton(Gtk::Stock::OK, GTK_RESPONSE_OK);
     tips.set_tip((*mainOkButton), _("Execute the trace"));
 
     show_all_children();
 
     //## Connect the signal
-    signal_response().connect(
-         sigc::mem_fun(*this, &TraceDialogImpl::responseCallback) );
+    signalResponse().connect(
+       sigc::mem_fun(*this, &TraceDialogImpl::responseCallback));
 }
 
 /**
  * Factory method.  Use this to create a new TraceDialog
  */
-TraceDialog *TraceDialog::create()
+TraceDialog &TraceDialog::getInstance()
 {
     TraceDialog *dialog = new TraceDialogImpl();
-    return dialog;
+    return *dialog;
 }