2
* This file is a part of the Cairo-Dock project
4
* Copyright : (C) see the 'copyright' file.
5
* E-mail : see the 'copyright' file.
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.
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/>.
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"
29
CairoConfigSystem mySystem;
30
extern CairoDockGLConfig g_openglConfig;
31
extern gboolean g_bUseOpenGL;
32
extern CairoDockDesktopBackground *g_pFakeTransparencyDesktopBg;
34
static gboolean get_config (GKeyFile *pKeyFile, CairoConfigSystem *pSystem)
36
gboolean bFlushConfFileNeeded = FALSE;
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);
43
// vitesse des animations.
44
///pSystem->bAnimateOnAutoHide = cairo_dock_get_boolean_key_value (pKeyFile, "System", "animate on auto-hide", &bFlushConfFileNeeded, TRUE, NULL, NULL);
46
pSystem->bAnimateSubDock = cairo_dock_get_boolean_key_value (pKeyFile, "System", "animate subdocks", &bFlushConfFileNeeded, TRUE, "Sub-Docks", NULL);
48
pSystem->iUnfoldingDuration = cairo_dock_get_integer_key_value (pKeyFile, "System", "unfold duration", &bFlushConfFileNeeded, 400, NULL, NULL);
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);
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);
58
pSystem->iUnhideNbSteps = cairo_dock_get_integer_key_value (pKeyFile, "System", "move up nb steps", &bFlushConfFileNeeded, 10, NULL, NULL);
60
pSystem->iHideNbSteps = cairo_dock_get_integer_key_value (pKeyFile, "System", "move down nb steps", &bFlushConfFileNeeded, 12, NULL, NULL);
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);
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;
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);
78
pSystem->cActiveModuleList = cairo_dock_get_string_list_key_value (pKeyFile, "System", "modules", &bFlushConfFileNeeded, &length, NULL, "Applets", "modules_0");
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))
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);
90
return bFlushConfFileNeeded;
94
static void reset_config (CairoConfigSystem *pSystem)
96
g_free (pSystem->cActiveModuleList);
97
g_free (pSystem->cConnectionProxy);
98
g_free (pSystem->cConnectionUser);
99
g_free (pSystem->cConnectionPasswd);
103
static void _set_below (CairoDock *pDock, gpointer data)
105
gtk_window_set_keep_below (GTK_WINDOW (pDock->container.pWidget), GPOINTER_TO_INT (data));
107
static void reload (CairoConfigSystem *pPrevSystem, CairoConfigSystem *pSystem)
109
//\_______________ Fake Transparency.
110
if (pSystem->bUseFakeTransparency && ! pPrevSystem->bUseFakeTransparency)
112
cairo_dock_foreach_root_docks ((GFunc)_set_below, GINT_TO_POINTER (TRUE));
113
g_pFakeTransparencyDesktopBg = cairo_dock_get_desktop_background (g_bUseOpenGL);
115
else if (! pSystem->bUseFakeTransparency && pPrevSystem->bUseFakeTransparency)
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;
122
if (pSystem->bTextAlwaysHorizontal != pPrevSystem->bTextAlwaysHorizontal)
124
cairo_dock_reload_buffers_in_all_docks (TRUE); // les modules aussi.
129
DEFINE_PRE_INIT (System)
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;
139
pModule->reload = (CairoDockInternalModuleReloadFunc) reload;
140
pModule->get_config = (CairoDockInternalModuleGetConfigFunc) get_config;
141
pModule->reset_config = NULL;
142
pModule->reset_data = NULL;
144
pModule->pConfig = (CairoInternalModuleConfigPtr) &mySystem;
145
pModule->pData = NULL;