diff --git a/ChangeLog b/ChangeLog index f2eaaa9..dd7df8c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2003-01-14 Glynn Foster + + * src/Makefile.am, src/about.c, src/main.c, + src/zenity.glade: Add an about box. Still need to add + an icon, and implement the callbacks for Help and Credits. Extra + hassle for not linking against libgnomeui. Sigh. + 2003-01-14 Glynn Foster * src/tree.c, src/zenity.h, src/main.c: Add support to diff --git a/src/Makefile.am b/src/Makefile.am index 11e0816..b96eeee 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -10,6 +10,7 @@ zenity_SOURCES = \ text.c \ progress.c \ tree.c \ + about.c \ util.h \ util.c diff --git a/src/about.c b/src/about.c new file mode 100644 index 0000000..43b023c --- /dev/null +++ b/src/about.c @@ -0,0 +1,104 @@ +/* + * about.c + * + * Copyright (C) 2002 Sun Microsystems, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Authors: Glynn Foster + */ + +#include +#include "config.h" +#include "zenity.h" +#include "util.h" + +#define GTK_RESPONSE_CREDITS 1 + +static void zenity_about_dialog_response (GtkWidget *widget, int response, gpointer data); + +void +zenity_about (ZenityData *data) +{ + GladeXML *glade_dialog = NULL; + GtkWidget *dialog; + GtkWidget *label; + gchar *text; + + glade_dialog = zenity_util_load_glade_file ("zenity_about_dialog"); + + if (glade_dialog == NULL) { + data->exit_code = -1; + return; + } + + glade_xml_signal_autoconnect (glade_dialog); + + dialog = glade_xml_get_widget (glade_dialog, "zenity_about_dialog"); + + g_signal_connect (G_OBJECT (dialog), "response", + G_CALLBACK (zenity_about_dialog_response), data); + + /* FIXME: Set an appropriate window icon for the dialog + * zenity_util_set_window_icon (dialog, ZENITY_IMAGE_FULLPATH ("")); + */ + + label = glade_xml_get_widget (glade_dialog, "zenity_about_version"); + text = g_strdup_printf ("Zenity %s", VERSION); + gtk_label_set_markup (GTK_LABEL (label), text); + g_free (text); + + label = glade_xml_get_widget (glade_dialog, "zenity_about_description"); + gtk_label_set_text (GTK_LABEL (label), _("Display dialog boxes from shell scripts")); + + label = glade_xml_get_widget (glade_dialog, "zenity_about_copyright"); + text = g_strdup_printf ("%s", _("(C) 2003 Sun Microsystems")); + gtk_label_set_markup (GTK_LABEL (label), text); + g_free (text); + + if (glade_dialog) + g_object_unref (glade_dialog); + + gtk_widget_show (dialog); + gtk_main (); +} + +static void +zenity_about_dialog_response (GtkWidget *widget, int response, gpointer data) +{ + ZenityData *zen_data = data; + + switch (response) { + case GTK_RESPONSE_OK: + zen_data->exit_code = 0; + gtk_main_quit (); + break; + + case GTK_RESPONSE_HELP: + zen_data->exit_code = 1; + gtk_main_quit (); + break; + + case GTK_RESPONSE_CREDITS: + zen_data->exit_code = 1; + gtk_main_quit (); + break; + default: + /* Esc dialog */ + zen_data->exit_code = 1; + break; + } +} diff --git a/src/main.c b/src/main.c index 2623232..bcd3208 100644 --- a/src/main.c +++ b/src/main.c @@ -37,6 +37,7 @@ typedef enum { MODE_TEXTINFO, MODE_WARNING, MODE_INFO, + MODE_ABOUT, MODE_LAST } ZenityDialogMode; @@ -849,6 +850,9 @@ main (gint argc, gchar **argv) { case MODE_TEXTINFO: zenity_text (results->data, results->text_data); break; + case MODE_ABOUT: + zenity_about (results->data); + break; default: g_assert_not_reached (); zenity_free_parsing_options (); @@ -1204,8 +1208,7 @@ void zenity_parse_options_callback (poptContext ctx, zenity_free_parsing_options (); exit (-1); } - g_print ("This does nothing at the moment\n"); - exit (0); + results->mode = MODE_ABOUT; break; case OPTION_VERSION: if (results->mode != MODE_LAST) { diff --git a/src/zenity.glade b/src/zenity.glade index 9e272fa..880ec5b 100644 --- a/src/zenity.glade +++ b/src/zenity.glade @@ -1099,4 +1099,169 @@ + + True + About Zenity + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_NONE + False + True + False + True + + + + + True + False + 0 + + + + True + GTK_BUTTONBOX_END + + + + True + True + True + gtk-help + True + GTK_RELIEF_NORMAL + -11 + + + + + + True + True + True + _Credits + True + GTK_RELIEF_NORMAL + 0 + + + + + + True + True + True + True + gtk-ok + True + GTK_RELIEF_NORMAL + -5 + + + + + 0 + False + True + GTK_PACK_END + + + + + + 7 + True + False + 8 + + + + True + 0.5 + 0.5 + 0 + 0 + + + 0 + True + True + + + + + + True + True + zenity_about_version + False + True + GTK_JUSTIFY_CENTER + False + True + 0.5 + 0.5 + 0 + 0 + + + 0 + False + False + + + + + + True + True + zenity_about_description + False + True + GTK_JUSTIFY_CENTER + True + True + 0.5 + 0.5 + 0 + 0 + + + 0 + False + False + + + + + + True + True + zenity_about_copyright + False + True + GTK_JUSTIFY_CENTER + False + True + 0.5 + 0.5 + 0 + 0 + + + 0 + False + False + + + + + 0 + True + True + + + + + +