~helene-verhaeghe27/cairo-dock-core/bugfix

« back to all changes in this revision

Viewing changes to src/cairo-dock-gui-main.c

  • Committer: Fabrice Rey
  • Date: 2010-12-29 14:06:08 UTC
  • mto: This revision was merged to the branch mainline in revision 698.
  • Revision ID: fabounet03@gmail.com-20101229140608-oc42pfn9urtipgkg
some fixes for the theme-manager

Show diffs side-by-side

added added

removed removed

Lines of Context:
42
42
#include "cairo-dock-gui-manager.h"
43
43
#include "cairo-dock-gui-commons.h"
44
44
#include "cairo-dock-gui-backend.h"
 
45
#include "cairo-dock-gui-items.h"
45
46
#include "cairo-dock-gui-main.h"
46
47
 
47
48
#define CAIRO_DOCK_GROUP_ICON_SIZE 32
2146
2147
        }
2147
2148
}
2148
2149
 
2149
 
static void reload_current_widget (int iShowPage)
2150
 
{
2151
 
        g_return_if_fail (s_pCurrentGroup != NULL && s_pCurrentGroup->cConfFilePath != NULL);
2152
 
        
2153
 
        CairoDockModule *pModule = cairo_dock_find_module_from_name (s_pCurrentGroup->cGroupName);
2154
 
        g_return_if_fail (pModule != NULL && pModule->pInstancesList != NULL);
2155
 
        
2156
 
        CairoDockModuleInstance *pModuleInstance;
2157
 
        GList *pElement;
2158
 
        for (pElement = pModule->pInstancesList; pElement != NULL; pElement= pElement->next)
 
2150
static inline gboolean _module_is_opened (CairoDockModuleInstance *pInstance)
 
2151
{
 
2152
        if (s_pMainWindow == NULL || s_pCurrentGroup == NULL || s_pCurrentGroup->cGroupName == NULL || s_pCurrentGroup->cConfFilePath == NULL || s_pCurrentWidgetList == NULL || pInstance == NULL || pInstance->cConfFilePath == NULL)
 
2153
                return FALSE;
 
2154
        
 
2155
        if (strcmp (pInstance->pModule->pVisitCard->cModuleName, s_pCurrentGroup->cGroupName) != 0)  // est-on est en train d'editer ce module dans le panneau de conf.
 
2156
                return FALSE;
 
2157
        
 
2158
        if (strcmp (pInstance->cConfFilePath, s_pCurrentGroup->cConfFilePath) != 0)
 
2159
                return FALSE;  // est-ce cette instance.
 
2160
        
 
2161
        return TRUE;
 
2162
}
 
2163
 
 
2164
static void reload_current_widget (CairoDockModuleInstance *pInstance, int iShowPage)
 
2165
{
 
2166
        if (! _module_is_opened (pInstance))
2159
2167
        {
2160
 
                pModuleInstance = pElement->data;
2161
 
                if (strcmp (pModuleInstance->cConfFilePath, s_pCurrentGroup->cConfFilePath) == 0)
2162
 
                        break ;
 
2168
                cairo_dock_gui_items_reload_current_widget (pInstance, iShowPage);
 
2169
                return;
2163
2170
        }
2164
 
        g_return_if_fail (pElement != NULL);
2165
2171
        
2166
 
        _reload_current_module_widget (pModuleInstance, iShowPage);
 
2172
        _reload_current_module_widget (pInstance, iShowPage);
2167
2173
}
2168
2174
 
2169
2175
static GtkWidget *cairo_dock_present_group_widget (const gchar *cConfFilePath, CairoDockGroupDescription *pGroupDescription, gboolean bSingleGroup, CairoDockModuleInstance *pInstance)
2292
2298
                }
2293
2299
        }
2294
2300
        
2295
 
        if (pInstance != NULL && pGroupDescription->load_custom_widget != NULL)
2296
 
                pGroupDescription->load_custom_widget (pInstance, pKeyFile);
2297
 
        g_key_file_free (pKeyFile);
2298
 
 
2299
2301
        //\_______________ On affiche le widget du groupe dans l'interface.
