summaryrefslogtreecommitdiff
path: root/typing-break/main.c
diff options
context:
space:
mode:
authorPerberos <[email protected]>2011-12-01 21:51:44 -0300
committerPerberos <[email protected]>2011-12-01 21:51:44 -0300
commit0b0e6bc987da4fd88a7854ebb12bde705e92c428 (patch)
tree47d329edd31c67eaa36b2147780e37e197e901b5 /typing-break/main.c
downloadmate-control-center-0b0e6bc987da4fd88a7854ebb12bde705e92c428.tar.bz2
mate-control-center-0b0e6bc987da4fd88a7854ebb12bde705e92c428.tar.xz
moving from https://github.com/perberos/mate-desktop-environment
Diffstat (limited to 'typing-break/main.c')
-rw-r--r--typing-break/main.c125
1 files changed, 125 insertions, 0 deletions
diff --git a/typing-break/main.c b/typing-break/main.c
new file mode 100644
index 00000000..a81bdd9b
--- /dev/null
+++ b/typing-break/main.c
@@ -0,0 +1,125 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2002 CodeFactory AB
+ * Copyright (C) 2002-2003 Richard Hult <[email protected]>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include <config.h>
+#include <string.h>
+#include <stdlib.h>
+#include <glib/gi18n.h>
+#include <gdk/gdkx.h>
+#include <gtk/gtk.h>
+
+#include "drw-selection.h"
+#include "drwright.h"
+
+gboolean debug = FALSE;
+
+#ifndef HAVE_APP_INDICATOR
+static gboolean
+have_tray (void)
+{
+ Screen *xscreen = DefaultScreenOfDisplay (gdk_display);
+ Atom selection_atom;
+ char *selection_atom_name;
+
+ selection_atom_name = g_strdup_printf ("_NET_SYSTEM_TRAY_S%d",
+ XScreenNumberOfScreen (xscreen));
+ selection_atom = XInternAtom (DisplayOfScreen (xscreen), selection_atom_name, False);
+ g_free (selection_atom_name);
+
+ if (XGetSelectionOwner (DisplayOfScreen (xscreen), selection_atom)) {
+ return TRUE;
+ } else {
+ return FALSE;
+ }
+}
+#endif /* HAVE_APP_INDICATOR */
+
+int
+main (int argc, char *argv[])
+{
+ DrWright *drwright;
+ DrwSelection *selection;
+ gboolean no_check = FALSE;
+ const GOptionEntry options[] = {
+ { "debug", 'd', 0, G_OPTION_ARG_NONE, &debug,
+ N_("Enable debugging code"), NULL },
+ { "no-check", 'n', 0, G_OPTION_ARG_NONE, &no_check,
+ N_("Don't check whether the notification area exists"), NULL },
+ { NULL }
+ };
+ GOptionContext *option_context;
+ GError *error = NULL;
+ gboolean retval;
+
+ bindtextdomain (GETTEXT_PACKAGE, MATELOCALEDIR);
+ bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+ textdomain (GETTEXT_PACKAGE);
+
+ option_context = g_option_context_new (NULL);
+#if GLIB_CHECK_VERSION (2, 12, 0)
+ g_option_context_set_translation_domain (option_context, GETTEXT_PACKAGE);
+#endif
+ g_option_context_add_main_entries (option_context, options, GETTEXT_PACKAGE);
+ g_option_context_add_group (option_context, gtk_get_option_group (TRUE));
+
+ retval = g_option_context_parse (option_context, &argc, &argv, &error);
+ g_option_context_free (option_context);
+ if (!retval) {
+ g_print ("%s\n", error->message);
+ g_error_free (error);
+ exit (1);
+ }
+
+ g_set_application_name (_("Typing Monitor"));
+ gtk_window_set_default_icon_name ("typing-monitor");
+
+ selection = drw_selection_start ();
+ if (!drw_selection_is_master (selection)) {
+ g_message ("The typing monitor is already running, exiting.");
+ return 0;
+ }
+
+#ifndef HAVE_APP_INDICATOR
+ if (!no_check && !have_tray ()) {
+ GtkWidget *dialog;
+
+ dialog = gtk_message_dialog_new (
+ NULL, 0,
+ GTK_MESSAGE_INFO,
+ GTK_BUTTONS_CLOSE,
+ _("The typing monitor uses the notification area to display "
+ "information. You don't seem to have a notification area "
+ "on your panel. You can add it by right-clicking on your "
+ "panel and choosing 'Add to panel', selecting 'Notification "
+ "area' and clicking 'Add'."));
+
+ gtk_dialog_run (GTK_DIALOG (dialog));
+
+ gtk_widget_destroy (dialog);
+ }
+#endif /* HAVE_APP_INDICATOR */
+
+ drwright = drwright_new ();
+
+ gtk_main ();
+
+ return 0;
+}