From 2d08ff01631b5e7a0748fd7fc3290e9daed478ae Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Fri, 06 Apr 2007 22:08:54 +0000 Subject: Move private extensions out of the lib, inside the shell. --- (limited to 'lib') diff --git a/lib/python/_sugar.defs b/lib/python/_sugar.defs index f56b518..b09d0eb 100644 --- a/lib/python/_sugar.defs +++ b/lib/python/_sugar.defs @@ -31,13 +31,6 @@ (gtype-id "SUGAR_TYPE_BROWSER") ) -(define-object KeyGrabber - (in-module "Sugar") - (parent "GObject") - (c-name "SugarKeyGrabber") - (gtype-id "SUGAR_TYPE_KEY_GRABBER") -) - (define-object DownloadManager (in-module "Sugar") (parent "GObject") @@ -52,14 +45,6 @@ (gtype-id "SUGAR_TYPE_DOWNLOAD") ) -(define-object AudioManager - (in-module "Sugar") - (parent "GObject") - (c-name "SugarAudioManager") - (gtype-id "SUGAR_TYPE_AUDIO_MANAGER") -) - - ;; Enumerations and flags ... @@ -70,8 +55,6 @@ (return-type "GType") ) - - ;; From sugar-browser.h (define-function sugar_browser_get_type @@ -216,25 +199,6 @@ ) ) -;; Enumerations and flags ... - - -;; From sugar-audio-manager.h - -(define-function audio_manager_get_type - (c-name "sugar_audio_manager_get_type") - (return-type "GType") -) - -(define-method set_volume - (of-object "SugarAudioManager") - (c-name "sugar_audio_manager_set_volume") - (return-type "none") - (parameters - '("int" "level") - ) -) - ;; From sugar-utils.h (define-function get_screen_dpi diff --git a/lib/python/_sugar.override b/lib/python/_sugar.override index 74c5bcd..35c830f 100644 --- a/lib/python/_sugar.override +++ b/lib/python/_sugar.override @@ -5,11 +5,9 @@ headers #include "pygobject.h" #include "sugar-browser.h" -#include "sugar-key-grabber.h" #include "sugar-address-entry.h" #include "sugar-download-manager.h" #include "sugar-download.h" -#include "sugar-audio-manager.h" #include "pycairo.h" #include diff --git a/lib/src/Makefile.am b/lib/src/Makefile.am index 94ad6bd..88e863a 100644 --- a/lib/src/Makefile.am +++ b/lib/src/Makefile.am @@ -22,30 +22,22 @@ noinst_LTLIBRARIES = libsugarprivate.la libsugarprivate_la_LIBADD = \ $(LIB_LIBS) \ - $(GECKO_LIBS) \ - -lgstinterfaces-0.10 \ - -lgstaudio-0.10 + $(GECKO_LIBS) libsugarprivate_la_SOURCES = \ $(BUILT_SOURCES) \ - eggaccelerators.h \ - eggaccelerators.c \ GeckoContentHandler.h \ GeckoContentHandler.cpp \ GeckoDownload.h \ GeckoDownload.cpp \ - sugar-address-entry.h \ sugar-address-entry.c \ - sugar-audio-manager.c \ - sugar-audio-manager.h \ + sugar-address-entry.h \ sugar-browser.h \ sugar-browser.cpp \ sugar-download.h \ sugar-download.c \ sugar-download-manager.h \ sugar-download-manager.c \ - sugar-key-grabber.h \ - sugar-key-grabber.c \ sugar-utils.c \ sugar-utils.h diff --git a/lib/src/sugar-audio-manager.c b/lib/src/sugar-audio-manager.c deleted file mode 100644 index 6f73cbc..0000000 --- a/lib/src/sugar-audio-manager.c +++ /dev/null @@ -1,168 +0,0 @@ -/* - * Copyright (C) 2006 Red Hat, Inc - * - * Sugar 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. - * - * Sugar 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 -#include -#include -#include - -#include "sugar-audio-manager.h" - -struct _SugarAudioManagerPrivate -{ - GstMixer *mixer; - GstMixerTrack *track; - guint timer_id; -}; - -G_DEFINE_TYPE(SugarAudioManager, sugar_audio_manager, G_TYPE_OBJECT) - -#define SUGAR_AUDIO_MANAGER_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ((object), SUGAR_TYPE_AUDIO_MANAGER, SugarAudioManagerPrivate)) - -/* This is a modified version of code from gnome-control-center */ - -static gboolean -mixer_close_real(SugarAudioManager *manager) -{ - if (manager->priv->mixer != NULL) - { - gst_element_set_state(GST_ELEMENT(manager->priv->mixer), GST_STATE_NULL); - gst_object_unref(GST_OBJECT(manager->priv->mixer)); - g_object_unref(G_OBJECT(manager->priv->track)); - manager->priv->mixer = NULL; - manager->priv->track = NULL; - } - - manager->priv->timer_id = 0; - - return FALSE; -} - -static gboolean -set_mixer_helper(GstMixer *mixer, gpointer user_data) -{ - const GList *tracks; - - tracks = gst_mixer_list_tracks(mixer); - - while (tracks != NULL) { - GstMixerTrack *track = GST_MIXER_TRACK(tracks->data); - - if (GST_MIXER_TRACK_HAS_FLAG(track, GST_MIXER_TRACK_MASTER)) { - SugarAudioManager *manager; - - manager = SUGAR_AUDIO_MANAGER(user_data); - - manager->priv->mixer = mixer; - manager->priv->track = track; - - /* no need to ref the mixer element */ - g_object_ref(manager->priv->track); - return TRUE; - } - - tracks = tracks->next; - } - - return FALSE; -} - -static gboolean -mixer_open(SugarAudioManager *manager) -{ - GList *mixer_list; - - if (manager->priv->timer_id != 0) { - g_source_remove (manager->priv->timer_id); - manager->priv->timer_id = 0; - return TRUE; - } - - mixer_list = gst_audio_default_registry_mixer_filter - (set_mixer_helper, TRUE, manager); - - if (mixer_list == NULL) - return FALSE; - - /* do not unref the mixer as we keep the ref for manager->priv->mixer */ - g_list_free (mixer_list); - - return TRUE; -} - -static void -mixer_close(SugarAudioManager *manager) -{ - manager->priv->timer_id = g_timeout_add (4000, (GSourceFunc)mixer_close_real, manager); -} - -void -sugar_audio_manager_set_volume (SugarAudioManager *manager, - int level) -{ - gint i, *volumes, volume; - GstMixerTrack *track; - - if (mixer_open(manager) == FALSE) - return; - - track = manager->priv->track; - volume = CLAMP(level, 0, 100); - - /* Rescale the volume from [0, 100] to [track min, track max]. */ - volume = (volume / 100.0) * (track->max_volume - track->min_volume) + - track->min_volume; - - volumes = g_new(gint, track->num_channels); - for (i = 0; i < track->num_channels; ++i) - volumes[i] = (gint)volume; - gst_mixer_set_volume(manager->priv->mixer, track, volumes); - g_free (volumes); - - mixer_close(manager); -} - -static void -sugar_audio_manager_finalize (GObject *object) -{ - SugarAudioManager *manager = SUGAR_AUDIO_MANAGER(object); - - mixer_close_real(manager); - - G_OBJECT_CLASS(sugar_audio_manager_parent_class)->finalize(object); -} - -static void -sugar_audio_manager_class_init(SugarAudioManagerClass *klass) -{ - GObjectClass *object_class = G_OBJECT_CLASS(klass); - - gst_init (NULL, NULL); - - object_class->finalize = sugar_audio_manager_finalize; - - g_type_class_add_private(klass, sizeof(SugarAudioManagerPrivate)); -} - -static void -sugar_audio_manager_init(SugarAudioManager *manager) -{ - manager->priv = SUGAR_AUDIO_MANAGER_GET_PRIVATE(manager); -} - - diff --git a/lib/src/sugar-audio-manager.h b/lib/src/sugar-audio-manager.h deleted file mode 100644 index ba72fa0..0000000 --- a/lib/src/sugar-audio-manager.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (C) 2006 Red Hat, Inc - * - * Sugar 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. - * - * Sugar 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. - */ - -#ifndef __SUGAR_AUDIO_MANAGER_H__ -#define __SUGAR_AUDIO_MANAGER_H__ - -#include - -G_BEGIN_DECLS - -typedef struct _SugarAudioManager SugarAudioManager; -typedef struct _SugarAudioManagerClass SugarAudioManagerClass; -typedef struct _SugarAudioManagerPrivate SugarAudioManagerPrivate; - -#define SUGAR_TYPE_AUDIO_MANAGER (sugar_audio_manager_get_type()) -#define SUGAR_AUDIO_MANAGER(object) (G_TYPE_CHECK_INSTANCE_CAST((object), SUGAR_TYPE_AUDIO_MANAGER, SugarAudioManager)) -#define SUGAR_AUDIO_MANAGER_CLASS(klass) (G_TYPE_CHACK_CLASS_CAST((klass), SUGAR_TYPE_AUDIO_MANAGER, SugarAudioManagerClass)) -#define SUGAR_IS_AUDIO_MANAGER(object) (G_TYPE_CHECK_INSTANCE_TYPE((object), SUGAR_TYPE_AUDIO_MANAGER)) -#define SUGAR_IS_AUDIO_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SUGAR_TYPE_AUDIO_MANAGER)) -#define SUGAR_AUDIO_MANAGER_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS((object), SUGAR_TYPE_AUDIO_MANAGER, SugarAudioManagerClass)) - -struct _SugarAudioManager { - GObject base_instance; - - /*< private >*/ - SugarAudioManagerPrivate *priv; -}; - -struct _SugarAudioManagerClass { - GObjectClass base_class; -}; - -GType sugar_audio_manager_get_type (void); -void sugar_audio_manager_set_volume (SugarAudioManager *manager, - int level); - -G_END_DECLS - -#endif /* __SUGAR_AUDIO_MANAGER_H__ */ diff --git a/lib/src/sugar-key-grabber.c b/lib/src/sugar-key-grabber.c deleted file mode 100644 index 8c832a7..0000000 --- a/lib/src/sugar-key-grabber.c +++ /dev/null @@ -1,218 +0,0 @@ -/* - * Copyright (C) 2006 Red Hat, Inc - * - * Sugar 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. - * - * Sugar 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 -#include -#include -#include - -#include "sugar-key-grabber.h" -#include "eggaccelerators.h" -#include "sugar-marshal.h" - -/* we exclude shift, GDK_CONTROL_MASK and GDK_MOD1_MASK since we know what - these modifiers mean - these are the mods whose combinations are bound by the keygrabbing code */ -#define IGNORED_MODS (0x2000 /*Xkb modifier*/ | GDK_LOCK_MASK | \ - GDK_MOD2_MASK | GDK_MOD3_MASK | GDK_MOD4_MASK | GDK_MOD5_MASK) -/* these are the ones we actually use for global keys, we always only check - * for these set */ -#define USED_MODS (GDK_SHIFT_MASK | GDK_CONTROL_MASK | GDK_MOD1_MASK) - -enum { - KEY_PRESSED, - KEY_RELEASED, - N_SIGNALS -}; - -typedef struct { - char *key; - guint keysym; - guint state; - guint keycode; -} Key; - -G_DEFINE_TYPE(SugarKeyGrabber, sugar_key_grabber, G_TYPE_OBJECT) - -static guint signals[N_SIGNALS]; - -static void -free_key_info(Key *key_info) -{ - g_free(key_info->key); - g_free(key_info); -} - -static void -sugar_key_grabber_dispose (GObject *object) -{ - SugarKeyGrabber *grabber = SUGAR_KEY_GRABBER(object); - - if (grabber->keys) { - g_list_foreach(grabber->keys, (GFunc)free_key_info, NULL); - g_list_free(grabber->keys); - grabber->keys = NULL; - } -} - -static void -sugar_key_grabber_class_init(SugarKeyGrabberClass *grabber_class) -{ - GObjectClass *g_object_class = G_OBJECT_CLASS (grabber_class); - - g_object_class->dispose = sugar_key_grabber_dispose; - - signals[KEY_PRESSED] = g_signal_new ("key-pressed", - G_TYPE_FROM_CLASS (grabber_class), - G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, - G_STRUCT_OFFSET (SugarKeyGrabberClass, key_pressed), - NULL, NULL, - sugar_marshal_BOOLEAN__UINT_UINT, - G_TYPE_BOOLEAN, 2, - G_TYPE_UINT, - G_TYPE_UINT); - signals[KEY_RELEASED] = g_signal_new ("key-released", - G_TYPE_FROM_CLASS (grabber_class), - G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, - G_STRUCT_OFFSET (SugarKeyGrabberClass, key_released), - NULL, NULL, - sugar_marshal_BOOLEAN__UINT_UINT, - G_TYPE_BOOLEAN, 2, - G_TYPE_UINT, - G_TYPE_UINT); -} - -char * -sugar_key_grabber_get_key(SugarKeyGrabber *grabber, guint keycode, guint state) -{ - GList *l; - - for (l = grabber->keys; l != NULL; l = l->next) { - Key *keyinfo = (Key *)l->data; - if ((keyinfo->keycode == keycode) && - ((state & USED_MODS) == keyinfo->state)) { - return g_strdup(keyinfo->key); - } - } - - return NULL; -} - -static GdkFilterReturn -filter_events(GdkXEvent *xevent, GdkEvent *event, gpointer data) -{ - SugarKeyGrabber *grabber = (SugarKeyGrabber *)data; - XEvent *xev = (XEvent *)xevent; - - if (xev->type == KeyRelease) { - int return_value; - g_signal_emit (grabber, signals[KEY_RELEASED], 0, xev->xkey.keycode, - xev->xkey.state, &return_value); - if(return_value) - return GDK_FILTER_REMOVE; - } - - if (xev->type == KeyPress) { - int return_value; - g_signal_emit (grabber, signals[KEY_PRESSED], 0, xev->xkey.keycode, - xev->xkey.state, &return_value); - if(return_value) - return GDK_FILTER_REMOVE; - } - - return GDK_FILTER_CONTINUE; -} - -static void -sugar_key_grabber_init(SugarKeyGrabber *grabber) -{ - GdkScreen *screen; - - screen = gdk_screen_get_default(); - grabber->root = gdk_screen_get_root_window(screen); - grabber->keys = NULL; - - gdk_window_add_filter(grabber->root, filter_events, grabber); -} - -/* grab_key and grab_key_real are from - * gnome-control-center/gnome-settings-daemon/gnome-settings-multimedia-keys.c - */ - -static gboolean -grab_key_real (Key *key, GdkWindow *root, gboolean grab, int result) -{ - gdk_error_trap_push (); - if (grab) - XGrabKey (GDK_DISPLAY(), key->keycode, (result | key->state), - GDK_WINDOW_XID (root), True, GrabModeAsync, GrabModeAsync); - else - XUngrabKey(GDK_DISPLAY(), key->keycode, (result | key->state), - GDK_WINDOW_XID (root)); - gdk_flush (); - - gdk_error_trap_pop (); - - return TRUE; -} - -#define N_BITS 32 -static void -grab_key (SugarKeyGrabber *grabber, Key *key, gboolean grab) -{ - int indexes[N_BITS];/*indexes of bits we need to flip*/ - int i, bit, bits_set_cnt; - int uppervalue; - guint mask_to_traverse = IGNORED_MODS & ~ key->state; - - bit = 0; - for (i = 0; i < N_BITS; i++) { - if (mask_to_traverse & (1<root, grab, result) == FALSE) - return; - } -} - -void -sugar_key_grabber_grab(SugarKeyGrabber *grabber, const char *key) -{ - Key *keyinfo; - - keyinfo = g_new0 (Key, 1); - keyinfo->key = g_strdup(key); - egg_accelerator_parse_virtual (key, &keyinfo->keysym, - &keyinfo->keycode, &keyinfo->state); - - grab_key(grabber, keyinfo, TRUE); - - grabber->keys = g_list_append(grabber->keys, keyinfo); -} diff --git a/lib/src/sugar-key-grabber.h b/lib/src/sugar-key-grabber.h deleted file mode 100644 index 3e9ab5d..0000000 --- a/lib/src/sugar-key-grabber.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (C) 2006 Red Hat, Inc - * - * Sugar 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. - * - * Sugar 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. - */ - -#ifndef __SUGAR_KEY_GRABBER_H__ -#define __SUGAR_KEY_GRABBER_H__ - -#include - -G_BEGIN_DECLS - -typedef struct _SugarKeyGrabber SugarKeyGrabber; -typedef struct _SugarKeyGrabberClass SugarKeyGrabberClass; -typedef struct _SugarKeyGrabberPrivate SugarKeyGrabberPrivate; - -#define SUGAR_TYPE_KEY_GRABBER (sugar_key_grabber_get_type()) -#define SUGAR_KEY_GRABBER(object) (G_TYPE_CHECK_INSTANCE_CAST((object), SUGAR_TYPE_KEY_GRABBER, SugarKeyGrabber)) -#define SUGAR_KEY_GRABBER_CLASS(klass) (G_TYPE_CHACK_CLASS_CAST((klass), SUGAR_TYPE_KEY_GRABBER, SugarKeyGrabberClass)) -#define SUGAR_IS_KEY_GRABBER(object) (G_TYPE_CHECK_INSTANCE_TYPE((object), SUGAR_TYPE_KEY_GRABBER)) -#define SUGAR_IS_KEYGRABBER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SUGAR_TYPE_KEY_GRABBER)) -#define SUGAR_KEY_GRABBER_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS((object), SUGAR_TYPE_KEY_GRABBER, SugarKeyGrabberClass)) - -struct _SugarKeyGrabber { - GObject base_instance; - - GdkWindow *root; - GList *keys; -}; - -struct _SugarKeyGrabberClass { - GObjectClass base_class; - - gboolean (* key_pressed) (SugarKeyGrabber *grabber, - guint keycode, - guint state); - gboolean (* key_released) (SugarKeyGrabber *grabber, - guint keycode, - guint state); -}; - -GType sugar_key_grabber_get_type (void); -void sugar_key_grabber_grab (SugarKeyGrabber *grabber, - const char *key); -char *sugar_key_grabber_get_key (SugarKeyGrabber *grabber, - guint keycode, - guint state); - -G_END_DECLS - -#endif /* __SUGAR_KEY_GRABBER_H__ */ diff --git a/lib/src/sugar-marshal.list b/lib/src/sugar-marshal.list index 45c0401..81b3ae1 100644 --- a/lib/src/sugar-marshal.list +++ b/lib/src/sugar-marshal.list @@ -2,4 +2,3 @@ VOID:OBJECT,STRING,LONG,LONG VOID:OBJECT,LONG VOID:OBJECT BOOLEAN:BOXED -BOOLEAN:UINT,UINT -- cgit v0.9.1