summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 1ac951e)
raw | patch | inline | side by side (parent: 1ac951e)
author | Jon A. Cruz <jon@joncruz.org> | |
Fri, 8 Jan 2010 09:16:41 +0000 (01:16 -0800) | ||
committer | Jon A. Cruz <jon@joncruz.org> | |
Fri, 8 Jan 2010 09:16:41 +0000 (01:16 -0800) |
src/desktop.cpp | patch | blob | history | |
src/widgets/desktop-widget.cpp | patch | blob | history | |
src/widgets/desktop-widget.h | patch | blob | history |
diff --git a/src/desktop.cpp b/src/desktop.cpp
index 0e4d4caf3d1f4b7904a47c7196bf73f179794294..70f7c4b152eedcc93894530c9668714d54c659c8 100644 (file)
--- a/src/desktop.cpp
+++ b/src/desktop.cpp
Gtk::Window *parent = this->getToplevel();
g_assert(parent != NULL);
SPDesktopWidget *dtw = (SPDesktopWidget *) parent->get_data("desktopwidget");
- if (dtw) dtw->desktop = this;
- sp_desktop_widget_update_namedview(dtw);
+ if (dtw) {
+ dtw->desktop = this;
+ }
+ dtw->updateNamedview();
_namedview_modified (namedview, SP_OBJECT_MODIFIED_FLAG, this);
_document_replaced_signal.emit (this, theDocument);
index 6c330b5f3d7a99d4b545ddb0cb18b1875652b1a2..babb5b5b64f27588bd1bb665bec505d8b1d0637d 100644 (file)
#include "sp-image.h"
#include "sp-item.h"
#include "sp-namedview.h"
-#include "toolbox.h"
#include "ui/dialog/dialog-manager.h"
#include "ui/dialog/swatches.h"
#include "ui/icon-names.h"
#include "ui/widget/layer-selector.h"
#include "ui/widget/selected-style.h"
#include "ui/uxmanager.h"
-#include "widgets/button.h"
-#include "widgets/ruler.h"
-#include "widgets/spinbutton-events.h"
-#include "widgets/spw-utilities.h"
-#include "widgets/toolbox.h"
-#include "widgets/widget-sizes.h"
+
+// We're in the "widgets" directory, so no need to explicitly prefix these:
+#include "button.h"
+#include "ruler.h"
+#include "spinbutton-events.h"
+#include "spw-utilities.h"
+#include "toolbox.h"
+#include "widget-sizes.h"
#if defined (SOLARIS) && (SOLARIS == 8)
#include "round.h"
/* SPDesktopWidget */
static void sp_desktop_widget_class_init (SPDesktopWidgetClass *klass);
-static void sp_desktop_widget_init (SPDesktopWidget *widget);
static void sp_desktop_widget_destroy (GtkObject *object);
static void sp_desktop_widget_size_allocate (GtkWidget *widget, GtkAllocation *allocation);
@@ -102,7 +102,6 @@ static void sp_dtw_color_profile_event(EgeColorProfTracker *widget, SPDesktopWid
static void cms_adjust_toggled( GtkWidget *button, gpointer data );
static void cms_adjust_set_sensitive( SPDesktopWidget *dtw, bool enabled );
static void sp_desktop_widget_adjustment_value_changed (GtkAdjustment *adj, SPDesktopWidget *dtw);
-static void sp_desktop_widget_namedview_modified (SPObject *obj, guint flags, SPDesktopWidget *dtw);
static gdouble sp_dtw_zoom_value_to_display (gdouble value);
static gdouble sp_dtw_zoom_display_to_value (gdouble value);
/**
* Registers SPDesktopWidget class and returns its type number.
*/
-GType sp_desktop_widget_get_type(void)
+GType SPDesktopWidget::getType(void)
{
static GtkType type = 0;
if (!type) {
0, // class_data
sizeof(SPDesktopWidget),
0, // n_preallocs
- (GInstanceInitFunc)sp_desktop_widget_init,
+ (GInstanceInitFunc)SPDesktopWidget::init,
0 // value_table
};
type = g_type_register_static(SP_TYPE_VIEW_WIDGET, "SPDesktopWidget", &info, static_cast<GTypeFlags>(0));
/**
* Callback for SPDesktopWidget object initialization.
*/
-static void
-sp_desktop_widget_init (SPDesktopWidget *dtw)
+void SPDesktopWidget::init( SPDesktopWidget *dtw )
{
GtkWidget *widget;
GtkWidget *tbl;
dtw->desktop->set_display_area (d.x0, d.y0, d.x1, d.y1, 10);
- sp_desktop_widget_update_namedview(dtw);
+ dtw->updateNamedview();
}
/* This is just to provide access to common functionality from sp_desktop_widget_realize() above
as well as from SPDesktop::change_document() */
-void
-sp_desktop_widget_update_namedview (SPDesktopWidget *dtw) {
- g_return_if_fail(dtw);
-
- /* Listen on namedview modification */
+void SPDesktopWidget::updateNamedview()
+{
+ // Listen on namedview modification
// originally (prior to the sigc++ conversion) the signal was simply
// connected twice rather than disconnecting the first connection
- dtw->modified_connection.disconnect();
- dtw->modified_connection = dtw->desktop->namedview->connectModified(sigc::bind<2>(sigc::ptr_fun(&sp_desktop_widget_namedview_modified), dtw));
- sp_desktop_widget_namedview_modified (dtw->desktop->namedview, SP_OBJECT_MODIFIED_FLAG, dtw);
+ modified_connection.disconnect();
+
+ modified_connection = desktop->namedview->connectModified(sigc::mem_fun(*this, &SPDesktopWidget::namedviewModified));
+ namedviewModified(desktop->namedview, SP_OBJECT_MODIFIED_FLAG);
- dtw->updateTitle(SP_DOCUMENT_NAME (dtw->desktop->doc()));
+ updateTitle(SP_DOCUMENT_NAME (desktop->doc()));
}
/**
/**
* Hide whatever the user does not want to see in the window
*/
-void
-sp_desktop_widget_layout (SPDesktopWidget *dtw)
+void SPDesktopWidget::layoutWidgets()
{
+ SPDesktopWidget *dtw = this;
Glib::ustring pref_root;
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
if (dtw->desktop->is_focusMode()) {
- pref_root = "/focus/";
+ pref_root = "/focus/";
} else if (dtw->desktop->is_fullscreen()) {
- pref_root = "/fullscreen/";
+ pref_root = "/fullscreen/";
} else {
- pref_root = "/window/";
+ pref_root = "/window/";
}
#ifndef GDK_WINDOWING_QUARTZ
}
if (!prefs->getBool(pref_root + "snaptoolbox/state", true)) {
- gtk_widget_hide_all (dtw->snap_toolbox);
- } else {
- gtk_widget_show_all (dtw->snap_toolbox);
- }
+ gtk_widget_hide_all (dtw->snap_toolbox);
+ } else {
+ gtk_widget_show_all (dtw->snap_toolbox);
+ }
if (!prefs->getBool(pref_root + "toppanel/state", true)) {
gtk_widget_hide_all (dtw->aux_toolbox);
return isActive;
}
-SPViewWidget *
-sp_desktop_widget_new (SPNamedView *namedview)
+SPViewWidget *sp_desktop_widget_new( SPNamedView *namedview )
+{
+ return SP_VIEW_WIDGET(SPDesktopWidget::createInstance(namedview));
+}
+
+SPDesktopWidget* SPDesktopWidget::createInstance(SPNamedView *namedview)
{
SPDesktopWidget *dtw = (SPDesktopWidget*)g_object_new(SP_TYPE_DESKTOP_WIDGET, NULL);
sp_view_widget_set_view (SP_VIEW_WIDGET (dtw), dtw->desktop);
/* Listen on namedview modification */
- dtw->modified_connection = namedview->connectModified(sigc::bind<2>(sigc::ptr_fun(&sp_desktop_widget_namedview_modified), dtw));
+ dtw->modified_connection = namedview->connectModified(sigc::mem_fun(*dtw, &SPDesktopWidget::namedviewModified));
dtw->layer_selector->setDesktop(dtw->desktop);
gtk_box_pack_start (GTK_BOX (dtw->vbox), dtw->menubar, FALSE, FALSE, 0);
#endif
- sp_desktop_widget_layout (dtw);
+ dtw->layoutWidgets();
std::vector<GtkWidget *> toolboxes;
toolboxes.push_back(dtw->tool_toolbox);
dtw->panels->setDesktop( dtw->desktop );
- return SP_VIEW_WIDGET (dtw);
+ return dtw;
}
void
}
-static void
-sp_desktop_widget_namedview_modified (SPObject *obj, guint flags, SPDesktopWidget *dtw)
+void SPDesktopWidget::namedviewModified(SPObject *obj, guint flags)
{
SPNamedView *nv=SP_NAMEDVIEW(obj);
+
if (flags & SP_OBJECT_MODIFIED_FLAG) {
- dtw->dt2r = 1.0 / nv->doc_units->unittobase;
- dtw->ruler_origin = Geom::Point(0,0); //nv->gridorigin; Why was the grid origin used here?
+ this->dt2r = 1.0 / nv->doc_units->unittobase;
+ this->ruler_origin = Geom::Point(0,0); //nv->gridorigin; Why was the grid origin used here?
- sp_ruler_set_metric (GTK_RULER (dtw->vruler), nv->getDefaultMetric());
- sp_ruler_set_metric (GTK_RULER (dtw->hruler), nv->getDefaultMetric());
+ sp_ruler_set_metric(GTK_RULER (this->vruler), nv->getDefaultMetric());
+ sp_ruler_set_metric(GTK_RULER (this->hruler), nv->getDefaultMetric());
- gtk_tooltips_set_tip (dtw->tt, dtw->hruler_box, gettext(sp_unit_get_plural (nv->doc_units)), NULL);
- gtk_tooltips_set_tip (dtw->tt, dtw->vruler_box, gettext(sp_unit_get_plural (nv->doc_units)), NULL);
+ gtk_tooltips_set_tip(this->tt, this->hruler_box, gettext(sp_unit_get_plural (nv->doc_units)), NULL);
+ gtk_tooltips_set_tip(this->tt, this->vruler_box, gettext(sp_unit_get_plural (nv->doc_units)), NULL);
- sp_desktop_widget_update_rulers (dtw);
- update_snap_toolbox(dtw->desktop, NULL, dtw->snap_toolbox);
+ sp_desktop_widget_update_rulers(this);
+ update_snap_toolbox(this->desktop, NULL, this->snap_toolbox);
}
}
index 04146cac606bb163615b83ad49ea4c82b43ff2c9..c9bedb1ab42f7b1658a6f23b27b3a9d4a0f46434 100644 (file)
* SPDesktopWidget: handling Gtk events on a desktop.
*
* Authors:
+ * Jon A. Cruz <jon@joncruz.org> (c) 2010
* John Bintz <jcoswell@coswellproductions.org> (c) 2006
* Ralf Stephan <ralf@ark.in-berlin.de> (c) 2005, distrib. under GPL2
* ? -2004
typedef struct _EgeColorProfTracker EgeColorProfTracker;
-#define SP_TYPE_DESKTOP_WIDGET (sp_desktop_widget_get_type ())
+#define SP_TYPE_DESKTOP_WIDGET SPDesktopWidget::getType()
#define SP_DESKTOP_WIDGET(o) (GTK_CHECK_CAST ((o), SP_TYPE_DESKTOP_WIDGET, SPDesktopWidget))
#define SP_DESKTOP_WIDGET_CLASS(k) (GTK_CHECK_CLASS_CAST ((k), SP_TYPE_DESKTOP_WIDGET, SPDesktopWidgetClass))
#define SP_IS_DESKTOP_WIDGET(o) (GTK_CHECK_TYPE ((o), SP_TYPE_DESKTOP_WIDGET))
#define SP_IS_DESKTOP_WIDGET_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), SP_TYPE_DESKTOP_WIDGET))
-GtkType sp_desktop_widget_get_type();
-
void sp_desktop_widget_destroy (SPDesktopWidget* dtw);
void sp_desktop_widget_show_decorations(SPDesktopWidget *dtw, gboolean show);
void sp_desktop_widget_iconify(SPDesktopWidget *dtw);
void sp_desktop_widget_maximize(SPDesktopWidget *dtw);
void sp_desktop_widget_fullscreen(SPDesktopWidget *dtw);
-void sp_desktop_widget_layout(SPDesktopWidget *dtw);
void sp_desktop_widget_update_zoom(SPDesktopWidget *dtw);
void sp_desktop_widget_update_rulers (SPDesktopWidget *dtw);
void sp_desktop_widget_update_hruler (SPDesktopWidget *dtw);
void sp_desktop_widget_update_vruler (SPDesktopWidget *dtw);
-void sp_desktop_widget_update_namedview (SPDesktopWidget *dtw);
-
/* Show/hide rulers & scrollbars */
void sp_desktop_widget_toggle_rulers (SPDesktopWidget *dtw);
void sp_desktop_widget_toggle_scrollbars (SPDesktopWidget *dtw);
GtkWidget *hscrollbar, *vscrollbar, *vscrollbar_box;
- GtkWidget *tool_toolbox, *aux_toolbox, *commands_toolbox, *snap_toolbox;
-
/* Rulers */
GtkWidget *hruler, *vruler;
GtkWidget *hruler_box, *vruler_box; // eventboxes for setting tooltips
{ _dtw->updateTitle (uri); }
virtual Gtk::Window* getWindow()
{ return _dtw->window; }
- virtual void layout()
- { sp_desktop_widget_layout (_dtw); }
+
+ virtual void layout() {
+ _dtw->layoutWidgets();
+ }
+
virtual void present()
{ _dtw->presentWindow(); }
virtual void getGeometry (gint &x, gint &y, gint &w, gint &h)
Inkscape::UI::Widget::Dock* getDock();
+ static GtkType getType();
+ static SPDesktopWidget* createInstance(SPNamedView *namedview);
+
+ void updateNamedview();
+
+private:
+ GtkWidget *tool_toolbox;
+ GtkWidget *aux_toolbox;
+ GtkWidget *commands_toolbox,;
+ GtkWidget *snap_toolbox;
+
+ static void init(SPDesktopWidget *widget);
+ void layoutWidgets();
+
+ void namedviewModified(SPObject *obj, guint flags);
+
};
/// The SPDesktopWidget vtable