summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJon A. Cruz <jon@joncruz.org>2008-02-20 09:11:27 +0000
committerjoncruz <joncruz@users.sourceforge.net>2008-02-20 09:11:27 +0000
commitae099de0a892d06655ad7143c1443fec5ca517e2 (patch)
treeeaf460ba9619d9b843f95f2d0bae3b4d6b875cc9 /src
parentfix Bug #191909 crash on lpe stitch sub-paths, also fix crash for bend path lpe (diff)
downloadinkscape-ae099de0a892d06655ad7143c1443fec5ca517e2.tar.gz
inkscape-ae099de0a892d06655ad7143c1443fec5ca517e2.zip
Decoupled swatch sizes from icon sizes
(bzr r4790)
Diffstat (limited to 'src')
-rw-r--r--src/dialogs/eek-preview.cpp71
-rw-r--r--src/dialogs/eek-preview.h15
-rw-r--r--src/dialogs/swatches.cpp4
-rw-r--r--src/dialogs/swatches.h2
-rw-r--r--src/ui/previewable.h4
-rw-r--r--src/ui/previewfillable.h6
-rw-r--r--src/ui/previewholder.cpp6
-rw-r--r--src/ui/previewholder.h8
-rw-r--r--src/ui/widget/panel.cpp16
9 files changed, 64 insertions, 68 deletions
diff --git a/src/dialogs/eek-preview.cpp b/src/dialogs/eek-preview.cpp
index 1716a7cd6..d90137a04 100644
--- a/src/dialogs/eek-preview.cpp
+++ b/src/dialogs/eek-preview.cpp
@@ -44,6 +44,9 @@
#define FOCUS_PROP_ID 1
+/* Keep in sycn with last value in eek-preview.h */
+#define PREVIEW_SIZE_LAST PREVIEW_SIZE_HUGE
+#define PREVIEW_SIZE_NEXTFREE (PREVIEW_SIZE_HUGE + 1)
static void eek_preview_class_init( EekPreviewClass *klass );
@@ -90,9 +93,8 @@ GType eek_preview_get_type(void)
return preview_type;
}
-static guint trackCount = 0;
-static guint* trackSizes = 0;
-static GtkIconSize* trackKeys = 0;
+static gboolean setupDone = FALSE;
+static GtkRequisition sizeThings[PREVIEW_SIZE_NEXTFREE];
void eek_preview_set_size_mappings( guint count, GtkIconSize const* sizes )
{
@@ -119,28 +121,13 @@ void eek_preview_set_size_mappings( guint count, GtkIconSize const* sizes )
delta = largest - smallest;
- if ( trackSizes ) {
- g_free(trackSizes);
- trackSizes = 0;
- }
- if ( trackKeys ) {
- g_free(trackKeys);
- trackKeys = 0;
+ for ( i = 0; i < G_N_ELEMENTS(sizeThings); ++i ) {
+ guint val = smallest + ( (i * delta) / (G_N_ELEMENTS(sizeThings) - 1) );
+ sizeThings[i].width = val;
+ sizeThings[i].height = val;
}
- trackCount = count;
- trackSizes = g_new(guint, count);
- trackKeys = g_new(GtkIconSize, count);
- for ( i = 0; i < count; ++i ) {
- guint val = smallest + ( (i * delta) / (count-1) );
- trackKeys[i] = sizes[i];
- trackSizes[i] = val;
- }
-}
-
-GtkWidget* eek_preview_area_new(void)
-{
- return NULL;
+ setupDone = TRUE;
}
static void eek_preview_size_request( GtkWidget* widget, GtkRequisition* req )
@@ -148,29 +135,25 @@ static void eek_preview_size_request( GtkWidget* widget, GtkRequisition* req )
gint width = 0;
gint height = 0;
EekPreview* preview = EEK_PREVIEW(widget);
- gboolean tracked = TRUE;
- guint i = 0;
- for ( i = 0; i < trackCount; ++i ) {
- tracked = (trackKeys[i] == preview->_size);
- if ( tracked ) {
- width = trackSizes[i];
- height = width;
- break;
- }
+ if ( !setupDone ) {
+ GtkIconSize sizes[] = {
+ GTK_ICON_SIZE_MENU,
+ GTK_ICON_SIZE_SMALL_TOOLBAR,
+ GTK_ICON_SIZE_LARGE_TOOLBAR,
+ GTK_ICON_SIZE_BUTTON,
+ GTK_ICON_SIZE_DIALOG
+ };
+ eek_preview_set_size_mappings( G_N_ELEMENTS(sizes), sizes );
}
- if ( !tracked ) {
- gboolean worked = gtk_icon_size_lookup( preview->_size, &width, &height );
- if ( !worked ) {
- width = 16;
- height = 16;
- g_warning("Size not found [%d]", preview->_size);
- }
- }
+ width = sizeThings[preview->_size].width;
+ height = sizeThings[preview->_size].height;
+
if ( preview->_view == VIEW_TYPE_LIST ) {
width *= 3;
}
+
req->width = width;
req->height = height;
}
@@ -599,10 +582,14 @@ void eek_preview_set_focus_on_click( EekPreview* preview, gboolean focus_on_clic
}
}
-void eek_preview_set_details( EekPreview* preview, PreviewStyle prevstyle, ViewType view, GtkIconSize size )
+void eek_preview_set_details( EekPreview* preview, PreviewStyle prevstyle, ViewType view, PreviewSize size )
{
preview->_prevstyle = prevstyle;
preview->_view = view;
+
+ if ( size > PREVIEW_SIZE_LAST ) {
+ size = PREVIEW_SIZE_LAST;
+ }
preview->_size = size;
gtk_widget_queue_draw(GTK_WIDGET(preview));
@@ -636,7 +623,7 @@ static void eek_preview_init( EekPreview *preview )
preview->_prevstyle = PREVIEW_STYLE_ICON;
preview->_view = VIEW_TYPE_LIST;
- preview->_size = GTK_ICON_SIZE_BUTTON;
+ preview->_size = PREVIEW_SIZE_SMALL;
/*
GdkColor color = {0};
diff --git a/src/dialogs/eek-preview.h b/src/dialogs/eek-preview.h
index ff2fb78f3..b2f8359f3 100644
--- a/src/dialogs/eek-preview.h
+++ b/src/dialogs/eek-preview.h
@@ -20,7 +20,7 @@
*
* The Initial Developer of the Original Code is
* Jon A. Cruz.
- * Portions created by the Initial Developer are Copyright (C) 2005
+ * Portions created by the Initial Developer are Copyright (C) 2005-2008
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
@@ -68,6 +68,15 @@ typedef enum {
} ViewType;
typedef enum {
+ PREVIEW_SIZE_TINY = 0,
+ PREVIEW_SIZE_SMALL,
+ PREVIEW_SIZE_MEDIUM,
+ PREVIEW_SIZE_BIG,
+ PREVIEW_SIZE_BIGGER,
+ PREVIEW_SIZE_HUGE
+} PreviewSize;
+
+typedef enum {
PREVIEW_LINK_NONE = 0,
PREVIEW_LINK_IN = 1,
PREVIEW_LINK_OUT = 2,
@@ -93,7 +102,7 @@ struct _EekPreview
PreviewStyle _prevstyle;
ViewType _view;
- GtkIconSize _size;
+ PreviewSize _size;
guint _linked;
};
@@ -108,7 +117,7 @@ struct _EekPreviewClass
GType eek_preview_get_type(void) G_GNUC_CONST;
GtkWidget* eek_preview_new(void);
-void eek_preview_set_details( EekPreview* splat, PreviewStyle prevstyle, ViewType view, GtkIconSize size );
+void eek_preview_set_details( EekPreview* splat, PreviewStyle prevstyle, ViewType view, PreviewSize size );
void eek_preview_set_color( EekPreview* splat, int r, int g, int b );
void eek_preview_set_linked( EekPreview* splat, LinkType link );
diff --git a/src/dialogs/swatches.cpp b/src/dialogs/swatches.cpp
index 709bce25a..28c21e270 100644
--- a/src/dialogs/swatches.cpp
+++ b/src/dialogs/swatches.cpp
@@ -503,7 +503,7 @@ void ColorItem::_colorDefChanged(void* data)
}
-Gtk::Widget* ColorItem::getPreview(PreviewStyle style, ViewType view, Inkscape::IconSize size)
+Gtk::Widget* ColorItem::getPreview(PreviewStyle style, ViewType view, ::PreviewSize size)
{
Gtk::Widget* widget = 0;
if ( style == PREVIEW_STYLE_BLURB ) {
@@ -522,7 +522,7 @@ Gtk::Widget* ColorItem::getPreview(PreviewStyle style, ViewType view, Inkscape::
eek_preview_set_color( preview, (def.getR() << 8) | def.getR(), (def.getG() << 8) | def.getG(), (def.getB() << 8) | def.getB());
- eek_preview_set_details( preview, (::PreviewStyle)style, (::ViewType)view, (::GtkIconSize)size );
+ eek_preview_set_details( preview, (::PreviewStyle)style, (::ViewType)view, (::PreviewSize)size );
eek_preview_set_linked( preview, (LinkType)((_linkSrc ? PREVIEW_LINK_IN:0)
| (_listeners.empty() ? 0:PREVIEW_LINK_OUT)
| (_isLive ? PREVIEW_LINK_OTHER:0)) );
diff --git a/src/dialogs/swatches.h b/src/dialogs/swatches.h
index 02861781f..f21aec1ff 100644
--- a/src/dialogs/swatches.h
+++ b/src/dialogs/swatches.h
@@ -43,7 +43,7 @@ public:
virtual ColorItem &operator=(ColorItem const &other);
virtual Gtk::Widget* getPreview(PreviewStyle style,
ViewType view,
- Inkscape::IconSize size);
+ ::PreviewSize size);
void buttonClicked(bool secondary = false);
ColorDef def;
diff --git a/src/ui/previewable.h b/src/ui/previewable.h
index dcf638df5..f0c642082 100644
--- a/src/ui/previewable.h
+++ b/src/ui/previewable.h
@@ -14,7 +14,7 @@
#include <gtkmm/widget.h>
-#include "icon-size.h"
+#include "../dialogs/eek-preview.h"
namespace Inkscape {
namespace UI {
@@ -40,7 +40,7 @@ class Previewable
public:
// TODO need to add some nice parameters
virtual ~Previewable() {}
- virtual Gtk::Widget* getPreview( PreviewStyle style, ViewType view, Inkscape::IconSize size ) = 0;
+ virtual Gtk::Widget* getPreview( PreviewStyle style, ViewType view, ::PreviewSize size ) = 0;
};
diff --git a/src/ui/previewfillable.h b/src/ui/previewfillable.h
index 95662732a..d12771c90 100644
--- a/src/ui/previewfillable.h
+++ b/src/ui/previewfillable.h
@@ -14,7 +14,7 @@
#include "previewable.h"
-#include "../icon-size.h"
+#include "../dialogs/eek-preview.h"
namespace Inkscape {
namespace UI {
@@ -27,9 +27,9 @@ public:
virtual void addPreview( Previewable* preview ) = 0;
virtual void freezeUpdates() = 0;
virtual void thawUpdates() = 0;
- virtual void setStyle( Inkscape::IconSize size, ViewType type) = 0;
+ virtual void setStyle( ::PreviewSize size, ViewType type) = 0;
virtual void setOrientation( Gtk::AnchorType how ) = 0;
- virtual Inkscape::IconSize getPreviewSize() const = 0;
+ virtual ::PreviewSize getPreviewSize() const = 0;
virtual ViewType getPreviewType() const = 0;
virtual void setWrap( bool b ) = 0;
virtual bool getWrap() const = 0;
diff --git a/src/ui/previewholder.cpp b/src/ui/previewholder.cpp
index 1717e5053..764890395 100644
--- a/src/ui/previewholder.cpp
+++ b/src/ui/previewholder.cpp
@@ -35,7 +35,7 @@ PreviewHolder::PreviewHolder() :
_prefCols(0),
_updatesFrozen(false),
_anchor(Gtk::ANCHOR_CENTER),
- _baseSize(Inkscape::ICON_SIZE_MENU),
+ _baseSize(PREVIEW_SIZE_SMALL),
_view(VIEW_TYPE_LIST),
_wrap(false)
{
@@ -124,7 +124,7 @@ void PreviewHolder::thawUpdates()
rebuildUI();
}
-void PreviewHolder::setStyle( Inkscape::IconSize size, ViewType view )
+void PreviewHolder::setStyle( ::PreviewSize size, ViewType view )
{
if ( size != _baseSize || view != _view ) {
_baseSize = size;
@@ -238,7 +238,7 @@ void PreviewHolder::calcGridSize( const Gtk::Widget* thing, int itemCount, int&
width = w2;
}
} else {
- width = (_baseSize == Inkscape::ICON_SIZE_MENU || _baseSize == Inkscape::ICON_SIZE_DECORATION) ? COLUMNS_FOR_SMALL : COLUMNS_FOR_LARGE;
+ width = (_baseSize == PREVIEW_SIZE_SMALL || _baseSize == PREVIEW_SIZE_TINY) ? COLUMNS_FOR_SMALL : COLUMNS_FOR_LARGE;
if ( _prefCols > 0 ) {
width = _prefCols;
}
diff --git a/src/ui/previewholder.h b/src/ui/previewholder.h
index 046cdf7c7..e3515c987 100644
--- a/src/ui/previewholder.h
+++ b/src/ui/previewholder.h
@@ -17,7 +17,7 @@
#include <gtkmm/bin.h>
#include <gtkmm/table.h>
#include "previewfillable.h"
-#include "../icon-size.h"
+#include "../dialogs/eek-preview.h"
namespace Inkscape {
namespace UI {
@@ -32,11 +32,11 @@ public:
virtual void addPreview( Previewable* preview );
virtual void freezeUpdates();
virtual void thawUpdates();
- virtual void setStyle( Inkscape::IconSize size, ViewType view );
+ virtual void setStyle( ::PreviewSize size, ViewType view );
virtual void setOrientation( Gtk::AnchorType how );
virtual int getColumnPref() const { return _prefCols; }
virtual void setColumnPref( int cols );
- virtual Inkscape::IconSize getPreviewSize() const { return _baseSize; }
+ virtual ::PreviewSize getPreviewSize() const { return _baseSize; }
virtual ViewType getPreviewType() const { return _view; }
virtual void setWrap( bool b );
virtual bool getWrap() const { return _wrap; }
@@ -56,7 +56,7 @@ private:
int _prefCols;
bool _updatesFrozen;
Gtk::AnchorType _anchor;
- Inkscape::IconSize _baseSize;
+ ::PreviewSize _baseSize;
ViewType _view;
bool _wrap;
};
diff --git a/src/ui/widget/panel.cpp b/src/ui/widget/panel.cpp
index 0b6527a5a..f6d975778 100644
--- a/src/ui/widget/panel.cpp
+++ b/src/ui/widget/panel.cpp
@@ -93,7 +93,7 @@ void Panel::_init()
guint panel_size = 0;
if (_prefs_path) {
- panel_size = prefs_get_int_attribute_limited( _prefs_path, "panel_size", 1, 0, 10 );
+ panel_size = prefs_get_int_attribute_limited( _prefs_path, "panel_size", 1, 0, static_cast<long long>(PREVIEW_SIZE_HUGE) );
}
guint panel_mode = 0;
@@ -295,7 +295,7 @@ void Panel::restorePanelPrefs()
{
guint panel_size = 0;
if (_prefs_path) {
- panel_size = prefs_get_int_attribute_limited(_prefs_path, "panel_size", 1, 0, 10);
+ panel_size = prefs_get_int_attribute_limited(_prefs_path, "panel_size", 1, 0, static_cast<long long>(PREVIEW_SIZE_HUGE));
}
guint panel_mode = 0;
if (_prefs_path) {
@@ -335,27 +335,27 @@ void Panel::_bounceCall(int i, int j)
switch (j) {
case 0:
{
- _fillable->setStyle(Inkscape::ICON_SIZE_DECORATION, curr_type);
+ _fillable->setStyle(::PREVIEW_SIZE_TINY, curr_type);
}
break;
case 1:
{
- _fillable->setStyle(Inkscape::ICON_SIZE_MENU, curr_type);
+ _fillable->setStyle(::PREVIEW_SIZE_SMALL, curr_type);
}
break;
case 2:
{
- _fillable->setStyle(Inkscape::ICON_SIZE_SMALL_TOOLBAR, curr_type);
+ _fillable->setStyle(::PREVIEW_SIZE_MEDIUM, curr_type);
}
break;
case 3:
{
- _fillable->setStyle(Inkscape::ICON_SIZE_BUTTON, curr_type);
+ _fillable->setStyle(::PREVIEW_SIZE_BIG, curr_type);
}
break;
case 4:
{
- _fillable->setStyle(Inkscape::ICON_SIZE_DIALOG, curr_type);
+ _fillable->setStyle(::PREVIEW_SIZE_HUGE, curr_type);
}
break;
default:
@@ -368,7 +368,7 @@ void Panel::_bounceCall(int i, int j)
prefs_set_int_attribute (_prefs_path, "panel_mode", j);
}
if (_fillable) {
- Inkscape::IconSize curr_size = _fillable->getPreviewSize();
+ ::PreviewSize curr_size = _fillable->getPreviewSize();
switch (j) {
case 0:
{