[brasero] Don't store some settings with GConf anymore (like window size, position of widgets, ...) but in a n
- From: Philippe Rouquier <philippr src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [brasero] Don't store some settings with GConf anymore (like window size, position of widgets, ...) but in a n
- Date: Fri, 23 Oct 2009 10:10:54 +0000 (UTC)
commit 8e5e403ae9223eb283201c1fa01b038329ce1e6e
Author: Philippe Rouquier <bonfire-app wanadoo fr>
Date: Fri Oct 23 10:58:52 2009 +0200
Don't store some settings with GConf anymore (like window size, position of widgets, ...) but in a new BraseroSetting object that saves and loads them to and from a GKeyFile
data/brasero.schemas.in | 120 ---------
src/Makefile.am | 4 +-
src/brasero-app.c | 253 ++++--------------
src/brasero-data-disc.c | 40 ++--
src/brasero-file-chooser.c | 43 ++--
src/brasero-filter-option.h | 2 -
src/brasero-layout.c | 516 ++++++------------------------------
src/brasero-player-bacon.c | 25 +-
src/brasero-player.c | 72 +++---
src/brasero-playlist.c | 9 -
src/brasero-preview.h | 2 -
src/brasero-project.c | 33 +--
src/brasero-search-entry.c | 255 +++++++-----------
src/brasero-setting.c | 611 +++++++++++++++++++++++++++++++++++++++++++
src/brasero-setting.h | 106 ++++++++
src/brasero-xsession.c | 3 -
src/main.c | 2 +
17 files changed, 1041 insertions(+), 1055 deletions(-)
---
diff --git a/data/brasero.schemas.in b/data/brasero.schemas.in
index a5ddb53..152bca6 100644
--- a/data/brasero.schemas.in
+++ b/data/brasero.schemas.in
@@ -95,66 +95,6 @@
</schema>
<schema>
- <key>/schemas/apps/brasero/display/sidepane</key>
- <applyto>/apps/brasero/display/sidepane</applyto>
- <owner>brasero</owner>
- <type>bool</type>
- <default>false</default>
- <locale name="C">
- <short>Enable side pane</short>
- <long>Whether to display a side pane. Set to true to use it.</long>
- </locale>
- </schema>
-
- <schema>
- <key>/schemas/apps/brasero/display/audio_pane</key>
- <applyto>/apps/brasero/display/audio_pane</applyto>
- <owner>brasero</owner>
- <type>string</type>
- <default>Chooser</default>
- <locale name="C">
- <short>Pane to display audio projects</short>
- <long>The pane to display with audio projects. It should be one of the following: "Chooser", "Search" or "Playlist".</long>
- </locale>
- </schema>
-
- <schema>
- <key>/schemas/apps/brasero/display/data_pane</key>
- <applyto>/apps/brasero/display/data_pane</applyto>
- <owner>brasero</owner>
- <type>string</type>
- <default>Chooser</default>
- <locale name="C">
- <short>Pane to display data projects</short>
- <long>The pane to display with data projects. It should be one of the following: "Chooser" or "Search".</long>
- </locale>
- </schema>
-
- <schema>
- <key>/schemas/apps/brasero/display/video_pane</key>
- <applyto>/apps/brasero/display/video_pane</applyto>
- <owner>brasero</owner>
- <type>string</type>
- <default>Chooser</default>
- <locale name="C">
- <short>Pane to display video projects</short>
- <long>The pane to display with video projects. It should be one of the following: "Chooser", "Search" or "Playlist".</long>
- </locale>
- </schema>
-
- <schema>
- <key>/schemas/apps/brasero/display/layout</key>
- <applyto>/apps/brasero/display/layout</applyto>
- <owner>brasero</owner>
- <type>int</type>
- <default>0</default>
- <locale name="C">
- <short>Layout of UI</short>
- <long>This key sets where the project pane should be (0 = on the right, 1 = on the left, 2 = at the top, 3 = at the bottom)</long>
- </locale>
- </schema>
-
- <schema>
<key>/schemas/apps/brasero/display/viewer</key>
<applyto>/apps/brasero/display/viewer</applyto>
<owner>brasero</owner>
@@ -166,54 +106,6 @@
</locale>
</schema>
- <schema>
- <key>/schemas/apps/brasero/display/image_width</key>
- <applyto>/apps/brasero/display/image_width</applyto>
- <owner>brasero</owner>
- <type>int</type>
- <default>120</default>
- <locale name="C">
- <short>Width for image preview</short>
- <long>Default width for image preview.</long>
- </locale>
- </schema>
-
- <schema>
- <key>/schemas/apps/brasero/display/image_height</key>
- <applyto>/apps/brasero/display/image_height</applyto>
- <owner>brasero</owner>
- <type>int</type>
- <default>90</default>
- <locale name="C">
- <short>Height of image preview</short>
- <long>Default height for image preview.</long>
- </locale>
- </schema>
-
- <schema>
- <key>/schemas/apps/brasero/display/video_width</key>
- <applyto>/apps/brasero/display/video_width</applyto>
- <owner>brasero</owner>
- <type>int</type>
- <default>120</default>
- <locale name="C">
- <short>Width for video preview</short>
- <long>Default width for video preview.</long>
- </locale>
- </schema>
-
- <schema>
- <key>/schemas/apps/brasero/display/video_height</key>
- <applyto>/apps/brasero/display/video_height</applyto>
- <owner>brasero</owner>
- <type>int</type>
- <default>90</default>
- <locale name="C">
- <short>Height for video preview</short>
- <long>Default height for video preview.</long>
- </locale>
- </schema>
-
<schema>
<key>/schemas/apps/brasero/filter/hidden</key>
<applyto>/apps/brasero/filter/hidden</applyto>
@@ -250,17 +142,5 @@
</locale>
</schema>
- <schema>
- <key>/schemas/apps/brasero/filter/notify</key>
- <applyto>/apps/brasero/filter/notify</applyto>
- <owner>brasero</owner>
- <type>bool</type>
- <default>true</default>
- <locale name="C">
- <short>Should brasero notify when files are filtered</short>
- <long>Should brasero notify when files are filtered. Set to true, brasero will display the notification.</long>
- </locale>
- </schema>
-
</schemalist>
</gconfschemafile>
diff --git a/src/Makefile.am b/src/Makefile.am
index 80baeab..90b1e0e 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -123,7 +123,9 @@ brasero_SOURCES = \
eggsmclient.c \
eggsmclient.h \
eggsmclient-private.h \
- eggsmclient-xsmp.c
+ eggsmclient-xsmp.c \
+ brasero-setting.h \
+ brasero-setting.c
brasero_LDADD = \
$(top_builddir)/libbrasero-media/libbrasero-media.la \
diff --git a/src/brasero-app.c b/src/brasero-app.c
index be55d40..62337b2 100644
--- a/src/brasero-app.c
+++ b/src/brasero-app.c
@@ -30,16 +30,12 @@
#include <gtk/gtk.h>
-#include <libxml/xmlerror.h>
-#include <libxml/xmlwriter.h>
-#include <libxml/parser.h>
-#include <libxml/xmlstring.h>
-
#include <unique/unique.h>
#include "brasero-misc.h"
#include "brasero-app.h"
+#include "brasero-setting.h"
#include "brasero-blank-dialog.h"
#include "brasero-sum-dialog.h"
#include "brasero-eject-dialog.h"
@@ -66,6 +62,8 @@
typedef struct _BraseroAppPrivate BraseroAppPrivate;
struct _BraseroAppPrivate
{
+ BraseroSetting *setting;
+
GdkWindow *parent;
GtkWidget *mainwin;
@@ -84,12 +82,9 @@ struct _BraseroAppPrivate
guint tooltip_ctx;
- gint width;
- gint height;
-
gchar *saved_contents;
- guint is_maximised:1;
+ guint is_maximized:1;
guint mainwin_running:1;
};
@@ -98,10 +93,6 @@ struct _BraseroAppPrivate
G_DEFINE_TYPE (BraseroApp, brasero_app, G_TYPE_OBJECT);
-
-#define SESSION_VERSION "0.1"
-#define BRASERO_SESSION_TMP_SESSION_PATH "brasero.session"
-
/**
* Menus and toolbar
*/
@@ -198,17 +189,10 @@ brasero_app_get_path (const gchar *name)
static gboolean
brasero_app_load_window_state (BraseroApp *app)
{
- gchar *height_str = NULL;
- gchar *width_str = NULL;
- gchar *state_str = NULL;
- gchar *version = NULL;
- gint height;
gint width;
+ gint height;
gint state = 0;
-
- gchar *session_path;
- xmlNodePtr item;
- xmlDocPtr session = NULL;
+ gpointer value;
GdkScreen *screen;
GdkRectangle rect;
@@ -223,98 +207,30 @@ brasero_app_load_window_state (BraseroApp *app)
screen = gtk_window_get_screen (GTK_WINDOW (priv->mainwin));
monitor = gdk_screen_get_monitor_at_window (screen, GTK_WIDGET (priv->mainwin)->window);
gdk_screen_get_monitor_geometry (screen, monitor, &rect);
- width = rect.width / 100 * 85;
- height = rect.height / 100 * 85;
-
- session_path = brasero_app_get_path (BRASERO_SESSION_TMP_SESSION_PATH);
- if (!session_path)
- goto end;
-
- session = xmlParseFile (session_path);
- g_free (session_path);
-
- if (!session)
- goto end;
-
- item = xmlDocGetRootElement (session);
- if (!item)
- goto end;
-
- if (xmlStrcmp (item->name, (const xmlChar *) "Session") || item->next)
- goto end;
-
- item = item->children;
- while (item) {
- if (!xmlStrcmp (item->name, (const xmlChar *) "version")) {
- if (version)
- goto end;
-
- version = (char *) xmlNodeListGetString (session,
- item->xmlChildrenNode,
- 1);
- }
- else if (!xmlStrcmp (item->name, (const xmlChar *) "width")) {
- if (width_str)
- goto end;
-
- width_str = (char *) xmlNodeListGetString (session,
- item->xmlChildrenNode,
- 1);
- }
- else if (!xmlStrcmp (item->name, (const xmlChar *) "height")) {
- if (height_str)
- goto end;
-
- height_str = (char *) xmlNodeListGetString (session,
- item->xmlChildrenNode,
- 1);
- }
- else if (!xmlStrcmp (item->name, (const xmlChar *) "state")) {
- if (state_str)
- goto end;
-
- state_str = (char *) xmlNodeListGetString (session,
- item->xmlChildrenNode,
- 1);
- }
- else if (item->type == XML_ELEMENT_NODE)
- goto end;
-
- item = item->next;
- }
-
- if (!version || strcmp (version, SESSION_VERSION))
- goto end;
-
- /* restore the window state */
- if (height_str)
- height = (int) g_strtod (height_str, NULL);
-
- if (width_str)
- width = (int) g_strtod (width_str, NULL);
-
- if (state_str)
- state = (int) g_strtod (state_str, NULL);
-
-end:
- if (height_str)
- g_free (height_str);
- if (width_str)
- g_free (width_str);
+ brasero_setting_get_value (brasero_setting_get_default (),
+ BRASERO_SETTING_WIN_WIDTH,
+ &value);
+ width = GPOINTER_TO_INT (value);
- if (state_str)
- g_free (state_str);
+ brasero_setting_get_value (brasero_setting_get_default (),
+ BRASERO_SETTING_WIN_HEIGHT,
+ &value);
+ height = GPOINTER_TO_INT (value);
- if (version)
- g_free (version);
+ brasero_setting_get_value (brasero_setting_get_default (),
+ BRASERO_SETTING_WIN_MAXIMIZED,
+ &value);
+ state = GPOINTER_TO_INT (value);
- xmlFreeDoc (session);
-
- if (width && height)
+ if (width > 0 && height > 0)
gtk_window_resize (GTK_WINDOW (priv->mainwin),
width,
height);
+ else
+ gtk_window_resize (GTK_WINDOW (priv->mainwin),
+ rect.width / 100 *85,
+ rect.height / 100 * 85);
if (state)
gtk_window_maximize (GTK_WINDOW (priv->mainwin));
@@ -322,86 +238,6 @@ end:
return TRUE;
}
-void
-brasero_app_save_window_state (BraseroApp *app)
-{
- gint success;
- gchar *session_path;
- xmlTextWriter *session;
- BraseroAppPrivate *priv;
-
- priv = BRASERO_APP_PRIVATE (app);
-
- /* now save the state of the window */
- session_path = brasero_app_get_path (BRASERO_SESSION_TMP_SESSION_PATH);
- if (!session_path)
- return;
-
- /* write information */
- session = xmlNewTextWriterFilename (session_path, 0);
- if (!session) {
- g_free (session_path);
- return;
- }
-
- xmlTextWriterSetIndent (session, 1);
- xmlTextWriterSetIndentString (session, (xmlChar *) "\t");
-
- success = xmlTextWriterStartDocument (session,
- NULL,
- NULL,
- NULL);
- if (success < 0)
- goto error;
-
- success = xmlTextWriterStartElement (session,
- (xmlChar *) "Session");
- if (success < 0)
- goto error;
-
- success = xmlTextWriterWriteElement (session,
- (xmlChar *) "version",
- (xmlChar *) SESSION_VERSION);
- if (success < 0)
- goto error;
-
- success = xmlTextWriterWriteFormatElement (session,
- (xmlChar *) "width",
- "%i",
- priv->width);
- if (success < 0)
- goto error;
-
- success = xmlTextWriterWriteFormatElement (session,
- (xmlChar *) "height",
- "%i",
- priv->height);
- if (success < 0)
- goto error;
-
- success = xmlTextWriterWriteFormatElement (session,
- (xmlChar *) "state",
- "%i",
- priv->is_maximised);
- if (success < 0)
- goto error;
-
- success = xmlTextWriterEndElement (session);
- if (success < 0)
- goto error;
-
- xmlTextWriterEndDocument (session);
- xmlFreeTextWriter (session);
- g_free (session_path);
- return;
-
-error:
- xmlTextWriterEndDocument (session);
- xmlFreeTextWriter (session);
- g_remove (session_path);
- g_free (session_path);
-}
-
/**
* returns FALSE when nothing prevents the shutdown
* returns TRUE when shutdown should be delayed
@@ -640,7 +476,6 @@ on_delete_cb (GtkWidget *window, GdkEvent *event, BraseroApp *app)
if (brasero_app_save_contents (app, TRUE))
return TRUE;
- brasero_app_save_window_state (app);
return FALSE;
}
@@ -654,10 +489,8 @@ on_exit_cb (GtkAction *action, BraseroApp *app)
if (brasero_app_save_contents (app, TRUE))
return;
- if (priv->mainwin) {
- brasero_app_save_window_state (app);
+ if (priv->mainwin)
gtk_widget_destroy (GTK_WIDGET (priv->mainwin));
- }
}
gboolean
@@ -1109,10 +942,18 @@ on_window_state_changed_cb (GtkWidget *widget,
priv = BRASERO_APP_PRIVATE (app);
- if (event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED)
- priv->is_maximised = 1;
- else
- priv->is_maximised = 0;
+ if (event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED) {
+ priv->is_maximized = 1;
+ brasero_setting_set_value (brasero_setting_get_default (),
+ BRASERO_SETTING_WIN_MAXIMIZED,
+ GINT_TO_POINTER (1));
+ }
+ else {
+ priv->is_maximized = 0;
+ brasero_setting_set_value (brasero_setting_get_default (),
+ BRASERO_SETTING_WIN_MAXIMIZED,
+ GINT_TO_POINTER (0));
+ }
return FALSE;
}
@@ -1126,9 +967,13 @@ on_configure_event_cb (GtkWidget *widget,
priv = BRASERO_APP_PRIVATE (app);
- if (!priv->is_maximised) {
- priv->width = event->width;
- priv->height = event->height;
+ if (!priv->is_maximized) {
+ brasero_setting_set_value (brasero_setting_get_default (),
+ BRASERO_SETTING_WIN_WIDTH,
+ GINT_TO_POINTER (event->width));
+ brasero_setting_set_value (brasero_setting_get_default (),
+ BRASERO_SETTING_WIN_HEIGHT,
+ GINT_TO_POINTER (event->height));
}
return FALSE;
@@ -1701,11 +1546,15 @@ brasero_app_init (BraseroApp *object)
{
BraseroAppPrivate *priv;
+ priv = BRASERO_APP_PRIVATE (object);
+
+ /* Load settings */
+ priv->setting = brasero_setting_get_default ();
+ brasero_setting_load (priv->setting);
+
/* Connect to session */
brasero_session_connect (object);
- priv = BRASERO_APP_PRIVATE (object);
-
g_set_application_name (_("Brasero Disc Burner"));
gtk_window_set_default_icon_name ("brasero");
}
@@ -1717,6 +1566,10 @@ brasero_app_finalize (GObject *object)
priv = BRASERO_APP_PRIVATE (object);
+ brasero_setting_save (priv->setting);
+ g_object_unref (priv->setting);
+ priv->setting = NULL;
+
brasero_session_disconnect (BRASERO_APP (object));
if (priv->saved_contents) {
diff --git a/src/brasero-data-disc.c b/src/brasero-data-disc.c
index ff3d67b..e8d8cc5 100644
--- a/src/brasero-data-disc.c
+++ b/src/brasero-data-disc.c
@@ -33,8 +33,6 @@
#include <gtk/gtk.h>
-#include <gconf/gconf-client.h>
-
#include "brasero-misc.h"
#include "eggtreemultidnd.h"
@@ -60,7 +58,7 @@
#include "brasero-session.h"
#include "brasero-volume.h"
-
+#include "brasero-setting.h"
typedef struct _BraseroDataDiscPrivate BraseroDataDiscPrivate;
struct _BraseroDataDiscPrivate
@@ -164,8 +162,6 @@ enum {
TARGET_URIS_LIST,
};
-#define GCONF_COLUMN_KEY "/apps/brasero/display/data_column"
-#define GCONF_COLUMN_ORDER_KEY "/apps/brasero/display/data_sort_order"
static GtkTargetEntry ntables_cd [] = {
{BRASERO_DND_TARGET_DATA_TRACK_REFERENCE_LIST, GTK_TARGET_SAME_WIDGET, TREE_MODEL_ROW},
@@ -1307,20 +1303,16 @@ brasero_data_disc_sort_column_changed (GtkTreeSortable *sortable,
BraseroDataDisc *disc)
{
GtkSortType sort_order;
- GConfClient *client;
gint sort_column;
gtk_tree_sortable_get_sort_column_id (sortable, &sort_column, &sort_order);
- client = gconf_client_get_default ();
- gconf_client_set_int (client,
- GCONF_COLUMN_KEY,
- sort_column,
- NULL);
- gconf_client_set_int (client,
- GCONF_COLUMN_ORDER_KEY,
- sort_order,
- NULL);
+ brasero_setting_set_value (brasero_setting_get_default (),
+ BRASERO_SETTING_DATA_DISC_COLUMN,
+ GINT_TO_POINTER (sort_column));
+ brasero_setting_set_value (brasero_setting_get_default (),
+ BRASERO_SETTING_DATA_DISC_COLUMN_ORDER,
+ GINT_TO_POINTER (sort_order));
}
static BraseroDiscResult
@@ -1331,21 +1323,22 @@ brasero_data_disc_set_track (BraseroDataDisc *disc,
BraseroDataDiscPrivate *priv;
BraseroStatus *status;
GtkWidget *message;
- GConfClient *client;
gint sort_column;
+ gpointer value;
gint sort_order;
priv = BRASERO_DATA_DISC_PRIVATE (disc);
priv->project = g_object_ref (track);
- client = gconf_client_get_default ();
- sort_column = gconf_client_get_int (client,
- GCONF_COLUMN_KEY,
- NULL);
- sort_order = gconf_client_get_int (client,
- GCONF_COLUMN_ORDER_KEY,
- NULL);
+ brasero_setting_get_value (brasero_setting_get_default (),
+ BRASERO_SETTING_DATA_DISC_COLUMN,
+ &value);
+ sort_column = GPOINTER_TO_INT (value);
+ brasero_setting_get_value (brasero_setting_get_default (),
+ BRASERO_SETTING_DATA_DISC_COLUMN_ORDER,
+ &value);
+ sort_order = GPOINTER_TO_INT (value);
if ((sort_column == BRASERO_DATA_TREE_MODEL_SIZE
|| sort_column == BRASERO_DATA_TREE_MODEL_MIME_DESC
@@ -1355,7 +1348,6 @@ brasero_data_disc_set_track (BraseroDataDisc *disc,
gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (track),
sort_column,
sort_order);
- g_object_unref (client);
/* filtered files */
priv->filter = brasero_file_filtered_new (priv->project);
diff --git a/src/brasero-file-chooser.c b/src/brasero-file-chooser.c
index 4820f3f..eab1d2c 100644
--- a/src/brasero-file-chooser.c
+++ b/src/brasero-file-chooser.c
@@ -36,10 +36,9 @@
#include <gtk/gtk.h>
-#include <gconf/gconf-client.h>
-
#include "eggtreemultidnd.h"
+#include "brasero-setting.h"
#include "brasero-file-chooser.h"
#include "brasero-uri-container.h"
#include "brasero-layout-object.h"
@@ -68,10 +67,6 @@ struct BraseroFileChooserPrivate {
static GObjectClass *parent_class = NULL;
-#define BRASERO_KEY_DISPLAY_FILE_CHOOSER_PERCENT "/apps/brasero/display/file_chooser_percent"
-#define BRASERO_KEY_DISPLAY_BRASERO_FILE_CHOOSER_PERCENT "/apps/brasero/display/file_brasero_chooser_percent"
-
-
GType
brasero_file_chooser_get_type ()
{
@@ -133,18 +128,14 @@ static void
brasero_file_chooser_paned_destroy (GObject *object,
gpointer NULL_data)
{
- gint percent;
- GConfClient *client;
-
- percent = GPOINTER_TO_INT (g_object_get_data (object, "position-percent"));
-
- client = gconf_client_get_default ();
if (GPOINTER_TO_INT (g_object_get_data (object, "is-stock-file-chooser")))
- gconf_client_set_int (client, BRASERO_KEY_DISPLAY_FILE_CHOOSER_PERCENT, percent, NULL);
+ brasero_setting_set_value (brasero_setting_get_default (),
+ BRASERO_SETTING_STOCK_FILE_CHOOSER_PERCENT,
+ g_object_get_data (object, "position-percent"));
else
- gconf_client_set_int (client, BRASERO_KEY_DISPLAY_BRASERO_FILE_CHOOSER_PERCENT, percent, NULL);
-
- g_object_unref (client);
+ brasero_setting_set_value (brasero_setting_get_default (),
+ BRASERO_SETTING_BRASERO_FILE_CHOOSER_PERCENT,
+ g_object_get_data (object, "position-percent"));
}
static void
@@ -152,24 +143,28 @@ brasero_file_chooser_paned_map_event (GtkWidget *widget,
GdkEvent *event,
gpointer NULL_data)
{
- gint percent;
gint position;
- GConfClient *client;
+ gpointer percent;
GtkWidget *toplevel;
toplevel = gtk_widget_get_toplevel (GTK_WIDGET (widget));
- client = gconf_client_get_default ();
if (G_TYPE_FROM_INSTANCE (toplevel) == GTK_TYPE_FILE_CHOOSER_DIALOG) {
g_object_set_data (G_OBJECT (widget), "is-stock-file-chooser", GINT_TO_POINTER (1));
- percent = gconf_client_get_int (client, BRASERO_KEY_DISPLAY_FILE_CHOOSER_PERCENT, NULL);
+ brasero_setting_get_value (brasero_setting_get_default (),
+ BRASERO_SETTING_STOCK_FILE_CHOOSER_PERCENT,
+ &percent);
}
else
- percent = gconf_client_get_int (client, BRASERO_KEY_DISPLAY_BRASERO_FILE_CHOOSER_PERCENT, NULL);
+ brasero_setting_get_value (brasero_setting_get_default (),
+ BRASERO_SETTING_BRASERO_FILE_CHOOSER_PERCENT,
+ &percent);
- if (percent < 0)
- return;
+ if (GPOINTER_TO_INT (percent) < 0) {
+ /* No value so set something sane */
+ percent = GINT_TO_POINTER (30);
+ }
- position = widget->allocation.width * percent / 100;
+ position = widget->allocation.width * GPOINTER_TO_INT (percent) / 100;
gtk_paned_set_position (GTK_PANED (widget), position);
}
diff --git a/src/brasero-filter-option.h b/src/brasero-filter-option.h
index b67233c..cac3b8b 100644
--- a/src/brasero-filter-option.h
+++ b/src/brasero-filter-option.h
@@ -29,8 +29,6 @@
G_BEGIN_DECLS
-#define BRASERO_FILTER_NOTIFY_KEY "/apps/brasero/filter/notify"
-
#define BRASERO_TYPE_FILTER_OPTION (brasero_filter_option_get_type ())
#define BRASERO_FILTER_OPTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BRASERO_TYPE_FILTER_OPTION, BraseroFilterOption))
#define BRASERO_FILTER_OPTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BRASERO_TYPE_FILTER_OPTION, BraseroFilterOptionClass))
diff --git a/src/brasero-layout.c b/src/brasero-layout.c
index e14fc2b..2445041 100644
--- a/src/brasero-layout.c
+++ b/src/brasero-layout.c
@@ -35,8 +35,7 @@
#include <gtk/gtk.h>
-#include <gconf/gconf-client.h>
-
+#include "brasero-setting.h"
#include "brasero-layout.h"
#include "brasero-preview.h"
#include "brasero-project.h"
@@ -86,12 +85,6 @@ struct BraseroLayoutPrivate {
BraseroLayoutType ctx_type;
BraseroLayoutItem *active_item;
- GConfClient *client;
- gint radio_notify;
- gint preview_notify;
- gint layout_notify;
- gint sidepane_notify;
-
GtkWidget *notebook;
GtkWidget *main_box;
GtkWidget *preview_pane;
@@ -144,17 +137,6 @@ const gchar description [] =
"</menubar>"
"</ui>";
-/* GCONF keys */
-#define BRASERO_KEY_DISPLAY_LAYOUT "/apps/brasero/display/layout"
-#define BRASERO_KEY_DISPLAY_POSITION "/apps/brasero/display/position"
-
-
-#define BRASERO_KEY_DISPLAY_DIR "/apps/brasero/display/"
-#define BRASERO_KEY_SHOW_SIDEPANE BRASERO_KEY_DISPLAY_DIR "sidepane"
-#define BRASERO_KEY_LAYOUT_AUDIO BRASERO_KEY_DISPLAY_DIR "audio_pane"
-#define BRASERO_KEY_LAYOUT_DATA BRASERO_KEY_DISPLAY_DIR "data_pane"
-#define BRASERO_KEY_LAYOUT_VIDEO BRASERO_KEY_DISPLAY_DIR "video_pane"
-
/* signals */
typedef enum {
SIDEPANE_SIGNAL,
@@ -342,59 +324,30 @@ brasero_layout_preview_toggled_cb (GtkToggleAction *action, BraseroLayout *layou
gtk_widget_show (layout->priv->preview_pane);
else
gtk_widget_hide (layout->priv->preview_pane);
-
- /* we set the correct value in GConf */
- gconf_client_set_bool (layout->priv->client,
- BRASERO_KEY_SHOW_PREVIEW,
- active,
- NULL);
-}
-
-static void
-brasero_layout_preview_changed_cb (GConfClient *client,
- guint cxn,
- GConfEntry *entry,
- gpointer data)
-{
- BraseroLayout *layout;
- GtkAction *action;
- GConfValue *value;
- gboolean active;
-
- layout = BRASERO_LAYOUT (data);
-
- value = gconf_entry_get_value (entry);
- if (value->type != GCONF_VALUE_BOOL)
- return;
-
- active = gconf_value_get_bool (value);
- action = gtk_action_group_get_action (layout->priv->action_group,
- BRASERO_LAYOUT_PREVIEW_ID);
- gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), active);
- if (active) {
- brasero_preview_set_enabled (BRASERO_PREVIEW (layout->priv->preview_pane), TRUE);
- gtk_widget_show (layout->priv->preview_pane);
- }
- else {
- brasero_preview_set_enabled (BRASERO_PREVIEW (layout->priv->preview_pane), FALSE);
- gtk_widget_hide (layout->priv->preview_pane);
- }
+ brasero_preview_set_enabled (BRASERO_PREVIEW (layout->priv->preview_pane), active);
+ brasero_setting_set_value (brasero_setting_get_default (),
+ BRASERO_SETTING_SHOW_PREVIEW,
+ GINT_TO_POINTER (active));
}
void
brasero_layout_add_preview (BraseroLayout *layout,
GtkWidget *preview)
{
+ gpointer value;
gboolean active;
- GtkAction *action;
gchar *accelerator;
- GError *error = NULL;
GtkToggleActionEntry entry;
layout->priv->preview_pane = preview;
brasero_layout_pack_preview (layout);
+ brasero_setting_get_value (brasero_setting_get_default (),
+ BRASERO_SETTING_SHOW_PREVIEW,
+ &value);
+ active = GPOINTER_TO_INT (value);
+
/* add menu entry in display */
accelerator = g_strdup ("F11");
@@ -403,7 +356,7 @@ brasero_layout_add_preview (BraseroLayout *layout,
entry.label = BRASERO_LAYOUT_PREVIEW_MENU;
entry.accelerator = accelerator;
entry.tooltip = BRASERO_LAYOUT_PREVIEW_TOOLTIP;
- entry.is_active = FALSE;
+ entry.is_active = active;
entry.callback = G_CALLBACK (brasero_layout_preview_toggled_cb);
gtk_action_group_add_toggle_actions (layout->priv->action_group,
@@ -413,40 +366,12 @@ brasero_layout_add_preview (BraseroLayout *layout,
g_free (accelerator);
/* initializes the display */
- active = gconf_client_get_bool (layout->priv->client,
- BRASERO_KEY_SHOW_PREVIEW,
- &error);
- if (error) {
- g_warning ("Can't access GConf key %s. This is probably harmless (first launch of brasero).\n", error->message);
- g_error_free (error);
- error = NULL;
- }
-
- action = gtk_action_group_get_action (layout->priv->action_group, BRASERO_LAYOUT_PREVIEW_ID);
- gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), active);
-
- if (active) {
- brasero_preview_set_enabled (BRASERO_PREVIEW (layout->priv->preview_pane), TRUE);
+ if (active)
gtk_widget_show (layout->priv->preview_pane);
- }
- else {
- brasero_preview_set_enabled (BRASERO_PREVIEW (layout->priv->preview_pane), FALSE);
+ else
gtk_widget_hide (layout->priv->preview_pane);
- }
- if (!layout->priv->preview_notify)
- layout->priv->preview_notify = gconf_client_notify_add (layout->priv->client,
- BRASERO_KEY_SHOW_PREVIEW,
- brasero_layout_preview_changed_cb,
- layout,
- NULL,
- &error);
-
- if (error) {
- g_warning ("Could set notify for GConf key %s.\n", error->message);
- g_error_free (error);
- error = NULL;
- }
+ brasero_preview_set_enabled (BRASERO_PREVIEW (layout->priv->preview_pane), active);
}
/**************************** for the source panes *****************************/
@@ -551,166 +476,21 @@ brasero_layout_item_set_active (BraseroLayout *layout,
}
static void
-brasero_layout_show_sidepane_changed_cb (GConfClient *client,
- guint cxn,
- GConfEntry *entry,
- gpointer data)
-{
- BraseroLayout *layout;
- GtkAction *action;
- GConfValue *value;
- gboolean show;
-
- value = gconf_entry_get_value (entry);
- if (value->type != GCONF_VALUE_BOOL)
- return;
-
- show = gconf_value_get_bool (value);
-
- layout = BRASERO_LAYOUT (data);
-
- action = gtk_action_group_get_action (layout->priv->action_group, BRASERO_LAYOUT_NONE_ID);
- gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), show);
- brasero_layout_set_side_pane_visible (layout, show);
-}
-
-static void
-brasero_layout_displayed_item_changed_cb (GConfClient *client,
- guint cxn,
- GConfEntry *entry,
- gpointer data)
-{
- BraseroLayout *layout;
- GConfValue *value;
- GtkTreeModel *model;
- GtkAction *action;
- GtkTreeIter iter;
- const gchar *id;
-
- layout = BRASERO_LAYOUT (data);
-
- /* this is only called if the changed gconf key is the
- * one corresponding to the current type of layout */
- if (!strcmp (entry->key, BRASERO_KEY_LAYOUT_AUDIO)
- && layout->priv->ctx_type == BRASERO_LAYOUT_AUDIO)
- return;
-
- if (!strcmp (entry->key, BRASERO_KEY_LAYOUT_DATA)
- && layout->priv->ctx_type == BRASERO_LAYOUT_DATA)
- return;
-
- if (!strcmp (entry->key, BRASERO_KEY_LAYOUT_VIDEO)
- && layout->priv->ctx_type == BRASERO_LAYOUT_VIDEO)
- return;
-
- value = gconf_entry_get_value (entry);
- if (value->type != GCONF_VALUE_STRING)
- return;
-
- id = gconf_value_get_string (value);
-
- action = gtk_action_group_get_action (layout->priv->action_group, BRASERO_LAYOUT_NONE_ID);
- if (!id || !strcmp (id, BRASERO_LAYOUT_NONE_ID)) {
- /* nothing should be displayed */
- gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), TRUE);
- brasero_layout_set_side_pane_visible (layout, FALSE);
- return;
- }
-
- gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), FALSE);
- model = gtk_combo_box_get_model (GTK_COMBO_BOX (layout->priv->combo));
- model = gtk_tree_model_filter_get_model (GTK_TREE_MODEL_FILTER (model));
-
- if (!gtk_tree_model_get_iter_first (model, &iter))
- return;
-
- do {
- BraseroLayoutItem *item;
-
- gtk_tree_model_get (model, &iter,
- ITEM_COL, &item,
- -1);
- if (!strcmp (id, item->id))
- brasero_layout_item_set_active (layout, item);
- } while (gtk_tree_model_iter_next (model, &iter));
-}
-
-static void
brasero_layout_save (BraseroLayout *layout,
const gchar *id)
{
- GError *error = NULL;
-
- /* update gconf value */
- if (layout->priv->radio_notify) {
- gconf_client_notify_remove (layout->priv->client,
- layout->priv->radio_notify);
- layout->priv->radio_notify = 0;
- }
-
- if (layout->priv->ctx_type == BRASERO_LAYOUT_AUDIO) {
- gconf_client_set_string (layout->priv->client,
- BRASERO_KEY_LAYOUT_AUDIO,
- id,
- &error);
-
- if (error) {
- g_warning ("Can't set GConf key %s. \n", error->message);
- g_error_free (error);
- error = NULL;
- }
-
- layout->priv->radio_notify = gconf_client_notify_add (layout->priv->client,
- BRASERO_KEY_LAYOUT_AUDIO,
- brasero_layout_displayed_item_changed_cb,
- layout,
- NULL,
- &error);
- }
- else if (layout->priv->ctx_type == BRASERO_LAYOUT_DATA) {
- gconf_client_set_string (layout->priv->client,
- BRASERO_KEY_LAYOUT_DATA,
- id,
- &error);
-
- if (error) {
- g_warning ("Can't set GConf key %s. \n", error->message);
- g_error_free (error);
- error = NULL;
- }
-
- layout->priv->radio_notify = gconf_client_notify_add (layout->priv->client,
- BRASERO_KEY_LAYOUT_DATA,
- brasero_layout_displayed_item_changed_cb,
- layout,
- NULL,
- &error);
- }
- else if (layout->priv->ctx_type == BRASERO_LAYOUT_VIDEO) {
- gconf_client_set_string (layout->priv->client,
- BRASERO_KEY_LAYOUT_VIDEO,
- id,
- &error);
-
- if (error) {
- g_warning ("Can't set GConf key %s. \n", error->message);
- g_error_free (error);
- error = NULL;
- }
-
- layout->priv->radio_notify = gconf_client_notify_add (layout->priv->client,
- BRASERO_KEY_LAYOUT_VIDEO,
- brasero_layout_displayed_item_changed_cb,
- layout,
- NULL,
- &error);
- }
-
- if (error) {
- g_warning ("Can't set GConf notify on key %s. \n", error->message);
- g_error_free (error);
- error = NULL;
- }
+ if (layout->priv->ctx_type == BRASERO_LAYOUT_AUDIO)
+ brasero_setting_set_value (brasero_setting_get_default (),
+ BRASERO_SETTING_DISPLAY_LAYOUT_AUDIO,
+ id);
+ else if (layout->priv->ctx_type == BRASERO_LAYOUT_DATA)
+ brasero_setting_set_value (brasero_setting_get_default (),
+ BRASERO_SETTING_DISPLAY_LAYOUT_DATA,
+ id);
+ else if (layout->priv->ctx_type == BRASERO_LAYOUT_VIDEO)
+ brasero_setting_set_value (brasero_setting_get_default (),
+ BRASERO_SETTING_DISPLAY_LAYOUT_VIDEO,
+ id);
}
void
@@ -848,19 +628,12 @@ brasero_layout_load (BraseroLayout *layout,
BraseroLayoutType type)
{
gchar *layout_id = NULL;
- GError *error = NULL;
GtkTreeModel *model;
- GtkAction *action;
gboolean sidepane;
+ GtkAction *action;
+ gpointer value;
GtkTreeIter iter;
- /* remove GCONF notification if any */
- if (layout->priv->radio_notify) {
- gconf_client_notify_remove (layout->priv->client,
- layout->priv->radio_notify);
- layout->priv->radio_notify = 0;
- }
-
if (layout->priv->preview_pane)
brasero_preview_hide (BRASERO_PREVIEW (layout->priv->preview_pane));
@@ -872,52 +645,23 @@ brasero_layout_load (BraseroLayout *layout,
gtk_widget_show (GTK_WIDGET (layout));
/* takes care of other panes */
- if (type == BRASERO_LAYOUT_AUDIO)
- layout_id = gconf_client_get_string (layout->priv->client,
- BRASERO_KEY_LAYOUT_AUDIO,
- &error);
- else if (type == BRASERO_LAYOUT_DATA)
- layout_id = gconf_client_get_string (layout->priv->client,
- BRASERO_KEY_LAYOUT_DATA,
- &error);
- else if (type == BRASERO_LAYOUT_VIDEO)
- layout_id = gconf_client_get_string (layout->priv->client,
- BRASERO_KEY_LAYOUT_VIDEO,
- &error);
-
- if (error) {
- g_warning ("Can't access GConf key %s. This is probably harmless (first launch of brasero).\n", error->message);
- g_error_free (error);
- error = NULL;
+ if (type == BRASERO_LAYOUT_AUDIO) {
+ brasero_setting_get_value (brasero_setting_get_default (),
+ BRASERO_SETTING_DISPLAY_LAYOUT_AUDIO,
+ &value);
+ layout_id = value;
}
-
- /* add new notify for the new */
- if (type == BRASERO_LAYOUT_AUDIO)
- layout->priv->radio_notify = gconf_client_notify_add (layout->priv->client,
- BRASERO_KEY_LAYOUT_AUDIO,
- brasero_layout_displayed_item_changed_cb,
- layout,
- NULL,
- &error);
- else if (type == BRASERO_LAYOUT_DATA)
- layout->priv->radio_notify = gconf_client_notify_add (layout->priv->client,
- BRASERO_KEY_LAYOUT_DATA,
- brasero_layout_displayed_item_changed_cb,
- layout,
- NULL,
- &error);
- else if (type == BRASERO_LAYOUT_VIDEO)
- layout->priv->radio_notify = gconf_client_notify_add (layout->priv->client,
- BRASERO_KEY_LAYOUT_VIDEO,
- brasero_layout_displayed_item_changed_cb,
- layout,
- NULL,
- &error);
-
- if (error) {
- g_warning ("Could not set notify for GConf key %s.\n", error->message);
- g_error_free (error);
- error = NULL;
+ else if (type == BRASERO_LAYOUT_DATA) {
+ brasero_setting_get_value (brasero_setting_get_default (),
+ BRASERO_SETTING_DISPLAY_LAYOUT_DATA,
+ &value);
+ layout_id = value;
+ }
+ else if (type == BRASERO_LAYOUT_VIDEO) {
+ brasero_setting_get_value (brasero_setting_get_default (),
+ BRASERO_SETTING_DISPLAY_LAYOUT_VIDEO,
+ &value);
+ layout_id = value;
}
/* even if we're not showing a side pane go through all items to make
@@ -968,9 +712,10 @@ brasero_layout_load (BraseroLayout *layout,
}
/* hide or show side pane */
- sidepane = gconf_client_get_bool (layout->priv->client,
- BRASERO_KEY_SHOW_SIDEPANE,
- NULL);
+ brasero_setting_get_value (brasero_setting_get_default (),
+ BRASERO_SETTING_SHOW_SIDEPANE,
+ &value);
+ sidepane = GPOINTER_TO_INT (value);
action = gtk_action_group_get_action (layout->priv->action_group, BRASERO_LAYOUT_NONE_ID);
gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), sidepane);
@@ -982,10 +727,9 @@ brasero_layout_pane_moved_cb (GtkWidget *paned,
GParamSpec *pspec,
BraseroLayout *layout)
{
- gconf_client_set_int (layout->priv->client,
- BRASERO_KEY_DISPLAY_POSITION,
- gtk_paned_get_position (GTK_PANED (paned)),
- NULL);
+ brasero_setting_set_value (brasero_setting_get_default (),
+ BRASERO_SETTING_DISPLAY_PROPORTION,
+ GINT_TO_POINTER (gtk_paned_get_position (GTK_PANED (paned))));
}
static void
@@ -1084,51 +828,6 @@ brasero_layout_change_type (BraseroLayout *layout,
static void
brasero_layout_HV_radio_button_toggled_cb (GtkRadioAction *radio,
GtkRadioAction *current,
- BraseroLayout *layout);
-
-static void
-brasero_layout_type_changed_cb (GConfClient *client,
- guint cxn,
- GConfEntry *entry,
- gpointer data)
-{
- GSList *iter;
- GSList *radios;
- GtkAction *action;
- GConfValue *value;
- BraseroLayoutType layout_type;
- BraseroLayout *layout = BRASERO_LAYOUT (data);
-
- value = gconf_entry_get_value (entry);
- if (value->type != GCONF_VALUE_INT)
- return;
-
- layout_type = gconf_value_get_int (value);
- brasero_layout_change_type (layout, layout_type);
-
- /* make sure our radio actions reflect the change */
- action = gtk_action_group_get_action (layout->priv->action_group, "HView");
-
- radios = gtk_radio_action_get_group (GTK_RADIO_ACTION (action));
- for (iter = radios; iter; iter = iter->next)
- g_signal_handlers_block_by_func (iter->data,
- brasero_layout_HV_radio_button_toggled_cb,
- layout);
-
- gtk_radio_action_set_current_value (GTK_RADIO_ACTION (action),
- GTK_IS_VPANED (layout->priv->pane));
-
- for (iter = radios; iter; iter = iter->next)
- g_signal_handlers_unblock_by_func (iter->data,
- brasero_layout_HV_radio_button_toggled_cb,
- layout);
-
- g_slist_free (radios);
-}
-
-static void
-brasero_layout_HV_radio_button_toggled_cb (GtkRadioAction *radio,
- GtkRadioAction *current,
BraseroLayout *layout)
{
guint layout_type;
@@ -1139,25 +838,9 @@ brasero_layout_HV_radio_button_toggled_cb (GtkRadioAction *radio,
layout_type = BRASERO_LAYOUT_RIGHT;
brasero_layout_change_type (layout, layout_type);
-
- /* update the GConf key */
- gconf_client_notify_remove (layout->priv->client,
- layout->priv->layout_notify);
- layout->priv->layout_notify = 0;
-
- gconf_client_set_int (layout->priv->client,
- BRASERO_KEY_DISPLAY_LAYOUT,
- layout_type,
- NULL);
-
- /* This is to avoid a notification for change */
- gconf_client_clear_cache (layout->priv->client);
- layout->priv->layout_notify = gconf_client_notify_add (layout->priv->client,
- BRASERO_KEY_DISPLAY_LAYOUT,
- brasero_layout_type_changed_cb,
- layout,
- NULL,
- NULL);
+ brasero_setting_set_value (brasero_setting_get_default (),
+ BRASERO_SETTING_DISPLAY_LAYOUT,
+ GINT_TO_POINTER (layout_type));
}
static void
@@ -1180,34 +863,13 @@ brasero_layout_empty_toggled_cb (GtkToggleAction *action,
BraseroLayout *layout)
{
gboolean active;
- GError *error = NULL;
active = gtk_toggle_action_get_active (action);
brasero_layout_set_side_pane_visible (layout, active);
- if (layout->priv->sidepane_notify) {
- gconf_client_notify_remove (layout->priv->client,
- layout->priv->sidepane_notify);
- layout->priv->sidepane_notify = 0;
- }
-
- gconf_client_set_bool (layout->priv->client,
- BRASERO_KEY_SHOW_SIDEPANE,
- active,
- &error);
-
- if (error) {
- g_warning ("Can't set GConf key %s. \n", error->message);
- g_error_free (error);
- error = NULL;
- }
-
- layout->priv->sidepane_notify = gconf_client_notify_add (layout->priv->client,
- BRASERO_KEY_SHOW_SIDEPANE,
- brasero_layout_show_sidepane_changed_cb,
- layout,
- NULL,
- &error);
+ brasero_setting_set_value (brasero_setting_get_default (),
+ BRASERO_SETTING_SHOW_SIDEPANE,
+ GINT_TO_POINTER (active));
}
void
@@ -1253,32 +915,22 @@ brasero_layout_foreach_item_cb (GtkTreeModel *model,
}
static void
-brasero_layout_destroy (GtkObject *object)
+brasero_layout_combo_destroy_cb (GtkObject *object,
+ gpointer NULL_data)
{
- BraseroLayout *cobj;
GtkTreeModel *model;
- cobj = BRASERO_LAYOUT(object);
-
- if (!cobj->priv->client) {
- GTK_OBJECT_CLASS (parent_class)->destroy (object);
- return;
- }
-
- /* close GConf */
- gconf_client_notify_remove (cobj->priv->client, cobj->priv->layout_notify);
- gconf_client_notify_remove (cobj->priv->client, cobj->priv->preview_notify);
- gconf_client_notify_remove (cobj->priv->client, cobj->priv->radio_notify);
- g_object_unref (cobj->priv->client);
- cobj->priv->client = NULL;
-
/* empty tree */
- model = gtk_combo_box_get_model (GTK_COMBO_BOX (cobj->priv->combo));
+ model = gtk_combo_box_get_model (GTK_COMBO_BOX (object));
model = gtk_tree_model_filter_get_model (GTK_TREE_MODEL_FILTER (model));
gtk_tree_model_foreach (model,
brasero_layout_foreach_item_cb,
NULL);
+}
+static void
+brasero_layout_destroy (GtkObject *object)
+{
GTK_OBJECT_CLASS (parent_class)->destroy (object);
}
@@ -1328,6 +980,7 @@ brasero_layout_init (BraseroLayout *obj)
GtkTreeModel *model;
GtkWidget *button;
GtkWidget *box;
+ gpointer value;
gint position;
obj->priv = g_new0 (BraseroLayoutPrivate, 1);
@@ -1341,13 +994,12 @@ brasero_layout_init (BraseroLayout *obj)
1,
obj);
- /* init GConf */
- obj->priv->client = gconf_client_get_default ();
-
/* get our layout */
- obj->priv->layout_type = gconf_client_get_int (obj->priv->client,
- BRASERO_KEY_DISPLAY_LAYOUT,
- NULL);
+ brasero_setting_get_value (brasero_setting_get_default (),
+ BRASERO_SETTING_DISPLAY_LAYOUT,
+ &value);
+
+ obj->priv->layout_type = GPOINTER_TO_INT (value);
if (obj->priv->layout_type > BRASERO_LAYOUT_BOTTOM
|| obj->priv->layout_type < BRASERO_LAYOUT_RIGHT)
@@ -1385,9 +1037,11 @@ brasero_layout_init (BraseroLayout *obj)
obj);
/* remember the position */
- position = gconf_client_get_int (obj->priv->client,
- BRASERO_KEY_DISPLAY_POSITION,
- NULL);
+ brasero_setting_get_value (brasero_setting_get_default (),
+ BRASERO_SETTING_DISPLAY_PROPORTION,
+ &value);
+
+ position = GPOINTER_TO_INT (value);
if (position > 0)
gtk_paned_set_position (GTK_PANED (obj->priv->pane), position);
@@ -1401,13 +1055,6 @@ brasero_layout_init (BraseroLayout *obj)
else
gtk_paned_pack2 (GTK_PANED (obj->priv->pane), box, TRUE, FALSE);
- obj->priv->layout_notify = gconf_client_notify_add (obj->priv->client,
- BRASERO_KEY_DISPLAY_LAYOUT,
- brasero_layout_type_changed_cb,
- obj,
- NULL,
- NULL);
-
/* set up containers */
alignment = gtk_alignment_new (0.0, 0.0, 1.0, 1.0);
gtk_widget_show (alignment);
@@ -1422,13 +1069,6 @@ brasero_layout_init (BraseroLayout *obj)
gtk_container_add (GTK_CONTAINER (alignment), obj->priv->main_box);
gtk_widget_show (obj->priv->main_box);
- obj->priv->sidepane_notify = gconf_client_notify_add (obj->priv->client,
- BRASERO_KEY_SHOW_SIDEPANE,
- brasero_layout_show_sidepane_changed_cb,
- obj,
- NULL,
- NULL);
-
/* close button and combo. Don't show it now. */
box = gtk_hbox_new (FALSE, 6);
obj->priv->top_box = box;
@@ -1455,6 +1095,10 @@ brasero_layout_init (BraseroLayout *obj)
"changed",
G_CALLBACK (brasero_layout_combo_changed_cb),
obj);
+ g_signal_connect (obj->priv->combo,
+ "destroy",
+ G_CALLBACK (brasero_layout_combo_destroy_cb),
+ obj);
gtk_widget_show (obj->priv->combo);
g_object_unref (G_OBJECT (model));
diff --git a/src/brasero-player-bacon.c b/src/brasero-player-bacon.c
index 6d91b03..86caed9 100644
--- a/src/brasero-player-bacon.c
+++ b/src/brasero-player-bacon.c
@@ -37,13 +37,12 @@
#include <gtk/gtk.h>
-#include <gconf/gconf-client.h>
-
#include <gst/gst.h>
#include <gst/interfaces/xoverlay.h>
#include "brasero-player-bacon.h"
-
+#include "brasero-setting.h"
+
static void brasero_player_bacon_class_init(BraseroPlayerBaconClass *klass);
static void brasero_player_bacon_init(BraseroPlayerBacon *sp);
static void brasero_player_bacon_finalize(GObject *object);
@@ -365,19 +364,14 @@ brasero_player_bacon_destroy (GtkObject *obj)
/* save volume */
if (cobj->priv->pipe) {
- GConfClient *client;
gdouble volume;
- client = gconf_client_get_default ();
g_object_get (cobj->priv->pipe,
"volume", &volume,
NULL);
-
- volume = gconf_client_set_int (client,
- GCONF_PLAYER_VOLUME,
- (gint) (volume * 100.0),
- NULL);
- g_object_unref (client);
+ brasero_setting_set_value (brasero_setting_get_default (),
+ BRASERO_SETTING_PLAYER_VOLUME,
+ GINT_TO_POINTER (volume * 100));
}
if (cobj->priv->xoverlay
@@ -676,8 +670,8 @@ brasero_player_bacon_setup_pipe (BraseroPlayerBacon *bacon)
{
GstElement *video_sink, *audio_sink;
GstBus *bus = NULL;
- GConfClient *client;
gdouble volume;
+ gpointer value;
bacon->priv->pipe = gst_element_factory_make ("playbin", NULL);
if (!bacon->priv->pipe) {
@@ -717,13 +711,14 @@ brasero_player_bacon_setup_pipe (BraseroPlayerBacon *bacon)
gst_object_unref (bus);
/* set saved volume */
- client = gconf_client_get_default ();
- volume = gconf_client_get_int (client, GCONF_PLAYER_VOLUME, NULL);
+ brasero_setting_get_value (brasero_setting_get_default (),
+ BRASERO_SETTING_PLAYER_VOLUME,
+ &value);
+ volume = GPOINTER_TO_INT (value);
volume = CLAMP (volume, 0, 500);
g_object_set (bacon->priv->pipe,
"volume", (gdouble) volume / 100.0,
NULL);
- g_object_unref (client);
return;
diff --git a/src/brasero-player.c b/src/brasero-player.c
index 1767b9e..f12c9d8 100644
--- a/src/brasero-player.c
+++ b/src/brasero-player.c
@@ -35,14 +35,14 @@
#include <gtk/gtk.h>
-#include <gconf/gconf-client.h>
-
#include "brasero-misc.h"
#include "brasero-metadata.h"
#include "brasero-io.h"
#include "brasero-units.h"
+#include "brasero-setting.h"
+
#include "brasero-player.h"
#include "brasero-player-bacon.h"
#include "brasero-utils.h"
@@ -1244,33 +1244,21 @@ static void
brasero_player_destroy (GtkObject *obj)
{
BraseroPlayer *player;
- GConfClient *client;
player = BRASERO_PLAYER (obj);
- client = gconf_client_get_default ();
-
- gconf_client_set_int (client,
- GCONF_IMAGE_SIZE_WIDTH,
- player->priv->image_width,
- NULL);
-
- gconf_client_set_int (client,
- GCONF_IMAGE_SIZE_HEIGHT,
- player->priv->image_height,
- NULL);
-
- gconf_client_set_int (client,
- GCONF_VIDEO_SIZE_WIDTH,
- player->priv->video_width,
- NULL);
-
- gconf_client_set_int (client,
- GCONF_VIDEO_SIZE_HEIGHT,
- player->priv->video_height,
- NULL);
-
- g_object_unref (client);
+ brasero_setting_set_value (brasero_setting_get_default (),
+ BRASERO_SETTING_IMAGE_SIZE_WIDTH,
+ GINT_TO_POINTER (player->priv->image_width));
+ brasero_setting_set_value (brasero_setting_get_default (),
+ BRASERO_SETTING_IMAGE_SIZE_HEIGHT,
+ GINT_TO_POINTER (player->priv->image_height));
+ brasero_setting_set_value (brasero_setting_get_default (),
+ BRASERO_SETTING_VIDEO_SIZE_WIDTH,
+ GINT_TO_POINTER (player->priv->video_width));
+ brasero_setting_set_value (brasero_setting_get_default (),
+ BRASERO_SETTING_VIDEO_SIZE_WIDTH,
+ GINT_TO_POINTER (player->priv->video_width));
player->priv->image = NULL;
@@ -1346,7 +1334,7 @@ static void
brasero_player_init (BraseroPlayer *obj)
{
GtkWidget *alignment;
- GConfClient *client;
+ gpointer value;
obj->priv = g_new0 (BraseroPlayerPrivate, 1);
@@ -1398,34 +1386,37 @@ brasero_player_init (BraseroPlayer *obj)
obj->priv->bacon,
NULL);
- client = gconf_client_get_default ();
- obj->priv->image_width = gconf_client_get_int (client,
- GCONF_IMAGE_SIZE_WIDTH,
- NULL);
+ brasero_setting_get_value (brasero_setting_get_default (),
+ BRASERO_SETTING_IMAGE_SIZE_WIDTH,
+ &value);
+ obj->priv->image_width = GPOINTER_TO_INT (value);
if (obj->priv->image_width > PLAYER_BACON_WIDTH * 3
|| obj->priv->image_width < PLAYER_BACON_WIDTH)
obj->priv->image_width = PLAYER_BACON_WIDTH;
- obj->priv->image_height = gconf_client_get_int (client,
- GCONF_IMAGE_SIZE_HEIGHT,
- NULL);
+ brasero_setting_get_value (brasero_setting_get_default (),
+ BRASERO_SETTING_IMAGE_SIZE_HEIGHT,
+ &value);
+ obj->priv->image_height = GPOINTER_TO_INT (value);
if (obj->priv->image_height > PLAYER_BACON_HEIGHT * 3
|| obj->priv->image_height < PLAYER_BACON_HEIGHT)
obj->priv->image_height = PLAYER_BACON_HEIGHT;
- obj->priv->video_width = gconf_client_get_int (client,
- GCONF_VIDEO_SIZE_WIDTH,
- NULL);
+ brasero_setting_get_value (brasero_setting_get_default (),
+ BRASERO_SETTING_VIDEO_SIZE_WIDTH,
+ &value);
+ obj->priv->video_width = GPOINTER_TO_INT (value);
if (obj->priv->video_width > PLAYER_BACON_WIDTH * 3
|| obj->priv->video_width < PLAYER_BACON_WIDTH)
obj->priv->video_width = PLAYER_BACON_WIDTH;
- obj->priv->video_height = gconf_client_get_int (client,
- GCONF_VIDEO_SIZE_HEIGHT,
- NULL);
+ brasero_setting_get_value (brasero_setting_get_default (),
+ BRASERO_SETTING_VIDEO_SIZE_HEIGHT,
+ &value);
+ obj->priv->video_height = GPOINTER_TO_INT (value);
if (obj->priv->video_height > PLAYER_BACON_HEIGHT * 3
|| obj->priv->video_height < PLAYER_BACON_HEIGHT)
@@ -1434,7 +1425,6 @@ brasero_player_init (BraseroPlayer *obj)
gtk_widget_set_size_request (obj->priv->bacon,
obj->priv->video_width,
obj->priv->video_height);
- g_object_unref (client);
}
GtkWidget *
diff --git a/src/brasero-playlist.c b/src/brasero-playlist.c
index ee563c4..82275f4 100644
--- a/src/brasero-playlist.c
+++ b/src/brasero-playlist.c
@@ -614,15 +614,6 @@ brasero_playlist_get_selected_uri (BraseroURIContainer *container)
}
static void
-brasero_playlist_unselect_all (BraseroPlaylist *playlist)
-{
- GtkTreeSelection *selection;
-
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (playlist->priv->tree));
- gtk_tree_selection_unselect_all (selection);
-}
-
-static void
brasero_playlist_add_cb (GtkButton *button, BraseroPlaylist *playlist)
{
GtkWidget *dialog, *toplevel;
diff --git a/src/brasero-preview.h b/src/brasero-preview.h
index 44f38d9..ee1373b 100644
--- a/src/brasero-preview.h
+++ b/src/brasero-preview.h
@@ -36,8 +36,6 @@
G_BEGIN_DECLS
-#define BRASERO_KEY_SHOW_PREVIEW "/apps/brasero/display/viewer"
-
#define BRASERO_TYPE_PREVIEW (brasero_preview_get_type ())
#define BRASERO_PREVIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BRASERO_TYPE_PREVIEW, BraseroPreview))
#define BRASERO_PREVIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BRASERO_TYPE_PREVIEW, BraseroPreviewClass))
diff --git a/src/brasero-project.c b/src/brasero-project.c
index 898d636..6ac2b13 100644
--- a/src/brasero-project.c
+++ b/src/brasero-project.c
@@ -38,20 +38,8 @@
#include <gtk/gtk.h>
-#include <libxml/xmlerror.h>
-#include <libxml/xmlwriter.h>
-#include <libxml/parser.h>
-#include <libxml/xmlstring.h>
-#include <libxml/uri.h>
-
-#include <gconf/gconf-client.h>
-
#include <gst/gst.h>
-#ifdef BUILD_PLAYLIST
-#include <totem-pl-parser.h>
-#endif
-
#include "brasero-units.h"
#include "brasero-misc.h"
@@ -60,6 +48,8 @@
#include "brasero-tags.h"
#include "brasero-session.h"
+#include "brasero-setting.h"
+
#ifdef BUILD_PREVIEW
#include "brasero-player.h"
#endif
@@ -247,8 +237,6 @@ static GObjectClass *parent_class = NULL;
#define BRASERO_PROJECT_SIZE_WIDGET_BORDER 1
-#define BRASERO_KEY_SHOW_PREVIEW "/apps/brasero/display/viewer"
-
#define BRASERO_PROJECT_VERSION "0.2"
#define BRASERO_RESPONSE_ADD 1976
@@ -2007,9 +1995,9 @@ brasero_project_add_uris_cb (GtkAction *action,
return;
}
- /* set the Add button grey as we don't want
- * the user to be able to click again until it
- * the dialog has been closed */
+ /* Set the Add button grey as we don't want
+ * the user to be able to click again until the
+ * dialog has been closed */
gtk_action_set_sensitive (action, FALSE);
toplevel = gtk_widget_get_toplevel (GTK_WIDGET (project));
@@ -2081,15 +2069,14 @@ brasero_project_add_uris_cb (GtkAction *action,
#ifdef BUILD_PREVIEW
- GConfClient *client;
GtkWidget *player;
- gboolean res;
+ gpointer value;
- client = gconf_client_get_default ();
- res = gconf_client_get_bool (client, BRASERO_KEY_SHOW_PREVIEW, NULL);
- g_object_unref (client);
+ brasero_setting_get_value (brasero_setting_get_default (),
+ BRASERO_SETTING_SHOW_PREVIEW,
+ &value);
- if (!res)
+ if (!GPOINTER_TO_INT (value))
return;
/* if preview is activated add it */
diff --git a/src/brasero-search-entry.c b/src/brasero-search-entry.c
index e85137c..6416d17 100644
--- a/src/brasero-search-entry.c
+++ b/src/brasero-search-entry.c
@@ -40,10 +40,9 @@
#include <beagle/beagle.h>
-#include <gconf/gconf-client.h>
-
#include "brasero-search-entry.h"
#include "brasero-layout.h"
+#include "brasero-setting.h"
static void brasero_search_entry_class_init (BraseroSearchEntryClass *klass);
static void brasero_search_entry_init (BraseroSearchEntry *sp);
@@ -53,9 +52,6 @@ static void brasero_search_entry_destroy (GtkObject *gtk_object);
struct BraseroSearchEntryPrivate {
GtkWidget *button;
GtkWidget *combo;
- GSList *history;
- GConfClient *client;
- guint cxn;
gint search_id;
BraseroLayoutType ctx;
@@ -77,19 +73,15 @@ enum {
static GObjectClass *parent_class = NULL;
-#define BRASERO_SEARCH_ENTRY_HISTORY_KEY "/apps/brasero/search_history"
#define BRASERO_SEARCH_ENTRY_MAX_HISTORY_ITEMS 10
-static void brasero_search_entry_history_changed_cb (GConfClient *client,
- guint cxn_id,
- GConfEntry *entry,
- BraseroSearchEntry *widget);
static void brasero_search_entry_button_clicked_cb (GtkButton *button,
BraseroSearchEntry *entry);
static void brasero_search_entry_entry_activated_cb (GtkComboBox *combo,
BraseroSearchEntry *entry);
static void brasero_search_entry_activated (BraseroSearchEntry *entry, gboolean query_now);
-static void brasero_search_entry_set_history (BraseroSearchEntry *entry);
+static void brasero_search_entry_set_history (BraseroSearchEntry *entry,
+ const gchar * const *history);
static void brasero_search_entry_save_history (BraseroSearchEntry *entry);
static void brasero_search_entry_add_current_keyword_to_history (BraseroSearchEntry *entry);
static void brasero_search_entry_category_clicked_cb (GtkWidget *button, BraseroSearchEntry *entry);
@@ -172,10 +164,10 @@ static void
brasero_search_entry_init (BraseroSearchEntry *obj)
{
gchar *string;
+ gpointer value;
GtkWidget *table;
GtkWidget *label;
GtkWidget *entry;
- GError *error = NULL;
GtkListStore *store;
GtkCellRenderer *renderer;
GtkEntryCompletion *completion;
@@ -344,54 +336,17 @@ brasero_search_entry_init (BraseroSearchEntry *obj)
gtk_widget_set_tooltip_text (obj->priv->button,
_("Click to start the search"));
- /* Set up GConf Client */
- obj->priv->client = gconf_client_get_default ();
- if (obj->priv->client) {
- if (error) {
- g_warning ("ERROR : %s\n", error->message);
- g_error_free (error);
- error = NULL;
- }
- else
- obj->priv->cxn = gconf_client_notify_add (obj->priv->client,
- BRASERO_SEARCH_ENTRY_HISTORY_KEY,
- (GConfClientNotifyFunc) brasero_search_entry_history_changed_cb,
- obj,
- NULL,
- &error);
-
- if (error) {
- g_warning ("ERROR : %s\n", error->message);
- g_error_free (error);
- error = NULL;
- }
-
- obj->priv->history = gconf_client_get_list (obj->priv->client,
- BRASERO_SEARCH_ENTRY_HISTORY_KEY,
- GCONF_VALUE_STRING,
- &error);
+ brasero_setting_get_value (brasero_setting_get_default (),
+ BRASERO_SETTING_SEARCH_ENTRY_HISTORY,
+ &value);
- if (error) {
- g_warning ("ERROR : %s\n", error->message);
- g_error_free (error);
- }
- else if (obj->priv->history)
- brasero_search_entry_set_history (obj);
- }
- else
- g_warning ("ERROR : could not connect to GCONF.\n");
+ brasero_search_entry_set_history (obj, value);
+ g_strfreev (value);
}
static void
brasero_search_entry_destroy (GtkObject *gtk_object)
{
- BraseroSearchEntry *cobj;
-
- cobj = BRASERO_SEARCH_ENTRY (gtk_object);
-
- /* release gconf client */
- g_object_unref (cobj->priv->client);
-
GTK_OBJECT_CLASS (parent_class)->destroy (gtk_object);
}
@@ -402,10 +357,6 @@ brasero_search_entry_finalize (GObject *object)
cobj = BRASERO_SEARCH_ENTRY (object);
- g_slist_foreach (cobj->priv->history, (GFunc) g_free, NULL);
- g_slist_free (cobj->priv->history);
- cobj->priv->history = NULL;
-
if (cobj->priv->search_id) {
g_source_remove (cobj->priv->search_id);
cobj->priv->search_id = 0;
@@ -438,41 +389,6 @@ brasero_search_entry_category_clicked_cb (GtkWidget *button,
}
static void
-brasero_search_entry_history_changed_cb (GConfClient *client,
- guint cnx_id,
- GConfEntry *entry,
- BraseroSearchEntry *widget)
-{
- GConfValue *value;
- GSList *list = NULL, *iter;
- const char *keywords;
-
- /* a few checks */
- value = gconf_entry_get_value (entry);
- if (value->type != GCONF_VALUE_LIST)
- return;
-
- if (gconf_value_get_list_type (value) != GCONF_VALUE_STRING)
- return;
-
- /* clears up history */
- g_slist_foreach (widget->priv->history, (GFunc) g_free, NULL);
- g_slist_free (widget->priv->history);
- widget->priv->history = NULL;
-
- /* get the new history */
- list = gconf_value_get_list (value);
- for (iter = list; iter && g_slist_length (widget->priv->history) < BRASERO_SEARCH_ENTRY_MAX_HISTORY_ITEMS; iter = iter->next) {
- value = (GConfValue *) iter->data;
- keywords = gconf_value_get_string (value);
- widget->priv->history = g_slist_append (widget->priv->history,
- g_strdup (keywords));
- }
-
- brasero_search_entry_set_history (widget);
-}
-
-static void
brasero_search_entry_button_clicked_cb (GtkButton *button,
BraseroSearchEntry *entry)
{
@@ -560,41 +476,24 @@ brasero_search_entry_activated (BraseroSearchEntry *entry,
}
static void
-brasero_search_entry_set_history (BraseroSearchEntry *entry)
+brasero_search_entry_set_history (BraseroSearchEntry *entry,
+ const gchar * const *history)
{
int i;
- GSList *iter;
GtkTreeIter row;
GtkListStore *store;
store = GTK_LIST_STORE (gtk_combo_box_get_model (GTK_COMBO_BOX (entry->priv->combo)));
gtk_list_store_clear (GTK_LIST_STORE (store));
- if (entry->priv->history == NULL)
- return;
-
- i = 0;
- for (iter = entry->priv->history; iter && i < BRASERO_SEARCH_ENTRY_MAX_HISTORY_ITEMS; iter = iter->next) {
- gtk_list_store_append (store, &row);
- gtk_list_store_set (store, &row,
- BRASERO_SEARCH_ENTRY_DISPLAY_COL, iter->data,
- BRASERO_SEARCH_ENTRY_BACKGRD_COL, NULL,
- -1);
- i ++;
- }
-
- if (iter) {
- GSList *next;
-
- next = iter->next;
-
- /* if there are other items simply free them */
- entry->priv->history = g_slist_remove_link (entry->priv->history, iter);
- g_free (iter->data);
- g_slist_free (iter);
-
- g_slist_foreach (next, (GFunc) g_free, NULL);
- g_slist_free (next);
+ if (history) {
+ for (i = 0; history [i] && i < BRASERO_SEARCH_ENTRY_MAX_HISTORY_ITEMS; i ++) {
+ gtk_list_store_append (store, &row);
+ gtk_list_store_set (store, &row,
+ BRASERO_SEARCH_ENTRY_DISPLAY_COL, history [i],
+ BRASERO_SEARCH_ENTRY_BACKGRD_COL, NULL,
+ -1);
+ }
}
/* separator */
@@ -616,64 +515,110 @@ brasero_search_entry_set_history (BraseroSearchEntry *entry)
static void
brasero_search_entry_save_history (BraseroSearchEntry *entry)
{
- GError *error = NULL;
-
- gconf_client_notify_remove (entry->priv->client, entry->priv->cxn);
- gconf_client_set_list (entry->priv->client,
- BRASERO_SEARCH_ENTRY_HISTORY_KEY,
- GCONF_VALUE_STRING,
- entry->priv->history, &error);
- if (error) {
- g_warning ("ERROR : %s\n", error->message);
- g_error_free (error);
- error = NULL;
+ GtkTreeModel *model;
+ int num_children;
+ GtkTreeIter iter;
+ gchar **array;
+ int i = 0;
+
+ model = gtk_combo_box_get_model (GTK_COMBO_BOX (entry->priv->combo));
+ if (!gtk_tree_model_get_iter_first (model, &iter)) {
+ brasero_setting_set_value (brasero_setting_get_default (),
+ BRASERO_SETTING_SEARCH_ENTRY_HISTORY,
+ NULL);
+ return;
}
- entry->priv->cxn = gconf_client_notify_add (entry->priv->client,
- BRASERO_SEARCH_ENTRY_HISTORY_KEY,
- (GConfClientNotifyFunc) brasero_search_entry_history_changed_cb,
- entry, NULL, &error);
- if (error) {
- g_warning ("ERROR : %s\n", error->message);
- g_error_free (error);
- }
+ /* NOTE: the last item is not to be included nor
+ * the blank line should be included. Only
+ * substract one to have an empty row in the
+ * array. */
+ num_children = gtk_tree_model_iter_n_children (model, NULL);
+ array = g_new0 (gchar *, -- num_children);
+
+ do {
+ gchar *string;
+
+ string = NULL;
+ gtk_tree_model_get (model, &iter,
+ BRASERO_SEARCH_ENTRY_DISPLAY_COL, &string,
+ -1);
+
+ /* break on the blank line */
+ if (string == NULL)
+ break;
+
+ array [i++] = string;
+ } while (gtk_tree_model_iter_next (model, &iter));
+
+ brasero_setting_set_value (brasero_setting_get_default (),
+ BRASERO_SETTING_SEARCH_ENTRY_HISTORY,
+ array);
+ g_strfreev (array);
}
static void
brasero_search_entry_add_current_keyword_to_history (BraseroSearchEntry *entry)
{
const char *keywords = NULL;
- GSList *iter;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
/* we don't want to add static entry */
keywords = gtk_entry_get_text (GTK_ENTRY (GTK_BIN (entry->priv->combo)->child));
if (!keywords || !strcmp (keywords, _("All files")))
return;
+ model = gtk_combo_box_get_model (GTK_COMBO_BOX (entry->priv->combo));
+ if (!gtk_tree_model_get_iter_first (model, &iter))
+ return;
+
/* make sure the item is not already in the list
* otherwise just move it up in first position */
- for (iter = entry->priv->history; iter; iter = iter->next) {
- if (!strcmp (keywords, (char *) iter->data)) {
- keywords = iter->data;
- entry->priv->history = g_slist_remove (entry->priv->history,
- keywords);
- entry->priv->history = g_slist_prepend (entry->priv->history,
- (char *) keywords);
+ do {
+ gchar *string;
+
+ string = NULL;
+ gtk_tree_model_get (model, &iter,
+ BRASERO_SEARCH_ENTRY_DISPLAY_COL, &string,
+ -1);
+
+ /* break when we reach the blank line */
+ if (!string)
+ break;
+
+ if (!strcmp (keywords, string)) {
+ gtk_list_store_remove (GTK_LIST_STORE (model), &iter);
+ gtk_list_store_prepend (GTK_LIST_STORE (model), &iter);
+ gtk_list_store_set (GTK_LIST_STORE (model), &iter,
+ BRASERO_SEARCH_ENTRY_DISPLAY_COL, string,
+ -1);
+ g_free (string);
goto end;
}
- }
- if (g_slist_length (entry->priv->history) == BRASERO_SEARCH_ENTRY_MAX_HISTORY_ITEMS) {
- iter = g_slist_last (entry->priv->history);
- entry->priv->history = g_slist_remove (entry->priv->history, iter);
+ g_free (string);
+ } while (gtk_tree_model_iter_next (model, &iter));
+
+ /* Remember that in model we have the 10 items
+ * a NULL one and the "All Files" one */
+ if (gtk_tree_model_iter_n_children (model, NULL) == BRASERO_SEARCH_ENTRY_MAX_HISTORY_ITEMS + 2) {
+ gtk_tree_model_iter_nth_child (model,
+ &iter,
+ NULL,
+ BRASERO_SEARCH_ENTRY_MAX_HISTORY_ITEMS - 1);
+
+ gtk_list_store_remove (GTK_LIST_STORE (model), &iter);
}
- entry->priv->history = g_slist_prepend (entry->priv->history,
- g_strdup (keywords));
+ gtk_list_store_prepend (GTK_LIST_STORE (model), &iter);
+ gtk_list_store_set (GTK_LIST_STORE (model), &iter,
+ BRASERO_SEARCH_ENTRY_DISPLAY_COL, keywords,
+ -1);
+
+end:
- end:
brasero_search_entry_save_history (entry);
- brasero_search_entry_set_history (entry);
}
BeagleQuery *
diff --git a/src/brasero-setting.c b/src/brasero-setting.c
new file mode 100644
index 0000000..51cb494
--- /dev/null
+++ b/src/brasero-setting.c
@@ -0,0 +1,611 @@
+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
+/*
+ * brasero
+ * Copyright (C) Philippe Rouquier 2009 <bonfire-app wanadoo fr>
+ *
+ * brasero is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * brasero 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "config.h"
+
+#include <glib.h>
+#include <gtk/gtk.h>
+
+#include "brasero-setting.h"
+
+typedef struct _BraseroSettingPrivate BraseroSettingPrivate;
+struct _BraseroSettingPrivate
+{
+ gint win_width;
+ gint win_height;
+ gint stock_file_chooser_percent;
+ gint brasero_file_chooser_percent;
+ gint player_volume;
+ gint display_layout;
+ gint data_disc_column;
+ gint data_disc_column_order;
+ gint image_size_width;
+ gint image_size_height;
+ gint video_size_height;
+ gint video_size_width;
+ gint display_proportion;
+
+ gchar *layout_audio;
+ gchar *layout_video;
+ gchar *layout_data;
+
+ gchar **search_entry_history;
+
+ guint win_maximized:1;
+ guint show_preview:1;
+ guint show_sidepane:1;
+};
+
+#define BRASERO_SETTING_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), BRASERO_TYPE_SETTING, BraseroSettingPrivate))
+
+enum
+{
+ VALUE_CHANGED,
+
+ LAST_SIGNAL
+};
+
+
+static guint setting_signals[LAST_SIGNAL] = { 0 };
+
+G_DEFINE_TYPE (BraseroSetting, brasero_setting, G_TYPE_OBJECT);
+
+gboolean
+brasero_setting_get_value (BraseroSetting *setting,
+ BraseroSettingValue setting_value,
+ gpointer *value)
+{
+ BraseroSettingPrivate *priv;
+
+ g_return_val_if_fail (BRASERO_IS_SETTING (setting), FALSE);
+ g_return_val_if_fail (value != NULL, FALSE);
+
+ priv = BRASERO_SETTING_PRIVATE (setting);
+
+ switch (setting_value) {
+ /** gint **/
+ case BRASERO_SETTING_WIN_WIDTH:
+ (*value) = GINT_TO_POINTER (priv->win_width);
+ break;
+
+ case BRASERO_SETTING_WIN_HEIGHT:
+ (*value) = GINT_TO_POINTER (priv->win_height);
+ break;
+
+ case BRASERO_SETTING_STOCK_FILE_CHOOSER_PERCENT:
+ (*value) = GINT_TO_POINTER (priv->stock_file_chooser_percent);
+ break;
+
+ case BRASERO_SETTING_BRASERO_FILE_CHOOSER_PERCENT:
+ (*value) = GINT_TO_POINTER (priv->brasero_file_chooser_percent);
+ break;
+
+ case BRASERO_SETTING_PLAYER_VOLUME:
+ (*value) = GINT_TO_POINTER (priv->player_volume);
+ break;
+
+ case BRASERO_SETTING_DISPLAY_LAYOUT:
+ (*value) = GINT_TO_POINTER (priv->display_layout);
+ break;
+
+ case BRASERO_SETTING_DATA_DISC_COLUMN:
+ (*value) = GINT_TO_POINTER (priv->data_disc_column);
+ break;
+
+ case BRASERO_SETTING_DATA_DISC_COLUMN_ORDER:
+ (*value) = GINT_TO_POINTER (priv->data_disc_column_order);
+ break;
+
+ case BRASERO_SETTING_IMAGE_SIZE_WIDTH:
+ (*value) = GINT_TO_POINTER (priv->image_size_width);
+ break;
+
+ case BRASERO_SETTING_IMAGE_SIZE_HEIGHT:
+ (*value) = GINT_TO_POINTER (priv->image_size_height);
+ break;
+
+ case BRASERO_SETTING_VIDEO_SIZE_HEIGHT:
+ (*value) = GINT_TO_POINTER (priv->video_size_height);
+ break;
+
+ case BRASERO_SETTING_VIDEO_SIZE_WIDTH:
+ (*value) = GINT_TO_POINTER (priv->video_size_width);
+ break;
+
+ case BRASERO_SETTING_DISPLAY_PROPORTION:
+ (*value) = GINT_TO_POINTER (priv->display_proportion);
+ break;
+
+ /** gboolean **/
+ case BRASERO_SETTING_WIN_MAXIMIZED:
+ (*value) = GINT_TO_POINTER (priv->win_maximized);
+ break;
+
+ case BRASERO_SETTING_SHOW_PREVIEW:
+ (*value) = GINT_TO_POINTER (priv->show_preview);
+ break;
+
+ case BRASERO_SETTING_SHOW_SIDEPANE:
+ (*value) = GINT_TO_POINTER (priv->show_sidepane);
+ break;
+
+ /** gchar * **/
+ case BRASERO_SETTING_DISPLAY_LAYOUT_AUDIO:
+ (*value) = priv->layout_audio;
+ break;
+
+ case BRASERO_SETTING_DISPLAY_LAYOUT_VIDEO:
+ (*value) = priv->layout_video;
+ break;
+
+ case BRASERO_SETTING_DISPLAY_LAYOUT_DATA:
+ (*value) = priv->layout_data;
+ break;
+
+ /** gchar ** **/
+ case BRASERO_SETTING_SEARCH_ENTRY_HISTORY:
+ (*value) = g_strdupv (priv->search_entry_history);
+ break;
+
+ default:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+gboolean
+brasero_setting_set_value (BraseroSetting *setting,
+ BraseroSettingValue setting_value,
+ gconstpointer value)
+{
+ BraseroSettingPrivate *priv;
+
+ g_return_val_if_fail (BRASERO_IS_SETTING (setting), FALSE);
+
+ priv = BRASERO_SETTING_PRIVATE (setting);
+
+ switch (setting_value) {
+ /** gint **/
+ case BRASERO_SETTING_WIN_WIDTH:
+ priv->win_width = GPOINTER_TO_INT (value);
+ break;
+
+ case BRASERO_SETTING_WIN_HEIGHT:
+ priv->win_height = GPOINTER_TO_INT (value);
+ break;
+
+ case BRASERO_SETTING_STOCK_FILE_CHOOSER_PERCENT:
+ priv->stock_file_chooser_percent = GPOINTER_TO_INT (value);
+ break;
+
+ case BRASERO_SETTING_BRASERO_FILE_CHOOSER_PERCENT:
+ priv->brasero_file_chooser_percent = GPOINTER_TO_INT (value);
+ break;
+
+ case BRASERO_SETTING_PLAYER_VOLUME:
+ priv->player_volume = GPOINTER_TO_INT (value);
+ break;
+
+ case BRASERO_SETTING_DISPLAY_LAYOUT:
+ priv->display_layout = GPOINTER_TO_INT (value);
+ break;
+
+ case BRASERO_SETTING_DATA_DISC_COLUMN:
+ priv->data_disc_column = GPOINTER_TO_INT (value);
+ break;
+
+ case BRASERO_SETTING_DATA_DISC_COLUMN_ORDER:
+ priv->data_disc_column_order = GPOINTER_TO_INT (value);
+ break;
+
+ case BRASERO_SETTING_IMAGE_SIZE_WIDTH:
+ priv->image_size_width = GPOINTER_TO_INT (value);
+ break;
+
+ case BRASERO_SETTING_IMAGE_SIZE_HEIGHT:
+ priv->image_size_height = GPOINTER_TO_INT (value);
+ break;
+
+ case BRASERO_SETTING_VIDEO_SIZE_HEIGHT:
+ priv->video_size_height = GPOINTER_TO_INT (value);
+ break;
+
+ case BRASERO_SETTING_VIDEO_SIZE_WIDTH:
+ priv->video_size_width = GPOINTER_TO_INT (value);
+ break;
+
+ case BRASERO_SETTING_DISPLAY_PROPORTION:
+ priv->display_proportion = GPOINTER_TO_INT (value);
+ break;
+
+ /** gboolean **/
+ case BRASERO_SETTING_WIN_MAXIMIZED:
+ priv->win_maximized = GPOINTER_TO_INT (value);
+ break;
+
+ case BRASERO_SETTING_SHOW_PREVIEW:
+ priv->show_preview = GPOINTER_TO_INT (value);
+ break;
+
+ case BRASERO_SETTING_SHOW_SIDEPANE:
+ priv->show_sidepane = GPOINTER_TO_INT (value);
+ break;
+
+ /** gchar * **/
+ case BRASERO_SETTING_DISPLAY_LAYOUT_AUDIO:
+ priv->layout_audio = g_strdup (value);
+ break;
+
+ case BRASERO_SETTING_DISPLAY_LAYOUT_VIDEO:
+ priv->layout_video = g_strdup (value);
+ break;
+
+ case BRASERO_SETTING_DISPLAY_LAYOUT_DATA:
+ priv->layout_data = g_strdup (value);
+ break;
+
+ /** gchar ** **/
+ case BRASERO_SETTING_SEARCH_ENTRY_HISTORY:
+ if (priv->search_entry_history)
+ g_strfreev (priv->search_entry_history);
+
+ if (value)
+ priv->search_entry_history = g_strdupv ((gchar **) value);
+ else
+ priv->search_entry_history = NULL;
+
+ break;
+
+ default:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+gboolean
+brasero_setting_load (BraseroSetting *setting)
+{
+ BraseroSettingPrivate *priv;
+ GKeyFile *key_file;
+ gboolean res;
+ gchar *path;
+
+ priv = BRASERO_SETTING_PRIVATE (setting);
+
+ path = g_build_path (G_DIR_SEPARATOR_S,
+ g_get_user_config_dir (),
+ "brasero",
+ "application-settings",
+ NULL);
+
+ key_file = g_key_file_new ();
+ res = g_key_file_load_from_file (key_file,
+ path,
+ G_KEY_FILE_KEEP_COMMENTS|G_KEY_FILE_KEEP_TRANSLATIONS,
+ NULL);
+ g_free (path);
+ if (!res)
+ return res;
+
+ priv->search_entry_history = g_key_file_get_string_list (key_file,
+ "Filter",
+ "history",
+ NULL,
+ NULL);
+
+ priv->layout_audio = g_key_file_get_string (key_file,
+ "Display",
+ "layout-audio",
+ NULL);
+ priv->layout_video = g_key_file_get_string (key_file,
+ "Display",
+ "layout-video",
+ NULL);
+ priv->layout_data = g_key_file_get_string (key_file,
+ "Display",
+ "layout-data",
+ NULL);
+ priv->show_sidepane = g_key_file_get_boolean (key_file,
+ "Display",
+ "show-sidepane",
+ NULL);
+ priv->show_preview = g_key_file_get_boolean (key_file,
+ "Display",
+ "show-preview",
+ NULL);
+
+ priv->win_width = g_key_file_get_integer (key_file,
+ "Display",
+ "main-window-width",
+ NULL);
+ priv->win_height = g_key_file_get_integer (key_file,
+ "Display",
+ "main-window-height",
+ NULL);
+ priv->win_maximized = g_key_file_get_boolean (key_file,
+ "Display",
+ "main-window-maximized",
+ NULL);
+ priv->stock_file_chooser_percent = g_key_file_get_integer (key_file,
+ "Display",
+ "stock-file-chooser-percent",
+ NULL);
+ priv->brasero_file_chooser_percent = g_key_file_get_integer (key_file,
+ "Display",
+ "brasero-file-chooser-percent",
+ NULL);
+ priv->player_volume = g_key_file_get_integer (key_file,
+ "Player",
+ "player-volume",
+ NULL);
+ priv->display_layout = g_key_file_get_integer (key_file,
+ "Display",
+ "layout",
+ NULL);
+ priv->data_disc_column = g_key_file_get_integer (key_file,
+ "Display",
+ "data-disc-column",
+ NULL);
+ priv->data_disc_column_order = g_key_file_get_integer (key_file,
+ "Display",
+ "data-disc-column-order",
+ NULL);
+ priv->image_size_width = g_key_file_get_integer (key_file,
+ "Player",
+ "image-size-width",
+ NULL);
+ priv->image_size_height = g_key_file_get_integer (key_file,
+ "Player",
+ "image-size-height",
+ NULL);
+ priv->video_size_width = g_key_file_get_integer (key_file,
+ "Player",
+ "video-size-width",
+ NULL);
+ priv->video_size_height = g_key_file_get_integer (key_file,
+ "Player",
+ "video-size-height",
+ NULL);
+ priv->display_proportion = priv->image_size_width = g_key_file_get_integer (key_file,
+ "Display",
+ "pane-position",
+ NULL);
+
+ g_key_file_free (key_file);
+
+ return TRUE;
+}
+
+gboolean
+brasero_setting_save (BraseroSetting *setting)
+{
+ BraseroSettingPrivate *priv;
+ gchar *contents = NULL;
+ gsize content_size = 0;
+ GKeyFile *key_file;
+ gboolean res;
+ gchar *path;
+
+ priv = BRASERO_SETTING_PRIVATE (setting);
+
+ path = g_build_path (G_DIR_SEPARATOR_S,
+ g_get_user_config_dir (),
+ "brasero",
+ "application-settings",
+ NULL);
+
+ key_file = g_key_file_new ();
+ res = g_key_file_load_from_file (key_file,
+ path,
+ G_KEY_FILE_KEEP_COMMENTS|G_KEY_FILE_KEEP_TRANSLATIONS,
+ NULL);
+
+ /* Don't worry if it does not work, it could be
+ * that there isn't any at the moment. */
+ if (priv->search_entry_history)
+ g_key_file_set_string_list (key_file,
+ "Filter",
+ "history",
+ (const gchar *const*) priv->search_entry_history,
+ g_strv_length (priv->search_entry_history));
+
+ if (priv->layout_audio)
+ g_key_file_set_string (key_file,
+ "Display",
+ "layout-audio",
+ priv->layout_audio);
+
+ if (priv->layout_video)
+ g_key_file_set_string (key_file,
+ "Display",
+ "layout-video",
+ priv->layout_video);
+
+ if (priv->layout_data)
+ g_key_file_set_string (key_file,
+ "Display",
+ "layout-data",
+ priv->layout_data);
+
+ g_key_file_set_boolean (key_file,
+ "Display",
+ "show-sidepane",
+ priv->show_sidepane);
+ g_key_file_set_boolean (key_file,
+ "Display",
+ "show-preview",
+ priv->show_preview);
+
+ g_key_file_set_integer (key_file,
+ "Display",
+ "main-window-width",
+ priv->win_width);
+ g_key_file_set_integer (key_file,
+ "Display",
+ "main-window-height",
+ priv->win_height);
+ g_key_file_set_boolean (key_file,
+ "Display",
+ "main-window-maximized",
+ priv->win_maximized);
+ g_key_file_set_integer (key_file,
+ "Display",
+ "stock-file-chooser-percent",
+ priv->stock_file_chooser_percent);
+ g_key_file_set_integer (key_file,
+ "Display",
+ "brasero-file-chooser-percent",
+ priv->brasero_file_chooser_percent);
+ g_key_file_set_integer (key_file,
+ "Player",
+ "player-volume",
+ priv->player_volume);
+ g_key_file_set_integer (key_file,
+ "Display",
+ "layout",
+ priv->display_layout);
+ g_key_file_set_integer (key_file,
+ "Display",
+ "data-disc-column",
+ priv->data_disc_column);
+ g_key_file_set_integer (key_file,
+ "Display",
+ "data-disc-column-order",
+ priv->data_disc_column_order);
+ g_key_file_set_integer (key_file,
+ "Player",
+ "image-size-width",
+ priv->image_size_width);
+ g_key_file_set_integer (key_file,
+ "Player",
+ "image-size-height",
+ priv->image_size_height);
+ g_key_file_set_integer (key_file,
+ "Player",
+ "video-size-width",
+ priv->video_size_width);
+ g_key_file_set_integer (key_file,
+ "Player",
+ "video-size-height",
+ priv->video_size_height);
+ g_key_file_set_integer (key_file,
+ "Display",
+ "pane-position",
+ priv->display_proportion);
+
+ contents = g_key_file_to_data (key_file, &content_size, NULL);
+ g_file_set_contents (path, contents, content_size, NULL);
+ g_free (contents);
+ g_free (path);
+
+ g_key_file_free (key_file);
+
+ return TRUE;
+}
+
+static void
+brasero_setting_init (BraseroSetting *object)
+{
+ BraseroSettingPrivate *priv;
+
+ priv = BRASERO_SETTING_PRIVATE (object);
+ priv->win_width = -1;
+ priv->win_height = -1;
+ priv->stock_file_chooser_percent = -1;
+ priv->brasero_file_chooser_percent = -1;
+ priv->player_volume = -1;
+ priv->display_layout = -1;
+ priv->data_disc_column = -1;
+ priv->data_disc_column_order = -1;
+ priv->image_size_width = -1;
+ priv->image_size_height = -1;
+ priv->video_size_height = -1;
+ priv->video_size_width = -1;
+ priv->display_proportion = -1;
+}
+
+static void
+brasero_setting_finalize (GObject *object)
+{
+ BraseroSettingPrivate *priv;
+
+ priv = BRASERO_SETTING_PRIVATE (object);
+ if (priv->layout_video) {
+ g_free (priv->layout_video);
+ priv->layout_video = NULL;
+ }
+
+ if (priv->layout_data) {
+ g_free (priv->layout_data);
+ priv->layout_data = NULL;
+ }
+
+ if (priv->layout_audio) {
+ g_free (priv->layout_audio);
+ priv->layout_audio = NULL;
+ }
+
+ if (priv->search_entry_history) {
+ g_strfreev (priv->search_entry_history);
+ priv->search_entry_history = NULL;
+ }
+
+ G_OBJECT_CLASS (brasero_setting_parent_class)->finalize (object);
+}
+
+static void
+brasero_setting_value_changed (BraseroSetting *self, gint value)
+{
+ /* TODO: Add default signal handler implementation here */
+}
+
+static void
+brasero_setting_class_init (BraseroSettingClass *klass)
+{
+ GObjectClass* object_class = G_OBJECT_CLASS (klass);
+
+ g_type_class_add_private (klass, sizeof (BraseroSettingPrivate));
+
+ object_class->finalize = brasero_setting_finalize;
+
+ klass->value_changed = brasero_setting_value_changed;
+
+ setting_signals[VALUE_CHANGED] =
+ g_signal_new ("value_changed",
+ G_OBJECT_CLASS_TYPE (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (BraseroSettingClass, value_changed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__INT,
+ G_TYPE_NONE, 1,
+ G_TYPE_INT);
+}
+
+static BraseroSetting *default_setting = NULL;
+
+BraseroSetting *
+brasero_setting_get_default (void)
+{
+ if (!default_setting)
+ default_setting = g_object_new (BRASERO_TYPE_SETTING, NULL);
+
+ return default_setting;
+}
diff --git a/src/brasero-setting.h b/src/brasero-setting.h
new file mode 100644
index 0000000..3fbe98e
--- /dev/null
+++ b/src/brasero-setting.h
@@ -0,0 +1,106 @@
+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
+/*
+ * brasero
+ * Copyright (C) Philippe Rouquier 2009 <bonfire-app wanadoo fr>
+ *
+ * brasero is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * brasero 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef _BRASERO_SETTING_H_
+#define _BRASERO_SETTING_H_
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+typedef enum {
+ BRASERO_SETTING_VALUE_NONE,
+
+ /** gint value **/
+ BRASERO_SETTING_WIN_WIDTH,
+ BRASERO_SETTING_WIN_HEIGHT,
+ BRASERO_SETTING_STOCK_FILE_CHOOSER_PERCENT,
+ BRASERO_SETTING_BRASERO_FILE_CHOOSER_PERCENT,
+ BRASERO_SETTING_PLAYER_VOLUME,
+ BRASERO_SETTING_DISPLAY_PROPORTION,
+ BRASERO_SETTING_DISPLAY_LAYOUT,
+ BRASERO_SETTING_DATA_DISC_COLUMN,
+ BRASERO_SETTING_DATA_DISC_COLUMN_ORDER,
+ BRASERO_SETTING_IMAGE_SIZE_WIDTH,
+ BRASERO_SETTING_IMAGE_SIZE_HEIGHT,
+ BRASERO_SETTING_VIDEO_SIZE_HEIGHT,
+ BRASERO_SETTING_VIDEO_SIZE_WIDTH,
+
+ /** gboolean **/
+ BRASERO_SETTING_WIN_MAXIMIZED,
+ BRASERO_SETTING_SHOW_SIDEPANE,
+ BRASERO_SETTING_SHOW_PREVIEW,
+
+ /** gchar * **/
+ BRASERO_SETTING_DISPLAY_LAYOUT_AUDIO,
+ BRASERO_SETTING_DISPLAY_LAYOUT_DATA,
+ BRASERO_SETTING_DISPLAY_LAYOUT_VIDEO,
+
+ /** gchar ** **/
+ BRASERO_SETTING_SEARCH_ENTRY_HISTORY,
+
+} BraseroSettingValue;
+
+#define BRASERO_TYPE_SETTING (brasero_setting_get_type ())
+#define BRASERO_SETTING(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BRASERO_TYPE_SETTING, BraseroSetting))
+#define BRASERO_SETTING_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BRASERO_TYPE_SETTING, BraseroSettingClass))
+#define BRASERO_IS_SETTING(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BRASERO_TYPE_SETTING))
+#define BRASERO_IS_SETTING_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BRASERO_TYPE_SETTING))
+#define BRASERO_SETTING_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BRASERO_TYPE_SETTING, BraseroSettingClass))
+
+typedef struct _BraseroSettingClass BraseroSettingClass;
+typedef struct _BraseroSetting BraseroSetting;
+
+struct _BraseroSettingClass
+{
+ GObjectClass parent_class;
+
+ /* Signals */
+ void(* value_changed) (BraseroSetting *self, gint value);
+};
+
+struct _BraseroSetting
+{
+ GObject parent_instance;
+};
+
+GType brasero_setting_get_type (void) G_GNUC_CONST;
+
+BraseroSetting *
+brasero_setting_get_default ();
+
+gboolean
+brasero_setting_get_value (BraseroSetting *setting,
+ BraseroSettingValue setting_value,
+ gpointer *value);
+
+gboolean
+brasero_setting_set_value (BraseroSetting *setting,
+ BraseroSettingValue setting_value,
+ gconstpointer value);
+
+gboolean
+brasero_setting_load (BraseroSetting *setting);
+
+gboolean
+brasero_setting_save (BraseroSetting *setting);
+
+G_END_DECLS
+
+#endif /* _BRASERO_SETTING_H_ */
diff --git a/src/brasero-xsession.c b/src/brasero-xsession.c
index b944c0f..cc97877 100644
--- a/src/brasero-xsession.c
+++ b/src/brasero-xsession.c
@@ -70,9 +70,6 @@ brasero_session_save_state_cb (EggSMClient *client,
const gint argc = 3;
const gchar *argv [] = { "brasero", "-p", NULL, NULL };
- /* Save the state of the window */
- brasero_app_save_window_state (app);
-
/* Try to save its contents */
argv [2] = brasero_app_get_saved_contents (app);
diff --git a/src/main.c b/src/main.c
index 1547f03..c097f40 100644
--- a/src/main.c
+++ b/src/main.c
@@ -487,6 +487,8 @@ main (int argc, char **argv)
return 1;
brasero_app_parse_options (current_app);
+
+ g_object_unref (current_app);
current_app = NULL;
brasero_burn_library_stop ();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]