23
24
extern gchar *g_cMainDockDefaultRendererName;
24
25
extern gchar *g_cSubDockDefaultRendererName;
27
extern int g_iDockRadius;
26
29
static GHashTable *s_hRendererTable = NULL; // table des fonctions de rendus de dock.
27
30
static GHashTable *s_hDeskletRendererTable = NULL; // table des fonctions de rendus des desklets.
30
CairoDockRenderer *cairo_dock_get_renderer (gchar *cRendererName, gboolean bForMainDock)
31
static GHashTable *s_hDialogRendererTable = NULL; // table des fonctions de rendus des dialogues.
34
CairoDockRenderer *cairo_dock_get_renderer (const gchar *cRendererName, gboolean bForMainDock)
32
36
//g_print ("%s (%s, %d)\n", __func__, cRendererName, bForMainDock);
33
37
CairoDockRenderer *pRenderer = NULL;
51
void cairo_dock_register_renderer (gchar *cRendererName, CairoDockRenderer *pRenderer)
55
void cairo_dock_register_renderer (const gchar *cRendererName, CairoDockRenderer *pRenderer)
53
57
cd_message ("%s (%s)", __func__, cRendererName);
54
58
g_hash_table_insert (s_hRendererTable, g_strdup (cRendererName), pRenderer);
57
void cairo_dock_remove_renderer (gchar *cRendererName)
61
void cairo_dock_remove_renderer (const gchar *cRendererName)
59
63
g_hash_table_remove (s_hRendererTable, cRendererName);
63
CairoDeskletRenderer *cairo_dock_get_desklet_renderer (gchar *cRendererName)
67
CairoDeskletRenderer *cairo_dock_get_desklet_renderer (const gchar *cRendererName)
65
69
if (cRendererName != NULL)
66
70
return g_hash_table_lookup (s_hDeskletRendererTable, cRendererName);
71
void cairo_dock_register_desklet_renderer (gchar *cRendererName, CairoDeskletRenderer *pRenderer)
75
void cairo_dock_register_desklet_renderer (const gchar *cRendererName, CairoDeskletRenderer *pRenderer)
73
77
cd_message ("%s (%s)", __func__, cRendererName);
74
78
g_hash_table_insert (s_hDeskletRendererTable, g_strdup (cRendererName), pRenderer);
77
void cairo_dock_remove_desklet_renderer (gchar *cRendererName)
81
void cairo_dock_remove_desklet_renderer (const gchar *cRendererName)
79
83
g_hash_table_remove (s_hDeskletRendererTable, cRendererName);
86
void cairo_dock_predefine_desklet_renderer_config (CairoDeskletRenderer *pRenderer, const gchar *cConfigName, CairoDeskletRendererConfigPtr pConfig)
88
g_return_if_fail (cConfigName != NULL && pConfig != NULL);
89
CairoDeskletRendererPreDefinedConfig *pPreDefinedConfig = g_new (CairoDeskletRendererPreDefinedConfig, 1);
90
pPreDefinedConfig->cName = g_strdup (cConfigName);
91
pPreDefinedConfig->pConfig = pConfig;
92
pRenderer->pPreDefinedConfigList = g_list_prepend (pRenderer->pPreDefinedConfigList, pPreDefinedConfig);
95
CairoDeskletRendererConfigPtr cairo_dock_get_desklet_renderer_predefined_config (const gchar *cRendererName, const gchar *cConfigName)
97
CairoDeskletRenderer *pRenderer = cairo_dock_get_desklet_renderer (cRendererName);
98
g_return_val_if_fail (pRenderer != NULL && cConfigName != NULL, NULL);
101
CairoDeskletRendererPreDefinedConfig *pPreDefinedConfig;
102
for (c = pRenderer->pPreDefinedConfigList; c != NULL; c = c->next)
104
pPreDefinedConfig = c->data;
105
if (strcmp (pPreDefinedConfig->cName, cConfigName) == 0)
106
return pPreDefinedConfig->pConfig;
112
CairoDialogRenderer *cairo_dock_get_dialog_renderer (const gchar *cRendererName)
114
if (cRendererName != NULL)
115
return g_hash_table_lookup (s_hDialogRendererTable, cRendererName);
120
void cairo_dock_register_dialog_renderer (const gchar *cRendererName, CairoDialogRenderer *pRenderer)
122
cd_message ("%s (%s)", __func__, cRendererName);
123
g_hash_table_insert (s_hDialogRendererTable, g_strdup (cRendererName), pRenderer);
126
void cairo_dock_remove_dialog_renderer (const gchar *cRendererName)
128
g_hash_table_remove (s_hDialogRendererTable, cRendererName);
84
132
void cairo_dock_initialize_renderer_manager (void)
126
void cairo_dock_set_desklet_renderer (CairoDesklet *pDesklet, CairoDeskletRenderer *pRenderer, cairo_t *pSourceContext, gboolean bLoadIcons, gpointer *pConfig)
179
void cairo_dock_set_desklet_renderer (CairoDesklet *pDesklet, CairoDeskletRenderer *pRenderer, cairo_t *pSourceContext, gboolean bLoadIcons, CairoDeskletRendererConfigPtr pConfig)
128
181
g_return_if_fail (pDesklet != NULL);
129
cd_message ("%s (%x)", __func__, pRenderer);
182
cd_debug ("%s (%x)", __func__, pRenderer);
131
if (pDesklet->pRenderer != NULL && pDesklet->pRenderer->free_data != NULL)
184
if (pDesklet->pRenderer != NULL && pDesklet->pRenderer->free_data != NULL) // meme si pDesklet->pRendererData == NULL.
133
186
pDesklet->pRenderer->free_data (pDesklet);
134
187
pDesklet->pRendererData = NULL;
157
void cairo_dock_set_desklet_renderer_by_name (CairoDesklet *pDesklet, gchar *cRendererName, cairo_t *pSourceContext, gboolean bLoadIcons, gpointer *pConfig)
210
void cairo_dock_set_desklet_renderer_by_name (CairoDesklet *pDesklet, const gchar *cRendererName, cairo_t *pSourceContext, gboolean bLoadIcons, CairoDeskletRendererConfigPtr pConfig)
159
212
cd_message ("%s (%s, %d)", __func__, cRendererName, bLoadIcons);
160
213
CairoDeskletRenderer *pRenderer = (cRendererName != NULL ? cairo_dock_get_desklet_renderer (cRendererName) : NULL);
162
cairo_t *pCairoContext = (pSourceContext != NULL ? pSourceContext : cairo_dock_create_context_from_window (CAIRO_CONTAINER (pDesklet)));
164
cairo_dock_set_desklet_renderer (pDesklet, pRenderer, pCairoContext, bLoadIcons, pConfig);
166
if (pSourceContext == NULL)
167
cairo_destroy (pCairoContext);
215
cairo_dock_set_desklet_renderer (pDesklet, pRenderer, pSourceContext, bLoadIcons, pConfig);
219
void cairo_dock_set_dialog_renderer (CairoDialog *pDialog, CairoDialogRenderer *pRenderer, cairo_t *pSourceContext, CairoDialogRendererConfigPtr pConfig)
221
g_return_if_fail (pDialog != NULL);
222
cd_debug ("%s (%x)", __func__, pRenderer);
224
if (pDialog->pRenderer != NULL && pDialog->pRenderer->free_data != NULL)
226
pDialog->pRenderer->free_data (pDialog);
227
pDialog->pRendererData = NULL;
230
pDialog->pRenderer = pRenderer;
232
if (pRenderer != NULL)
234
cairo_t *pCairoContext = (pSourceContext != NULL ? pSourceContext : cairo_dock_create_context_from_window (CAIRO_CONTAINER (pDialog)));
236
if (pRenderer->configure != NULL)
237
pDialog->pRendererData = pRenderer->configure (pDialog, pCairoContext, pConfig);
239
if (pSourceContext == NULL)
240
cairo_destroy (pCairoContext);
244
void cairo_dock_set_dialog_renderer_by_name (CairoDialog *pDialog, const gchar *cRendererName, cairo_t *pSourceContext, CairoDialogRendererConfigPtr pConfig)
246
cd_message ("%s (%s)", __func__, cRendererName);
247
CairoDialogRenderer *pRenderer = (cRendererName != NULL ? cairo_dock_get_dialog_renderer (cRendererName) : NULL);
249
cairo_dock_set_dialog_renderer (pDialog, pRenderer, pSourceContext, pConfig);
253
void cairo_dock_render_desklet_with_new_data (CairoDesklet *pDesklet, CairoDeskletRendererDataPtr pNewData)
255
if (pDesklet->pRenderer != NULL && pDesklet->pRenderer->update != NULL)
256
pDesklet->pRenderer->update (pDesklet, pNewData);
258
gtk_widget_queue_draw_area (pDesklet->pWidget,
261
pDesklet->iWidth - g_iDockRadius,
262
pDesklet->iHeight- g_iDockRadius); // marche avec glitz ?...
265
void cairo_dock_render_dialog_with_new_data (CairoDialog *pDialog, CairoDialogRendererDataPtr pNewData)
267
if (pDialog->pRenderer != NULL && pDialog->pRenderer->update != NULL)
268
pDialog->pRenderer->update (pDialog, pNewData);
270
if (pDialog->pInteractiveWidget != NULL)
271
gtk_widget_queue_draw_area (pDialog->pWidget,
273
(pDialog->bDirectionUp ?
274
pDialog->iMargin + pDialog->iMessageHeight :
275
pDialog->iHeight - pDialog->iMargin - pDialog->iInteractiveHeight),
276
pDialog->iInteractiveWidth,
277
pDialog->iInteractiveHeight); // marche avec glitz ?...
279
gtk_widget_queue_draw (pDialog->pWidget);