30
30
CD_APPLET_ON_CLICK_BEGIN
33
double fGamma = xgamma_get_gamma (&myData.Xgamma);
36
fGamma = cairo_dock_show_value_and_wait (D_("Set up gamma:"), myIcon, myContainer, fGamma, GAMMA_MAX);
39
fGamma = MAX (fGamma, GAMMA_MIN);
41
myData.Xgamma.red = fGamma;
42
myData.Xgamma.blue = fGamma;
43
myData.Xgamma.green = fGamma;
44
xgamma_set_gamma (&myData.Xgamma);
33
xgamma_build_dialog_simple ();
48
35
CD_APPLET_ON_CLICK_END
38
static void _cd_xgamma_set_up_gamma_correction (void)
40
double fGamma = xgamma_get_gamma (&myData.Xgamma);
43
//\___________________ On construit notre widget si c'est la 1ere fois.
44
if (myData.pWidget == NULL)
46
xgamma_build_and_show_widget ();
50
//\___________________ On lui met les valeurs a jour, sans appeler les callbacks.
51
g_signal_handler_block (myData.pGlobalScale, myData.iGloalScaleSignalID);
52
g_signal_handler_block (myData.pRedScale, myData.iRedScaleSignalID);
53
g_signal_handler_block (myData.pGreenScale, myData.iGreenScaleSignalID);
54
g_signal_handler_block (myData.pBlueScale, myData.iBlueScaleSignalID);
56
gtk_range_set_value (GTK_RANGE (myData.pGlobalScale), fGamma);
57
gtk_range_set_value (GTK_RANGE (myData.pRedScale), myData.Xgamma.red);
58
gtk_range_set_value (GTK_RANGE (myData.pGreenScale), myData.Xgamma.green);
59
gtk_range_set_value (GTK_RANGE (myData.pBlueScale), myData.Xgamma.blue);
60
myData.XoldGamma = myData.Xgamma;
62
g_signal_handler_unblock (myData.pGlobalScale, myData.iGloalScaleSignalID);
63
g_signal_handler_unblock (myData.pRedScale, myData.iRedScaleSignalID);
64
g_signal_handler_unblock (myData.pGreenScale, myData.iGreenScaleSignalID);
65
g_signal_handler_unblock (myData.pBlueScale, myData.iBlueScaleSignalID);
67
if (myData.pDialog != NULL)
69
cairo_dock_unhide_dialog (myData.pDialog);
50
75
static void _cd_xgamma_remember_current_gamma (GtkMenuItem *menu_item, CairoDockModuleInstance *myApplet)
52
77
double fGamma = xgamma_get_gamma (&myData.Xgamma);
59
84
CD_APPLET_ON_BUILD_MENU_BEGIN
85
GtkWidget *pSubMenu = CD_APPLET_CREATE_MY_SUB_MENU ();
89
gchar *cLabel = g_strdup_printf ("%s (%s)", D_("Set up gamma correction"), D_("middle-click"));
90
CD_APPLET_ADD_IN_MENU_WITH_STOCK (cLabel, GTK_STOCK_DIALOG_INFO, _cd_xgamma_set_up_gamma_correction, CD_APPLET_MY_MENU);
61
GtkWidget *pSubMenu = CD_APPLET_CREATE_MY_SUB_MENU ();
62
CD_APPLET_ADD_IN_MENU_WITH_STOCK (D_("Apply current luminosity on startup"), GTK_STOCK_DIALOG_WARNING, _cd_xgamma_remember_current_gamma, pSubMenu);
63
CD_APPLET_ADD_SEPARATOR_IN_MENU (pSubMenu);
64
CD_APPLET_ADD_ABOUT_IN_MENU (pSubMenu);
94
CD_APPLET_ADD_IN_MENU_WITH_STOCK (D_("Apply current luminosity on startup"), GTK_STOCK_DIALOG_WARNING, _cd_xgamma_remember_current_gamma, pSubMenu);
95
CD_APPLET_ADD_SEPARATOR_IN_MENU (pSubMenu);
96
CD_APPLET_ADD_ABOUT_IN_MENU (pSubMenu);
65
97
CD_APPLET_ON_BUILD_MENU_END
68
100
CD_APPLET_ON_MIDDLE_CLICK_BEGIN
71
double fGamma = xgamma_get_gamma (&myData.Xgamma);
74
//\___________________ On construit notre widget si c'est la 1ere fois.
75
if (myData.pWidget == NULL)
77
xgamma_build_and_show_widget ();
81
//\___________________ On lui met les valeurs a jour, sans appeler les callbacks.
82
g_signal_handler_block (myData.pGlobalScale, myData.iGloalScaleSignalID);
83
g_signal_handler_block (myData.pRedScale, myData.iRedScaleSignalID);
84
g_signal_handler_block (myData.pGreenScale, myData.iGreenScaleSignalID);
85
g_signal_handler_block (myData.pBlueScale, myData.iBlueScaleSignalID);
87
gtk_range_set_value (GTK_RANGE (myData.pGlobalScale), fGamma);
88
gtk_range_set_value (GTK_RANGE (myData.pRedScale), myData.Xgamma.red);
89
gtk_range_set_value (GTK_RANGE (myData.pGreenScale), myData.Xgamma.green);
90
gtk_range_set_value (GTK_RANGE (myData.pBlueScale), myData.Xgamma.blue);
91
myData.XoldGamma = myData.Xgamma;
93
g_signal_handler_unblock (myData.pGlobalScale, myData.iGloalScaleSignalID);
94
g_signal_handler_unblock (myData.pRedScale, myData.iRedScaleSignalID);
95
g_signal_handler_unblock (myData.pGreenScale, myData.iGreenScaleSignalID);
96
g_signal_handler_unblock (myData.pBlueScale, myData.iBlueScaleSignalID);
98
if (myData.pDialog != NULL)
100
cairo_dock_unhide_dialog (myData.pDialog);
103
_cd_xgamma_set_up_gamma_correction ();
105
105
CD_APPLET_ON_MIDDLE_CLICK_END
108
static gboolean _on_scroll (gpointer data)
110
cd_debug ("%s (%d)", __func__, myData.iScrollCount);
111
if (myData.iScrollCount != 0)
112
xgamma_add_gamma (&myData.Xgamma, myData.iScrollCount);
113
myData.iSidScrollAction = 0;
114
myData.iScrollCount = 0;
108
117
CD_APPLET_ON_SCROLL_BEGIN
109
double fGamma = xgamma_get_gamma (&myData.Xgamma);
110
cd_debug ("%.2f;%.2f;%.2f\n", myData.Xgamma.red, myData.Xgamma.green, myData.Xgamma.blue);
112
if (CD_APPLET_SCROLL_UP)
114
f = (1. - myConfig.iScrollVariation/100.);
115
myData.Xgamma.red *= f;
116
myData.Xgamma.green *= f;
117
myData.Xgamma.blue *= f;
121
f = (1. + myConfig.iScrollVariation/100.);
122
myData.Xgamma.red *= f;
123
myData.Xgamma.green *= f;
124
myData.Xgamma.blue *= f;
127
xgamma_set_gamma (&myData.Xgamma);
118
myData.iScrollCount += (CD_APPLET_SCROLL_UP ? 1 : -1);
119
if (myData.iSidScrollAction == 0)
120
myData.iSidScrollAction = g_timeout_add (200, (GSourceFunc) _on_scroll, NULL);
121
xgamma_add_gamma (&myData.Xgamma, CD_APPLET_SCROLL_UP);
128
122
CD_APPLET_ON_SCROLL_END