~cairo-dock-team/ubuntu/oneiric/cairo-dock/2.3.0-3

« back to all changes in this revision

Viewing changes to src/gldit/cairo-dock-internal-system.c

  • Committer: Bazaar Package Importer
  • Author(s): Matthieu Baerts (matttbe)
  • Date: 2010-08-09 23:26:12 UTC
  • 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:
 
1
/**
 
2
* This file is a part of the Cairo-Dock project
 
3
*
 
4
* Copyright : (C) see the 'copyright' file.
 
5
* E-mail    : see the 'copyright' file.
 
6
*
 
7
* This program is free software; you can redistribute it and/or
 
8
* modify it under the terms of the GNU General Public License
 
9
* as published by the Free Software Foundation; either version 3
 
10
* of the License, or (at your option) any later version.
 
11
*
 
12
* This program is distributed in the hope that it will be useful,
 
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
 
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
15
* GNU General Public License for more details.
 
16
* You should have received a copy of the GNU General Public License
 
17
* along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
18
*/
 
19
 
 
20
#include <math.h>
 
21
#include "cairo-dock-modules.h"
 
22
#include "cairo-dock-load.h"
 
23
#include "cairo-dock-opengl.h"
 
24
#include "cairo-dock-dock-manager.h"
 
25
#include "cairo-dock-dock-facility.h"
 
26
#define _INTERNAL_MODULE_
 
27
#include "cairo-dock-internal-system.h"
 
28
 
 
29
CairoConfigSystem mySystem;
 
30
extern CairoDockGLConfig g_openglConfig;
 
31
extern gboolean g_bUseOpenGL;
 
32
extern CairoDockDesktopBackground *g_pFakeTransparencyDesktopBg;
 
33
 
 
34
static gboolean get_config (GKeyFile *pKeyFile, CairoConfigSystem *pSystem)
 
35
{
 
36
        gboolean bFlushConfFileNeeded = FALSE;
 
37
        
 
38
        // lisibilite des labels
 
39
        pSystem->fLabelAlphaThreshold = cairo_dock_get_double_key_value (pKeyFile, "System", "alpha threshold", &bFlushConfFileNeeded, 10., "Labels", NULL);
 
40
        pSystem->fLabelAlphaThreshold = (pSystem->fLabelAlphaThreshold + 10.) / 10.;  // [0;50] -> [1;6]
 
41
        pSystem->bTextAlwaysHorizontal = cairo_dock_get_boolean_key_value (pKeyFile, "System", "always horizontal", &bFlushConfFileNeeded, FALSE, "Labels", NULL);
 
42
        
 
43
        // vitesse des animations.
 
44
        ///pSystem->bAnimateOnAutoHide = cairo_dock_get_boolean_key_value (pKeyFile, "System", "animate on auto-hide", &bFlushConfFileNeeded, TRUE, NULL, NULL);
 
45
        
 
46
        pSystem->bAnimateSubDock = cairo_dock_get_boolean_key_value (pKeyFile, "System", "animate subdocks", &bFlushConfFileNeeded, TRUE, "Sub-Docks", NULL);
 
47
        
 
48
        pSystem->iUnfoldingDuration = cairo_dock_get_integer_key_value (pKeyFile, "System", "unfold duration", &bFlushConfFileNeeded, 400, NULL, NULL);
 
49
        
 
50
        int iNbSteps = cairo_dock_get_integer_key_value (pKeyFile, "System", "grow nb steps", &bFlushConfFileNeeded, 10, NULL, NULL);
 
51
        iNbSteps = MAX (iNbSteps, 1);
 
52
        pSystem->iGrowUpInterval = MAX (1, CAIRO_DOCK_NB_MAX_ITERATIONS / iNbSteps);
 
53
        
 
54
        iNbSteps = cairo_dock_get_integer_key_value (pKeyFile, "System", "shrink nb steps", &bFlushConfFileNeeded, 8, NULL, NULL);
 
55
        iNbSteps = MAX (iNbSteps, 1);
 
56
        pSystem->iShrinkDownInterval = MAX (1, CAIRO_DOCK_NB_MAX_ITERATIONS / iNbSteps);
 
57
        
 
58
        pSystem->iUnhideNbSteps = cairo_dock_get_integer_key_value (pKeyFile, "System", "move up nb steps", &bFlushConfFileNeeded, 10, NULL, NULL);
 
59
        
 
60
        pSystem->iHideNbSteps = cairo_dock_get_integer_key_value (pKeyFile, "System", "move down nb steps", &bFlushConfFileNeeded, 12, NULL, NULL);
 
61
        
 
62
        // frequence de rafraichissement.
 
63
        int iRefreshFrequency = cairo_dock_get_integer_key_value (pKeyFile, "System", "refresh frequency", &bFlushConfFileNeeded, 25, NULL, NULL);
 
64
        pSystem->fRefreshInterval = 1000. / iRefreshFrequency;
 
65
        pSystem->bDynamicReflection = cairo_dock_get_boolean_key_value (pKeyFile, "System", "dynamic reflection", &bFlushConfFileNeeded, FALSE, NULL, NULL);
 
66
        
 
67
        iRefreshFrequency = cairo_dock_get_integer_key_value (pKeyFile, "System", "opengl anim freq", &bFlushConfFileNeeded, 33, NULL, NULL);
 
68
        pSystem->iGLAnimationDeltaT = 1000. / iRefreshFrequency;
 
69
        iRefreshFrequency = cairo_dock_get_integer_key_value (pKeyFile, "System", "cairo anim freq", &bFlushConfFileNeeded, 25, NULL, NULL);
 
70
        pSystem->iCairoAnimationDeltaT = 1000. / iRefreshFrequency;
 
71
        
 
72
        pSystem->bUseFakeTransparency = cairo_dock_get_boolean_key_value (pKeyFile, "System", "fake transparency", &bFlushConfFileNeeded, FALSE, NULL, NULL);
 
73
        if (g_bUseOpenGL && ! g_openglConfig.bAlphaAvailable)
 
74
                pSystem->bUseFakeTransparency = TRUE;
 
75
        pSystem->bConfigPanelTransparency = cairo_dock_get_boolean_key_value (pKeyFile, "System", "config transparency", &bFlushConfFileNeeded, TRUE, NULL, NULL);
 
76
        
 
77
        gsize length=0;
 
78
        pSystem->cActiveModuleList = cairo_dock_get_string_list_key_value (pKeyFile, "System", "modules", &bFlushConfFileNeeded, &length, NULL, "Applets", "modules_0");
 
79
        
 
80
        pSystem->iConnectionTimeout = cairo_dock_get_integer_key_value (pKeyFile, "System", "conn timeout", &bFlushConfFileNeeded, 7, NULL, NULL);
 
81
        pSystem->iConnectionMaxTime = cairo_dock_get_integer_key_value (pKeyFile, "System", "conn max time", &bFlushConfFileNeeded, 120, NULL, NULL);
 
82
        if (cairo_dock_get_boolean_key_value (pKeyFile, "System", "conn use proxy", &bFlushConfFileNeeded, FALSE, NULL, NULL))
 
83
        {
 
84
                pSystem->cConnectionProxy = cairo_dock_get_string_key_value (pKeyFile, "System", "conn proxy", &bFlushConfFileNeeded, NULL, NULL, NULL);
 
85
                pSystem->iConnectionPort = cairo_dock_get_integer_key_value (pKeyFile, "System", "conn port", &bFlushConfFileNeeded, 0, NULL, NULL);
 
86
                pSystem->cConnectionUser = cairo_dock_get_string_key_value (pKeyFile, "System", "conn user", &bFlushConfFileNeeded, NULL, NULL, NULL);
 
87
                gchar *cPasswd = cairo_dock_get_string_key_value (pKeyFile, "System", "conn passwd", &bFlushConfFileNeeded, NULL, NULL, NULL);
 
88
                cairo_dock_decrypt_string (cPasswd, &pSystem->cConnectionPasswd);
 
89
        }
 
90
        return bFlushConfFileNeeded;
 
91
}
 
