~ubuntu-branches/ubuntu/oneiric/cairo-dock/oneiric

« back to all changes in this revision

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

  • Committer: Bazaar Package Importer
  • Author(s): Matthieu Baerts (matttbe)
  • Date: 2010-08-09 23:26:12 UTC
  • mto: (18.1.1 cairo-dock) (19.1.1 cairo-dock)
  • mto: This revision was merged to the branch mainline in revision 13.
  • Revision ID: james.westby@ubuntu.com-20100809232612-pocdxliaxjdetm37
Tags: upstream-2.2.0~0beta4
ImportĀ upstreamĀ versionĀ 2.2.0~0beta4

Show diffs side-by-side

added added

removed removed

Lines of Context:
24
24
#include <glib/gstdio.h>
25
25
#include <glib/gi18n.h>
26
26
 
27
 
#include "cairo-dock-struct.h"
 
27
#include "config.h"
28
28
#include "cairo-dock-modules.h"
29
29
#include "cairo-dock-log.h"
30
30
#include "cairo-dock-gui-factory.h"
31
31
#include "cairo-dock-keyfile-utilities.h"
32
32
#include "cairo-dock-animations.h"
33
 
#include "cairo-dock-dialogs.h"
 
33
#include "cairo-dock-dialog-manager.h"
34
34
#include "cairo-dock-dock-manager.h"
35
35
#include "cairo-dock-dock-factory.h"
36
36
#include "cairo-dock-launcher-factory.h"
37
 
#include "cairo-dock-internal-taskbar.h"
38
 
#include "cairo-dock-internal-accessibility.h"
39
 
#include "cairo-dock-internal-icons.h"
40
 
#include "cairo-dock-internal-views.h"
 
37
#include "cairo-dock-internal-dialogs.h"
41
38
#include "cairo-dock-internal-system.h"
42
39
#include "cairo-dock-desktop-file-factory.h"
43
40
#include "cairo-dock-file-manager.h"
44
41
#include "cairo-dock-applications-manager.h"
 
42
#include "cairo-dock-X-manager.h"
45
43
#include "cairo-dock-gui-manager.h"
 
44
#include "cairo-dock-gui-switch.h"
46
45
#include "cairo-dock-gui-main.h"
47
46
 
48
47
#define CAIRO_DOCK_GROUP_ICON_SIZE 32
49
48
#define CAIRO_DOCK_CATEGORY_ICON_SIZE 32
50
49
#define CAIRO_DOCK_NB_BUTTONS_BY_ROW 4
51
50
#define CAIRO_DOCK_NB_BUTTONS_BY_ROW_MIN 3
52
 
#define CAIRO_DOCK_GUI_MARGIN 6
 
51
#define CAIRO_DOCK_FRAME_MARGIN 6
53
52
#define CAIRO_DOCK_TABLE_MARGIN 12
54
53
#define CAIRO_DOCK_CONF_PANEL_WIDTH 1150
55
54
#define CAIRO_DOCK_CONF_PANEL_WIDTH_MIN 800
60
59
#define CAIRO_DOCK_ICON_MARGIN 6
61
60
#define CAIRO_DOCK_TAB_ICON_SIZE 32
62
61
 
 
62
extern CairoDockDesktopGeometry g_desktopGeometry;
 
63
extern gboolean g_bEnterHelpOnce;
 
64
 
63
65
struct _CairoDockCategoryWidgetTable {
64
66
        GtkWidget *pFrame;
65
67
        GtkWidget *pTable;
70
72
 
71
73
struct _CairoDockGroupDescription {
72
74
        gchar *cGroupName;
73
 
        gchar *cTitle;
 
75
        const gchar *cTitle;
74
76
        gint iCategory;
75
77
        gchar *cDescription;
76
78
        gchar *cPreviewFilePath;
115
117
 
116
118
extern gchar *g_cConfFile;
117
119
extern CairoDock *g_pMainDock;
118
 
extern int g_iXScreenWidth[2], g_iXScreenHeight[2];
119
120
extern CairoDockDesktopEnv g_iDesktopEnv;
120
121
extern gchar *g_cCurrentLaunchersPath;
121
122
extern gchar *g_cCairoDockDataDir;
124
125
static const gchar *s_cCategoriesDescription[2*(CAIRO_DOCK_NB_CATEGORY+1)] = {
125
126
        N_("Behaviour"), "icon-behavior.svg",
126
127
        N_("Appearance"), "icon-appearance.svg",
127
 
        N_("Accessories"), "icon-accessories.png",
 
128
        N_("Files"), "icon-files.svg",
 
129
        N_("Internet"), "icon-internet.svg",
128
130
        N_("Desktop"), "icon-desktop.svg",
129
 
        N_("Controlers"), "icon-controler.png",
130
 
        N_("Plug-ins"), "icon-extensions.svg",
 
131
        N_("Accessories"), "icon-accessories.svg",
 
132
        N_("System"), "icon-system.svg",
 
133
        N_("Fun"), "icon-fun.svg",
131
134
        N_("All"), "icon-all.svg" };
132
135
 
133
136
static void cairo_dock_hide_all_categories (void);
248
251
        //g_print ("%s ()\n", __func__);
249
252
        if (sBuffer == NULL)
250
253
                sBuffer = g_string_new ("");
251
 
        gpointer *pGroupKeyWidget;
252
 
