]> git.tokkee.org Git - inkscape.git/commitdiff

Code

Decoupled swatch sizes from icon sizes
authorjoncruz <joncruz@users.sourceforge.net>
Wed, 20 Feb 2008 09:11:27 +0000 (09:11 +0000)
committerjoncruz <joncruz@users.sourceforge.net>
Wed, 20 Feb 2008 09:11:27 +0000 (09:11 +0000)
src/dialogs/eek-preview.cpp
src/dialogs/eek-preview.h
src/dialogs/swatches.cpp
src/dialogs/swatches.h
src/ui/previewable.h
src/ui/previewfillable.h
src/ui/previewholder.cpp
src/ui/previewholder.h
src/ui/widget/panel.cpp

index 1716a7cd65be1257a3e3b7fd559fb5d908dc1de0..d90137a04a6f59334ae82f952a57c745672b4adc 100644 (file)
@@ -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};
index ff2fb78f30aa81a4b78cec45b7aeb356d4f22792..b2f8359f344a854ffc1abeb5eff9ac0668dcf97b 100644 (file)
@@ -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 );
index 709bce25a06f92193b9b4932ce44f27f9448cbd8..28c21e270d8dce6f8aba35c4a9cb8e9f0ab9bbfd 100644 (file)
@@ -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)) );
index 02861781f8e2746aecca0e8f9698713fdc534109..f21aec1ff6ce156e0c1e44bab7920fbb0398fc7e 100644 (file)
@@ -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;
index dcf638df5f162d77c9d3b92009fd0c122fd3e613..f0c64208252cbc79fec1bc1854327eb682550b04 100644 (file)
@@ -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;
 };
 
 
index 95662732abf7e351d300b19d3d140258992024ba..d12771c90eb32d7bcf52c3cf09e8ef6686571aff 100644 (file)
@@ -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;
index 1717e5053c0cc2b5f1d5fe2e6254a7abc24b7433..764890395666806055162cfb3233467c79ab5ac3 100644 (file)
@@ -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;
         }
index 046cdf7c7dfbef03c5707dc5c286796d80238530..e3515c987a2d48139a778487cca69add22f41311 100644 (file)
@@ -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;
 };
index 0b6527a5a2b1a8f0bdc07ab7c2248cb75220e5dc..f6d9757789701aaa1f2f497372c01454651868e9 100644 (file)
@@ -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:
             {