Add an about box. Still need to add an icon, and implement the callbacks

2003-01-14  Glynn Foster  <glynn.foster@sun.com>

	* 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.
This commit is contained in:
Glynn Foster 2003-01-14 03:16:47 +00:00 committed by Glynn Foster
parent f00eb34c06
commit 15538e120d
5 changed files with 282 additions and 2 deletions

View File

@ -1,3 +1,10 @@
2003-01-14 Glynn Foster <glynn.foster@sun.com>
* 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 <glynn.foster@sun.com>
* src/tree.c, src/zenity.h, src/main.c: Add support to

View File

@ -10,6 +10,7 @@ zenity_SOURCES = \
text.c \
progress.c \
tree.c \
about.c \
util.h \
util.c

104
src/about.c Normal file
View File

@ -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 <glynn.foster@sun.com>
*/
#include <glade/glade.h>
#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 ("<span size=\"xx-large\" weight=\"bold\">Zenity %s</span>", 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 ("<span size=\"small\">%s</span>", _("(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;
}
}

View File

@ -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) {

View File

@ -1099,4 +1099,169 @@
</child>
</widget>
<widget class="GtkDialog" id="zenity_about_dialog">
<property name="visible">True</property>
<property name="title" translatable="yes">About Zenity</property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_NONE</property>
<property name="modal">False</property>
<property name="resizable">True</property>
<property name="destroy_with_parent">False</property>
<property name="has_separator">True</property>
<signal name="destroy" handler="gtk_main_quit" last_modification_time="Tue, 14 Jan 2003 02:38:19 GMT"/>
<child internal-child="vbox">
<widget class="GtkVBox" id="dialog-vbox9">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child internal-child="action_area">
<widget class="GtkHButtonBox" id="dialog-action_area9">
<property name="visible">True</property>
<property name="layout_style">GTK_BUTTONBOX_END</property>
<child>
<widget class="GtkButton" id="helpbutton1">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-help</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">-11</property>
</widget>
</child>
<child>
<widget class="GtkButton" id="zenity_about_credits_button">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">_Credits</property>
<property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
</widget>
</child>
<child>
<widget class="GtkButton" id="zenity_about_ok_button">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="has_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-ok</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">-5</property>
</widget>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">GTK_PACK_END</property>
</packing>
</child>
<child>
<widget class="GtkVBox" id="vbox11">
<property name="border_width">7</property>
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">8</property>
<child>
<widget class="GtkImage" id="zenity_about_image">
<property name="visible">True</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="zenity_about_version">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">zenity_about_version</property>
<property name="use_underline">False</property>
<property name="use_markup">True</property>
<property name="justify">GTK_JUSTIFY_CENTER</property>
<property name="wrap">False</property>
<property name="selectable">True</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="zenity_about_description">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">zenity_about_description</property>
<property name="use_underline">False</property>
<property name="use_markup">True</property>
<property name="justify">GTK_JUSTIFY_CENTER</property>
<property name="wrap">True</property>
<property name="selectable">True</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="zenity_about_copyright">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">zenity_about_copyright</property>
<property name="use_underline">False</property>
<property name="use_markup">True</property>
<property name="justify">GTK_JUSTIFY_CENTER</property>
<property name="wrap">False</property>
<property name="selectable">True</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
</child>
</widget>
</glade-interface>