diff options
Diffstat (limited to 'libwindow-settings/mate-window-manager.c')
-rw-r--r-- | libwindow-settings/mate-window-manager.c | 270 |
1 files changed, 0 insertions, 270 deletions
diff --git a/libwindow-settings/mate-window-manager.c b/libwindow-settings/mate-window-manager.c deleted file mode 100644 index ece2e7d3..00000000 --- a/libwindow-settings/mate-window-manager.c +++ /dev/null @@ -1,270 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */ - -/* mate-window-manager.h - * Copyright (C) 2002 Seth Nickell - * Copyright (C) 2002 Red Hat, Inc. - * - * Written by: Seth Nickell <[email protected]>, - * Havoc Pennington <[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, 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., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301, USA. - */ - -#include "mate-window-manager.h" - -#include <gmodule.h> - -static GObjectClass *parent_class; - -struct _MateWindowManagerPrivate { - char *window_manager_name; - MateDesktopItem *ditem; -}; - -GObject * -mate_window_manager_new (MateDesktopItem *it) -{ - const char *settings_lib; - char *module_name; - MateWindowManagerNewFunc wm_new_func = NULL; - GObject *wm; - GModule *module; - gboolean success; - - settings_lib = mate_desktop_item_get_string (it, "X-MATE-WMSettingsModule"); - - module_name = g_module_build_path (MATE_WINDOW_MANAGER_MODULE_PATH, - settings_lib); - - module = g_module_open (module_name, G_MODULE_BIND_LAZY); - if (module == NULL) { - g_warning ("Couldn't load window manager settings module `%s' (%s)", module_name, g_module_error ()); - g_free (module_name); - return NULL; - } - - success = g_module_symbol (module, "window_manager_new", - (gpointer *) &wm_new_func); - - if ((!success) || wm_new_func == NULL) { - g_warning ("Couldn't load window manager settings module `%s`, couldn't find symbol \'window_manager_new\'", module_name); - g_free (module_name); - return NULL; - } - - g_free (module_name); - - wm = (* wm_new_func) (MATE_WINDOW_MANAGER_INTERFACE_VERSION); - - if (wm == NULL) - return NULL; - - (MATE_WINDOW_MANAGER (wm))->p->window_manager_name = g_strdup (mate_desktop_item_get_string (it, MATE_DESKTOP_ITEM_NAME)); - (MATE_WINDOW_MANAGER (wm))->p->ditem = mate_desktop_item_ref (it); - - return wm; -} - -const char * -mate_window_manager_get_name (MateWindowManager *wm) -{ - return wm->p->window_manager_name; -} - -MateDesktopItem * -mate_window_manager_get_ditem (MateWindowManager *wm) -{ - return mate_desktop_item_ref (wm->p->ditem); -} - -GList * -mate_window_manager_get_theme_list (MateWindowManager *wm) -{ - MateWindowManagerClass *klass = MATE_WINDOW_MANAGER_GET_CLASS (wm); - if (klass->get_theme_list) - return klass->get_theme_list (wm); - else - return NULL; -} - -char * -mate_window_manager_get_user_theme_folder (MateWindowManager *wm) -{ - MateWindowManagerClass *klass = MATE_WINDOW_MANAGER_GET_CLASS (wm); - if (klass->get_user_theme_folder) - return klass->get_user_theme_folder (wm); - else - return NULL; -} - -void -mate_window_manager_get_double_click_actions (MateWindowManager *wm, - const MateWMDoubleClickAction **actions, - int *n_actions) -{ - MateWindowManagerClass *klass = MATE_WINDOW_MANAGER_GET_CLASS (wm); - - *actions = NULL; - *n_actions = 0; - - if (klass->get_double_click_actions) - klass->get_double_click_actions (wm, actions, n_actions); -} - -void -mate_window_manager_change_settings (MateWindowManager *wm, - const MateWMSettings *settings) -{ - MateWindowManagerClass *klass = MATE_WINDOW_MANAGER_GET_CLASS (wm); - - (* klass->change_settings) (wm, settings); -} - -void -mate_window_manager_get_settings (MateWindowManager *wm, - MateWMSettings *settings) -{ - MateWindowManagerClass *klass = MATE_WINDOW_MANAGER_GET_CLASS (wm); - int mask; - - mask = (* klass->get_settings_mask) (wm); - settings->flags &= mask; /* avoid back compat issues by not returning - * fields to the caller that the WM module - * doesn't know about - */ - - (* klass->get_settings) (wm, settings); -} - -static void -mate_window_manager_init (MateWindowManager *mate_window_manager, MateWindowManagerClass *class) -{ - mate_window_manager->p = g_new0 (MateWindowManagerPrivate, 1); -} - -static void -mate_window_manager_finalize (GObject *object) -{ - MateWindowManager *mate_window_manager; - - g_return_if_fail (object != NULL); - g_return_if_fail (IS_MATE_WINDOW_MANAGER (object)); - - mate_window_manager = MATE_WINDOW_MANAGER (object); - - g_free (mate_window_manager->p); - - parent_class->finalize (object); -} - -enum { - SETTINGS_CHANGED, - LAST_SIGNAL -}; - -static guint signals[LAST_SIGNAL] = { 0 }; - -static void -mate_window_manager_class_init (MateWindowManagerClass *class) -{ - GObjectClass *object_class; - - object_class = G_OBJECT_CLASS (class); - - object_class->finalize = mate_window_manager_finalize; - - parent_class = g_type_class_peek_parent (class); - - signals[SETTINGS_CHANGED] = - g_signal_new ("settings_changed", - G_OBJECT_CLASS_TYPE (class), - G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE, - G_STRUCT_OFFSET (MateWindowManagerClass, settings_changed), - NULL, NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0); -} - -GType -mate_window_manager_get_type (void) -{ - static GType mate_window_manager_type = 0; - - if (!mate_window_manager_type) { - static GTypeInfo mate_window_manager_info = { - sizeof (MateWindowManagerClass), - NULL, /* GBaseInitFunc */ - NULL, /* GBaseFinalizeFunc */ - (GClassInitFunc) mate_window_manager_class_init, - NULL, /* GClassFinalizeFunc */ - NULL, /* user-supplied data */ - sizeof (MateWindowManager), - 0, /* n_preallocs */ - (GInstanceInitFunc) mate_window_manager_init, - NULL - }; - - mate_window_manager_type = - g_type_register_static (G_TYPE_OBJECT, - "MateWindowManager", - &mate_window_manager_info, 0); - } - - return mate_window_manager_type; -} - -void -mate_window_manager_settings_changed (MateWindowManager *wm) -{ - g_signal_emit (wm, signals[SETTINGS_CHANGED], 0); -} - -/* Helper functions for MateWMSettings */ -MateWMSettings * -mate_wm_settings_copy (MateWMSettings *settings) -{ - MateWMSettings *retval; - - g_return_val_if_fail (settings != NULL, NULL); - - retval = g_new (MateWMSettings, 1); - *retval = *settings; - - if (retval->flags & MATE_WM_SETTING_FONT) - retval->font = g_strdup (retval->font); - if (retval->flags & MATE_WM_SETTING_MOUSE_MOVE_MODIFIER) - retval->mouse_move_modifier = g_strdup (retval->mouse_move_modifier); - if (retval->flags & MATE_WM_SETTING_THEME) - retval->theme = g_strdup (retval->theme); - - return retval; -} - -void -mate_wm_settings_free (MateWMSettings *settings) -{ - g_return_if_fail (settings != NULL); - - if (settings->flags & MATE_WM_SETTING_FONT) - g_free ((void *) settings->font); - if (settings->flags & MATE_WM_SETTING_MOUSE_MOVE_MODIFIER) - g_free ((void *) settings->mouse_move_modifier); - if (settings->flags & MATE_WM_SETTING_THEME) - g_free ((void *)settings->theme); - - g_free (settings); -} - |