92
 
 
93
 
 
94
static void reset_config (CairoConfigSystem *pSystem)
 
95
{
 
96
        g_free (pSystem->cActiveModuleList);
 
97
        g_free (pSystem->cConnectionProxy);
 
98
        g_free (pSystem->cConnectionUser);
 
99
        g_free (pSystem->cConnectionPasswd);
 
100
}
 
101
 
 
102
 
 
103
static void _set_below (CairoDock *pDock, gpointer data)
 
104
{
 
105
        gtk_window_set_keep_below (GTK_WINDOW (pDock->container.pWidget), GPOINTER_TO_INT (data));
 
106
}
 
107
static void reload (CairoConfigSystem *pPrevSystem, CairoConfigSystem *pSystem)
 
108
{
 
109
        //\_______________ Fake Transparency.
 
110
        if (pSystem->bUseFakeTransparency && ! pPrevSystem->bUseFakeTransparency)
 
111
        {
 
112
                cairo_dock_foreach_root_docks ((GFunc)_set_below, GINT_TO_POINTER (TRUE));
 
113
                g_pFakeTransparencyDesktopBg = cairo_dock_get_desktop_background (g_bUseOpenGL);
 
114
        }
 
115
        else if (! pSystem->bUseFakeTransparency && pPrevSystem->bUseFakeTransparency)
 
116
        {
 
117
                cairo_dock_foreach_root_docks ((GFunc)_set_below, GINT_TO_POINTER (FALSE));
 
118
                cairo_dock_destroy_desktop_background (g_pFakeTransparencyDesktopBg);
 
119
                g_pFakeTransparencyDesktopBg = NULL;
 
120
        }
 
121
        
 
122
        if (pSystem->bTextAlwaysHorizontal != pPrevSystem->bTextAlwaysHorizontal)
 
123
        {
 
124
                cairo_dock_reload_buffers_in_all_docks (TRUE);  // les modules aussi.
 
125
        }
 
126
}
 
127
 
 
128
 
 
129
DEFINE_PRE_INIT (System)
 
130
{
 
131
        pModule->cModuleName = "System";
 
132
        pModule->cTitle = N_("System");
 
133
        pModule->cIcon = "icon-system.svg";
 
134
        pModule->cDescription = N_("All of the parameters you will never want to tweak.");
 
135
        pModule->iCategory = CAIRO_DOCK_CATEGORY_BEHAVIOR;
 
136
        pModule->iSizeOfConfig = sizeof (CairoConfigSystem);
 
137
        pModule->iSizeOfData = 0;
 
138
        
 
139
        pModule->reload = (CairoDockInternalModuleReloadFunc) reload;
 
140
        pModule->get_config = (CairoDockInternalModuleGetConfigFunc) get_config;
 
141
        pModule->reset_config = NULL;
 
142
        pModule->reset_data = NULL;
 
143
        
 
144
        pModule->pConfig = (CairoInternalModuleConfigPtr) &mySystem;
 
145
        pModule->pData = NULL;
 
146
}