summaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
authorGlynn Foster <glynn.foster@sun.com>2003-01-06 15:06:17 +0000
committerGlynn Foster <gman@src.gnome.org>2003-01-06 15:06:17 +0000
commit344345d9aa262940fedfb8beed9dc0c9bb163a10 (patch)
tree5c987624efb5352bb3ff4496af798943a3cc62c1 /src/main.c
parentb44078584af9c85532b05c371c8c960725679620 (diff)
Add functions to init and free the parsing options. Still not terribly
2003-01-06 Glynn Foster <glynn.foster@sun.com> * src/main.c: Add functions to init and free the parsing options. Still not terribly pretty though. * src/tree.c, src/zenity.h: Handle --column argument. * TODO: Update accordingly.
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c71
1 files changed, 60 insertions, 11 deletions
diff --git a/src/main.c b/src/main.c
index cf17d7d..a1faf68 100644
--- a/src/main.c
+++ b/src/main.c
@@ -631,29 +631,76 @@ struct poptOption application_options[] = {
ZenityParsingOptions *results;
-gint
-main (gint argc, gchar **argv) {
- poptContext ctx;
- int nextopt;
- ZenityData *general;
- ZenityCalendarData *cal_data;
-
- bindtextdomain(GETTEXT_PACKAGE, GNOMELOCALEDIR);
- bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
- textdomain(GETTEXT_PACKAGE);
+static void
+zenity_init_parsing_options (void) {
results = g_new0 (ZenityParsingOptions, 1);
+
+ /* Initialize the various dialog structures */
results->data = g_new0 (ZenityData, 1);
results->calendar_data = g_new0 (ZenityCalendarData, 1);
results->msg_data = g_new0 (ZenityMsgData, 1);
results->file_data = g_new0 (ZenityFileData, 1);
results->entry_data = g_new0 (ZenityEntryData, 1);
- results->entry_data->visible = TRUE;
results->progress_data = g_new0 (ZenityProgressData, 1);
results->text_data = g_new0 (ZenityTextData, 1);
results->tree_data = g_new0 (ZenityTreeData, 1);
+
+ /* Give some sensible defaults */
+ results->entry_data->visible = TRUE;
results->tree_data->checkbox = FALSE;
results->tree_data->radiobox = FALSE;
+}
+
+static void
+zenity_free_parsing_options (void) {
+
+ /* General options */
+ if (results->data->dialog_title)
+ g_free (results->data->dialog_title);
+ if (results->data->window_icon)
+ g_free (results->data->window_icon);
+
+ /* Dialog options */
+ switch (results->mode) {
+ case MODE_CALENDAR:
+ g_free (results->calendar_data->dialog_text);
+ break;
+ case MODE_ENTRY:
+ g_free (results->entry_data->dialog_text);
+ g_free (results->entry_data->entry_text);
+ break;
+ case MODE_ERROR:
+ case MODE_QUESTION:
+ case MODE_WARNING:
+ g_free (results->msg_data->dialog_text);
+ break;
+ case MODE_FILE:
+ g_free (results->file_data->uri);
+ break;
+ case MODE_TEXTINFO:
+ g_free (results->text_data->uri);
+ break;
+ case MODE_LIST:
+ g_slist_foreach (results->tree_data->columns, (GFunc) g_free, NULL);
+ break;
+ default:
+ break;
+ }
+}
+
+gint
+main (gint argc, gchar **argv) {
+ poptContext ctx;
+ int nextopt;
+ ZenityData *general;
+ ZenityCalendarData *cal_data;
+
+ bindtextdomain(GETTEXT_PACKAGE, GNOMELOCALEDIR);
+ bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
+ textdomain(GETTEXT_PACKAGE);
+
+ zenity_init_parsing_options ();
/* FIXME: popt doesn't like passing stuff through data
* but it doesn't seem to cope with the data that I try
@@ -702,6 +749,7 @@ main (gint argc, gchar **argv) {
}
poptFreeContext(ctx);
+ zenity_free_parsing_options ();
exit (0);
}
@@ -811,6 +859,7 @@ void zenity_parse_options_callback (poptContext ctx,
}
break;
case OPTION_COLUMN:
+ results->tree_data->columns = g_slist_append (results->tree_data->columns, g_strdup (arg));
break;
case OPTION_CHECKLIST:
results->tree_data->checkbox = TRUE;