Revision: 729 Author: ntrel Date: 2006-08-17 07:40:43 -0700 (Thu, 17 Aug 2006) ViewCVS: http://svn.sourceforge.net/geany/?rev=729&view=rev
Log Message: ----------- Move signal_cb to main.c; Move main_init command line settings to parse_command_line_options; Use setup_paths, locale_init, parse_command_line_options, setup_config_dir in main()
Modified Paths: -------------- trunk/ChangeLog trunk/src/main.c Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2006-08-17 14:38:57 UTC (rev 728) +++ trunk/ChangeLog 2006-08-17 14:40:43 UTC (rev 729) @@ -1,3 +1,13 @@ +2006-08-17 Nick Treleaven nick.treleaven@btinternet.com + + * src/callbacks.c, src/callbacks.h, src/main.c: + Move signal_cb to main.c. + * src/main.c: + Move main_init command line settings to parse_command_line_options. + Use setup_paths, locale_init, parse_command_line_options, + setup_config_dir in main(). + + 2006-08-15 Nick Treleaven nick.treleaven@btinternet.com
* tagmanager/c.c: Backported calltips workspace support for C-like
Modified: trunk/src/main.c =================================================================== --- trunk/src/main.c 2006-08-17 14:38:57 UTC (rev 728) +++ trunk/src/main.c 2006-08-17 14:40:43 UTC (rev 729) @@ -207,21 +207,6 @@ static void main_init(void) { // inits - app = g_new0(MyApp, 1); -#ifdef GEANY_DEBUG - geany_debug("debug mode built in (can't be disabled)"); -#endif - app->debug_mode = debug_mode; - geany_debug("GTK+ runtime version: %u.%u.%u", - gtk_major_version, gtk_minor_version, gtk_micro_version); - - if (alternate_config) - { - geany_debug("alternate config: %s", alternate_config); - app->configdir = alternate_config; - } - else - app->configdir = g_strconcat(GEANY_HOME_DIR, G_DIR_SEPARATOR_S, ".", PACKAGE, NULL); app->window = NULL; app->open_fontsel = NULL; app->open_colorsel = NULL; @@ -233,13 +218,6 @@ app->tab_order_ltr = FALSE; app->quitting = FALSE; app->ignore_callback = FALSE; -#ifdef HAVE_FIFO - app->ignore_fifo = ignore_fifo; -#endif -#ifdef HAVE_VTE - app->lib_vte = lib_vte; -#endif - app->ignore_global_tags = ignore_global_tags; app->tm_workspace = tm_get_workspace(); app->recent_queue = g_queue_new(); app->opening_session_files = FALSE; @@ -449,19 +427,10 @@ #endif
-gint main(gint argc, gchar **argv) +static void setup_paths() { - GError *error = NULL; - GOptionContext *context; -#ifdef HAVE_FIFO - GIOChannel *ioc = NULL; -#endif - gint mkdir_result = 0; - gint idx; - gchar *config_dir; gchar *data_dir; gchar *doc_dir; - gchar *locale_dir;
// set paths #ifdef G_OS_WIN32 @@ -471,12 +440,25 @@
data_dir = g_strconcat(install_dir, "\data", NULL); // e.g. C:\Program Files\geany\data doc_dir = g_strconcat(install_dir, "\doc", NULL); - locale_dir = g_strdup(data_dir);
g_free(install_dir); #else data_dir = g_strdup(PACKAGE_DATA_DIR "/" PACKAGE "/"); // e.g. /usr/share/geany doc_dir = g_strdup(PACKAGE_DATA_DIR "/doc/" PACKAGE "/html/"); +#endif + + app->datadir = data_dir; + app->docdir = doc_dir; +} + + +static void locale_init() +{ + gchar *locale_dir = NULL; + +#ifdef G_OS_WIN32 + locale_dir = g_strdup(app->datadir); +#else locale_dir = g_strdup(PACKAGE_LOCALE_DIR); #endif
@@ -486,12 +468,19 @@ textdomain(GETTEXT_PACKAGE); #endif g_free(locale_dir); +}
+ +static void parse_command_line_options(gint *argc, gchar ***argv) +{ + GOptionContext *context; + GError *error = NULL; + context = g_option_context_new(_(" - A fast and lightweight IDE")); g_option_context_add_main_entries(context, entries, GETTEXT_PACKAGE); g_option_group_set_translation_domain(g_option_context_get_main_group(context), GETTEXT_PACKAGE); g_option_context_add_group(context, gtk_get_option_group(TRUE)); - g_option_context_parse(context, &argc, &argv, &error); + g_option_context_parse(context, argc, argv, &error); g_option_context_free(context);
if (show_version) @@ -502,21 +491,40 @@ GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION); printf("\n");
- return (0); + exit(0); }
- gtk_set_locale(); + app->debug_mode = debug_mode; +#ifdef GEANY_DEBUG + geany_debug("debug mode built in (can't be disabled)"); +#endif + geany_debug("GTK+ runtime version: %u.%u.%u", + gtk_major_version, gtk_minor_version, gtk_micro_version);
- signal(SIGTERM, signal_cb); -#ifdef G_OS_UNIX - /* ignore SIGPIPE signal for preventing sudden death of program */ - signal(SIGPIPE, SIG_IGN); + if (alternate_config) + { + geany_debug("alternate config: %s", alternate_config); + app->configdir = alternate_config; + } + else + app->configdir = g_strconcat(GEANY_HOME_DIR, G_DIR_SEPARATOR_S, ".", PACKAGE, NULL); + +#ifdef HAVE_FIFO + app->ignore_fifo = ignore_fifo; #endif +#ifdef HAVE_VTE + app->lib_vte = lib_vte; +#endif + app->ignore_global_tags = ignore_global_tags; +}
- if (alternate_config) config_dir = g_strdup(alternate_config); - else config_dir = g_strconcat(GEANY_HOME_DIR, G_DIR_SEPARATOR_S, ".", PACKAGE, NULL);
- mkdir_result = utils_make_settings_dir(config_dir, data_dir, doc_dir); +// Returns 0 if config dir is OK. +static gint setup_config_dir() +{ + gint mkdir_result = 0; + + mkdir_result = utils_make_settings_dir(app->configdir, app->datadir, app->docdir); if (mkdir_result != 0) { if (! dialogs_show_question( @@ -524,22 +532,53 @@ "using Geany without a configuration directory.\nStart Geany anyway?"), g_strerror(mkdir_result))) { - g_free(config_dir); - return (0); + exit(0); } } + return mkdir_result; +}
+ +static void signal_cb(gint sig) +{ + if (sig == SIGTERM) + { + on_exit_clicked(NULL, NULL); + } +} + + +gint main(gint argc, gchar **argv) +{ + gint idx; + gint config_dir_result; + + app = g_new0(MyApp, 1); + + setup_paths(); + locale_init(); + parse_command_line_options(&argc, &argv); + + gtk_set_locale(); + + signal(SIGTERM, signal_cb); +#ifdef G_OS_UNIX + /* ignore SIGPIPE signal for preventing sudden death of program */ + signal(SIGPIPE, SIG_IGN); +#endif + + config_dir_result = setup_config_dir(); + // handle fifo + app->fifo_ioc = NULL; #ifdef HAVE_FIFO - if (! ignore_fifo) ioc = create_fifo(argc, argv, config_dir); + if (! ignore_fifo) + app->fifo_ioc = create_fifo(argc, argv, app->configdir); #endif - g_free(config_dir);
gtk_init(&argc, &argv);
// inits main_init(); - app->datadir = data_dir; - app->docdir = doc_dir; gtk_widget_set_size_request(app->window, GEANY_WINDOW_MINIMAL_WIDTH, GEANY_WINDOW_MINIMAL_HEIGHT); gtk_window_set_default_size(GTK_WINDOW(app->window), GEANY_WINDOW_DEFAULT_WIDTH, GEANY_WINDOW_DEFAULT_HEIGHT); encodings_init(); @@ -553,9 +592,6 @@ app->have_vte = app->load_vte; if (no_vte) app->have_vte = FALSE; #endif -#ifdef HAVE_FIFO - app->fifo_ioc = ioc; -#endif filetypes_init_types(); if (generate_datafiles) { @@ -588,8 +624,9 @@ utils_create_insert_menu_items();
msgwin_status_add(_("This is Geany %s."), VERSION); - if (mkdir_result != 0) - msgwin_status_add(_("Configuration directory could not be created (%s)."), g_strerror(mkdir_result)); + if (config_dir_result != 0) + msgwin_status_add(_("Configuration directory could not be created (%s)."), + g_strerror(config_dir_result));
// apply all configuration options apply_settings();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.