projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
format: Create a new "struct fmt_affix" for prefix and suffix strings.
[pspp]
/
src
/
ui
/
gui
/
psppire-conf.c
diff --git
a/src/ui/gui/psppire-conf.c
b/src/ui/gui/psppire-conf.c
index ed2f9178c7c6d26977b0e840bf8632c7e287ae4f..02cc2751212a2a0de931fe7a2b9e722b342255e2 100644
(file)
--- a/
src/ui/gui/psppire-conf.c
+++ b/
src/ui/gui/psppire-conf.c
@@
-1,5
+1,5
@@
/* PSPPIRE - a graphical user interface for PSPP.
/* PSPPIRE - a graphical user interface for PSPP.
- Copyright (C) 2009 Free Software Foundation
+ Copyright (C) 2009
, 2010
Free Software Foundation
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
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
@@
-20,7
+20,9
@@
*/
#include <config.h>
*/
#include <config.h>
+#include <errno.h>
#include <stdio.h>
#include <stdio.h>
+#include <sys/stat.h>
#include "psppire-conf.h"
#include "psppire-conf.h"
@@
-95,7
+97,6
@@
static void
psppire_conf_finalize (GObject *object)
{
PsppireConf *conf = PSPPIRE_CONF (object);
psppire_conf_finalize (GObject *object)
{
PsppireConf *conf = PSPPIRE_CONF (object);
- g_mutex_free (conf->mutex);
g_key_file_free (conf->keyfile);
g_free (conf->filename);
}
g_key_file_free (conf->keyfile);
g_free (conf->filename);
}
@@
-134,15
+135,22
@@
psppire_conf_class_init (PsppireConfClass *class)
object_class->finalize = psppire_conf_finalize;
object_class->dispose = psppire_conf_dispose;
object_class->constructor = psppire_conf_construct;
object_class->finalize = psppire_conf_finalize;
object_class->dispose = psppire_conf_dispose;
object_class->constructor = psppire_conf_construct;
+
}
static void
psppire_conf_init (PsppireConf *conf)
{
}
static void
psppire_conf_init (PsppireConf *conf)
{
- const gchar *dirname = g_get_user_config_dir ();
+ const gchar *dirname;
+ struct stat s;
- conf->mutex = g_mutex_new ();
+ /* Get the name of the directory for user configuration files, then, if it
+ doesn't already exist, create it, since we might be the first program
+ to want to put files there. */
+ dirname = g_get_user_config_dir ();
+ if (stat (dirname, &s) == -1 && errno == ENOENT)
+ mkdir (dirname, 0700);
conf->filename = g_strdup_printf ("%s/%s", dirname, "psppirerc");
conf->filename = g_strdup_printf ("%s/%s", dirname, "psppirerc");
@@
-166,8
+174,6
@@
psppire_conf_get_int (PsppireConf *conf, const gchar *base,
{
gboolean ok;
GError *err = NULL;
{
gboolean ok;
GError *err = NULL;
-
- g_mutex_lock (conf->mutex);
conf_read (conf);
*value = g_key_file_get_integer (conf->keyfile,
base,
conf_read (conf);
*value = g_key_file_get_integer (conf->keyfile,
base,
@@
-177,9
+183,6
@@
psppire_conf_get_int (PsppireConf *conf, const gchar *base,
if ( err != NULL )
g_error_free (err);
if ( err != NULL )
g_error_free (err);
-
- g_mutex_unlock (conf->mutex);
-
return ok;
}
return ok;
}
@@
-190,8
+193,6
@@
psppire_conf_get_boolean (PsppireConf *conf, const gchar *base,
gboolean ok;
gboolean b;
GError *err = NULL;
gboolean ok;
gboolean b;
GError *err = NULL;
- g_mutex_lock (conf->mutex);
-
conf_read (conf);
b = g_key_file_get_boolean (conf->keyfile,
base,
conf_read (conf);
b = g_key_file_get_boolean (conf->keyfile,
base,
@@
-204,8
+205,6
@@
psppire_conf_get_boolean (PsppireConf *conf, const gchar *base,
if (ok)
*value = b;
if (ok)
*value = b;
- g_mutex_unlock (conf->mutex);
-
return ok;
}
return ok;
}
@@
-215,10
+214,8
@@
psppire_conf_set_int (PsppireConf *conf,
const gchar *base, const gchar *name,
gint value)
{
const gchar *base, const gchar *name,
gint value)
{
- g_mutex_lock (conf->mutex);
g_key_file_set_integer (conf->keyfile, base, name, value);
conf_write (conf);
g_key_file_set_integer (conf->keyfile, base, name, value);
conf_write (conf);
- g_mutex_unlock (conf->mutex);
}
void
}
void
@@
-226,10
+223,8
@@
psppire_conf_set_boolean (PsppireConf *conf,
const gchar *base, const gchar *name,
gboolean value)
{
const gchar *base, const gchar *name,
gboolean value)
{
- g_mutex_lock (conf->mutex);
g_key_file_set_boolean (conf->keyfile, base, name, value);
conf_write (conf);
g_key_file_set_boolean (conf->keyfile, base, name, value);
conf_write (conf);
- g_mutex_unlock (conf->mutex);
}
/*
}
/*
@@
-277,36
+272,29
@@
psppire_conf_set_window_geometry (PsppireConf *conf,
void
psppire_conf_save_window_geometry (PsppireConf *conf,
const gchar *base,
void
psppire_conf_save_window_geometry (PsppireConf *conf,
const gchar *base,
- G
dkEvent *e
)
+ G
tkWindow *gtk_window
)
{
{
- switch (e->type)
- {
- case GDK_CONFIGURE:
- {
- GdkEventConfigure *event = &e->configure;
+ gboolean maximized;
+ GdkWindow *w;
- if ( gdk_window_get_state (event->window) &
-
GDK_WINDOW_STATE_MAXIMIZED
)
-
return;
+ w = gtk_widget_get_window (GTK_WIDGET (gtk_window));
+
if (w == NULL
)
+ return;
-
psppire_conf_set_int (conf, base, "height", event->height)
;
-
psppire_conf_set_int (conf, base, "width", event->width
);
+
maximized = (gdk_window_get_state (w) & GDK_WINDOW_STATE_MAXIMIZED) != 0
;
+
psppire_conf_set_boolean (conf, base, "maximize", maximized
);
- psppire_conf_set_int (conf, base, "x", event->x);
- psppire_conf_set_int (conf, base, "y", event->y);
- }
- break;
- case GDK_WINDOW_STATE:
- {
- GdkEventWindowState *event = &e->window_state;
+ if (!maximized)
+ {
+ gint width, height;
+ gint x, y;
- psppire_conf_set_boolean (conf, base, "maximize",
- event->new_window_state &
- GDK_WINDOW_STATE_MAXIMIZED );
- }
- break;
- default:
- break;
- };
+ gdk_drawable_get_size (w, &width, &height);
+ gdk_window_get_position (w, &x, &y);
+ psppire_conf_set_int (conf, base, "height", height);
+ psppire_conf_set_int (conf, base, "width", width);
+ psppire_conf_set_int (conf, base, "x", x);
+ psppire_conf_set_int (conf, base, "y", y);
+ }
}
}