/**
* SECTION:hildon-defines
- * @short_description: Not a widget, just a helper
+ * @short_description: A collection of usefull defines.
*
*/
-#include <config.h>
-#include <gtk/gtk.h>
-#include "hildon-defines.h"
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
-const HildonIconSizes *hildoniconsizes = NULL;
-static HildonIconSizes iis; /* hildon internal icon sizes */
+#include <gtk/gtk.h>
+#include "hildon-defines.h"
-/**
- * hildon_icon_sizes_init:
- *
- * Initializes the icon sizes. This is automatically
- * called when the icon sizes have not been initialized
- * and one is requested.
- **/
-void hildon_icon_sizes_init (void)
+const HildonIconSizes* hildoniconsizes = NULL;
+
+static HildonIconSizes iis; /* hildon internal icon sizes */
+
+typedef struct _HildonLogicalData HildonLogicalData;
+
+void
+hildon_icon_sizes_init (void)
{
- if (hildoniconsizes != NULL)
- return;
-
- hildoniconsizes = &iis;
-
- iis.icon_size_list = gtk_icon_size_register ("hildon_icon_size_list", 64, 64);
- iis.icon_size_small = gtk_icon_size_register ("*icon_size_small", 26, 26);
- iis.icon_size_toolbar = gtk_icon_size_register ("icon_size_toolbar", 26, 26);
- iis.icon_size_widg = gtk_icon_size_register ("icon_size_widg", 26, 26);
- iis.icon_size_widg_wizard = gtk_icon_size_register ("icon_size_widg_wizard", 50, 50);
- iis.icon_size_grid = gtk_icon_size_register ("icon_size_grid", 64, 64);
- iis.icon_size_big_note = gtk_icon_size_register ("icon_size_big_note", 50, 50);
- iis.icon_size_note = gtk_icon_size_register ("icon_size_note", 26, 26);
- iis.icon_size_statusbar = gtk_icon_size_register ("icon_size_statusbar", 40, 40);
- iis.icon_size_indi_video_player_pre_roll = gtk_icon_size_register ("icon_size_indi_video_player_pre_roll", 64, 64);
- iis.icon_size_indi_key_pad_lock = gtk_icon_size_register ("icon_size_indi_key_pad_lock", 50, 50);
- iis.icon_size_indi_copy = gtk_icon_size_register ("icon_size_indi_copy", 64, 64);
- iis.icon_size_indi_delete = gtk_icon_size_register ("icon_size_indi_delete", 64, 64);
- iis.icon_size_indi_process = gtk_icon_size_register ("icon_size_indi_process", 64, 64);
- iis.icon_size_indi_progressball = gtk_icon_size_register ("icon_size_indi_progressball", 64, 64);
- iis.icon_size_indi_send = gtk_icon_size_register ("icon_size_indi_send", 64, 64);
- iis.icon_size_indi_offmode_charging = gtk_icon_size_register ("icon_size_indi_offmode_charging", 50, 50);
- iis.icon_size_indi_tap_and_hold = gtk_icon_size_register ("icon_size_indi_tap_and_hold", 34, 34);
- iis.icon_size_indi_send_receive = gtk_icon_size_register ("icon_size_indi_send_receive", 64, 64);
- iis.icon_size_indi_wlan_strength = gtk_icon_size_register ("icon_size_indi_wlan_strength", 64, 64);
-
- iis.image_size_indi_nokia_logo = gtk_icon_size_register ("image_size_indi_nokia_logo", 64, 64);
- iis.image_size_indi_startup_failed = gtk_icon_size_register ("image_size_indi_startup_failed", 64, 64);
- iis.image_size_indi_startup_nokia_logo = gtk_icon_size_register ("image_size_indi_startup_nokia_logo", 64, 64);
- iis.image_size_indi_nokia_hands = gtk_icon_size_register ("image_size_indi_nokia_hands", 64, 64);
-}
+ if (hildoniconsizes != NULL)
+ return;
+
+ hildoniconsizes = &iis;
-typedef struct _HildonLogicalData HildonLogicalData;
+ iis.icon_size_list = gtk_icon_size_register ("hildon_icon_size_list", 64, 64);
+ iis.icon_size_small = gtk_icon_size_register ("*icon_size_small", 26, 26);
+ iis.icon_size_toolbar = gtk_icon_size_register ("icon_size_toolbar", 26, 26);
+ iis.icon_size_widg = gtk_icon_size_register ("icon_size_widg", 26, 26);
+ iis.icon_size_widg_wizard = gtk_icon_size_register ("icon_size_widg_wizard", 50, 50);
+ iis.icon_size_grid = gtk_icon_size_register ("icon_size_grid", 64, 64);
+ iis.icon_size_big_note = gtk_icon_size_register ("icon_size_big_note", 50, 50);
+ iis.icon_size_note = gtk_icon_size_register ("icon_size_note", 26, 26);
+ iis.icon_size_statusbar = gtk_icon_size_register ("icon_size_statusbar", 40, 40);
+ iis.icon_size_indi_video_player_pre_roll = gtk_icon_size_register ("icon_size_indi_video_player_pre_roll", 64, 64);
+ iis.icon_size_indi_key_pad_lock = gtk_icon_size_register ("icon_size_indi_key_pad_lock", 50, 50);
+ iis.icon_size_indi_copy = gtk_icon_size_register ("icon_size_indi_copy", 64, 64);
+ iis.icon_size_indi_delete = gtk_icon_size_register ("icon_size_indi_delete", 64, 64);
+ iis.icon_size_indi_process = gtk_icon_size_register ("icon_size_indi_process", 64, 64);
+ iis.icon_size_indi_progressball = gtk_icon_size_register ("icon_size_indi_progressball", 64, 64);
+ iis.icon_size_indi_send = gtk_icon_size_register ("icon_size_indi_send", 64, 64);
+ iis.icon_size_indi_offmode_charging = gtk_icon_size_register ("icon_size_indi_offmode_charging", 50, 50);
+ iis.icon_size_indi_tap_and_hold = gtk_icon_size_register ("icon_size_indi_tap_and_hold", 34, 34);
+ iis.icon_size_indi_send_receive = gtk_icon_size_register ("icon_size_indi_send_receive", 64, 64);
+ iis.icon_size_indi_wlan_strength = gtk_icon_size_register ("icon_size_indi_wlan_strength", 64, 64);
-struct _HildonLogicalData
+ iis.image_size_indi_nokia_logo = gtk_icon_size_register ("image_size_indi_nokia_logo", 64, 64);
+ iis.image_size_indi_startup_failed = gtk_icon_size_register ("image_size_indi_startup_failed", 64, 64);
+ iis.image_size_indi_startup_nokia_logo = gtk_icon_size_register ("image_size_indi_startup_nokia_logo", 64, 64);
+ iis.image_size_indi_nokia_hands = gtk_icon_size_register ("image_size_indi_nokia_hands", 64, 64);
+}
+
+struct _HildonLogicalData
{
- GtkRcFlags rcflags;
- GtkStateType state;
- gchar *logicalcolorstring;
- gchar *logicalfontstring;
+ GtkRcFlags rcflags;
+ GtkStateType state;
+ gchar *logicalcolorstring;
+ gchar *logicalfontstring;
};
-
-static void hildon_change_style_recursive_from_ld (GtkWidget *widget, GtkStyle *prev_style, HildonLogicalData *ld)
+static void
+hildon_change_style_recursive_from_ld (GtkWidget *widget,
+ GtkStyle *prev_style,
+ HildonLogicalData *ld)
{
- /* Change the style for child widgets */
- if (GTK_IS_CONTAINER (widget)) {
- GList *iterator = gtk_container_get_children (GTK_CONTAINER (widget));
- for (iterator = iterator; iterator != NULL; iterator = g_list_next (iterator))
- hildon_change_style_recursive_from_ld (GTK_WIDGET (iterator->data), prev_style, ld);
- }
-
- /* gtk_widget_modify_*() emit "style_set" signals, so if we got here from
- "style_set" signal, we need to block this function from being called
- again or we get into inifinite loop.
-
- FIXME: Compiling with gcc > 3.3 and -pedantic won't allow
- conversion between function and object pointers. GLib API however
- requires an object pointer for a function, so we have to work
- around this.
- See http://bugzilla.gnome.org/show_bug.cgi?id=310175
- */
- G_GNUC_EXTENSION
- g_signal_handlers_block_matched (G_OBJECT (widget), G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC,
- g_signal_lookup ("style_set", G_TYPE_FROM_INSTANCE (widget)),
- 0, NULL,
- (gpointer) hildon_change_style_recursive_from_ld,
- NULL);
-
- if (ld->logicalcolorstring != NULL)
+ g_assert (GTK_IS_WIDGET (widget));
+
+ /* Change the style for child widgets */
+ if (GTK_IS_CONTAINER (widget)) {
+ GList *iterator = gtk_container_get_children (GTK_CONTAINER (widget));
+ for (iterator = iterator; iterator != NULL; iterator = g_list_next (iterator))
+ hildon_change_style_recursive_from_ld (GTK_WIDGET (iterator->data), prev_style, ld);
+ }
+
+ /* gtk_widget_modify_*() emit "style_set" signals, so if we got here from
+ "style_set" signal, we need to block this function from being called
+ again or we get into inifinite loop.
+
+ FIXME: Compiling with gcc > 3.3 and -pedantic won't allow
+ conversion between function and object pointers. GLib API however
+ requires an object pointer for a function, so we have to work
+ around this.
+ See http://bugzilla.gnome.org/show_bug.cgi?id=310175
+ */
+
+ G_GNUC_EXTENSION
+ g_signal_handlers_block_matched (G_OBJECT (widget), G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC,
+ g_signal_lookup ("style_set", G_TYPE_FROM_INSTANCE (widget)),
+ 0, NULL,
+ (gpointer) hildon_change_style_recursive_from_ld,
+ NULL);
+
+ if (ld->logicalcolorstring != NULL)
{
- /* Changing logical color */
- GdkColor color;
- gtk_widget_ensure_style (widget);
- if (gtk_style_lookup_color (widget->style, ld->logicalcolorstring, &color) == TRUE)
- switch (ld->rcflags)
- {
- case GTK_RC_FG:
- gtk_widget_modify_fg (widget, ld->state, &color);
- break;
- case GTK_RC_BG:
- gtk_widget_modify_bg (widget, ld->state, &color);
- break;
- case GTK_RC_TEXT:
- gtk_widget_modify_text (widget, ld->state, &color);
- break;
- case GTK_RC_BASE:
- gtk_widget_modify_base (widget, ld->state, &color);
- break;
- } else
- {
- g_warning ("Failed to lookup '%s' color!", ld->logicalcolorstring);
- }
+ /* Changing logical color */
+ GdkColor color;
+ gtk_widget_ensure_style (widget);
+ if (gtk_style_lookup_color (widget->style, ld->logicalcolorstring, &color) == TRUE)
+ switch (ld->rcflags)
+ {
+ case GTK_RC_FG:
+ gtk_widget_modify_fg (widget, ld->state, &color);
+ break;
+
+ case GTK_RC_BG:
+ gtk_widget_modify_bg (widget, ld->state, &color);
+ break;
+
+ case GTK_RC_TEXT:
+ gtk_widget_modify_text (widget, ld->state, &color);
+ break;
+
+ case GTK_RC_BASE:
+ gtk_widget_modify_base (widget, ld->state, &color);
+ break;
+
+ } else {
+ g_warning ("Failed to lookup '%s' color!", ld->logicalcolorstring);
+ }
}
- if (ld->logicalfontstring != NULL)
+ if (ld->logicalfontstring != NULL)
{
- /* Changing logical font */
- GtkStyle *fontstyle = gtk_rc_get_style_by_paths (gtk_settings_get_default (), ld->logicalfontstring, NULL, G_TYPE_NONE);
- if (fontstyle != NULL)
- {
- PangoFontDescription *fontdesc = fontstyle->font_desc;
-
- if (fontdesc != NULL)
- gtk_widget_modify_font (widget, fontdesc);
- }
+ /* Changing logical font */
+ GtkStyle *fontstyle = gtk_rc_get_style_by_paths (gtk_settings_get_default (), ld->logicalfontstring, NULL, G_TYPE_NONE);
+ if (fontstyle != NULL)
+ {
+ PangoFontDescription *fontdesc = fontstyle->font_desc;
+
+ if (fontdesc != NULL)
+ gtk_widget_modify_font (widget, fontdesc);
+ }
}
-
-
- /* FIXME: Compilation workaround for gcc > 3.3 + -pedantic again */
- G_GNUC_EXTENSION
- g_signal_handlers_unblock_matched (G_OBJECT (widget), G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC,
- g_signal_lookup ("style_set", G_TYPE_FROM_INSTANCE (widget)),
- 0, NULL,
- (gpointer) hildon_change_style_recursive_from_ld,
- NULL);
+
+ /* FIXME: Compilation workaround for gcc > 3.3 + -pedantic again */
+
+ G_GNUC_EXTENSION
+ g_signal_handlers_unblock_matched (G_OBJECT (widget), G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC,
+ g_signal_lookup ("style_set", G_TYPE_FROM_INSTANCE (widget)),
+ 0, NULL,
+ (gpointer) hildon_change_style_recursive_from_ld,
+ NULL);
}
-static void hildon_logical_data_free (HildonLogicalData *ld)
+static void
+hildon_logical_data_free (HildonLogicalData *ld)
{
- g_return_if_fail (ld != NULL);
-
- if (ld->logicalcolorstring)
- g_free(ld->logicalcolorstring);
-
- if (ld->logicalfontstring)
- g_free(ld->logicalfontstring);
-
- g_free(ld);
+ g_return_if_fail (ld != NULL);
+
+ if (ld->logicalcolorstring)
+ g_free (ld->logicalcolorstring);
+
+ if (ld->logicalfontstring)
+ g_free (ld->logicalfontstring);
+
+ g_free (ld);
}
/**
* hildon_gtk_widget_set_logical_font:
* @widget : A @GtkWidget to assign this logical font for.
- * @logicalfontname : A gchar* with the logical font name to assign to the widget with an "osso-" -prefix.
+ * @logicalfontname : A gchar* with the logical font name to assign to the widget.
*
* This function assigns a defined logical font to the @widget and all its child widgets.
* It also connects to the "style_set" signal which will retrieve & assign the new font for the given logical name each time the theme is changed.
*
* Return value : The signal id that is triggered every time theme is changed. 0 if font set failed.
**/
-gulong hildon_gtk_widget_set_logical_font (GtkWidget *widget, const gchar *logicalfontname)
+gulong
+hildon_gtk_widget_set_logical_font (GtkWidget *widget,
+ const gchar *logicalfontname)
{
- HildonLogicalData *ld;
- gulong signum = 0;
-
- g_return_val_if_fail (GTK_IS_WIDGET (widget), 0);
- g_return_val_if_fail (logicalfontname != NULL, 0);
-
- ld = g_malloc (sizeof (HildonLogicalData));
-
- ld->rcflags = 0;
- ld->state = 0;
- ld->logicalcolorstring = NULL;
- ld->logicalfontstring = g_strdup(logicalfontname);
-
- /* Disconnects the previously connected signals. That calls the closure notify
- * and effectively disposes the allocated data (hildon_logical_data_free) */
- g_signal_handlers_disconnect_matched (G_OBJECT (widget), G_SIGNAL_MATCH_FUNC,
- 0, 0, NULL,
- G_CALLBACK (hildon_change_style_recursive_from_ld), NULL);
-
- /* Change the font now */
- hildon_change_style_recursive_from_ld (widget, NULL, ld);
-
- /* Connect to "style_set" so that the font gets changed whenever theme changes. */
- signum = g_signal_connect_data (G_OBJECT (widget), "style_set",
- G_CALLBACK (hildon_change_style_recursive_from_ld),
- ld, (GClosureNotify) hildon_logical_data_free, 0);
-
- return signum;
+ HildonLogicalData *ld;
+ gulong signum = 0;
+
+ g_return_val_if_fail (GTK_IS_WIDGET (widget), 0);
+ g_return_val_if_fail (logicalfontname != NULL, 0);
+
+ ld = g_malloc (sizeof (HildonLogicalData));
+
+ ld->rcflags = 0;
+ ld->state = 0;
+ ld->logicalcolorstring = NULL;
+ ld->logicalfontstring = g_strdup(logicalfontname);
+
+ /* Disconnects the previously connected signals. That calls the closure notify
+ * and effectively disposes the allocated data (hildon_logical_data_free) */
+ g_signal_handlers_disconnect_matched (G_OBJECT (widget), G_SIGNAL_MATCH_FUNC,
+ 0, 0, NULL,
+ G_CALLBACK (hildon_change_style_recursive_from_ld), NULL);
+
+ /* Change the font now */
+ hildon_change_style_recursive_from_ld (widget, NULL, ld);
+
+ /* Connect to "style_set" so that the font gets changed whenever theme changes. */
+ signum = g_signal_connect_data (G_OBJECT (widget), "style_set",
+ G_CALLBACK (hildon_change_style_recursive_from_ld),
+ ld, (GClosureNotify) hildon_logical_data_free, 0);
+
+ return signum;
}
/**
*
* Return value : The signal id that is triggered every time theme is changed. 0 if color set failed.
**/
-gulong hildon_gtk_widget_set_logical_color (GtkWidget *widget, GtkRcFlags rcflags,
- GtkStateType state, const gchar *logicalcolorname)
+gulong
+hildon_gtk_widget_set_logical_color (GtkWidget *widget,
+ GtkRcFlags rcflags,
+ GtkStateType state,
+ const gchar *logicalcolorname)
{
- HildonLogicalData *ld;
- gulong signum = 0;
-
- g_return_val_if_fail (GTK_IS_WIDGET (widget), 0);
- g_return_val_if_fail (logicalcolorname != NULL, 0);
-
- ld = g_malloc (sizeof (HildonLogicalData));
-
- ld->rcflags = rcflags;
- ld->state = state;
- ld->logicalcolorstring = g_strdup(logicalcolorname);
- ld->logicalfontstring = NULL;
-
- /* Disconnects the previously connected signals. That calls the closure notify
- * and effectively disposes the allocated data (hildon_logical_data_free) */
- g_signal_handlers_disconnect_matched (G_OBJECT (widget), G_SIGNAL_MATCH_FUNC,
- 0, 0, NULL,
- G_CALLBACK (hildon_change_style_recursive_from_ld), NULL);
-
- /* Change the colors now */
- hildon_change_style_recursive_from_ld (widget, NULL, ld);
-
- /* Connect to "style_set" so that the colors gets changed whenever theme */
- signum = g_signal_connect_data (G_OBJECT (widget), "style_set",
- G_CALLBACK (hildon_change_style_recursive_from_ld),
- ld, (GClosureNotify) hildon_logical_data_free, 0);
-
- return signum;
+ HildonLogicalData *ld;
+ gulong signum = 0;
+
+ g_return_val_if_fail (GTK_IS_WIDGET (widget), 0);
+ g_return_val_if_fail (logicalcolorname != NULL, 0);
+
+ ld = g_malloc (sizeof (HildonLogicalData));
+
+ ld->rcflags = rcflags;
+ ld->state = state;
+ ld->logicalcolorstring = g_strdup (logicalcolorname);
+ ld->logicalfontstring = NULL;
+
+ /* Disconnects the previously connected signals. That calls the closure notify
+ * and effectively disposes the allocated data (hildon_logical_data_free) */
+ g_signal_handlers_disconnect_matched (G_OBJECT (widget), G_SIGNAL_MATCH_FUNC,
+ 0, 0, NULL,
+ G_CALLBACK (hildon_change_style_recursive_from_ld), NULL);
+
+ /* Change the colors now */
+ hildon_change_style_recursive_from_ld (widget, NULL, ld);
+
+ /* Connect to "style_set" so that the colors gets changed whenever theme */
+ signum = g_signal_connect_data (G_OBJECT (widget), "style_set",
+ G_CALLBACK (hildon_change_style_recursive_from_ld),
+ ld, (GClosureNotify) hildon_logical_data_free, 0);
+
+ return signum;
}
+
+
*
*/
-#ifndef __HILDON_DEFINES_H__
-#define __HILDON_DEFINES_H__
+#ifndef __HILDON_DEFINES_H__
+#define __HILDON_DEFINES_H__
-#include <gtk/gtkwindow.h>
-#include <gdk/gdkkeysyms.h>
+#include <gtk/gtkwindow.h>
+#include <gdk/gdkkeysyms.h>
G_BEGIN_DECLS
-void hildon_icon_sizes_init (void);
+typedef struct _HildonIconSizes HildonIconSizes;
-typedef struct _HildonIconSizes HildonIconSizes;
-
-struct _HildonIconSizes
+struct _HildonIconSizes
{
- GtkIconSize icon_size_list;
- GtkIconSize icon_size_small;
- GtkIconSize icon_size_toolbar;
- GtkIconSize icon_size_widg;
- GtkIconSize icon_size_widg_wizard;
- GtkIconSize icon_size_grid;
- GtkIconSize icon_size_big_note;
- GtkIconSize icon_size_note;
- GtkIconSize icon_size_statusbar;
- GtkIconSize icon_size_indi_video_player_pre_roll;
- GtkIconSize icon_size_indi_key_pad_lock;
- GtkIconSize icon_size_indi_copy;
- GtkIconSize icon_size_indi_delete;
- GtkIconSize icon_size_indi_process;
- GtkIconSize icon_size_indi_progressball;
- GtkIconSize icon_size_indi_send;
- GtkIconSize icon_size_indi_offmode_charging;
- GtkIconSize icon_size_indi_tap_and_hold;
- GtkIconSize icon_size_indi_send_receive;
- GtkIconSize icon_size_indi_wlan_strength;
- GtkIconSize image_size_indi_nokia_logo;
- GtkIconSize image_size_indi_startup_failed;
- GtkIconSize image_size_indi_startup_nokia_logo;
- GtkIconSize image_size_indi_nokia_hands;
+ GtkIconSize icon_size_list;
+ GtkIconSize icon_size_small;
+ GtkIconSize icon_size_toolbar;
+ GtkIconSize icon_size_widg;
+ GtkIconSize icon_size_widg_wizard;
+ GtkIconSize icon_size_grid;
+ GtkIconSize icon_size_big_note;
+ GtkIconSize icon_size_note;
+ GtkIconSize icon_size_statusbar;
+ GtkIconSize icon_size_indi_video_player_pre_roll;
+ GtkIconSize icon_size_indi_key_pad_lock;
+ GtkIconSize icon_size_indi_copy;
+ GtkIconSize icon_size_indi_delete;
+ GtkIconSize icon_size_indi_process;
+ GtkIconSize icon_size_indi_progressball;
+ GtkIconSize icon_size_indi_send;
+ GtkIconSize icon_size_indi_offmode_charging;
+ GtkIconSize icon_size_indi_tap_and_hold;
+ GtkIconSize icon_size_indi_send_receive;
+ GtkIconSize icon_size_indi_wlan_strength;
+ GtkIconSize image_size_indi_nokia_logo;
+ GtkIconSize image_size_indi_startup_failed;
+ GtkIconSize image_size_indi_startup_nokia_logo;
+ GtkIconSize image_size_indi_nokia_hands;
};
-extern const HildonIconSizes *hildoniconsizes;
-
-#define HILDON_ICON_SIZE_CHECK_AND_GET(iconvar) (!hildoniconsizes ? hildon_icon_sizes_init (), hildoniconsizes->iconvar : hildoniconsizes->iconvar)
-
-#define HILDON_ICON_SIZE_LIST HILDON_ICON_SIZE_CHECK_AND_GET(icon_size_list)
-#define HILDON_ICON_SIZE_SMALL HILDON_ICON_SIZE_CHECK_AND_GET(icon_size_small)
-#define HILDON_ICON_SIZE_TOOLBAR HILDON_ICON_SIZE_CHECK_AND_GET(icon_size_toolbar)
-#define HILDON_ICON_SIZE_WIDG HILDON_ICON_SIZE_CHECK_AND_GET(icon_size_widg)
-#define HILDON_ICON_SIZE_WIDG_WIZARD HILDON_ICON_SIZE_CHECK_AND_GET(icon_size_widg_wizard)
-#define HILDON_ICON_SIZE_GRID HILDON_ICON_SIZE_CHECK_AND_GET(icon_size_grid)
-#define HILDON_ICON_SIZE_BIG_NOTE HILDON_ICON_SIZE_CHECK_AND_GET(icon_size_big_note)
-#define HILDON_ICON_SIZE_NOTE HILDON_ICON_SIZE_CHECK_AND_GET(icon_size_note)
-#define HILDON_ICON_SIZE_STATUSBAR HILDON_ICON_SIZE_CHECK_AND_GET(icon_size_statusbar)
-#define HILDON_ICON_SIZE_INDI_VIDEO_PLAYER_PRE_ROLL HILDON_ICON_SIZE_CHECK_AND_GET(icon_size_indi_video_player_pre_roll)
-#define HILDON_ICON_SIZE_INDI_COPY HILDON_ICON_SIZE_CHECK_AND_GET(icon_size_indi_copy)
-#define HILDON_ICON_SIZE_INDI_DELETE HILDON_ICON_SIZE_CHECK_AND_GET(icon_size_indi_delete)
-#define HILDON_ICON_SIZE_INDI_PROCESS HILDON_ICON_SIZE_CHECK_AND_GET(icon_size_indi_process)
-#define HILDON_ICON_SIZE_INDI_PROGRESSBALL HILDON_ICON_SIZE_CHECK_AND_GET(icon_size_indi_progressball)
-#define HILDON_ICON_SIZE_INDI_SEND HILDON_ICON_SIZE_CHECK_AND_GET(icon_size_indi_send)
-#define HILDON_ICON_SIZE_INDI_OFFMODE_CHARGING HILDON_ICON_SIZE_CHECK_AND_GET(icon_size_indi_offmode)
-#define HILDON_ICON_SIZE_INDI_TAP_AND_HOLD HILDON_ICON_SIZE_CHECK_AND_GET(icon_size_tap_and_hold)
-#define HILDON_ICON_SIZE_INDI_SEND_RECEIVE HILDON_ICON_SIZE_CHECK_AND_GET(icon_size_indi_send_receive)
-#define HILDON_ICON_SIZE_INDI_WLAN_STRENGTH HILDON_ICON_SIZE_CHECK_AND_GET(icon_size_indi_wlan_strength)
-
-#define HILDON_IMAGE_SIZE_INDI_NOKIA_LOGO HILDON_ICON_SIZE_CHECK_AND_GET(image_size_indi_nokia_logo)
-#define HILDON_IMAGE_SIZE_INDI_STARTUP_FAILED HILDON_ICON_SIZE_CHECK_AND_GET(image_size_indi_startup_nokia_failed)
-#define HILDON_IMAGE_SIZE_INDI_STARTUP_NOKIA_LOGO HILDON_ICON_SIZE_CHECK_AND_GET(image_size_indi_startup_nokia_logo)
-#define HILDON_IMAGE_SIZE_INDI_NOKIA_HAND HILDON_ICON_SIZE_CHECK_AND_GET(image_size_indi_nokia_hands)
-
-#define HILDON_ICON_PIXEL_SIZE_LIST 64
-#define HILDON_ICON_PIXEL_SIZE_SMALL 26
-#define HILDON_ICON_PIXEL_SIZE_TOOLBAR 26
-#define HILDON_ICON_PIXEL_SIZE_WIDG 26
-#define HILDON_ICON_PIXEL_SIZE_WIDG_WIZARD 50
-#define HILDON_ICON_PIXEL_SIZE_GRID 64
-#define HILDON_ICON_PIXEL_SIZE_BIG_NOTE 50
-#define HILDON_ICON_PIXEL_SIZE_NOTE 26
-#define HILDON_ICON_PIXEL_SIZE_STATUSBAR 40
-#define HILDON_ICON_PIXEL_SIZE_INDI_VIDEO_PLAYER_PRE_ROLL 64
-#define HILDON_ICON_PIXEL_SIZE_INDI_KEY_PAD_LOCK 50
-#define HILDON_ICON_PIXEL_SIZE_INDI_COPY 64
-#define HILDON_ICON_PIXEL_SIZE_INDI_DELETE 64
-#define HILDON_ICON_PIXEL_SIZE_INDI_PROCESS 64
-#define HILDON_ICON_PIXEL_SIZE_INDI_PROGRESSBALL 64
-#define HILDON_ICON_PIXEL_SIZE_INDI_SEND 64
-#define HILDON_ICON_PIXEL_SIZE_INDI_OFFMODE_CHARGING 50
-#define HILDON_ICON_PIXEL_SIZE_INDI_TAP_AND_HOLD 34
-#define HILDON_ICON_PIXEL_SIZE_INDI_SEND_RECEIVE 64
-#define HILDON_ICON_PIXEL_SIZE_INDI_WLAN_STRENGTH 64
-
-#define HILDON_IMAGE_PIXEL_SIZE_INDI_NOKIA_LOGO 64
-#define HILDON_IMAGE_PIXEL_SIZE_INDI_STARTUP_FAILED 64
-#define HILDON_IMAGE_PIXEL_SIZE_INDI_STARTUP_NOKIA_LOGO 64
-#define HILDON_IMAGE_PIXEL_SIZE_INDI_NOKIA_HANDS 64
-
-#define HILDON_MARGIN_HALF 3
-#define HILDON_MARGIN_DEFAULT 6
-#define HILDON_MARGIN_DOUBLE 12
-#define HILDON_MARGIN_TRIPLE 18
-
-#define HILDON_HARDKEY_UP GDK_Up
-#define HILDON_HARDKEY_LEFT GDK_Left
-#define HILDON_HARDKEY_RIGHT GDK_Right
-#define HILDON_HARDKEY_DOWN GDK_Down
-#define HILDON_HARDKEY_SELECT GDK_Return
-#define HILDON_HARDKEY_MENU GDK_F4
-#define HILDON_HARDKEY_HOME GDK_F5
-#define HILDON_HARDKEY_ESC GDK_Escape
-#define HILDON_HARDKEY_FULLSCREEN GDK_F6
-#define HILDON_HARDKEY_INCREASE GDK_F7
-#define HILDON_HARDKEY_DECREASE GDK_F8
-
-gulong hildon_gtk_widget_set_logical_font (GtkWidget *widget, const gchar *logicalfontname);
-gulong hildon_gtk_widget_set_logical_color (GtkWidget *widget, GtkRcFlags rcflags,
- GtkStateType state, const gchar *logicalcolorname);
+extern const HildonIconSizes *hildoniconsizes;
+
+#define HILDON_ICON_SIZE_CHECK_AND_GET(iconvar) \
+ (!hildoniconsizes ? \
+ hildon_icon_sizes_init (), hildoniconsizes->iconvar : \
+ hildoniconsizes->iconvar)
+
+#define HILDON_ICON_SIZE_LIST \
+ HILDON_ICON_SIZE_CHECK_AND_GET(icon_size_list)
+
+#define HILDON_ICON_SIZE_SMALL \
+ HILDON_ICON_SIZE_CHECK_AND_GET(icon_size_small)
+
+#define HILDON_ICON_SIZE_TOOLBAR \
+ HILDON_ICON_SIZE_CHECK_AND_GET(icon_size_toolbar)
+
+#define HILDON_ICON_SIZE_WIDG \
+ HILDON_ICON_SIZE_CHECK_AND_GET(icon_size_widg)
+
+#define HILDON_ICON_SIZE_WIDG_WIZARD \
+ HILDON_ICON_SIZE_CHECK_AND_GET(icon_size_widg_wizard)
+
+#define HILDON_ICON_SIZE_GRID \
+ HILDON_ICON_SIZE_CHECK_AND_GET(icon_size_grid)
+
+#define HILDON_ICON_SIZE_BIG_NOTE \
+ HILDON_ICON_SIZE_CHECK_AND_GET(icon_size_big_note)
+
+#define HILDON_ICON_SIZE_NOTE \
+ HILDON_ICON_SIZE_CHECK_AND_GET(icon_size_note)
+
+#define HILDON_ICON_SIZE_STATUSBAR \
+ HILDON_ICON_SIZE_CHECK_AND_GET(icon_size_statusbar)
+
+#define HILDON_ICON_SIZE_INDI_VIDEO_PLAYER_PRE_ROLL \
+ HILDON_ICON_SIZE_CHECK_AND_GET(icon_size_indi_video_player_pre_roll)
+
+#define HILDON_ICON_SIZE_INDI_COPY \
+ HILDON_ICON_SIZE_CHECK_AND_GET(icon_size_indi_copy)
+
+#define HILDON_ICON_SIZE_INDI_DELETE \
+ HILDON_ICON_SIZE_CHECK_AND_GET(icon_size_indi_delete)
+
+#define HILDON_ICON_SIZE_INDI_PROCESS \
+ HILDON_ICON_SIZE_CHECK_AND_GET(icon_size_indi_process)
+
+#define HILDON_ICON_SIZE_INDI_PROGRESSBALL \
+ HILDON_ICON_SIZE_CHECK_AND_GET(icon_size_indi_progressball)
+
+#define HILDON_ICON_SIZE_INDI_SEND \
+ HILDON_ICON_SIZE_CHECK_AND_GET(icon_size_indi_send)
+
+#define HILDON_ICON_SIZE_INDI_OFFMODE_CHARGING \
+ HILDON_ICON_SIZE_CHECK_AND_GET(icon_size_indi_offmode)
+
+#define HILDON_ICON_SIZE_INDI_TAP_AND_HOLD \
+ HILDON_ICON_SIZE_CHECK_AND_GET(icon_size_tap_and_hold)
+
+#define HILDON_ICON_SIZE_INDI_SEND_RECEIVE \
+ HILDON_ICON_SIZE_CHECK_AND_GET(icon_size_indi_send_receive)
+
+#define HILDON_ICON_SIZE_INDI_WLAN_STRENGTH \
+ HILDON_ICON_SIZE_CHECK_AND_GET(icon_size_indi_wlan_strength)
+
+#define HILDON_IMAGE_SIZE_INDI_NOKIA_LOGO \
+ HILDON_ICON_SIZE_CHECK_AND_GET(image_size_indi_nokia_logo)
+
+#define HILDON_IMAGE_SIZE_INDI_STARTUP_FAILED \
+ HILDON_ICON_SIZE_CHECK_AND_GET(image_size_indi_startup_nokia_failed)
+
+#define HILDON_IMAGE_SIZE_INDI_STARTUP_NOKIA_LOGO \
+ HILDON_ICON_SIZE_CHECK_AND_GET(image_size_indi_startup_nokia_logo)
+
+#define HILDON_IMAGE_SIZE_INDI_NOKIA_HAND \
+ HILDON_ICON_SIZE_CHECK_AND_GET(image_size_indi_nokia_hands)
+
+/* Actual icon sizes */
+
+#define HILDON_ICON_PIXEL_SIZE_LIST 64
+
+#define HILDON_ICON_PIXEL_SIZE_SMALL 26
+
+#define HILDON_ICON_PIXEL_SIZE_TOOLBAR 26
+
+#define HILDON_ICON_PIXEL_SIZE_WIDG 26
+
+#define HILDON_ICON_PIXEL_SIZE_WIDG_WIZARD 50
+
+#define HILDON_ICON_PIXEL_SIZE_GRID 64
+
+#define HILDON_ICON_PIXEL_SIZE_BIG_NOTE 50
+
+#define HILDON_ICON_PIXEL_SIZE_NOTE 26
+
+#define HILDON_ICON_PIXEL_SIZE_STATUSBAR 40
+
+#define HILDON_ICON_PIXEL_SIZE_INDI_VIDEO_PLAYER_PRE_ROLL 64
+
+#define HILDON_ICON_PIXEL_SIZE_INDI_KEY_PAD_LOCK 50
+
+#define HILDON_ICON_PIXEL_SIZE_INDI_COPY 64
+
+#define HILDON_ICON_PIXEL_SIZE_INDI_DELETE 64
+
+#define HILDON_ICON_PIXEL_SIZE_INDI_PROCESS 64
+
+#define HILDON_ICON_PIXEL_SIZE_INDI_PROGRESSBALL 64
+
+#define HILDON_ICON_PIXEL_SIZE_INDI_SEND 64
+
+#define HILDON_ICON_PIXEL_SIZE_INDI_OFFMODE_CHARGING 50
+
+#define HILDON_ICON_PIXEL_SIZE_INDI_TAP_AND_HOLD 34
+
+#define HILDON_ICON_PIXEL_SIZE_INDI_SEND_RECEIVE 64
+
+#define HILDON_ICON_PIXEL_SIZE_INDI_WLAN_STRENGTH 64
+
+/* Actual image sizes */
+
+#define HILDON_IMAGE_PIXEL_SIZE_INDI_NOKIA_LOGO 64
+
+#define HILDON_IMAGE_PIXEL_SIZE_INDI_STARTUP_FAILED 64
+
+#define HILDON_IMAGE_PIXEL_SIZE_INDI_STARTUP_NOKIA_LOGO 64
+
+#define HILDON_IMAGE_PIXEL_SIZE_INDI_NOKIA_HANDS 64
+
+#define HILDON_MARGIN_HALF 3
+
+#define HILDON_MARGIN_DEFAULT 6
+
+#define HILDON_MARGIN_DOUBLE 12
+
+#define HILDON_MARGIN_TRIPLE 18
+
+/* Hard keys */
+
+#define HILDON_HARDKEY_UP GDK_Up
+
+#define HILDON_HARDKEY_LEFT GDK_Left
+
+#define HILDON_HARDKEY_RIGHT GDK_Right
+
+#define HILDON_HARDKEY_DOWN GDK_Down
+
+#define HILDON_HARDKEY_SELECT GDK_Return
+
+#define HILDON_HARDKEY_MENU GDK_F4
+
+#define HILDON_HARDKEY_HOME GDK_F5
+
+#define HILDON_HARDKEY_ESC GDK_Escape
+
+#define HILDON_HARDKEY_FULLSCREEN GDK_F6
+
+#define HILDON_HARDKEY_INCREASE GDK_F7
+
+#define HILDON_HARDKEY_DECREASE GDK_F8
+
+gulong
+hildon_gtk_widget_set_logical_font (GtkWidget *widget,
+ const gchar *logicalfontname);
+
+gulong
+hildon_gtk_widget_set_logical_color (GtkWidget *widget,
+ GtkRcFlags rcflags,
+ GtkStateType state,
+ const gchar *logicalcolorname);
+
+void
+hildon_icon_sizes_init (void);
G_END_DECLS
-#endif /* HILDON_DEFINES_H */
+
+#endif /* HILDON_DEFINES_H */