2300
2302
        cairo_dock_hide_all_categories ();
2301
2303
        
2302
 
        cairo_dock_insert_extern_widget_in_gui (pWidget);  // devient le widget courant.
2303
 
        
2304
2304
        s_pCurrentGroup = pGroupDescription;
2305
2305
        
2306
2306
        gtk_window_set_title (GTK_WINDOW (s_pMainWindow), dgettext (pGroupDescription->cGettextDomain, pGroupDescription->cTitle));
2307
2307
        
 
2308
        if (pInstance != NULL && pGroupDescription->load_custom_widget != NULL)
 
2309
                pGroupDescription->load_custom_widget (pInstance, pKeyFile);
 
2310
        
 
2311
        cairo_dock_insert_extern_widget_in_gui (pWidget);  // devient le widget courant.
 
2312
        
 
2313
        g_key_file_free (pKeyFile);
 
2314
        
2308
2315
        //\_______________ On met a jour la frame du groupe (label + check-button).
2309
2316
        GtkWidget *pLabel = gtk_label_new (NULL);
2310
2317
        gchar *cLabel = g_strdup_printf ("<span font_desc=\"Sans 12\" color=\"#81728C\"><u><b>%s</b></u></span>", dgettext (pGroupDescription->cGettextDomain, pGroupDescription->cTitle));
2601
2608
        }
2602
2609
        return FALSE;
2603
2610
}*/
2604
 
static inline gboolean _module_is_opened (CairoDockModuleInstance *pInstance)
2605
 
{
2606
 
        if (s_pMainWindow == NULL || s_pCurrentGroup == NULL || s_pCurrentGroup->cGroupName == NULL || s_pCurrentGroup->cConfFilePath == NULL || s_pCurrentWidgetList == NULL || pInstance == NULL || pInstance->cConfFilePath == NULL)
2607
 
                return FALSE;
2608
 
        
2609
 
        if (strcmp (pInstance->pModule->pVisitCard->cModuleName, s_pCurrentGroup->cGroupName) != 0)  // est-on est en train d'editer ce module dans le panneau de conf.
2610
 
                return FALSE;
2611
 
        
2612
 
        if (strcmp (pInstance->cConfFilePath, s_pCurrentGroup->cConfFilePath) != 0)
2613
 
                return FALSE;  // est-ce cette instance.
2614
 
        
2615
 
        return TRUE;
2616
 
}
2617
2611
static inline gboolean _desklet_is_opened (CairoDesklet *pDesklet)
2618
2612
{
2619
2613
        if (s_pMainWindow == NULL || pDesklet == NULL)
2629
2623
static void update_desklet_params (CairoDesklet *pDesklet)
2630
2624
{
2631
2625
        if (! _desklet_is_opened (pDesklet))
 
2626
        {
 
2627
                cairo_dock_gui_items_update_desklet_params (pDesklet);
2632
2628
                return ;
2633
 
        
 
2629
        }
2634
2630
        cairo_dock_update_desklet_widgets (pDesklet, s_pCurrentWidgetList);
2635
2631
}
2636
2632
 
2637
2633
static void update_desklet_visibility_params (CairoDesklet *pDesklet)
2638
2634
{
2639
2635
        if (! _desklet_is_opened (pDesklet))
 
2636
        {
 
2637
                cairo_dock_update_desklet_visibility_params (pDesklet);
2640
2638
                return ;
2641
 
        
 
2639
        }
2642
2640
        cairo_dock_update_desklet_visibility_widgets (pDesklet, s_pCurrentWidgetList);
2643
2641
}
2644
2642
 
2645
2643
static void update_module_instance_container (CairoDockModuleInstance *pInstance, gboolean bDetached)
2646
2644
{
2647
2645
        if (! _module_is_opened (pInstance))
2648
 
                return ;
2649
 
        
 
2646
        {
 
2647
                cairo_dock_gui_items_update_module_instance_container (pInstance, bDetached);
 
2648
                return;
 
2649
        }
2650
2650
        cairo_dock_update_is_detached_widget (bDetached, s_pCurrentWidgetList);
2651
2651
}
2652
2652
 
2711
2711
        gtk_statusbar_push (GTK_STATUSBAR (s_pStatusBar), 0, cMessage);
2712
2712
}
2713
2713
 
