From 78b9d586e71c3bb01fe45b6ce71c2a8a321d8937 Mon Sep 17 00:00:00 2001 From: joncruz Date: Wed, 20 Feb 2008 09:11:27 +0000 Subject: [PATCH] Decoupled swatch sizes from icon sizes --- src/dialogs/eek-preview.cpp | 71 +++++++++++++++---------------------- src/dialogs/eek-preview.h | 15 ++++++-- src/dialogs/swatches.cpp | 4 +-- src/dialogs/swatches.h | 2 +- src/ui/previewable.h | 4 +-- src/ui/previewfillable.h | 6 ++-- src/ui/previewholder.cpp | 6 ++-- src/ui/previewholder.h | 8 ++--- src/ui/widget/panel.cpp | 16 ++++----- 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): @@ -67,6 +67,15 @@ typedef enum { VIEW_TYPE_GRID } 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, @@ -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 -#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 #include #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(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(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: { -- 2.39.5