Added use-session setting

master
Yevgen Muntyan 2007-07-20 13:19:23 -05:00
parent 90169df51a
commit 009ffddb0a
7 changed files with 147 additions and 61 deletions

View File

@ -30,3 +30,4 @@ Makefile(\.in)?$
^moo/moopython/pygtk/goocanvas/.cvsignore ^moo/moopython/pygtk/goocanvas/.cvsignore
^patches/ ^patches/
^po(-gsv)?/(dist|pot)$ ^po(-gsv)?/(dist|pot)$
^ppc-configure$

View File

@ -74,7 +74,7 @@ int _medit_parse_options (const char *const program_name,
-n, --new-app Run new instance of application\n" -n, --new-app Run new instance of application\n"
#define STR_HELP_USE_SESSION "\ #define STR_HELP_USE_SESSION "\
-s, --use-session Load and save session\n" -s, --use-session[=yes|no] Load and save session\n"
#define STR_HELP_PID "\ #define STR_HELP_PID "\
--pid=PID Use existing instance with process id PID\n" --pid=PID Use existing instance with process id PID\n"
@ -112,7 +112,7 @@ int _medit_parse_options (const char *const program_name,
#define STR_HELP "\ #define STR_HELP "\
-n, --new-app Run new instance of application\n\ -n, --new-app Run new instance of application\n\
-s, --use-session Load and save session\n\ -s, --use-session[=yes|no] Load and save session\n\
--pid=PID Use existing instance with process id PID\n\ --pid=PID Use existing instance with process id PID\n\
--app-name=NAME Set instance name to NAME if it's not already\n\ --app-name=NAME Set instance name to NAME if it's not already\n\
running\n\ running\n\
@ -165,6 +165,9 @@ char _medit_opt_version;
/* Set to 1 if option --help (-h) has been specified. */ /* Set to 1 if option --help (-h) has been specified. */
char _medit_opt_help; char _medit_opt_help;
/* Argument to option --use-session (-s), or a null pointer if no argument. */
const char *_medit_arg_use_session;
/* Argument to option --pid. */ /* Argument to option --pid. */
const char *_medit_arg_pid; const char *_medit_arg_pid;
@ -194,7 +197,6 @@ const char *_medit_arg_exec_file;
int _medit_parse_options (const char *const program_name, const int argc, char **const argv) int _medit_parse_options (const char *const program_name, const int argc, char **const argv)
{ {
static const char *const optstr__new_app = "new-app"; static const char *const optstr__new_app = "new-app";
static const char *const optstr__use_session = "use-session";
static const char *const optstr__pid = "pid"; static const char *const optstr__pid = "pid";
static const char *const optstr__app_name = "app-name"; static const char *const optstr__app_name = "app-name";
static const char *const optstr__mode = "mode"; static const char *const optstr__mode = "mode";
@ -219,6 +221,7 @@ int _medit_parse_options (const char *const program_name, const int argc, char *
_medit_opt_exec_file = 0; _medit_opt_exec_file = 0;
_medit_opt_version = 0; _medit_opt_version = 0;
_medit_opt_help = 0; _medit_opt_help = 0;
_medit_arg_use_session = 0;
_medit_arg_pid = 0; _medit_arg_pid = 0;
_medit_arg_app_name = 0; _medit_arg_app_name = 0;
_medit_arg_mode = 0; _medit_arg_mode = 0;
@ -412,13 +415,9 @@ int _medit_parse_options (const char *const program_name, const int argc, char *
} }
goto error_unknown_long_opt; goto error_unknown_long_opt;
case 'u': case 'u':
if (strncmp (option + 1, optstr__use_session + 1, option_len - 1) == 0) if (strncmp (option + 1, "se-session", option_len - 1) == 0)
{ {
if (argument != 0) _medit_arg_use_session = argument;
{
option = optstr__use_session;
goto error_unexpec_arg_long;
}
_medit_opt_use_session = 1; _medit_opt_use_session = 1;
break; break;
} }
@ -491,6 +490,13 @@ int _medit_parse_options (const char *const program_name, const int argc, char *
_medit_opt_project = 1; _medit_opt_project = 1;
break; break;
case 's': case 's':
if (option [1] != '\0')
{
_medit_arg_use_session = option + 1;
option = "\0";
}
else
_medit_arg_use_session = 0;
_medit_opt_use_session = 1; _medit_opt_use_session = 1;
break; break;
default: default:
@ -641,10 +647,10 @@ main (int argc, char *argv[])
int retval; int retval;
gboolean new_instance = FALSE; gboolean new_instance = FALSE;
gboolean run_input = TRUE; gboolean run_input = TRUE;
int use_session = -1;
AppMode mode = MODE_SIMPLE; AppMode mode = MODE_SIMPLE;
guint32 stamp; guint32 stamp;
guint32 line = 0; guint32 line = 0;
gboolean use_session = FALSE;
const char *name = NULL; const char *name = NULL;
init_mem_stuff (); init_mem_stuff ();
@ -691,12 +697,20 @@ main (int argc, char *argv[])
if (_medit_opt_new_app || mode == MODE_PROJECT) if (_medit_opt_new_app || mode == MODE_PROJECT)
new_instance = TRUE; new_instance = TRUE;
run_input = !_medit_opt_new_app || _medit_opt_app_name || _medit_opt_use_session || _medit_opt_project; if (_medit_opt_use_session)
use_session = !_medit_opt_new_app || _medit_opt_use_session || _medit_opt_app_name; {
if (!_medit_arg_use_session || !strcmp (_medit_arg_use_session, "yes"))
use_session = 1;
else
use_session = 0;
}
run_input = !_medit_opt_new_app || _medit_opt_app_name || use_session == 1 || _medit_opt_project;
app = g_object_new (MOO_TYPE_APP, app = g_object_new (MOO_TYPE_APP,
"argv", argv, "argv", argv,
"run-input", run_input, "run-input", run_input,
"use-session", use_session,
"short-name", "medit", "short-name", "medit",
"full-name", "medit", "full-name", "medit",
"description", _("medit is a text editor"), "description", _("medit is a text editor"),
@ -755,7 +769,7 @@ main (int argc, char *argv[])
if (mode == MODE_PROJECT) if (mode == MODE_PROJECT)
project_mode (); project_mode ();
else if (use_session) else
moo_app_load_session (app); moo_app_load_session (app);
editor = moo_app_get_editor (app); editor = moo_app_get_editor (app);

View File

@ -47,7 +47,7 @@ int _medit_parse_options (const char *const program_name,
#line 122 "medit-app.c" #line 122 "medit-app.c"
%% %%
n new-app "Run new instance of application" n new-app "Run new instance of application"
s use-session "Load and save session" s use-session "[=yes|no] Load and save session" optarg
pid "=PID Use existing instance with process id PID" reqarg pid "=PID Use existing instance with process id PID" reqarg
app-name "=NAME Set instance name to NAME if it's not already running" reqarg app-name "=NAME Set instance name to NAME if it's not already running" reqarg
m mode "=[simple|project] Use specified mode" reqarg m mode "=[simple|project] Use specified mode" reqarg
@ -197,10 +197,10 @@ main (int argc, char *argv[])
int retval; int retval;
gboolean new_instance = FALSE; gboolean new_instance = FALSE;
gboolean run_input = TRUE; gboolean run_input = TRUE;
int use_session = -1;
AppMode mode = MODE_SIMPLE; AppMode mode = MODE_SIMPLE;
guint32 stamp; guint32 stamp;
guint32 line = 0; guint32 line = 0;
gboolean use_session = FALSE;
const char *name = NULL; const char *name = NULL;
init_mem_stuff (); init_mem_stuff ();
@ -247,12 +247,20 @@ main (int argc, char *argv[])
if (_medit_opt_new_app || mode == MODE_PROJECT) if (_medit_opt_new_app || mode == MODE_PROJECT)
new_instance = TRUE; new_instance = TRUE;
run_input = !_medit_opt_new_app || _medit_opt_app_name || _medit_opt_use_session || _medit_opt_project; if (_medit_opt_use_session)
use_session = !_medit_opt_new_app || _medit_opt_use_session || _medit_opt_app_name; {
if (!_medit_arg_use_session || !strcmp (_medit_arg_use_session, "yes"))
use_session = 1;
else
use_session = 0;
}
run_input = !_medit_opt_new_app || _medit_opt_app_name || use_session == 1 || _medit_opt_project;
app = g_object_new (MOO_TYPE_APP, app = g_object_new (MOO_TYPE_APP,
"argv", argv, "argv", argv,
"run-input", run_input, "run-input", run_input,
"use-session", use_session,
"short-name", "medit", "short-name", "medit",
"full-name", "medit", "full-name", "medit",
"description", _("medit is a text editor"), "description", _("medit is a text editor"),
@ -311,7 +319,7 @@ main (int argc, char *argv[])
if (mode == MODE_PROJECT) if (mode == MODE_PROJECT)
project_mode (); project_mode ();
else if (use_session) else
moo_app_load_session (app); moo_app_load_session (app);
editor = moo_app_get_editor (app); editor = moo_app_get_editor (app);

View File

@ -35,8 +35,10 @@ Show version of the program.
Run new instance of \fBmedit\fP. By default \fBmedit\fP opens \fBfiles\fP Run new instance of \fBmedit\fP. By default \fBmedit\fP opens \fBfiles\fP
in an existing instance of application. in an existing instance of application.
.TP .TP
.B \-s, \-\-use\-session .B \-s, \-\-use\-session[=yes|no]
Load and save session. By default \fBmedit\fP does it when \-n is not used. Load and save session. By default \fBmedit\fP does it when \-n is not used.
If this option is not given on command line then medit uses the corresponding
preferences setting.
.TP .TP
.B \-\-pid PID .B \-\-pid PID
Use existing instance with process id \fBPID\fP. Use existing instance with process id \fBPID\fP.

View File

@ -78,6 +78,7 @@ struct _MooAppPrivate {
gboolean running; gboolean running;
gboolean in_try_quit; gboolean in_try_quit;
int use_session;
EggSMClient *sm_client; EggSMClient *sm_client;
char *session_file; char *session_file;
MooMarkupDoc *session; MooMarkupDoc *session;
@ -187,6 +188,7 @@ enum {
PROP_VERSION, PROP_VERSION,
PROP_DESCRIPTION, PROP_DESCRIPTION,
PROP_RUN_INPUT, PROP_RUN_INPUT,
PROP_USE_SESSION,
PROP_USE_EDITOR, PROP_USE_EDITOR,
PROP_QUIT_ON_EDITOR_CLOSE, PROP_QUIT_ON_EDITOR_CLOSE,
PROP_DEFAULT_UI, PROP_DEFAULT_UI,
@ -306,6 +308,14 @@ moo_app_class_init (MooAppClass *klass)
TRUE, TRUE,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
g_object_class_install_property (gobject_class,
PROP_USE_SESSION,
g_param_spec_int ("use-session",
"use-session",
"use-session",
-1, 1, -1,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
g_object_class_install_property (gobject_class, g_object_class_install_property (gobject_class,
PROP_INSTANCE_NAME, PROP_INSTANCE_NAME,
g_param_spec_string ("instance-name", g_param_spec_string ("instance-name",
@ -435,8 +445,9 @@ moo_app_instance_init (MooApp *app)
moo_app_instance = app; moo_app_instance = app;
app->priv = g_new0 (MooAppPrivate, 1); app->priv = g_new0 (MooAppPrivate, 1);
app->priv->info = moo_app_info_new (); app->priv->use_session = -1;
app->priv->info = moo_app_info_new ();
app->priv->info->version = g_strdup (APP_VERSION); app->priv->info->version = g_strdup (APP_VERSION);
app->priv->info->website = g_strdup ("http://ggap.sourceforge.net/"); app->priv->info->website = g_strdup ("http://ggap.sourceforge.net/");
app->priv->info->website_label = g_strdup ("http://ggap.sourceforge.net"); app->priv->info->website_label = g_strdup ("http://ggap.sourceforge.net");
@ -573,6 +584,10 @@ moo_app_set_property (GObject *object,
app->priv->run_input = g_value_get_boolean (value); app->priv->run_input = g_value_get_boolean (value);
break; break;
case PROP_USE_SESSION:
app->priv->use_session = g_value_get_int (value);
break;
case PROP_INSTANCE_NAME: case PROP_INSTANCE_NAME:
g_free (app->priv->instance_name); g_free (app->priv->instance_name);
app->priv->instance_name = g_value_dup_string (value); app->priv->instance_name = g_value_dup_string (value);
@ -642,6 +657,9 @@ moo_app_get_property (GObject *object,
case PROP_RUN_INPUT: case PROP_RUN_INPUT:
g_value_set_boolean (value, app->priv->run_input); g_value_set_boolean (value, app->priv->run_input);
break; break;
case PROP_USE_SESSION:
g_value_set_int (value, app->priv->use_session);
break;
case PROP_INSTANCE_NAME: case PROP_INSTANCE_NAME:
g_value_set_string (value, app->priv->instance_name); g_value_set_string (value, app->priv->instance_name);
break; break;
@ -892,8 +910,13 @@ moo_app_init_real (MooApp *app)
#ifdef MOO_BUILD_EDIT #ifdef MOO_BUILD_EDIT
if (app->priv->use_editor) if (app->priv->use_editor)
moo_app_init_editor (app); moo_app_init_editor (app);
if (app->priv->use_session == -1)
app->priv->use_session = moo_prefs_get_bool (moo_edit_setting (MOO_EDIT_PREFS_SAVE_SESSION));
#endif #endif
if (app->priv->use_session)
app->priv->run_input = TRUE;
start_input (app); start_input (app);
return TRUE; return TRUE;
@ -1551,6 +1574,9 @@ moo_app_load_session (MooApp *app)
g_return_if_fail (MOO_IS_APP (app)); g_return_if_fail (MOO_IS_APP (app));
if (!app->priv->use_session)
return;
if (!app->priv->session_file) if (!app->priv->session_file)
{ {
if (app->priv->instance_name) if (app->priv->instance_name)

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd"> <!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
<!--Generated with glade3 3.0.3 on Wed Jul 4 20:05:48 2007 by muntyan@munt10 <!--Generated with glade3 3.0.3 on Fri Jul 20 12:54:00 2007 by muntyan@munt10
Version: 3.0.0 Version: 3.0.0
Date: Fri Dec 8 17:47:39 2006 Date: Fri Dec 8 17:47:39 2006
User: muntyan User: muntyan
@ -27,18 +27,6 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="n_rows">1</property> <property name="n_rows">1</property>
<property name="n_columns">2</property> <property name="n_columns">2</property>
<child>
<widget class="GtkLabel" id="label12">
<property name="visible">True</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Encodings to autodetect:</property>
</widget>
<packing>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
<property name="x_padding">3</property>
</packing>
</child>
<child> <child>
<widget class="GtkEntry" id="entry1"> <widget class="GtkEntry" id="entry1">
<property name="visible">True</property> <property name="visible">True</property>
@ -51,6 +39,18 @@
<property name="y_options"></property> <property name="y_options"></property>
</packing> </packing>
</child> </child>
<child>
<widget class="GtkLabel" id="label12">
<property name="visible">True</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Encodings to autodetect:</property>
</widget>
<packing>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
<property name="x_padding">3</property>
</packing>
</child>
</widget> </widget>
</child> </child>
</widget> </widget>
@ -87,17 +87,30 @@
<property name="n_rows">3</property> <property name="n_rows">3</property>
<property name="n_columns">2</property> <property name="n_columns">2</property>
<child> <child>
<widget class="GtkCheckButton" id="checkbutton21"> <widget class="GtkComboBoxEntry" id="encoding_save">
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">Remove trailing spaces</property> <child internal-child="entry">
<property name="use_underline">True</property> <widget class="GtkEntry" id="comboboxentry-entry2">
<property name="draw_indicator">True</property> <property name="visible">True</property>
<property name="moo_prefs_key">strip</property> </widget>
</child>
</widget> </widget>
<packing> <packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property> <property name="right_attach">2</property>
<property name="top_attach">1</property> <property name="y_options"></property>
<property name="bottom_attach">2</property> </packing>
</child>
<child>
<widget class="GtkLabel" id="label14">
<property name="visible">True</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Encoding for new files:</property>
</widget>
<packing>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
<property name="x_padding">3</property>
</packing> </packing>
</child> </child>
<child> <child>
@ -114,30 +127,17 @@
</packing> </packing>
</child> </child>
<child> <child>
<widget class="GtkLabel" id="label14"> <widget class="GtkCheckButton" id="checkbutton21">
<property name="visible">True</property> <property name="visible">True</property>
<property name="xalign">1</property> <property name="label" translatable="yes">Remove trailing spaces</property>
<property name="label" translatable="yes">Encoding for new files:</property> <property name="use_underline">True</property>
<property name="draw_indicator">True</property>
<property name="moo_prefs_key">strip</property>
</widget> </widget>
<packing> <packing>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
<property name="x_padding">3</property>
</packing>
</child>
<child>
<widget class="GtkComboBoxEntry" id="encoding_save">
<property name="visible">True</property>
<child internal-child="entry">
<widget class="GtkEntry" id="comboboxentry-entry2">
<property name="visible">True</property>
</widget>
</child>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property> <property name="right_attach">2</property>
<property name="y_options"></property> <property name="top_attach">1</property>
<property name="bottom_attach">2</property>
</packing> </packing>
</child> </child>
</widget> </widget>
@ -161,7 +161,41 @@
</packing> </packing>
</child> </child>
<child> <child>
<placeholder/> <widget class="GtkFrame" id="frame1">
<property name="visible">True</property>
<property name="border_width">3</property>
<property name="label_xalign">0</property>
<child>
<widget class="GtkAlignment" id="alignment1">
<property name="visible">True</property>
<property name="bottom_padding">3</property>
<property name="left_padding">3</property>
<property name="right_padding">3</property>
<child>
<widget class="GtkCheckButton" id="checkbutton1">
<property name="visible">True</property>
<property name="label" translatable="yes">Enable session support</property>
<property name="draw_indicator">True</property>
<property name="moo_prefs_key">save_session</property>
</widget>
</child>
</widget>
</child>
<child>
<widget class="GtkLabel" id="label2">
<property name="visible">True</property>
<property name="label" translatable="yes">Sessions</property>
</widget>
<packing>
<property name="type">label_item</property>
</packing>
</child>
</widget>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">2</property>
</packing>
</child> </child>
</widget> </widget>
</child> </child>

View File

@ -92,6 +92,7 @@ _moo_edit_init_prefs (void)
NEW_KEY_BOOL (MOO_EDIT_PREFS_AUTO_INDENT, TRUE); NEW_KEY_BOOL (MOO_EDIT_PREFS_AUTO_INDENT, TRUE);
NEW_KEY_BOOL (MOO_EDIT_PREFS_BACKSPACE_INDENTS, FALSE); NEW_KEY_BOOL (MOO_EDIT_PREFS_BACKSPACE_INDENTS, FALSE);
NEW_KEY_BOOL (MOO_EDIT_PREFS_SAVE_SESSION, TRUE);
NEW_KEY_BOOL (MOO_EDIT_PREFS_AUTO_SAVE, FALSE); NEW_KEY_BOOL (MOO_EDIT_PREFS_AUTO_SAVE, FALSE);
NEW_KEY_INT (MOO_EDIT_PREFS_AUTO_SAVE_INTERVAL, 5); NEW_KEY_INT (MOO_EDIT_PREFS_AUTO_SAVE_INTERVAL, 5);
NEW_KEY_BOOL (MOO_EDIT_PREFS_MAKE_BACKUPS, FALSE); NEW_KEY_BOOL (MOO_EDIT_PREFS_MAKE_BACKUPS, FALSE);