2714
 
static CairoDockGroupKeyWidget *get_widget_from_name (const gchar *cGroupName, const gchar *cKeyName)
 
2714
static CairoDockGroupKeyWidget *get_widget_from_name (CairoDockModuleInstance *pInstance, const gchar *cGroupName, const gchar *cKeyName)
2715
2715
{
2716
 
        g_return_val_if_fail (s_pCurrentWidgetList != NULL, NULL);
 
2716
        if (!_module_is_opened (pInstance))
 
2717
                return cairo_dock_gui_items_get_widget_from_name (pInstance, cGroupName, cKeyName);
 
2718
        
2717
2719
        CairoDockGroupKeyWidget *pGroupKeyWidget = cairo_dock_gui_find_group_key_widget_in_list (s_pCurrentWidgetList, cGroupName, cKeyName);
2718
2720
        if (pGroupKeyWidget == NULL && s_pExtraCurrentWidgetList != NULL)
2719
2721
        {
2732
2734
{
2733
2735
        CairoDockMainGuiBackend *pBackend = g_new0 (CairoDockMainGuiBackend, 1);
2734
2736
        
2735
 
        pBackend->show_main_gui                                 = show_main_gui;
2736
 
        pBackend->show_module_gui                               = show_module_gui;
 
2737
        pBackend->show_main_gui                                         = show_main_gui;
 
2738
        pBackend->show_module_gui                                       = show_module_gui;
2737
2739
        //pBackend->show_module_instance_gui            = show_module_instance_gui;
2738
 
        pBackend->close_gui                                     = close_gui;
2739
 
        pBackend->update_module_state                   = update_module_state;
2740
 
        pBackend->update_desklet_params                 = update_desklet_params;
2741
 
        pBackend->update_desklet_visibility_params = update_desklet_visibility_params;
2742
 
        pBackend->update_module_instance_container = update_module_instance_container;
2743
 
        pBackend->update_modules_list                   = update_modules_list;
2744
 
        pBackend->bCanManageThemes                              = FALSE;
2745
 
        pBackend->cDisplayedName                                = _("Advanced Mode");
2746
 
        pBackend->cTooltip                                              = _("The advanced mode lets you tweak every single parameter of the dock. It is a powerful tool to customise your current theme.");
 
2740
        pBackend->close_gui                                             = close_gui;
 
2741
        pBackend->update_module_state                           = update_module_state;
 
2742
        pBackend->update_desklet_params                         = update_desklet_params;
 
2743
        pBackend->update_desklet_visibility_params      = update_desklet_visibility_params;
 
2744
        pBackend->update_module_instance_container      = update_module_instance_container;
 
2745
        pBackend->update_modules_list                           = update_modules_list;
 
2746
        pBackend->bCanManageThemes                                      = FALSE;
 
2747
        pBackend->cDisplayedName                                        = _("Advanced Mode");
 
2748
        pBackend->cTooltip                                                      = _("The advanced mode lets you tweak every single parameter of the dock. It is a powerful tool to customise your current theme.");
2747
2749
        
2748
2750
        cairo_dock_register_config_gui_backend (pBackend);
2749
2751
        
2750
2752
        CairoDockGuiBackend *pConfigBackend = g_new0 (CairoDockGuiBackend, 1);
2751
2753
        
2752
 
        pConfigBackend->set_status_message_on_gui = set_status_message_on_gui;
2753
 
        pConfigBackend->reload_current_widget   = reload_current_widget;
 
2754
        pConfigBackend->set_status_message_on_gui       = set_status_message_on_gui;
 
2755
        pConfigBackend->reload_current_widget           = reload_current_widget;
2754
2756
        pConfigBackend->show_module_instance_gui        = show_module_instance_gui;
2755
 
        pConfigBackend->get_widget_from_name    = get_widget_from_name;
 
2757
        pConfigBackend->get_widget_from_name            = get_widget_from_name;
2756
2758
        
2757
2759
        cairo_dock_register_gui_backend (pConfigBackend);
2758
2760
}