Commit 8bb88eb1 authored by Thomas Wood's avatar Thomas Wood

mouse: convert the mouse capplet into a settings panel

Add a module and CcPanel implementation for the mouse settings.
parent 3748173b
SUBDIRS = po libwindow-settings libgnome-control-center shell capplets \
SUBDIRS = po libwindow-settings libgnome-control-center shell capplets panels \
font-viewer help docs
DIST_SUBDIRS = po libwindow-settings capplets font-viewer help shell typing-break examples
......
......@@ -6,7 +6,6 @@ SUBDIRS = \
display \
keybindings \
keyboard \
mouse \
network \
windows
......@@ -17,7 +16,6 @@ DIST_SUBDIRS = \
default-applications \
keybindings \
keyboard \
mouse \
network \
windows \
display \
......
......@@ -354,8 +354,6 @@ capplets/keybindings/gnome-keybindings.pc
capplets/keybindings/keybinding.desktop.in
capplets/keyboard/Makefile
capplets/keyboard/keyboard.desktop.in
capplets/mouse/Makefile
capplets/mouse/gnome-settings-mouse.desktop.in
capplets/network/Makefile
capplets/network/gnome-network-properties.desktop.in
capplets/windows/Makefile
......@@ -373,6 +371,9 @@ libgnome-control-center/Makefile
libgnome-control-center/libgnome-control-center.pc
libwindow-settings/Makefile
libwindow-settings/gnome-window-settings-2.0.pc
panels/Makefile
panels/mouse/Makefile
panels/mouse/gnome-settings-mouse.desktop.in
po/Makefile.in
shell/Makefile
shell/gnome-control-center.desktop.in
......
# This is used in GNOMECC_CAPPLETS_CFLAGS
cappletname = mouse
bin_PROGRAMS = gnome-mouse-properties
INCLUDES = \
$(PANEL_CFLAGS) \
$(GNOMECC_CAPPLETS_CFLAGS) \
-DGNOMELOCALEDIR="\"$(datadir)/locale\"" \
-DGNOMECC_DATA_DIR="\"$(pkgdatadir)\"" \
-DGNOMECC_UI_DIR="\"$(uidir)\""
$(NULL)
ccpanelsdir = $(PANELS_DIR)
ccpanels_LTLIBRARIES = libmouse-properties.la
gnome_mouse_properties_LDADD = $(GNOMECC_CAPPLETS_LIBS)
gnome_mouse_properties_SOURCES = \
libmouse_properties_la_SOURCES = \
mouse-module.c \
cc-mouse-panel.c \
cc-mouse-panel.h \
gnome-mouse-properties.c \
gnome-mouse-accessibility.c \
gnome-mouse-accessibility.h
libmouse_properties_la_LIBADD = $(PANEL_LIBS) \
$(top_builddir)/capplets/common/libcommon.la
libmouse_properties_la_LDFLAGS = $(PANEL_LDFLAGS)
@INTLTOOL_DESKTOP_RULE@
pixmapdir = $(pkgdatadir)/pixmaps
......@@ -24,11 +40,6 @@ desktopdir = $(datadir)/applications
Desktop_in_files = gnome-settings-mouse.desktop.in
desktop_DATA = $(Desktop_in_files:.desktop.in=.desktop)
INCLUDES = \
$(GNOMECC_CAPPLETS_CFLAGS) \
-DGNOMELOCALEDIR="\"$(datadir)/locale\"" \
-DGNOMECC_DATA_DIR="\"$(pkgdatadir)\"" \
-DGNOMECC_UI_DIR="\"$(uidir)\""
CLEANFILES = $(GNOMECC_CAPPLETS_CLEANFILES) $(Desktop_in_files) $(desktop_DATA)
EXTRA_DIST = $(ui_DATA) $(pixmap_DATA)
......
/*
* Copyright (C) 2010 Intel, Inc
*
* 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.
*
* Author: Thomas Wood <thomas.wood@intel.com>
*
*/
#include "cc-mouse-panel.h"
#include <gconf/gconf-client.h>
#include <gtk/gtk.h>
G_DEFINE_DYNAMIC_TYPE (CcMousePanel, cc_mouse_panel, CC_TYPE_PANEL)
#define MOUSE_PANEL_PRIVATE(o) \
(G_TYPE_INSTANCE_GET_PRIVATE ((o), CC_TYPE_MOUSE_PANEL, CcMousePanelPrivate))
struct _CcMousePanelPrivate
{
GtkBuilder *builder;
GConfClient *client;
};
static void
cc_mouse_panel_get_property (GObject *object,
guint property_id,
GValue *value,
GParamSpec *pspec)
{
switch (property_id)
{
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
}
static void
cc_mouse_panel_set_property (GObject *object,
guint property_id,
const GValue *value,
GParamSpec *pspec)
{
switch (property_id)
{
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
}
static void
cc_mouse_panel_dispose (GObject *object)
{
CcMousePanelPrivate *priv = CC_MOUSE_PANEL (object)->priv;
if (priv->client)
{
g_object_unref (priv->client);
priv->client = NULL;
}
if (priv->builder)
{
g_object_unref (priv->builder);
priv->builder = NULL;
}
G_OBJECT_CLASS (cc_mouse_panel_parent_class)->dispose (object);
}
static void
cc_mouse_panel_finalize (GObject *object)
{
G_OBJECT_CLASS (cc_mouse_panel_parent_class)->finalize (object);
}
static void
cc_mouse_panel_class_init (CcMousePanelClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
g_type_class_add_private (klass, sizeof (CcMousePanelPrivate));
object_class->get_property = cc_mouse_panel_get_property;
object_class->set_property = cc_mouse_panel_set_property;
object_class->dispose = cc_mouse_panel_dispose;
object_class->finalize = cc_mouse_panel_finalize;
}
static void
cc_mouse_panel_class_finalize (CcMousePanelClass *klass)
{
}
GtkWidget *
gnome_mouse_properties_init (GConfClient *client, GtkBuilder *dialog);
static void
cc_mouse_panel_init (CcMousePanel *self)
{
CcMousePanelPrivate *priv;
GtkWidget *prefs_widget;
GError *error = NULL;
priv = self->priv = MOUSE_PANEL_PRIVATE (self);
priv->client = gconf_client_get_default ();
priv->builder = gtk_builder_new ();
gtk_builder_add_from_file (priv->builder,
GNOMECC_UI_DIR "/gnome-mouse-properties.ui",
&error);
if (error != NULL)
{
g_warning ("Error loading UI file: %s", error->message);
return;
}
gnome_mouse_properties_init (priv->client, priv->builder);
prefs_widget = (GtkWidget*) gtk_builder_get_object (priv->builder,
"prefs_widget");
gtk_widget_reparent (prefs_widget, GTK_WIDGET (self));
}
void
cc_mouse_panel_register (GIOModule *module)
{
cc_mouse_panel_register_type (G_TYPE_MODULE (module));
g_io_extension_point_implement (CC_SHELL_PANEL_EXTENSION_POINT,
CC_TYPE_MOUSE_PANEL,
"gnome-settings-mouse.desktop", 0);
}
/*
* Copyright (C) 2010 Intel, Inc
*
* 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.
*
* Author: Thomas Wood <thomas.wood@intel.com>
*
*/
#ifndef _CC_MOUSE_PANEL_H
#define _CC_MOUSE_PANEL_H
#include <libgnome-control-center/cc-panel.h>
G_BEGIN_DECLS
#define CC_TYPE_MOUSE_PANEL cc_mouse_panel_get_type()
#define CC_MOUSE_PANEL(obj) \
(G_TYPE_CHECK_INSTANCE_CAST ((obj), \
CC_TYPE_MOUSE_PANEL, CcMousePanel))
#define CC_MOUSE_PANEL_CLASS(klass) \
(G_TYPE_CHECK_CLASS_CAST ((klass), \
CC_TYPE_MOUSE_PANEL, CcMousePanelClass))
#define CC_IS_MOUSE_PANEL(obj) \
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
CC_TYPE_MOUSE_PANEL))
#define CC_IS_MOUSE_PANEL_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE ((klass), \
CC_TYPE_MOUSE_PANEL))
#define CC_MOUSE_PANEL_GET_CLASS(obj) \
(G_TYPE_INSTANCE_GET_CLASS ((obj), \
CC_TYPE_MOUSE_PANEL, CcMousePanelClass))
typedef struct _CcMousePanel CcMousePanel;
typedef struct _CcMousePanelClass CcMousePanelClass;
typedef struct _CcMousePanelPrivate CcMousePanelPrivate;
struct _CcMousePanel
{
CcPanel parent;
CcMousePanelPrivate *priv;
};
struct _CcMousePanelClass
{
CcPanelClass parent_class;
};
GType cc_mouse_panel_get_type (void) G_GNUC_CONST;
void cc_mouse_panel_register (GIOModule *module);
G_END_DECLS
#endif /* _CC_MOUSE_PANEL_H */
......@@ -34,8 +34,8 @@
#include "capplet-util.h"
#include "gconf-property-editor.h"
#include "activate-settings-daemon.h"
#include "capplet-stock-icons.h"
#include "gnome-mouse-accessibility.h"
#include "capplet-stock-icons.h"
#include <sys/types.h>
#include <sys/stat.h>
......@@ -511,19 +511,10 @@ setup_dialog (GtkBuilder *dialog, GConfChangeSet *changeset)
/* Construct the dialog */
static GtkBuilder *
create_dialog (void)
static void
create_dialog (GtkBuilder *dialog)
{
GtkBuilder *dialog;
GtkSizeGroup *size_group;
GError *error = NULL;
dialog = gtk_builder_new ();
gtk_builder_add_from_file (dialog, GNOMECC_UI_DIR "/gnome-mouse-properties.ui", &error);
if (error != NULL) {
g_warning ("Error loading UI file: %s", error->message);
return NULL;
}
size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
gtk_size_group_add_widget (size_group, WID ("acceleration_label"));
......@@ -558,7 +549,6 @@ create_dialog (void)
gtk_size_group_add_widget (size_group, WID ("dwell_delay_long_label"));
gtk_size_group_add_widget (size_group, WID ("dwell_threshold_large_label"));
return dialog;
}
/* Callback issued when a button is clicked on the dialog */
......@@ -573,29 +563,12 @@ dialog_response_cb (GtkDialog *dialog, gint response_id, GConfChangeSet *changes
gtk_main_quit ();
}
int
main (int argc, char **argv)
GtkWidget *
gnome_mouse_properties_init (GConfClient *client, GtkBuilder *dialog)
{
GConfClient *client;
GtkBuilder *dialog;
GtkWidget *dialog_win, *w;
gchar *start_page = NULL;
GOptionContext *context;
GOptionEntry cap_options[] = {
{"show-page", 'p', G_OPTION_FLAG_IN_MAIN,
G_OPTION_ARG_STRING,
&start_page,
/* TRANSLATORS: don't translate the terms in brackets */
N_("Specify the name of the page to show (general|accessibility)"),
N_("page") },
{NULL}
};
context = g_option_context_new (_("- GNOME Mouse Preferences"));
g_option_context_add_main_entries (context, cap_options, GETTEXT_PACKAGE);
capplet_init (context, &argc, &argv);
capplet_init_stock_icons ();
activate_settings_daemon ();
......@@ -604,7 +577,7 @@ main (int argc, char **argv)
gconf_client_add_dir (client, "/desktop/gnome/peripherals/mouse", GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
gconf_client_add_dir (client, "/desktop/gnome/peripherals/touchpad", GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
dialog = create_dialog ();
create_dialog (dialog);
if (dialog) {
setup_dialog (dialog, NULL);
......@@ -634,14 +607,7 @@ main (int argc, char **argv)
}
capplet_set_icon (dialog_win, "input-mouse");
gtk_widget_show (dialog_win);
gtk_main ();
g_object_unref (dialog);
}
g_object_unref (client);
return 0;
return dialog_win;
}
/*
* Copyright (C) 2010 Intel, Inc
*
* 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.
*
* Author: Thomas Wood <thomas.wood@intel.com>
*
*/
#include <config.h>
#include "cc-mouse-panel.h"
#include <glib/gi18n.h>
void
g_io_module_load (GIOModule *module)
{
bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR);
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
/* register the panel */
cc_mouse_panel_register (module);
}
void
g_io_module_unload (GIOModule *module)
{
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment