35
35
#include <libpanel-util/panel-xdg.h>
37
37
#include "applet.h"
39
38
#include "xstuff.h"
40
#include "panel-config-global.h"
39
#include "panel-bindings.h"
41
40
#include "panel-gconf.h"
42
41
#include "panel-globals.h"
43
42
#include "launcher.h"
44
43
#include "panel-icon-names.h"
45
#include "panel-lockdown.h"
44
#include "panel-schemas.h"
48
47
panel_util_make_exec_uri_for_desktop (const char *exec)
338
panel_lock_screen_action_get_command (const char *action)
340
char *command = NULL;
341
gboolean use_gscreensaver = FALSE;
343
if (panel_is_program_in_path ("gnome-screensaver-command")
344
&& panel_is_program_in_path ("gnome-screensaver-preferences"))
345
use_gscreensaver = TRUE;
346
else if (!panel_is_program_in_path ("xscreensaver-command"))
349
if (strcmp (action, "prefs") == 0) {
350
if (use_gscreensaver) {
351
command = g_strdup ("gnome-screensaver-preferences");
352
} else if (panel_is_program_in_path ("xscreensaver-demo")) {
353
command = g_strdup ("xscreensaver-demo");
357
} else if (strcmp (action, "activate") == 0
358
|| strcmp (action, "lock") == 0) {
359
/* Neither gnome-screensaver or xscreensaver allow root
360
* to lock the screen */
361
if (geteuid () == 0) {
364
if (use_gscreensaver) {
365
command = g_strdup_printf ("gnome-screensaver-command --%s", action);
367
command = g_strdup_printf ("xscreensaver-command -%s", action);
376
panel_lock_screen_action_available (const char *action)
379
gboolean enabled = FALSE;
381
g_return_val_if_fail (action != NULL, FALSE);
383
if (strcmp (action, "prefs") != 0 &&
384
panel_lockdown_get_disable_lock_screen ())
387
command = panel_lock_screen_action_get_command (action);
397
panel_lock_screen_action (GdkScreen *screen,
400
GError *error = NULL;
401
char *command = NULL;
403
g_return_if_fail (GDK_IS_SCREEN (screen));
404
g_return_if_fail (action != NULL);
406
if (strcmp (action, "prefs") != 0 &&
407
panel_lockdown_get_disable_lock_screen ())
410
command = panel_lock_screen_action_get_command (action);
415
if (!gdk_spawn_command_line_on_screen (screen, command, &error)) {
418
primary = g_strdup_printf (_("Could not execute '%s'"),
420
panel_error_dialog (NULL, screen,
421
"cannot_exec_screensaver", TRUE,
422
primary, error->message);
424
g_error_free (error);
431
panel_lock_screen (GdkScreen *screen)
433
panel_lock_screen_action (screen, "lock");
437
#define PANEL_LAUNCHER_PERSONAL_PATH "panel2.d/default/launchers"
440
337
panel_launcher_get_personal_path (void)
442
const char *override;
444
override = g_getenv ("GNOME22_USER_DIR");
447
return g_build_filename (override,
448
PANEL_LAUNCHER_PERSONAL_PATH, NULL);
450
return g_build_filename (g_get_home_dir (), ".gnome2",
451
PANEL_LAUNCHER_PERSONAL_PATH, NULL);
339
return g_build_filename (g_get_user_config_dir (),
340
"gnome-panel", "launchers", NULL);
1151
1040
GtkTooltip *tooltip,
1152
1041
const char *text)
1154
if (!panel_global_config_get_tooltips_enabled ())
1043
GSettings *gsettings;
1044
gboolean enable_tooltips;
1046
gsettings = g_settings_new (PANEL_GENERAL_SCHEMA);
1047
enable_tooltips = g_settings_get_boolean (gsettings,
1048
PANEL_GENERAL_ENABLE_TOOLTIPS_KEY);
1049
g_object_unref (gsettings);
1051
if (!enable_tooltips)
1157
1054
gtk_tooltip_set_text (tooltip, text);
1107
* Keep code in panel-applet-bindings.c in sync!
1110
panel_util_key_event_is_binding (GdkEventKey *event,
1112
const char *signal_name,
1114
gboolean *is_popup_modifier)
1116
GtkBindingSet *binding_set;
1117
GtkBindingEntry *binding_entry;
1118
gboolean popup = FALSE;
1119
gboolean popup_modifier = FALSE;
1122
char *signal_underscore;
1124
modifiers = event->state & gtk_accelerator_get_default_mod_mask ();
1126
signal_dash = g_strdup (signal_name);
1127
g_strdelimit (signal_dash, "_", '-');
1128
signal_underscore = g_strdup (signal_name);
1129
g_strdelimit (signal_underscore, "-", '_');
1131
binding_set = gtk_binding_set_by_class (g_type_class_peek (type));
1133
for (binding_entry = binding_set->entries;
1134
binding_entry != NULL;
1135
binding_entry = binding_entry->set_next) {
1136
GtkBindingSignal *binding_signal;
1138
for (binding_signal = binding_entry->signals;
1139
binding_signal != NULL;
1140
binding_signal = binding_signal->next) {
1141
if (g_strcmp0 (binding_signal->signal_name, signal_dash) == 0 ||
1142
g_strcmp0 (binding_signal->signal_name, signal_underscore) == 0) {
1143
if (binding_entry->keyval != event->keyval)
1146
popup = modifiers == binding_entry->modifiers;
1147
popup_modifier = modifiers == (panel_bindings_get_mouse_button_modifier_keymask ()|binding_entry->modifiers);
1152
if (popup || popup_modifier)
1158
if (is_popup_modifier)
1159
*is_popup_modifier = popup_modifier;
1161
g_free (signal_dash);
1162
g_free (signal_underscore);
1166
panel_util_key_event_is_popup (GdkEventKey *event,
1168
gboolean *is_popup_modifier)
1170
panel_util_key_event_is_binding (event, GTK_TYPE_WIDGET, "popup-menu",
1171
is_popup, is_popup_modifier);
1175
panel_util_key_event_is_popup_panel (GdkEventKey *event,
1177
gboolean *is_popup_modifier)
1179
panel_util_key_event_is_binding (event, PANEL_TYPE_TOPLEVEL, "popup-panel-menu",
1180
is_popup, is_popup_modifier);
1184
panel_util_get_user_name (void)
1188
name = g_locale_to_utf8 (g_get_real_name (), -1, NULL, NULL, NULL);
1190
if (PANEL_GLIB_STR_EMPTY (name) || g_strcmp0 (name, "Unknown") == 0) {
1192
name = g_locale_to_utf8 (g_get_user_name (), -1 , NULL, NULL, NULL);
1196
name = g_strdup (g_get_user_name ());