        GList *pSubWidgetList;
 
254
        CairoDockGroupKeyWidget *pGroupKeyWidget;
 
255
        GSList *pSubWidgetList;
253
256
        GtkWidget *pLabel, *pKeyBox, *pVBox, *pFrame, *pCurrentFrame = NULL, *pExpander;
254
257
        const gchar *cDescription;
255
258
        gchar *cToolTip = NULL;
262
265
        {
263
266
                bFound = FALSE;
264
267
                pGroupKeyWidget = w->data;
265
 
                //g_print ("widget : %s - %s\n", pGroupKeyWidget[0], pGroupKeyWidget[1]);
266
 
                pSubWidgetList = pGroupKeyWidget[2];
 
268
                pSubWidgetList = pGroupKeyWidget->pSubWidgetList;
267
269
                if (pSubWidgetList == NULL)
268
270
                        continue;
269
 
                pLabel = pGroupKeyWidget[4];
 
271
                pLabel = pGroupKeyWidget->pLabel;
270
272
                if (pLabel == NULL)
271
273
                        continue;
272
 
                pKeyBox = pGroupKeyWidget[5];
 
274
                pKeyBox = pGroupKeyWidget->pKeyBox;
273
275
                if (pKeyBox == NULL)
274
276
                        continue;
275
277
                pVBox = gtk_widget_get_parent (pKeyBox);
414
416
                
415
417
                if (pGroupDescription->cInternalModule)
416
418
                {
417
 
                        g_print ("%s : bouton emprunte a %s\n", pGroupDescription->cGroupName, pGroupDescription->cInternalModule);
 
419
                        cd_debug ("%s : bouton emprunte a %s\n", pGroupDescription->cGroupName, pGroupDescription->cInternalModule);
418
420
                        pInternalGroupDescription = cairo_dock_find_module_description (pGroupDescription->cInternalModule);
419
421
                        if (pInternalGroupDescription != NULL)
420
422
                                pGroupBox = gtk_widget_get_parent (pInternalGroupDescription->pActivateButton);
421
423
                        else
422
424
                                continue;
423
425
                        pLabel = pInternalGroupDescription->pLabel;
424
 
                        g_print ("ok, found pGroupBox\n");
 
426
                        cd_debug ("ok, found pGroupBox\n");
425
427
                }
426
428
                else
427
429
                {
433
435
                cGettextDomain = pGroupDescription->cGettextDomain;
434
436
                bFound = FALSE;
435
437
                
436
 
                cDescription = dgettext (cGettextDomain, pGroupDescription->cGroupName);
 
438
                cDescription = dgettext (cGettextDomain, pGroupDescription->cTitle);
437
439
                if (bSearchInToolTip)
438
440
                        cToolTip = dgettext (cGettextDomain, pGroupDescription->cDescription);
439
441
                //g_print ("cDescription : %s (%s)(%x,%x)\n", cDescription, cToolTip, cModifiedText, str);
531
533
                                
532
534
                                gchar *cUsefulComment;
533
535
                                gchar iElementType;
534
 
                                int iNbElements;
 
536
                                guint iNbElements;
535
537
                                gchar **pAuthorizedValuesList;
536
538
                                gchar *cTipString;
537
539
                                gboolean bIsAligned;
706
708
{
707
709
        if (pPlace == NULL)
708
710
                cairo_dock_show_all_categories ();
709
 
        else if ((int)pPlace < 10)  // categorie.
 
711
        else if (GPOINTER_TO_INT (pPlace) < CAIRO_DOCK_NB_CATEGORY+1)  // categorie.
710
712
        {
711
713
                if (pPlace == 0)
712
714
                        cairo_dock_show_all_categories ();
713
715
                else
714
716
                {
715
 
                        int iCategory = (int)pPlace - 1;
 
717
                        int iCategory = GPOINTER_TO_INT (pPlace) - 1;
716
718
                        cairo_dock_show_one_category (iCategory);
717
719
                }
718
720
        }
795
797
                                iPreviewHeight *= 1.*iPreviewWidgetWidth/iPreviewWidth;
796
798
                                iPreviewWidth = iPreviewWidgetWidth;
797
799
                        }
798
 
                        g_print ("preview : %dx%d\n", iPreviewWidth, iPreviewHeight);
 
800
                        //g_print ("preview : %dx%d\n", iPreviewWidth, iPreviewHeight);
799
801
                        pPreviewPixbuf = gdk_pixbuf_new_from_file_at_size (pGroupDescription->cPreviewFilePath, iPreviewWidth, iPreviewHeight, NULL);
800
802
                }
801
803
                if (pPreviewPixbuf == NULL)
825
827
        attr.cText = dgettext (pGroupDescription->cGettextDomain, cDescription != NULL ? cDescription : pGroupDescription->cDescription);
826
828
        attr.cImageFilePath = pGroupDescription->cIcon;
827
829
        attr.bNoInput = TRUE;
 
830
        myDialogs.dialogTextDescription.bUseMarkup = TRUE;
828
831
        s_pDialog = cairo_dock_build_dialog (&attr, pIcon, CAIRO_CONTAINER (pDock));
 
832
        myDialogs.dialogTextDescription.bUseMarkup = FALSE;
829
833
        
830
834
        cairo_dock_dialog_reference (s_pDialog);
831
835
        
844
848
        if (s_iSidShowGroupDialog != 0)
845
849
                g_source_remove (s_iSidShowGroupDialog);
846
850
        
847
 
        s_iSidShowGroupDialog = g_timeout_add (500, (GSourceFunc)_show_group_dialog, (gpointer) pGroupDescription);
 
851
        s_iSidShowGroupDialog = g_timeout_add (330, (GSourceFunc)_show_group_dialog, (gpointer) pGroupDescription);
848
852
}
849
853
static void on_leave_group_button (GtkButton *button, gpointer *data)
850
854
{
913
917
 
914
918
static gboolean on_delete_main_gui (GtkWidget *pWidget, GdkEvent *event, GMainLoop *pBlockingLoop)
915
919
{
916
 
        g_print ("%s (%x)\n", __func__, pBlockingLoop);
 
920
        cd_debug ("%s (%ld)\n", __func__, pBlockingLoop);
917
921
        if (pBlockingLoop != NULL)
918
922
        {
919
923
                cd_debug ("dialogue detruit, on sort de la boucle");
1066
1070
static void on_click_activate_current_group (GtkToggleButton *button, gpointer *data)
1067
1071
{
1068
1072
        CairoDockGroupDescription *pGroupDescription = s_pCurrentGroup;
 
1073
        on_click_activate_given_group (button, pGroupDescription);
1069
1074
        
1070
 
        CairoDockModule *pModule = cairo_dock_find_module_from_name (pGroupDescription->cGroupName);
1071
 
        g_return_if_fail (pModule != NULL);
1072
 
        if (pModule->pInstancesList == NULL)
1073
 
        {
1074
 
                cairo_dock_activate_module_and_load (pGroupDescription->cGroupName);
1075
 
        }
1076
 
        else
1077
 
        {
1078
 
                cairo_dock_deactivate_module_and_unload (pGroupDescription->cGroupName);
1079
 
        }
1080
 
        if (pGroupDescription->pActivateButton != NULL)
1081
 
        {
 
1075
        if (pGroupDescription->pActivateButton != NULL)  // on repercute le changement sur le bouton d'activation du groupe.
 
1076
        {
 
1077
                CairoDockModule *pModule = cairo_dock_find_module_from_name (pGroupDescription->cGroupName);
 
1078
                g_return_if_fail (pModule != NULL);
1082
1079
                g_signal_handlers_block_by_func (pGroupDescription->pActivateButton, on_click_activate_given_group, pGroupDescription);
1083
1080
                gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (pGroupDescription->pActivateButton), pModule->pInstancesList != NULL);
1084
1081
                g_signal_handlers_unblock_by_func (pGroupDescription->pActivateButton, on_click_activate_given_group, pGroupDescription);
1163
1160
        bHideOther = gtk_check_menu_item_get_active (pMenuItem);
1164
1161
        _trigger_current_filter ();
1165
1162
}
1166
 
static void on_clear_filter (GtkButton *pButton, GtkEntry *pEntry)
 
1163
///static void on_clear_filter (GtkButton *pButton, GtkEntry *pEntry)
 
1164
static void on_clear_filter (GtkEntry *pEntry, GtkEntryIconPosition icon_pos, GdkEvent *event, gpointer data)
1167
1165
{
1168
1166
        gtk_entry_set_text (pEntry, "");
1169
1167
        //gpointer pCurrentPlace = cairo_dock_get_current_widget ();
1241
1239
        g_free (cLabel2);
1242
1240
        
1243
1241
        GtkWidget *pAlign = gtk_alignment_new (0., 0.5, 0., 1.);
1244
 
        gtk_alignment_set_padding (GTK_ALIGNMENT (pAlign), 0, 0, CAIRO_DOCK_GUI_MARGIN, 0);
 
1242
        gtk_alignment_set_padding (GTK_ALIGNMENT (pAlign), 0, 0, CAIRO_DOCK_FRAME_MARGIN, 0);
1245
1243
        gtk_container_add (GTK_CONTAINER (pAlign), pLabel);
1246
1244
        gtk_tool_button_set_label_widget (GTK_TOOL_BUTTON (pWidget), pAlign);
1247
1245
        
1295
1293
                return pGroupDescription;
1296
1294
        
1297
1295
        //\____________ On construit le bouton du groupe.
1298
 
        GtkWidget *pGroupHBox = gtk_hbox_new (FALSE, CAIRO_DOCK_GUI_MARGIN);
 
1296
        GtkWidget *pGroupHBox = gtk_hbox_new (FALSE, CAIRO_DOCK_FRAME_MARGIN);
1299
1297
        
1300
1298
        pGroupDescription->pActivateButton = gtk_check_button_new ();
1301
1299
        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (pGroupDescription->pActivateButton), iActivation);
1309
1307
                0);
1310
1308
        
1311
1309
        GtkWidget *pGroupButton = gtk_button_new ();
 
1310
        gtk_button_set_relief (GTK_BUTTON (pGroupButton), GTK_RELIEF_NONE);
1312
1311
        if (bConfigurable)
1313
1312
                g_signal_connect (G_OBJECT (pGroupButton), "clicked", G_CALLBACK(on_click_group_button), pGroupDescription);
1314
1313
        else
1315
1314
                gtk_widget_set_sensitive (pGroupButton, FALSE);
1316
1315
        g_signal_connect (G_OBJECT (pGroupButton), "enter", G_CALLBACK(on_enter_group_button), pGroupDescription);
1317
1316
        g_signal_connect (G_OBJECT (pGroupButton), "leave", G_CALLBACK(on_leave_group_button), NULL);
1318
 
        _add_image_on_button (pGroupButton,
1319
 
                cIconPath,
1320
 
                CAIRO_DOCK_GROUP_ICON_SIZE);
1321
 
        gtk_box_pack_start (GTK_BOX (pGroupHBox),
1322
 
                pGroupButton,
1323
 
                FALSE,
1324
 
                FALSE,
1325
 
                0);
1326
 
 
 
1317
        
 
1318
        GtkWidget *pButtonHBox = gtk_hbox_new (FALSE, CAIRO_DOCK_FRAME_MARGIN);
 
1319
        GtkWidget *pImage = _make_image (cIconPath, CAIRO_DOCK_GROUP_ICON_SIZE);
 
1320
        gtk_box_pack_start (GTK_BOX (pButtonHBox), pImage, FALSE, FALSE, 0);
1327
1321
        pGroupDescription->pLabel = gtk_label_new (dgettext (pGroupDescription->cGettextDomain, cTitle));
1328
 
        gtk_box_pack_start (GTK_BOX (pGroupHBox),
 
1322
        gtk_box_pack_start (GTK_BOX (pButtonHBox),
1329
1323
                pGroupDescription->pLabel,
1330
1324
                FALSE,
1331
1325
                FALSE,
1332
1326
                0);
 
1327
        gtk_container_add (GTK_CONTAINER (pGroupButton), pButtonHBox);
 
1328
        gtk_box_pack_start (GTK_BOX (pGroupHBox),
 
1329
                pGroupButton,
 
1330
                FALSE,
 
1331
                FALSE,
 
1332
                0);
1333
1333
 
1334
1334
        //\____________ On place le bouton dans sa table.
1335
1335
        CairoDockCategoryWidgetTable *pCategoryWidget = &s_pCategoryWidgetTables[iCategory];
1427
1427
                return s_pMainWindow;
1428
1428
        }
1429
1429
        s_pMainWindow = gtk_window_new (GTK_WINDOW_TOPLEVEL);
1430
 
        //gtk_container_set_border_width (s_pMainWindow, CAIRO_DOCK_GUI_MARGIN);
 
1430
        //gtk_container_set_border_width (s_pMainWindow, CAIRO_DOCK_FRAME_MARGIN);
1431
1431
        gchar *cIconPath = g_strdup_printf ("%s/%s", CAIRO_DOCK_SHARE_DATA_DIR, CAIRO_DOCK_ICON);
1432
1432
        gtk_window_set_icon_from_file (GTK_WINDOW (s_pMainWindow), cIconPath, NULL);
1433
1433
        g_free (cIconPath);
1435
1435
        GtkWidget *pMainHBox = gtk_hbox_new (FALSE, 0);
1436
1436
        gtk_container_add (GTK_CONTAINER (s_pMainWindow), pMainHBox);
1437
1437
        
1438
 
        if (g_iXScreenWidth[CAIRO_DOCK_HORIZONTAL] > CAIRO_DOCK_CONF_PANEL_WIDTH)
 
1438
        if (g_desktopGeometry.iXScreenWidth[CAIRO_DOCK_HORIZONTAL] > CAIRO_DOCK_CONF_PANEL_WIDTH)
1439
1439
        {
1440
1440
                s_iPreviewWidth = CAIRO_DOCK_PREVIEW_WIDTH;
1441
1441
                s_iNbButtonsByRow = CAIRO_DOCK_NB_BUTTONS_BY_ROW;
1442
1442
        }
1443
 
        else if (g_iXScreenWidth[CAIRO_DOCK_HORIZONTAL] > CAIRO_DOCK_CONF_PANEL_WIDTH_MIN)
 
1443
        else if (g_desktopGeometry.iXScreenWidth[CAIRO_DOCK_HORIZONTAL] > CAIRO_DOCK_CONF_PANEL_WIDTH_MIN)
1444
1444
        {
1445
1445
                double a = 1.*(CAIRO_DOCK_PREVIEW_WIDTH - CAIRO_DOCK_PREVIEW_WIDTH_MIN) / (CAIRO_DOCK_CONF_PANEL_WIDTH - CAIRO_DOCK_CONF_PANEL_WIDTH_MIN);
1446
1446
                double b = CAIRO_DOCK_PREVIEW_WIDTH_MIN - CAIRO_DOCK_CONF_PANEL_WIDTH_MIN * a;
1447
 
                s_iPreviewWidth = a * g_iXScreenWidth[CAIRO_DOCK_HORIZONTAL] + b;
 
1447
                s_iPreviewWidth = a * g_desktopGeometry.iXScreenWidth[CAIRO_DOCK_HORIZONTAL] + b;
1448
1448
                s_iNbButtonsByRow = CAIRO_DOCK_NB_BUTTONS_BY_ROW - 1;
1449
1449
        }
1450
1450
        else
1452
1452
                s_iPreviewWidth = CAIRO_DOCK_PREVIEW_WIDTH_MIN;
1453
1453
                s_iNbButtonsByRow = CAIRO_DOCK_NB_BUTTONS_BY_ROW_MIN;
1454
1454
        }
1455
 
        GtkWidget *pCategoriesVBox = gtk_vbox_new (FALSE, CAIRO_DOCK_GUI_MARGIN);
1456
 
        gtk_widget_set_size_request (pCategoriesVBox, s_iPreviewWidth+2*CAIRO_DOCK_GUI_MARGIN, CAIRO_DOCK_PREVIEW_HEIGHT);
 
1455
        GtkWidget *pCategoriesVBox = gtk_vbox_new (FALSE, CAIRO_DOCK_FRAME_MARGIN);
 
1456
        gtk_widget_set_size_request (pCategoriesVBox, s_iPreviewWidth+2*CAIRO_DOCK_FRAME_MARGIN, CAIRO_DOCK_PREVIEW_HEIGHT);
1457
1457
        gtk_box_pack_start (GTK_BOX (pMainHBox),
1458
1458
                pCategoriesVBox,
1459
1459
                FALSE,
1492
1492
                
1493
1493
        //\_____________ On construit les boutons de chaque categorie.
1494
1494
        GtkWidget *pCategoriesFrame = gtk_frame_new (NULL);
1495
 
        gtk_container_set_border_width (GTK_CONTAINER (pCategoriesFrame), CAIRO_DOCK_GUI_MARGIN);
 
1495
        gtk_container_set_border_width (GTK_CONTAINER (pCategoriesFrame), CAIRO_DOCK_FRAME_MARGIN);
1496
1496
        gtk_frame_set_shadow_type (GTK_FRAME (pCategoriesFrame), GTK_SHADOW_OUT);
1497
1497
        
1498
1498
        GtkWidget *pLabel;
1504
1504
        
1505
1505
        gtk_box_pack_start (GTK_BOX (pCategoriesVBox),
1506
1506
                pCategoriesFrame,
1507
 
                FALSE,
1508
 
                FALSE,
 
1507
                TRUE,  /// FALSE
 
1508
                TRUE,  /// FALSE
1509
1509
                0);
1510
1510
        
1511
1511
        s_pToolBar = gtk_toolbar_new ();
1512
1512
        gtk_toolbar_set_orientation (GTK_TOOLBAR (s_pToolBar), GTK_ORIENTATION_VERTICAL);
1513
1513
        gtk_toolbar_set_style (GTK_TOOLBAR (s_pToolBar), GTK_TOOLBAR_BOTH_HORIZ);
1514
 
        gtk_toolbar_set_show_arrow (GTK_TOOLBAR (s_pToolBar), FALSE);
1515
 
        gtk_toolbar_set_icon_size (GTK_TOOLBAR (s_pToolBar), GTK_ICON_SIZE_LARGE_TOOLBAR);
 
1514
        gtk_toolbar_set_show_arrow (GTK_TOOLBAR (s_pToolBar), TRUE);  /// FALSE
 
1515
        //gtk_widget_set (s_pToolBar, "height-request", 300, NULL);
 
1516
        //g_object_set (s_pToolBar, "expand", TRUE, NULL);
 
1517
        ///gtk_toolbar_set_icon_size (GTK_TOOLBAR (s_pToolBar), GTK_ICON_SIZE_LARGE_TOOLBAR);  /// GTK_ICON_SIZE_LARGE_TOOLBAR
1516
1518
        gtk_container_add (GTK_CONTAINER (pCategoriesFrame), s_pToolBar);
1517
1519
        
1518
1520
        CairoDockCategoryWidgetTable *pCategoryWidget;
1543
1545
                pCategoryWidget = &s_pCategoryWidgetTables[i];
1544
1546
                
1545
1547
                pCategoryWidget->pFrame = gtk_frame_new (NULL);
1546
 
                gtk_container_set_border_width (GTK_CONTAINER (pCategoryWidget->pFrame), CAIRO_DOCK_GUI_MARGIN);
 
1548
                gtk_container_set_border_width (GTK_CONTAINER (pCategoryWidget->pFrame), CAIRO_DOCK_FRAME_MARGIN);
1547
1549
                gtk_frame_set_shadow_type (GTK_FRAME (pCategoryWidget->pFrame), GTK_SHADOW_OUT);
1548
1550
                
1549
1551
                pLabel = gtk_label_new (NULL);
1555
1557
                pCategoryWidget->pTable = gtk_table_new (1,
1556
1558
                        s_iNbButtonsByRow,
1557
1559
                        TRUE);
1558
 
                gtk_table_set_row_spacings (GTK_TABLE (pCategoryWidget->pTable), CAIRO_DOCK_GUI_MARGIN);
1559
 
                gtk_table_set_col_spacings (GTK_TABLE (pCategoryWidget->pTable), CAIRO_DOCK_GUI_MARGIN);
 
1560
                gtk_table_set_row_spacings (GTK_TABLE (pCategoryWidget->pTable), CAIRO_DOCK_FRAME_MARGIN);
 
1561
                gtk_table_set_col_spacings (GTK_TABLE (pCategoryWidget->pTable), CAIRO_DOCK_FRAME_MARGIN);
1560
1562
                gtk_container_add (GTK_CONTAINER (pCategoryWidget->pFrame),
1561
1563
                        pCategoryWidget->pTable);
1562
1564
                gtk_box_pack_start (GTK_BOX (s_pGroupsVBox),
1625
1627
        // frame
1626
1628
        GtkWidget *pFilterFrame = gtk_frame_new (NULL);
1627
1629
        cLabel = g_strdup_printf ("<span font_desc=\"Sans 12\" color=\"#81728C\"><b><u>%s :</u></b></span>", _("Filter"));
1628
 
        GtkWidget *pFilterLabelContainer = gtk_hbox_new (FALSE, CAIRO_DOCK_GUI_MARGIN);
 
1630
        GtkWidget *pFilterLabelContainer = gtk_hbox_new (FALSE, CAIRO_DOCK_FRAME_MARGIN);
1629
1631
        GtkWidget *pImage = gtk_image_new_from_stock (GTK_STOCK_FIND, GTK_ICON_SIZE_MENU);
1630
1632
        gtk_container_add (GTK_CONTAINER (pFilterLabelContainer), pImage);
1631
1633
        
1635
1637
        gtk_container_add (GTK_CONTAINER (pFilterLabelContainer), pLabel);
1636
1638
        
1637
1639
        gtk_frame_set_label_widget (GTK_FRAME (pFilterFrame), pFilterLabelContainer);
1638
 
        gtk_container_set_border_width (GTK_CONTAINER (pFilterFrame), CAIRO_DOCK_GUI_MARGIN);
 
1640
        gtk_container_set_border_width (GTK_CONTAINER (pFilterFrame), CAIRO_DOCK_FRAME_MARGIN);
1639
1641
        gtk_frame_set_shadow_type (GTK_FRAME (pFilterFrame), GTK_SHADOW_OUT);
1640
1642
        gtk_box_pack_start (GTK_BOX (pCategoriesVBox),
1641
1643
                pFilterFrame,
1643
1645
                FALSE,
1644
1646
                0);
1645
1647
        
1646
 
        GtkWidget *pOptionVBox = gtk_vbox_new (FALSE, CAIRO_DOCK_GUI_MARGIN);
 
1648
        GtkWidget *pOptionVBox = gtk_vbox_new (FALSE, CAIRO_DOCK_FRAME_MARGIN);
1647
1649
        gtk_container_add (GTK_CONTAINER (pFilterFrame), pOptionVBox);
1648
1650
        
1649
1651
        // entree de texte
1650
 
        GtkWidget *pFilterBox = gtk_hbox_new (FALSE, CAIRO_DOCK_GUI_MARGIN);
 
1652
        GtkWidget *pFilterBox = gtk_hbox_new (FALSE, CAIRO_DOCK_FRAME_MARGIN);
1651
1653
        gtk_box_pack_start (GTK_BOX (pOptionVBox),
1652
1654
                pFilterBox,
1653
1655
                FALSE,
1660
1662
                FALSE,
1661
1663
                FALSE,
1662
1664
                0);
1663
 
        GtkWidget *pClearButton = gtk_button_new ();
1664
 
        _add_image_on_button (pClearButton,
1665
 
                GTK_STOCK_CLEAR,
1666
 
                16);
1667
 
        g_signal_connect (pClearButton, "clicked", G_CALLBACK (on_clear_filter), s_pFilterEntry);
1668
 
        gtk_box_pack_start (GTK_BOX (pFilterBox),
1669
 
                pClearButton,
1670
 
                TRUE,  // sinon le bouton est repousse en-dehors de la marge.
1671
 
                FALSE,
1672
 
                0);
 
1665
        
 
1666
        gtk_entry_set_icon_activatable (GTK_ENTRY (s_pFilterEntry), GTK_ENTRY_ICON_SECONDARY, TRUE);
 
1667
        gtk_entry_set_icon_from_stock (GTK_ENTRY (s_pFilterEntry), GTK_ENTRY_ICON_SECONDARY, GTK_STOCK_CLEAR);
 
1668
        g_signal_connect (s_pFilterEntry, "icon-press", G_CALLBACK (on_clear_filter), NULL);
1673
1669
        
1674
1670
        // options
1675
1671
        _reset_filter_state ();
1689
1685
        gtk_menu_shell_append (GTK_MENU_SHELL (pMenu), pMenuItem);
1690
1686
        g_signal_connect (pMenuItem, "toggled", G_CALLBACK (on_toggle_all_words), NULL);
1691
1687
        
1692
 
        pMenuItem = gtk_check_menu_item_new_with_label (_("Highlight words"));
 
1688
        pMenuItem = gtk_check_menu_item_new_with_label (_("Highlighted words"));
1693
1689
        gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (pMenuItem), TRUE);
1694
1690
        gtk_menu_shell_append (GTK_MENU_SHELL (pMenu), pMenuItem);
1695
1691
        g_signal_connect (pMenuItem, "toggled", G_CALLBACK (on_toggle_highlight_words), NULL);
1706
1702
        
1707
1703
        //\_____________ On ajoute le cadre d'activation du module.
1708
1704
        s_pGroupFrame = gtk_frame_new ("pouet");
1709
 
        gtk_container_set_border_width (GTK_CONTAINER (s_pGroupFrame), CAIRO_DOCK_GUI_MARGIN);
 
1705
        gtk_container_set_border_width (GTK_CONTAINER (s_pGroupFrame), CAIRO_DOCK_FRAME_MARGIN);
1710
1706
        gtk_frame_set_shadow_type (GTK_FRAME (s_pGroupFrame), GTK_SHADOW_OUT);
1711
1707
        gtk_box_pack_start (GTK_BOX (pCategoriesVBox),
1712
1708
                s_pGroupFrame,
1713
1709
                FALSE,
1714
1710
                FALSE,
1715
1711
                0);
1716
 
        s_pActivateButton = gtk_check_button_new_with_label (_("Activate this module"));
 
1712
        s_pActivateButton = gtk_check_button_new_with_label (_("Enable this module"));
1717
1713
        g_signal_connect (G_OBJECT (s_pActivateButton), "clicked", G_CALLBACK(on_click_activate_current_group), NULL);
1718
1714
        gtk_container_add (GTK_CONTAINER (s_pGroupFrame), s_pActivateButton);
1719
1715
        gtk_widget_show_all (s_pActivateButton);
1720
1716
        
1721
1717
        //\_____________ On ajoute la zone de prevue.
1722
 
        GtkWidget *pInfoVBox = gtk_vbox_new (FALSE, CAIRO_DOCK_GUI_MARGIN);
 
1718
        GtkWidget *pInfoVBox = gtk_vbox_new (FALSE, CAIRO_DOCK_FRAME_MARGIN);
1723
1719
        gtk_box_pack_start (GTK_BOX (pCategoriesVBox),
1724
1720
                pInfoVBox,
1725
1721
                FALSE,
1730
1726
        gtk_container_add (GTK_CONTAINER (pInfoVBox), s_pPreviewImage);
1731
1727
        
1732
1728
        //\_____________ On ajoute les boutons.
1733
 
        GtkWidget *pButtonsHBox = gtk_hbox_new (FALSE, CAIRO_DOCK_GUI_MARGIN);
 
1729
        GtkWidget *pButtonsHBox = gtk_hbox_new (FALSE, CAIRO_DOCK_FRAME_MARGIN);
1734
1730
        gtk_box_pack_end (GTK_BOX (pVBox),
1735
1731
                pButtonsHBox,
1736
1732
                FALSE,
1787
1783
        g_object_set_data (G_OBJECT (s_pMainWindow), "status-bar", s_pStatusBar);
1788
1784
        
1789
1785
        gtk_window_resize (GTK_WINDOW (s_pMainWindow),
1790
 
                MIN (CAIRO_DOCK_CONF_PANEL_WIDTH, g_iXScreenWidth[CAIRO_DOCK_HORIZONTAL]),
1791
 
                MIN (CAIRO_DOCK_CONF_PANEL_HEIGHT, g_iXScreenHeight[CAIRO_DOCK_HORIZONTAL] - (g_pMainDock && g_pMainDock->container.bIsHorizontal ? g_pMainDock->iMaxDockHeight : 0)));
 
1786
                MIN (CAIRO_DOCK_CONF_PANEL_WIDTH, g_desktopGeometry.iXScreenWidth[CAIRO_DOCK_HORIZONTAL]),
 
1787
                MIN (CAIRO_DOCK_CONF_PANEL_HEIGHT, g_desktopGeometry.iXScreenHeight[CAIRO_DOCK_HORIZONTAL] - (g_pMainDock && g_pMainDock->container.bIsHorizontal ? g_pMainDock->iMaxDockHeight : 0)));
1792
1788
        
1793
1789
        
1794
1790
        gtk_widget_show_all (s_pMainWindow);
1809
1805
                        G_CALLBACK (on_delete_main_gui),
1810
1806
                        pBlockingLoop);
1811
1807
                
1812
 
                g_print ("debut de boucle bloquante ...\n");
 
1808
                cd_debug ("debut de boucle bloquante ...\n");
1813
1809
                GDK_THREADS_LEAVE ();
1814
1810
                g_main_loop_run (pBlockingLoop);
1815
1811
                GDK_THREADS_ENTER ();
1816
 
                g_print ("fin de boucle bloquante\n");
 
1812
                cd_debug ("fin de boucle bloquante\n");
1817
1813
                
1818
1814
                g_main_loop_unref (pBlockingLoop);
1819
1815
        }
1820
1816
        else
1821
1817
        {
1822
 
                //gtk_window_set_title (GTK_WINDOW (s_pMainWindow), _("Configuration of Cairo-Dock"));
 
1818
                //gtk_window_set_title (GTK_WINDOW (s_pMainWindow), _("Cairo-Dock configuration"));
1823
1819
                ///cairo_dock_show_one_category (0);
1824
1820
                g_signal_connect (G_OBJECT (s_pMainWindow),
1825
1821
                        "delete-event",
1891
1887
        gtk_widget_hide (s_pGroupFrame);
1892
1888
        
1893
1889
        //\_______________ On actualise le titre de la fenetre.
1894
 
        gtk_window_set_title (GTK_WINDOW (s_pMainWindow), _("Configuration of Cairo-Dock"));
 
1890
        gtk_window_set_title (GTK_WINDOW (s_pMainWindow), _("Cairo-Dock configuration"));
1895
1891
        if (s_path == NULL || s_path->data != GINT_TO_POINTER (0))
1896
1892
                s_path = g_slist_prepend (s_path, GINT_TO_POINTER (0));
1897
1893
 
1993
1989
                pWidget,
1994
1990
                TRUE,
1995
1991
                TRUE,
1996
 
                CAIRO_DOCK_GUI_MARGIN);
 
1992
                CAIRO_DOCK_FRAME_MARGIN);
1997
1993
        gtk_widget_show_all (pWidget);
1998
1994
}
1999
1995
 
2066
2062
        if (pGroupDescription->pExternalModules != NULL)
2067
2063
        {
2068
2064
                // on cree les widgets de tous les modules externes dans un meme notebook.
2069
 
                g_print ("on cree les widgets de tous les modules externes\n");
 
2065
                //g_print ("on cree les widgets de tous les modules externes\n");
2070
2066
                GtkWidget *pNoteBook = NULL;
2071
2067
                GKeyFile* pExtraKeyFile;
2072
2068
                CairoDockModule *pModule;
2212
2208
                                if (pIcon == NULL)
2213
2209
                                        pIcon = cairo_dock_get_dialogless_icon ();
2214
2210
                                CairoDock *pDock = cairo_dock_search_dock_from_name (pIcon != NULL ? pIcon->cParentDockName : NULL);
2215
 
                                cairo_dock_show_temporary_dialog_with_icon_printf (_("The module '%s' is not present. You need to install it or its dependencies to make the most of this module."), pIcon, CAIRO_CONTAINER (pDock), 10, "same icon", cModuleName);
 
2211
                                cairo_dock_show_temporary_dialog_with_icon_printf (_("The '%s' module is not present. You need to install it and all its dependencies in order to use this module."), pIcon, CAIRO_CONTAINER (pDock), 10, "same icon", cModuleName);
2216
2212
                        }
2217
2213
                        else if (pDependencyModule != pModule)
2218
2214
                        {
2219
2215
                                if (pDependencyModule->pInstancesList == NULL && pDependencyModule->pInterface->initModule != NULL)
2220
2216
                                {
2221
 
                                        gchar *cWarning = g_strdup_printf (_("The module '%s' is not activated."), cModuleName);
2222
 
                                        gchar *cQuestion = g_strdup_printf ("%s\n%s\n%s", cWarning, gettext (cMessage), _("Do you want to activate it now ?"));
 
2217
                                        gchar *cWarning = g_strdup_printf (_("The '%s' module is not enabled."), cModuleName);
 
2218
                                        gchar *cQuestion = g_strdup_printf ("%s\n%s\n%s", cWarning, gettext (cMessage), _("Do you want to enable it now?"));
2223
2219
                                        int iAnswer = cairo_dock_ask_general_question_and_wait (cQuestion);
2224
2220
                                        g_free (cQuestion);
2225
2221
                                        g_free (cWarning);
2359
2355
        CairoDockModule *pModule = cairo_dock_find_module_from_name ("Help");
2360
2356
        if (pModule != NULL)
2361
2357
        {
2362
 
                gchar *cHelpHistory = g_strdup_printf ("%s/.help/entered-once", g_cCairoDockDataDir);
2363
 
                if (! g_file_test (cHelpHistory, G_FILE_TEST_EXISTS))
 
2358
                if (! g_bEnterHelpOnce)
2364
2359
                {
2365
2360
                        Icon *pIcon = cairo_dock_get_dialogless_icon ();
2366
 
                        cairo_dock_show_dialog_full (_("It seems that you've never entered the help module yet.\nIf you have some difficulty to configure the dock, or if you are willing to customize it,\nthe Help module is here for you !\nDo you want to take a look at it now ?"),
 
2361
                        cairo_dock_show_dialog_full (_("It appears that you've never entered the help module before.\nIf you are having difficulty configuring the dock, or if you want to customise it,\nthe Help module is here for you!\nWould you like to take a look at it now?"),
2367
2362
                                pIcon,
2368
2363
                                CAIRO_CONTAINER (g_pMainDock),
2369
2364
                                10e3,
2461
2456
        gtk_statusbar_push (GTK_STATUSBAR (s_pStatusBar), 0, cMessage);
2462
2457
}
2463
2458
 
2464
 
static GSList *get_widgets_from_name (const gchar *cGroupName, const gchar *cKeyName)
 
2459
static CairoDockGroupKeyWidget *get_widget_from_name (const gchar *cGroupName, const gchar *cKeyName)
2465
2460
{
2466
2461
        g_return_val_if_fail (s_pCurrentWidgetList != NULL, NULL);
2467
 
        GSList *pList = cairo_dock_find_widgets_from_name (s_pCurrentWidgetList, cGroupName, cKeyName);
2468
 
        if (pList == NULL && s_pExtraCurrentWidgetList != NULL)
 
2462
        CairoDockGroupKeyWidget *pGroupKeyWidget = cairo_dock_gui_find_group_key_widget_in_list (s_pCurrentWidgetList, cGroupName, cKeyName);
 
2463
        if (pGroupKeyWidget == NULL && s_pExtraCurrentWidgetList != NULL)
2469
2464
        {
2470
2465
                GSList *l;
2471
2466
                for (l = s_pExtraCurrentWidgetList; l != NULL; l = l->next)
2472
2467
                {
2473
 
                        pList = cairo_dock_find_widgets_from_name (l->data, cGroupName, cKeyName);
2474
 
                        if (pList != NULL)
 
2468
                        pGroupKeyWidget = cairo_dock_gui_find_group_key_widget_in_list (l->data, cGroupName, cKeyName);
 
2469
                        if (pGroupKeyWidget != NULL)
2475
2470
                                break ;
2476
2471
                }
2477
2472
        }
2478
 
        return pList;
 
2473
        return pGroupKeyWidget;
2479
2474
}
2480
2475
 
2481
2476
static void close_gui (void)
2490
2485
{
2491
2486
        CairoDockGuiBackend *pBackend = g_new0 (CairoDockGuiBackend, 1);
2492
2487
        
2493
 
        pBackend->show_main_gui                 = show_main_gui;
 
2488
        pBackend->show_main_gui                         = show_main_gui;
2494
2489
        pBackend->show_module_instance_gui      = show_module_instance_gui;
2495
 
        pBackend->show_module_gui               = show_module_gui;
 
2490
        pBackend->show_module_gui                       = show_module_gui;
2496
2491
        pBackend->set_status_message_on_gui = set_status_message_on_gui;
2497
 
        pBackend->module_is_opened              = module_is_opened;
 
2492
        pBackend->module_is_opened                      = module_is_opened;
2498
2493
        pBackend->deactivate_module_in_gui      = deactivate_module_in_gui;
2499
 
        pBackend->get_widgets_from_name         = get_widgets_from_name;
2500
 
        pBackend->close_gui                     = close_gui;
 
2494
        pBackend->get_widget_from_name          = get_widget_from_name;
 
2495
        pBackend->close_gui                             = close_gui;
2501
2496
        
2502
2497
        cairo_dock_register_gui_backend (pBackend);
2503
2498
}