Mass indentation cleanup. Make sure the glade dialogs aren't initially

2003-03-10  Glynn Foster  <glynn.foster@sun.com>

	* src/about.c, src/calendar.c, src/entry.c, src/fileselection.c,
	src/main.c, src/msg.c, src/progress.c, src/text.c, src/tree.c,
	src/util.c, src/util.h, src/zenity.glade, src/zenity.h:

	Mass indentation cleanup. Make sure the glade dialogs aren't initially
	visible because this avoids a visibility jump. Apparently == TRUE is
	bad mojo. Fix up.
This commit is contained in:
Glynn Foster 2003-03-10 17:11:18 +00:00 committed by Glynn Foster
parent aaf773626e
commit 49f8979534
14 changed files with 2280 additions and 2283 deletions

View File

@ -1,3 +1,13 @@
2003-03-10 Glynn Foster <glynn.foster@sun.com>
* src/about.c, src/calendar.c, src/entry.c, src/fileselection.c,
src/main.c, src/msg.c, src/progress.c, src/text.c, src/tree.c,
src/util.c, src/util.h, src/zenity.glade, src/zenity.h:
Mass indentation cleanup. Make sure the glade dialogs aren't initially
visible because this avoids a visibility jump. Apparently == TRUE is
bad mojo. Fix up.
2003-03-08 Evandro Fernandes Giovanini <evandrofg@ig.com.br>
* configure.in(ALL_LINGUAS): Added "pt_BR" (Brazilian Portuguese).

View File

@ -45,410 +45,416 @@ static void zenity_about_dialog_response (GtkWidget *widget, int response, gpoin
/* Sync with the people in the THANKS file */
static const gchar *author_credits[] = {
"Author -",
"Glynn Foster <glynn.foster@sun.com>",
"",
"Thanks to -",
"Jonathan Blandford <jrb@redhat.com>",
"Ross Burton <ross@burtonini.com>",
"Anders Carlsson <andersca@codefactory.se>",
"John Fleck <jfleck@inkstain.net>",
"James Henstridge <james@daa.com.au>",
"Mihai T. Lazarescu <mihai@email.it>",
"Mike Newman <mike@gtnorthern.demon.co.uk>",
"Havoc Pennington <hp@redhat.com>",
"Kristian Rietveld <kris@gtk.org>",
"Jakub Steiner <jimmac@ximian.com>",
"Tom Tromey <tromey@redhat.com>",
NULL
"Author -",
"Glynn Foster <glynn.foster@sun.com>",
"",
"Thanks to -",
"Jonathan Blandford <jrb@redhat.com>",
"Ross Burton <ross@burtonini.com>",
"Anders Carlsson <andersca@codefactory.se>",
"John Fleck <jfleck@inkstain.net>",
"James Henstridge <james@daa.com.au>",
"Mihai T. Lazarescu <mihai@email.it>",
"Mike Newman <mike@gtnorthern.demon.co.uk>",
"Havoc Pennington <hp@redhat.com>",
"Kristian Rietveld <kris@gtk.org>",
"Jakub Steiner <jimmac@ximian.com>",
"Tom Tromey <tromey@redhat.com>",
NULL
};
gchar *translator_credits;
static gint
zenity_move_clothes_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data)
zenity_move_clothes_event (GnomeCanvasItem *item,
GdkEvent *event,
gpointer data)
{
static double x, y;
double new_x, new_y;
static int dragging;
double item_x, item_y;
static double x, y;
double new_x, new_y;
static int dragging;
double item_x, item_y;
/* set item_[xy] to the event x,y position in the parent's item-relative coordinates */
item_x = event->button.x;
item_y = event->button.y;
gnome_canvas_item_w2i (item->parent, &item_x, &item_y);
/* set item_[xy] to the event x,y position in the parent's
* item-relative coordinates
*/
item_x = event->button.x;
item_y = event->button.y;
gnome_canvas_item_w2i (item->parent, &item_x, &item_y);
switch (event->type) {
case GDK_BUTTON_PRESS:
x = item_x;
y = item_y;
gnome_canvas_item_ungrab (item, event->button.time);
gnome_canvas_item_raise_to_top (item);
dragging = TRUE;
break;
switch (event->type) {
case GDK_BUTTON_PRESS:
x = item_x;
y = item_y;
gnome_canvas_item_ungrab (item, event->button.time);
gnome_canvas_item_raise_to_top (item);
dragging = TRUE;
break;
case GDK_MOTION_NOTIFY:
if (dragging && (event->motion.state & GDK_BUTTON1_MASK)) {
new_x = item_x;
new_y = item_y;
case GDK_MOTION_NOTIFY:
if (dragging && (event->motion.state & GDK_BUTTON1_MASK)) {
new_x = item_x;
new_y = item_y;
gnome_canvas_item_move (item, new_x - x, new_y - y);
x = new_x;
y = new_y;
}
break;
gnome_canvas_item_move (item, new_x - x, new_y - y);
x = new_x;
y = new_y;
}
break;
case GDK_BUTTON_RELEASE:
gnome_canvas_item_ungrab (item, event->button.time);
dragging = FALSE;
break;
case GDK_BUTTON_RELEASE:
gnome_canvas_item_ungrab (item, event->button.time);
dragging = FALSE;
break;
default:
break;
}
default:
break;
}
return FALSE;
return FALSE;
}
typedef struct
{
const gchar *filename;
gdouble x, y;
const gchar *filename;
gdouble x, y;
} MonkClothes;
static MonkClothes monk_clothes[] = {
{"gnome-tshirt.png", 30.0, 20.0},
{"sunglasses.png", ZENITY_CANVAS_X - 100.0 , ZENITY_CANVAS_Y - 150.0 },
{"surfboard.png", 30.0, ZENITY_CANVAS_Y - 200.0},
{"hawaii-shirt.png", ZENITY_CANVAS_X - 50.0, 20.0}
{"gnome-tshirt.png", 30.0, 20.0},
{"sunglasses.png", ZENITY_CANVAS_X - 100.0 , ZENITY_CANVAS_Y - 150.0 },
{"surfboard.png", 30.0, ZENITY_CANVAS_Y - 200.0},
{"hawaii-shirt.png", ZENITY_CANVAS_X - 50.0, 20.0}
};
static void
zenity_create_clothes (GtkWidget *canvas_board)
{
GdkPixbuf *pixbuf;
GnomeCanvasItem *canvas_item;
gchar *pixbuf_path;
gint i;
GdkPixbuf *pixbuf;
GnomeCanvasItem *canvas_item;
gchar *pixbuf_path;
gint i;
for (i = 0; i < G_N_ELEMENTS (monk_clothes); i++) {
pixbuf_path = g_strconcat (ZENITY_CLOTHES_PATH, monk_clothes[i].filename, NULL);
pixbuf = gdk_pixbuf_new_from_file (pixbuf_path, NULL);
for (i = 0; i < G_N_ELEMENTS (monk_clothes); i++) {
pixbuf_path = g_strconcat (ZENITY_CLOTHES_PATH, monk_clothes[i].filename, NULL);
pixbuf = gdk_pixbuf_new_from_file (pixbuf_path, NULL);
canvas_item = gnome_canvas_item_new (GNOME_CANVAS_GROUP (GNOME_CANVAS (canvas_board)->root),
gnome_canvas_pixbuf_get_type (),
"x", monk_clothes[i].x,
"y", monk_clothes[i].y,
"pixbuf", pixbuf,
"anchor", GTK_ANCHOR_NW,
NULL);
g_signal_connect (G_OBJECT (canvas_item), "event",
G_CALLBACK (zenity_move_clothes_event), NULL);
}
canvas_item = gnome_canvas_item_new (GNOME_CANVAS_GROUP (GNOME_CANVAS (canvas_board)->root),
gnome_canvas_pixbuf_get_type (),
"x", monk_clothes[i].x,
"y", monk_clothes[i].y,
"pixbuf", pixbuf,
"anchor", GTK_ANCHOR_NW,
NULL);
g_signal_connect (G_OBJECT (canvas_item), "event",
G_CALLBACK (zenity_move_clothes_event), NULL);
}
}
static GtkWidget *
zenity_create_monk (void)
{
GtkWidget *canvas_board;
GnomeCanvasItem *canvas_item;
GnomeCanvasGroup *root;
GdkPixbuf *pixbuf;
GdkColor color = { 0, 0xffff, 0xffff, 0xffff };
GtkWidget *canvas_board;
GnomeCanvasItem *canvas_item;
GnomeCanvasGroup *root;
GdkPixbuf *pixbuf;
GdkColor color = { 0, 0xffff, 0xffff, 0xffff };
canvas_board = gnome_canvas_new ();
canvas_board = gnome_canvas_new ();
gnome_canvas_set_scroll_region (GNOME_CANVAS (canvas_board), 0, 0,
ZENITY_CANVAS_X, ZENITY_CANVAS_Y);
gnome_canvas_set_scroll_region (GNOME_CANVAS (canvas_board), 0, 0,
ZENITY_CANVAS_X, ZENITY_CANVAS_Y);
gtk_widget_set_size_request (canvas_board, ZENITY_CANVAS_X, ZENITY_CANVAS_Y);
gtk_widget_set_size_request (canvas_board, ZENITY_CANVAS_X, ZENITY_CANVAS_Y);
gdk_colormap_alloc_color (gtk_widget_get_colormap (GTK_WIDGET (canvas_board)),
&color, FALSE, TRUE);
gdk_colormap_alloc_color (gtk_widget_get_colormap (GTK_WIDGET (canvas_board)),
&color, FALSE, TRUE);
gtk_widget_modify_bg (GTK_WIDGET (canvas_board), GTK_STATE_NORMAL, &color);
gtk_widget_modify_bg (GTK_WIDGET (canvas_board), GTK_STATE_NORMAL, &color);
pixbuf = gdk_pixbuf_new_from_file (ZENITY_CLOTHES_PATH "monk.png", NULL);
pixbuf = gdk_pixbuf_new_from_file (ZENITY_CLOTHES_PATH "monk.png", NULL);
canvas_item = gnome_canvas_item_new (GNOME_CANVAS_GROUP (GNOME_CANVAS (canvas_board)->root),
gnome_canvas_pixbuf_get_type (),
"x", (ZENITY_CANVAS_X / 2.0)/2.0 + 10.0,
"y", (ZENITY_CANVAS_Y / 2.0)/2.0 - 50.0,
"pixbuf", pixbuf,
"anchor", GTK_ANCHOR_NW,
NULL);
canvas_item = gnome_canvas_item_new (GNOME_CANVAS_GROUP (GNOME_CANVAS (canvas_board)->root),
gnome_canvas_pixbuf_get_type (),
"x", (ZENITY_CANVAS_X / 2.0)/2.0 + 10.0,
"y", (ZENITY_CANVAS_Y / 2.0)/2.0 - 50.0,
"pixbuf", pixbuf,
"anchor", GTK_ANCHOR_NW,
NULL);
zenity_create_clothes (canvas_board);
zenity_create_clothes (canvas_board);
return canvas_board;
return canvas_board;
}
static GtkWidget *
zenity_create_boutique (void)
{
GtkWidget *window;
GtkWidget *canvas;
GtkWidget *window;
GtkWidget *canvas;
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
zenity_util_set_window_icon (window, ZENITY_IMAGE_FULLPATH ("zenity.png"));
canvas = zenity_create_monk ();
gtk_container_add (GTK_CONTAINER (window), canvas);
zenity_util_set_window_icon (window, ZENITY_IMAGE_FULLPATH ("zenity.png"));
canvas = zenity_create_monk ();
gtk_container_add (GTK_CONTAINER (window), canvas);
return window;
return window;
}
static gboolean
zenity_zen_wisdom (GtkDialog *dialog, GdkEventKey *event, gpointer user_data)
{
static gint string_count;
static gint string_count;
if (string_count >= 3)
return FALSE;
if (string_count >= 3)
return FALSE;
switch (event->keyval) {
case GDK_N:
case GDK_n:
if (string_count == 2) {
GtkWidget *window;
window = zenity_create_boutique ();
gtk_widget_show_all (window);
string_count++;
} else {
string_count = 0;
}
break;
case GDK_Z:
case GDK_z:
if (string_count == 0)
string_count++;
else
string_count = 0;
break;
case GDK_E:
case GDK_e:
if (string_count == 1)
string_count++;
else
string_count = 0;
break;
default:
string_count = 0;
}
switch (event->keyval) {
case GDK_N:
case GDK_n:
if (string_count == 2) {
GtkWidget *window;
window = zenity_create_boutique ();
gtk_widget_show_all (window);
string_count++;
} else {
string_count = 0;
}
break;
case GDK_Z:
case GDK_z:
if (string_count == 0)
string_count++;
else
string_count = 0;
break;
case GDK_E:
case GDK_e:
if (string_count == 1)
string_count++;
else
string_count = 0;
break;
default:
string_count = 0;
}
return FALSE;
return FALSE;
}
void
zenity_about (ZenityData *data)
{
GladeXML *glade_dialog = NULL;
GdkPixbuf *pixbuf;
GtkWidget *label;
GtkWidget *image;
gchar *text;
GladeXML *glade_dialog = NULL;
GdkPixbuf *pixbuf;
GtkWidget *label;
GtkWidget *image;
gchar *text;
glade_dialog = zenity_util_load_glade_file ("zenity_about_dialog");
glade_dialog = zenity_util_load_glade_file ("zenity_about_dialog");
if (glade_dialog == NULL) {
data->exit_code = -1;
return;
}
if (glade_dialog == NULL) {
data->exit_code = -1;
return;
}
translator_credits = _("translator_credits");
translator_credits = _("translator_credits");
glade_xml_signal_autoconnect (glade_dialog);
glade_xml_signal_autoconnect (glade_dialog);
dialog = glade_xml_get_widget (glade_dialog, "zenity_about_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);
g_signal_connect (G_OBJECT (dialog), "key_press_event",
G_CALLBACK (zenity_zen_wisdom), glade_dialog);
g_signal_connect (G_OBJECT (dialog), "response",
G_CALLBACK (zenity_about_dialog_response), data);
g_signal_connect (G_OBJECT (dialog), "key_press_event",
G_CALLBACK (zenity_zen_wisdom), glade_dialog);
zenity_util_set_window_icon (dialog, ZENITY_IMAGE_FULLPATH ("zenity.png"));
zenity_util_set_window_icon (dialog, ZENITY_IMAGE_FULLPATH ("zenity.png"));
image = glade_xml_get_widget (glade_dialog, "zenity_about_image");
image = glade_xml_get_widget (glade_dialog, "zenity_about_image");
pixbuf = gdk_pixbuf_new_from_file (ZENITY_IMAGE_FULLPATH ("zenity.png"), NULL);
pixbuf = gdk_pixbuf_new_from_file (ZENITY_IMAGE_FULLPATH ("zenity.png"), NULL);
if (pixbuf != NULL) {
gtk_image_set_from_pixbuf (GTK_IMAGE (image), pixbuf);
g_object_unref (pixbuf);
}
if (pixbuf != NULL) {
gtk_image_set_from_pixbuf (GTK_IMAGE (image), pixbuf);
g_object_unref (pixbuf);
}
label = glade_xml_get_widget (glade_dialog, "zenity_about_version");
gtk_label_set_selectable (GTK_LABEL (label), FALSE);
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_version");
gtk_label_set_selectable (GTK_LABEL (label), FALSE);
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_selectable (GTK_LABEL (label), FALSE);
gtk_label_set_text (GTK_LABEL (label), _("Display dialog boxes from shell scripts"));
label = glade_xml_get_widget (glade_dialog, "zenity_about_description");
gtk_label_set_selectable (GTK_LABEL (label), FALSE);
gtk_label_set_text (GTK_LABEL (label), _("Display dialog boxes from shell scripts"));
label = glade_xml_get_widget (glade_dialog, "zenity_about_copyright");
gtk_label_set_selectable (GTK_LABEL (label), FALSE);
text = g_strdup_printf ("<span size=\"small\">%s</span>", _("(C) 2003 Sun Microsystems"));
gtk_label_set_markup (GTK_LABEL (label), text);
g_free (text);
label = glade_xml_get_widget (glade_dialog, "zenity_about_copyright");
gtk_label_set_selectable (GTK_LABEL (label), FALSE);
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);
if (glade_dialog)
g_object_unref (glade_dialog);
gtk_widget_show (dialog);
gtk_main ();
gtk_widget_show (dialog);
gtk_main ();
}
static GtkWidget *
zenity_about_create_label (void)
{
GtkWidget *label;
GtkWidget *label;
label = gtk_label_new ("");
gtk_label_set_selectable (GTK_LABEL (label), TRUE);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.0);
gtk_misc_set_padding (GTK_MISC (label), 8, 8);
label = gtk_label_new ("");
gtk_label_set_selectable (GTK_LABEL (label), TRUE);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.0);
gtk_misc_set_padding (GTK_MISC (label), 8, 8);
gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
return label;
return label;
}
static void
zenity_about_update_author_label (GtkWidget *label)
{
GString *string;
gchar *tmp;
gint i = 0;
GString *string;
gchar *tmp;
gint i = 0;
gtk_widget_show (label);
gtk_widget_show (label);
string = g_string_new ("");
string = g_string_new ("");
for (i = 0; author_credits[i] != NULL; i++) {
tmp = g_markup_escape_text (author_credits[i], -1);
g_string_append (string, tmp);
for (i = 0; author_credits[i] != NULL; i++) {
tmp = g_markup_escape_text (author_credits[i], -1);
g_string_append (string, tmp);
if (author_credits[i+1] != NULL)
g_string_append (string, "\n");
if (author_credits[i+1] != NULL)
g_string_append (string, "\n");
g_free (tmp);
}
gtk_label_set_markup (GTK_LABEL (label), string->str);
g_string_free (string, TRUE);
g_free (tmp);
}
gtk_label_set_markup (GTK_LABEL (label), string->str);
g_string_free (string, TRUE);
}
static void
zenity_about_update_translator_label (GtkWidget *label)
{
GString *string;
gchar *tmp;
GString *string;
gchar *tmp;
if (strcmp (translator_credits, "translator_credits") == 0) {
gtk_widget_hide (label);
return;
} else {
gtk_widget_show (label);
}
if (strcmp (translator_credits, "translator_credits") == 0) {
gtk_widget_hide (label);
return;
} else {
gtk_widget_show (label);
}
string = g_string_new ("");
string = g_string_new ("");
tmp = g_markup_escape_text (translator_credits, -1);
g_string_append (string, tmp);
g_free (tmp);
tmp = g_markup_escape_text (translator_credits, -1);
g_string_append (string, tmp);
g_free (tmp);
gtk_label_set_markup (GTK_LABEL (label), string->str);
g_string_free (string, TRUE);
gtk_label_set_markup (GTK_LABEL (label), string->str);
g_string_free (string, TRUE);
}
static void
zenity_about_dialog_credits_response (GtkWidget *widget, int response, gpointer data)
{
gtk_widget_destroy (widget);
widget = NULL;
gtk_widget_destroy (widget);
widget = NULL;
}
static void
zenity_about_display_credits_dialog (void)
{
GtkWidget *credits_dialog;
GtkWidget *label, *notebook, *sw;
GtkWidget *credits_dialog;
GtkWidget *label, *notebook, *sw;
if (cred_dialog != NULL) {
gtk_window_present (GTK_WINDOW (cred_dialog));
return;
}
if (cred_dialog != NULL) {
gtk_window_present (GTK_WINDOW (cred_dialog));
return;
}
credits_dialog = gtk_dialog_new_with_buttons (_("Credits"),
GTK_WINDOW (dialog), GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_STOCK_OK, GTK_RESPONSE_OK, NULL);
credits_dialog = gtk_dialog_new_with_buttons (_("Credits"),
GTK_WINDOW (dialog), GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_STOCK_OK, GTK_RESPONSE_OK, NULL);
g_signal_connect (G_OBJECT (credits_dialog), "response",
G_CALLBACK (gtk_widget_destroy), credits_dialog);
g_signal_connect (G_OBJECT (credits_dialog), "destroy",
G_CALLBACK (gtk_widget_destroyed), &cred_dialog);
g_signal_connect (G_OBJECT (credits_dialog), "response",
G_CALLBACK (gtk_widget_destroy), credits_dialog);
g_signal_connect (G_OBJECT (credits_dialog), "destroy",
G_CALLBACK (gtk_widget_destroyed), &cred_dialog);
cred_dialog = credits_dialog;
cred_dialog = credits_dialog;
gtk_window_set_default_size (GTK_WINDOW (credits_dialog), 360, 260);
gtk_dialog_set_default_response (GTK_DIALOG (credits_dialog), GTK_RESPONSE_OK);
gtk_window_set_default_size (GTK_WINDOW (credits_dialog), 360, 260);
gtk_dialog_set_default_response (GTK_DIALOG (credits_dialog), GTK_RESPONSE_OK);
notebook = gtk_notebook_new ();
gtk_container_set_border_width (GTK_CONTAINER (notebook), 8);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (credits_dialog)->vbox), notebook, TRUE, TRUE, 0);
notebook = gtk_notebook_new ();
gtk_container_set_border_width (GTK_CONTAINER (notebook), 8);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (credits_dialog)->vbox), notebook, TRUE, TRUE, 0);
if (author_credits != NULL) {
label = zenity_about_create_label ();
sw = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (sw), label);
gtk_viewport_set_shadow_type (GTK_VIEWPORT (GTK_BIN (sw)->child), GTK_SHADOW_NONE);
gtk_notebook_append_page (GTK_NOTEBOOK (notebook), sw,
gtk_label_new (_("Written by")));
zenity_about_update_author_label (label);
}
if (author_credits != NULL) {
label = zenity_about_create_label ();
sw = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (sw), label);
gtk_viewport_set_shadow_type (GTK_VIEWPORT (GTK_BIN (sw)->child), GTK_SHADOW_NONE);
gtk_notebook_append_page (GTK_NOTEBOOK (notebook), sw,
gtk_label_new (_("Written by")));
zenity_about_update_author_label (label);
}
if (translator_credits != NULL && strcmp (translator_credits, "translator_credits") != 0) {
label = zenity_about_create_label ();
sw = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (sw), label);
gtk_viewport_set_shadow_type (GTK_VIEWPORT (GTK_BIN (sw)->child), GTK_SHADOW_NONE);
gtk_notebook_append_page (GTK_NOTEBOOK (notebook), sw,
gtk_label_new (_("Translated by")));
zenity_about_update_translator_label (label);
}
if (translator_credits != NULL && strcmp (translator_credits, "translator_credits") != 0) {
label = zenity_about_create_label ();
sw = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (sw), label);
gtk_viewport_set_shadow_type (GTK_VIEWPORT (GTK_BIN (sw)->child), GTK_SHADOW_NONE);
gtk_notebook_append_page (GTK_NOTEBOOK (notebook), sw,
gtk_label_new (_("Translated by")));
zenity_about_update_translator_label (label);
}
gtk_widget_show_all (credits_dialog);
gtk_widget_show_all (credits_dialog);
}
static void
zenity_about_dialog_response (GtkWidget *widget, int response, gpointer data)
{
ZenityData *zen_data = data;
GError *error = NULL;
ZenityData *zen_data = data;
GError *error = NULL;
switch (response) {
case GTK_RESPONSE_OK:
zen_data->exit_code = 0;
gtk_main_quit ();
break;
switch (response) {
case GTK_RESPONSE_OK:
zen_data->exit_code = 0;
gtk_main_quit ();
break;
case GTK_RESPONSE_HELP:
zenity_util_show_help (ZENITY_HELP_PATH, "zenity.xml", NULL);
break;
case GTK_RESPONSE_HELP:
zenity_util_show_help (ZENITY_HELP_PATH, "zenity.xml", NULL);
break;
case GTK_RESPONSE_CREDITS:
zenity_about_display_credits_dialog ();
break;
default:
/* Esc dialog */
zen_data->exit_code = 1;
break;
}
case GTK_RESPONSE_CREDITS:
zenity_about_display_credits_dialog ();
break;
default:
/* Esc dialog */
zen_data->exit_code = 1;
break;
}
}

View File

@ -35,85 +35,87 @@ static void zenity_calendar_dialog_response (GtkWidget *widget, int response, gp
void
zenity_calendar (ZenityData *data, ZenityCalendarData *cal_data)
{
GladeXML *glade_dialog = NULL;
GtkWidget *dialog;
GtkWidget *text;
GladeXML *glade_dialog = NULL;
GtkWidget *dialog;
GtkWidget *text;
zen_cal_data = cal_data;
zen_cal_data = cal_data;
glade_dialog = zenity_util_load_glade_file ("zenity_calendar_dialog");
glade_dialog = zenity_util_load_glade_file ("zenity_calendar_dialog");
if (glade_dialog == NULL) {
data->exit_code = -1;
return;
}
if (glade_dialog == NULL) {
data->exit_code = -1;
return;
}
glade_xml_signal_autoconnect (glade_dialog);
glade_xml_signal_autoconnect (glade_dialog);
dialog = glade_xml_get_widget (glade_dialog, "zenity_calendar_dialog");
dialog = glade_xml_get_widget (glade_dialog, "zenity_calendar_dialog");
g_signal_connect (G_OBJECT (dialog), "response",
G_CALLBACK (zenity_calendar_dialog_response), data);
g_signal_connect (G_OBJECT (dialog), "response",
G_CALLBACK (zenity_calendar_dialog_response), data);
if (data->dialog_title)
gtk_window_set_title (GTK_WINDOW (dialog), data->dialog_title);
if (data->dialog_title)
gtk_window_set_title (GTK_WINDOW (dialog), data->dialog_title);
if (data->window_icon)
zenity_util_set_window_icon (dialog, data->window_icon);
else
zenity_util_set_window_icon (dialog, ZENITY_IMAGE_FULLPATH ("zenity-calendar.png"));
if (data->window_icon)
zenity_util_set_window_icon (dialog, data->window_icon);
else
zenity_util_set_window_icon (dialog, ZENITY_IMAGE_FULLPATH ("zenity-calendar.png"));
text = glade_xml_get_widget (glade_dialog, "zenity_calendar_text");
text = glade_xml_get_widget (glade_dialog, "zenity_calendar_text");
if (cal_data->dialog_text)
gtk_label_set_text (GTK_LABEL (text), cal_data->dialog_text);
if (cal_data->dialog_text)
gtk_label_set_text (GTK_LABEL (text), cal_data->dialog_text);
calendar = glade_xml_get_widget (glade_dialog, "zenity_calendar");
calendar = glade_xml_get_widget (glade_dialog, "zenity_calendar");
if (glade_dialog)
g_object_unref (glade_dialog);
if (glade_dialog)
g_object_unref (glade_dialog);
if (cal_data->month > 0 && cal_data->year > 0)
gtk_calendar_select_month (GTK_CALENDAR (calendar), cal_data->month - 1, cal_data->year);
if (cal_data->day > 0)
gtk_calendar_select_day (GTK_CALENDAR (calendar), cal_data->day);
if (cal_data->month > 0 && cal_data->year > 0)
gtk_calendar_select_month (GTK_CALENDAR (calendar), cal_data->month - 1, cal_data->year);
if (cal_data->day > 0)
gtk_calendar_select_day (GTK_CALENDAR (calendar), cal_data->day);
gtk_label_set_mnemonic_widget (GTK_LABEL (text), calendar);
gtk_widget_show (dialog);
gtk_main ();
gtk_label_set_mnemonic_widget (GTK_LABEL (text), calendar);
gtk_widget_show (dialog);
gtk_main ();
}
static void
zenity_calendar_dialog_response (GtkWidget *widget, int response, gpointer data)
{
ZenityData *zen_data;
gint day, month, year;
gchar time_string[128];
GDate *date = NULL;
ZenityData *zen_data;
gint day, month, year;
gchar time_string[128];
GDate *date = NULL;
zen_data = data;
zen_data = data;
switch (response) {
case GTK_RESPONSE_OK:
gtk_calendar_get_date (GTK_CALENDAR (calendar), &day, &month, &year);
date = g_date_new_dmy (year, month + 1, day);
g_date_strftime (time_string, 127,
zen_cal_data->date_format, date);
g_printerr ("%s\n", time_string);
if (date != NULL)
g_date_free (date);
zen_data->exit_code = 0;
gtk_main_quit ();
break;
switch (response) {
case GTK_RESPONSE_OK:
gtk_calendar_get_date (GTK_CALENDAR (calendar), &day, &month, &year);
date = g_date_new_dmy (year, month + 1, day);
g_date_strftime (time_string, 127,
zen_cal_data->date_format, date);
g_printerr ("%s\n", time_string);
if (date != NULL)
g_date_free (date);
zen_data->exit_code = 0;
gtk_main_quit ();
break;
case GTK_RESPONSE_CANCEL:
zen_data->exit_code = 1;
gtk_main_quit ();
break;
case GTK_RESPONSE_CANCEL:
zen_data->exit_code = 1;
gtk_main_quit ();
break;
default:
/* Esc dialog */
zen_data->exit_code = 1;
break;
}
default:
/* Esc dialog */
zen_data->exit_code = 1;
break;
}
}

View File

@ -32,79 +32,80 @@ static GtkWidget *entry;
void
zenity_entry (ZenityData *data, ZenityEntryData *entry_data)
{
GladeXML *glade_dialog = NULL;
GtkWidget *dialog;
GtkWidget *text;
GladeXML *glade_dialog = NULL;
GtkWidget *dialog;
GtkWidget *text;
glade_dialog = zenity_util_load_glade_file ("zenity_entry_dialog");
glade_dialog = zenity_util_load_glade_file ("zenity_entry_dialog");
if (glade_dialog == NULL) {
data->exit_code = -1;
return;
}
if (glade_dialog == NULL) {
data->exit_code = -1;
return;
}
glade_xml_signal_autoconnect (glade_dialog);
dialog = glade_xml_get_widget (glade_dialog, "zenity_entry_dialog");
g_signal_connect (G_OBJECT (dialog), "response",
G_CALLBACK (zenity_entry_dialog_response), data);
if (data->dialog_title)
gtk_window_set_title (GTK_WINDOW (dialog), data->dialog_title);
glade_xml_signal_autoconnect (glade_dialog);
if (data->window_icon)
zenity_util_set_window_icon (dialog, data->window_icon);
else
zenity_util_set_window_icon (dialog, ZENITY_IMAGE_FULLPATH ("zenity-entry.png"));
dialog = glade_xml_get_widget (glade_dialog, "zenity_entry_dialog");
text = glade_xml_get_widget (glade_dialog, "zenity_entry_text");
g_signal_connect (G_OBJECT (dialog), "response",
G_CALLBACK (zenity_entry_dialog_response), data);
if (entry_data->dialog_text)
gtk_label_set_text_with_mnemonic (GTK_LABEL (text), entry_data->dialog_text);
entry = glade_xml_get_widget (glade_dialog, "zenity_entry_input");
if (data->dialog_title)
gtk_window_set_title (GTK_WINDOW (dialog), data->dialog_title);
if (glade_dialog)
g_object_unref (glade_dialog);
if (data->window_icon)
zenity_util_set_window_icon (dialog, data->window_icon);
else
zenity_util_set_window_icon (dialog, ZENITY_IMAGE_FULLPATH ("zenity-entry.png"));
text = glade_xml_get_widget (glade_dialog, "zenity_entry_text");
if (entry_data->entry_text)
gtk_entry_set_text (GTK_ENTRY (entry), entry_data->entry_text);
if (entry_data->dialog_text)
gtk_label_set_text_with_mnemonic (GTK_LABEL (text), entry_data->dialog_text);
if (entry_data->visible == FALSE)
g_object_set (G_OBJECT (entry), "visibility", entry_data->visible, NULL);
entry = glade_xml_get_widget (glade_dialog, "zenity_entry_input");
if (glade_dialog)
g_object_unref (glade_dialog);
gtk_label_set_mnemonic_widget (GTK_LABEL (text), entry);
if (entry_data->entry_text)
gtk_entry_set_text (GTK_ENTRY (entry), entry_data->entry_text);
gtk_widget_show (dialog);
gtk_main ();
if (!entry_data->visible)
g_object_set (G_OBJECT (entry), "visibility", entry_data->visible, NULL);
gtk_label_set_mnemonic_widget (GTK_LABEL (text), entry);
gtk_widget_show (dialog);
gtk_main ();
}
static void
zenity_entry_dialog_response (GtkWidget *widget, int response, gpointer data)
{
ZenityData *zen_data = data;
const gchar *text;
ZenityData *zen_data = data;
const gchar *text;
switch (response) {
case GTK_RESPONSE_OK:
zen_data->exit_code = 0;
text = gtk_entry_get_text (GTK_ENTRY (entry));
switch (response) {
case GTK_RESPONSE_OK:
zen_data->exit_code = 0;
text = gtk_entry_get_text (GTK_ENTRY (entry));
if (text != NULL)
g_printerr ("%s\n", gtk_entry_get_text (GTK_ENTRY (entry)));
if (text != NULL)
g_printerr ("%s\n", gtk_entry_get_text (GTK_ENTRY (entry)));
gtk_main_quit ();
break;
gtk_main_quit ();
break;
case GTK_RESPONSE_CANCEL:
zen_data->exit_code = 1;
gtk_main_quit ();
break;
case GTK_RESPONSE_CANCEL:
zen_data->exit_code = 1;
gtk_main_quit ();
break;
default:
/* Esc dialog */
zen_data->exit_code = 1;
break;
}
default:
/* Esc dialog */
zen_data->exit_code = 1;
break;
}
}

View File

@ -29,60 +29,61 @@ static void zenity_fileselection_dialog_response (GtkWidget *widget, int respons
void zenity_fileselection (ZenityData *data, ZenityFileData *file_data)
{
GladeXML *glade_dialog;
GtkWidget *dialog;
GladeXML *glade_dialog;
GtkWidget *dialog;
glade_dialog = zenity_util_load_glade_file ("zenity_fileselection_dialog");
glade_dialog = zenity_util_load_glade_file ("zenity_fileselection_dialog");
if (glade_dialog == NULL) {
data->exit_code = -1;
return;
}
if (glade_dialog == NULL) {
data->exit_code = -1;
return;
}
glade_xml_signal_autoconnect (glade_dialog);
dialog = glade_xml_get_widget (glade_dialog, "zenity_fileselection_dialog");
glade_xml_signal_autoconnect (glade_dialog);
if (glade_dialog)
g_object_unref (glade_dialog);
g_signal_connect (G_OBJECT (dialog), "response",
G_CALLBACK (zenity_fileselection_dialog_response), data);
if (data->dialog_title)
gtk_window_set_title (GTK_WINDOW (dialog), data->dialog_title);
dialog = glade_xml_get_widget (glade_dialog, "zenity_fileselection_dialog");
if (data->window_icon)
zenity_util_set_window_icon (dialog, data->window_icon);
else
zenity_util_set_window_icon (dialog, ZENITY_IMAGE_FULLPATH ("zenity-file.png"));
if (glade_dialog)
g_object_unref (glade_dialog);
if (file_data->uri)
gtk_file_selection_set_filename (GTK_FILE_SELECTION (dialog), file_data->uri);
g_signal_connect (G_OBJECT (dialog), "response",
G_CALLBACK (zenity_fileselection_dialog_response), data);
gtk_widget_show (dialog);
gtk_main ();
if (data->dialog_title)
gtk_window_set_title (GTK_WINDOW (dialog), data->dialog_title);
if (data->window_icon)
zenity_util_set_window_icon (dialog, data->window_icon);
else
zenity_util_set_window_icon (dialog, ZENITY_IMAGE_FULLPATH ("zenity-file.png"));
if (file_data->uri)
gtk_file_selection_set_filename (GTK_FILE_SELECTION (dialog), file_data->uri);
gtk_widget_show (dialog);
gtk_main ();
}
static void
zenity_fileselection_dialog_response (GtkWidget *widget, int response, gpointer data)
{
ZenityData *zen_data = data;
ZenityData *zen_data = data;
switch (response) {
case GTK_RESPONSE_OK:
zen_data->exit_code = 0;
g_printerr ("%s\n", gtk_file_selection_get_filename (GTK_FILE_SELECTION (widget)));
gtk_main_quit ();
break;
switch (response) {
case GTK_RESPONSE_OK:
zen_data->exit_code = 0;
g_printerr ("%s\n", gtk_file_selection_get_filename (GTK_FILE_SELECTION (widget)));
gtk_main_quit ();
break;
case GTK_RESPONSE_CANCEL:
zen_data->exit_code = 1;
gtk_main_quit ();
break;
case GTK_RESPONSE_CANCEL:
zen_data->exit_code = 1;
gtk_main_quit ();
break;
default:
zen_data->exit_code = 1;
break;
}
default:
/* Esc dialog */
zen_data->exit_code = 1;
break;
}
}

1898
src/main.c

File diff suppressed because it is too large Load Diff

169
src/msg.c
View File

@ -30,105 +30,108 @@ static void zenity_msg_dialog_response (GtkWidget *widget, int response, gpointe
void
zenity_msg (ZenityData *data, ZenityMsgData *msg_data)
{
GladeXML *glade_dialog;
GtkWidget *dialog;
GtkWidget *text;
GladeXML *glade_dialog;
GtkWidget *dialog;
GtkWidget *text;
switch (msg_data->mode) {
switch (msg_data->mode) {
case ZENITY_MSG_WARNING:
glade_dialog = zenity_util_load_glade_file ("zenity_warning_dialog");
dialog = glade_xml_get_widget (glade_dialog, "zenity_warning_dialog");
text = glade_xml_get_widget (glade_dialog, "zenity_warning_text");
break;
case ZENITY_MSG_WARNING:
glade_dialog = zenity_util_load_glade_file ("zenity_warning_dialog");
dialog = glade_xml_get_widget (glade_dialog, "zenity_warning_dialog");
text = glade_xml_get_widget (glade_dialog, "zenity_warning_text");
break;
case ZENITY_MSG_QUESTION:
glade_dialog = zenity_util_load_glade_file ("zenity_question_dialog");
dialog = glade_xml_get_widget (glade_dialog, "zenity_question_dialog");
text = glade_xml_get_widget (glade_dialog, "zenity_question_text");
break;
case ZENITY_MSG_QUESTION:
glade_dialog = zenity_util_load_glade_file ("zenity_question_dialog");
dialog = glade_xml_get_widget (glade_dialog, "zenity_question_dialog");
text = glade_xml_get_widget (glade_dialog, "zenity_question_text");
break;
case ZENITY_MSG_ERROR:
glade_dialog = zenity_util_load_glade_file ("zenity_error_dialog");
dialog = glade_xml_get_widget (glade_dialog, "zenity_error_dialog");
text = glade_xml_get_widget (glade_dialog, "zenity_error_text");
break;
case ZENITY_MSG_ERROR:
glade_dialog = zenity_util_load_glade_file ("zenity_error_dialog");
dialog = glade_xml_get_widget (glade_dialog, "zenity_error_dialog");
text = glade_xml_get_widget (glade_dialog, "zenity_error_text");
break;
case ZENITY_MSG_INFO:
glade_dialog = zenity_util_load_glade_file ("zenity_info_dialog");
dialog = glade_xml_get_widget (glade_dialog, "zenity_info_dialog");
text = glade_xml_get_widget (glade_dialog, "zenity_info_text");
break;
case ZENITY_MSG_INFO:
glade_dialog = zenity_util_load_glade_file ("zenity_info_dialog");
dialog= glade_xml_get_widget (glade_dialog, "zenity_info_dialog");
text = glade_xml_get_widget (glade_dialog, "zenity_info_text");
break;
default:
g_assert_not_reached ();
break;
}
default:
g_assert_not_reached ();
break;
}
g_signal_connect (G_OBJECT (dialog), "response",
G_CALLBACK (zenity_msg_dialog_response), data);
if (glade_dialog == NULL) {
data->exit_code = -1;
return;
}
g_signal_connect (G_OBJECT (dialog), "response",
G_CALLBACK (zenity_msg_dialog_response), data);
glade_xml_signal_autoconnect (glade_dialog);
if (glade_dialog == NULL) {
data->exit_code = -1;
return;
}
if (glade_dialog)
g_object_unref (glade_dialog);
if (data->dialog_title)
gtk_window_set_title (GTK_WINDOW (dialog), data->dialog_title);
if (data->window_icon)
zenity_util_set_window_icon (dialog, data->window_icon);
else {
GdkPixbuf *pixbuf = NULL;
switch (msg_data->mode) {
case ZENITY_MSG_WARNING:
zenity_util_set_window_icon_from_stock (dialog, GTK_STOCK_DIALOG_WARNING);
break;
case ZENITY_MSG_QUESTION:
zenity_util_set_window_icon_from_stock (dialog, GTK_STOCK_DIALOG_QUESTION);
break;
case ZENITY_MSG_ERROR:
zenity_util_set_window_icon_from_stock (dialog, GTK_STOCK_DIALOG_ERROR);
break;
case ZENITY_MSG_INFO:
zenity_util_set_window_icon_from_stock (dialog, GTK_STOCK_DIALOG_INFO);
break;
default:
break;
}
}
glade_xml_signal_autoconnect (glade_dialog);
if (msg_data->dialog_text)
gtk_label_set_text (GTK_LABEL (text), msg_data->dialog_text);
if (glade_dialog)
g_object_unref (glade_dialog);
gtk_widget_show (dialog);
gtk_main ();
if (data->dialog_title)
gtk_window_set_title (GTK_WINDOW (dialog), data->dialog_title);
if (data->window_icon)
zenity_util_set_window_icon (dialog, data->window_icon);
else {
GdkPixbuf *pixbuf = NULL;
switch (msg_data->mode) {
case ZENITY_MSG_WARNING:
zenity_util_set_window_icon_from_stock (dialog, GTK_STOCK_DIALOG_WARNING);
break;
case ZENITY_MSG_QUESTION:
zenity_util_set_window_icon_from_stock (dialog, GTK_STOCK_DIALOG_QUESTION);
break;
case ZENITY_MSG_ERROR:
zenity_util_set_window_icon_from_stock (dialog, GTK_STOCK_DIALOG_ERROR);
break;
case ZENITY_MSG_INFO:
zenity_util_set_window_icon_from_stock (dialog, GTK_STOCK_DIALOG_INFO);
break;
default:
break;
}
}
if (msg_data->dialog_text)
gtk_label_set_text (GTK_LABEL (text), msg_data->dialog_text);
gtk_widget_show (dialog);
gtk_main ();
}
static void
zenity_msg_dialog_response (GtkWidget *widget, int response, gpointer data)
{
ZenityData *zen_data = data;
ZenityData *zen_data = data;
switch (response) {
case GTK_RESPONSE_OK:
zen_data->exit_code = 0;
gtk_main_quit ();
break;
switch (response) {
case GTK_RESPONSE_OK:
zen_data->exit_code = 0;
gtk_main_quit ();
break;
case GTK_RESPONSE_CANCEL:
zen_data->exit_code = 1;
gtk_main_quit ();
break;
case GTK_RESPONSE_CANCEL:
zen_data->exit_code = 1;
gtk_main_quit ();
break;
default:
zen_data->exit_code = 1;
break;
}
default:
zen_data->exit_code = 1;
break;
}
}

View File

@ -37,142 +37,142 @@ static void zenity_progress_dialog_response (GtkWidget *widget, int response, gp
void
zenity_progress (ZenityData *data, ZenityProgressData *progress_data)
{
GtkWidget *dialog;
GtkWidget *text;
GtkWidget *progress_bar;
guint input;
GtkWidget *dialog;
GtkWidget *text;
GtkWidget *progress_bar;
guint input;
glade_dialog = zenity_util_load_glade_file ("zenity_progress_dialog");
glade_dialog = zenity_util_load_glade_file ("zenity_progress_dialog");
if (glade_dialog == NULL) {
data->exit_code = -1;
return;
}
if (glade_dialog == NULL) {
data->exit_code = -1;
return;
}
glade_xml_signal_autoconnect (glade_dialog);
dialog = glade_xml_get_widget (glade_dialog, "zenity_progress_dialog");
g_signal_connect (G_OBJECT (dialog), "response",
G_CALLBACK (zenity_progress_dialog_response), data);
glade_xml_signal_autoconnect (glade_dialog);
if (data->dialog_title)
gtk_window_set_title (GTK_WINDOW (dialog), data->dialog_title);
dialog = glade_xml_get_widget (glade_dialog, "zenity_progress_dialog");
if (data->window_icon)
zenity_util_set_window_icon (dialog, data->window_icon);
else {
zenity_util_set_window_icon (dialog, ZENITY_IMAGE_FULLPATH ("zenity-progress.png"));
}
text = glade_xml_get_widget (glade_dialog, "zenity_progress_text");
gtk_label_set_text (GTK_LABEL (text), progress_data->dialog_text);
progress_bar = glade_xml_get_widget (glade_dialog, "zenity_progress_bar");
if (progress_data->percentage > -1)
gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progress_bar),
progress_data->percentage/100.0);
g_signal_connect (G_OBJECT (dialog), "response",
G_CALLBACK (zenity_progress_dialog_response), data);
gtk_widget_show (dialog);
if (progress_data->pulsate != TRUE)
timer = gtk_timeout_add (100, zenity_progress_timeout, progress_bar);
else
timer = gtk_timeout_add (100, zenity_progress_pulsate_timeout, progress_bar);
if (data->dialog_title)
gtk_window_set_title (GTK_WINDOW (dialog), data->dialog_title);
gtk_main ();
if (data->window_icon)
zenity_util_set_window_icon (dialog, data->window_icon);
else {
zenity_util_set_window_icon (dialog, ZENITY_IMAGE_FULLPATH ("zenity-progress.png"));
}
text = glade_xml_get_widget (glade_dialog, "zenity_progress_text");
gtk_label_set_text (GTK_LABEL (text), progress_data->dialog_text);
progress_bar = glade_xml_get_widget (glade_dialog, "zenity_progress_bar");
if (progress_data->percentage > -1)
gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progress_bar),
progress_data->percentage/100.0);
gtk_widget_show (dialog);
if (!progress_data->pulsate)
timer = gtk_timeout_add (100, zenity_progress_timeout, progress_bar);
else
timer = gtk_timeout_add (100, zenity_progress_pulsate_timeout, progress_bar);
gtk_main ();
}
gint
zenity_progress_timeout (gpointer data)
{
gchar buffer[256];
float percentage;
gchar buffer[256];
float percentage;
while(gtk_events_pending()) {
gtk_main_iteration();
while(gtk_events_pending()) {
gtk_main_iteration();
if (timer == 0)
return FALSE;
}
if (timer == 0)
return FALSE;
}
if (scanf ("%255s", buffer) == EOF) {
GtkWidget *button;
if (scanf ("%255s", buffer) == EOF) {
GtkWidget *button;
button = glade_xml_get_widget (glade_dialog, "zenity_progress_ok_button");
gtk_widget_set_sensitive (button, TRUE);
gtk_widget_grab_focus (button);
button = glade_xml_get_widget (glade_dialog, "zenity_progress_ok_button");
gtk_widget_set_sensitive (button, TRUE);
gtk_widget_grab_focus (button);
button = glade_xml_get_widget (glade_dialog, "zenity_progress_cancel_button");
gtk_widget_set_sensitive (button, FALSE);
button = glade_xml_get_widget (glade_dialog, "zenity_progress_cancel_button");
gtk_widget_set_sensitive (button, FALSE);
if (glade_dialog)
g_object_unref (glade_dialog);
if (glade_dialog)
g_object_unref (glade_dialog);
return FALSE;
} else {
percentage = atoi (buffer);
return FALSE;
} else {
percentage = atoi (buffer);
if (percentage > 100)
gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (data), 1.0);
else
gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (data), percentage / 100.0);
if (percentage > 100)
gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (data), 1.0);
else
gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (data), percentage / 100.0);
return TRUE;
}
return TRUE;
}
}
gint
zenity_progress_pulsate_timeout (gpointer data)
{
while(gtk_events_pending()) {
gtk_main_iteration();
while(gtk_events_pending()) {
gtk_main_iteration();
if (timer == 0)
return FALSE;
}
if (timer == 0)
return FALSE;
}
if (feof (stdin)) {
gtk_progress_bar_pulse (GTK_PROGRESS_BAR (data));
if (feof (stdin)) {
gtk_progress_bar_pulse (GTK_PROGRESS_BAR (data));
return FALSE;
} else {
GtkWidget *button;
return FALSE;
} else {
GtkWidget *button;
/* We stop the pulsating and switch the focus on the dialog buttons */
gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (data), 1.0);
/* We stop the pulsating and switch the focus on the dialog buttons */
button = glade_xml_get_widget (glade_dialog, "zenity_progress_ok_button");
gtk_widget_set_sensitive (button, TRUE);
gtk_widget_grab_focus (button);
gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (data), 1.0);
button = glade_xml_get_widget (glade_dialog, "zenity_progress_cancel_button");
gtk_widget_set_sensitive (button, FALSE);
button = glade_xml_get_widget (glade_dialog, "zenity_progress_ok_button");
gtk_widget_set_sensitive (button, TRUE);
gtk_widget_grab_focus (button);
button = glade_xml_get_widget (glade_dialog, "zenity_progress_cancel_button");
gtk_widget_set_sensitive (button, FALSE);
return TRUE;
}
return TRUE;
}
}
static void
zenity_progress_dialog_response (GtkWidget *widget, int response, gpointer data)
{
ZenityData *zen_data = data;
ZenityData *zen_data = data;
switch (response) {
case GTK_RESPONSE_OK:
zen_data->exit_code = 0;
gtk_main_quit ();
break;
case GTK_RESPONSE_CANCEL:
zen_data->exit_code = 1;
gtk_main_quit ();
break;
default:
zen_data->exit_code = 1;
break;
}
switch (response) {
case GTK_RESPONSE_OK:
zen_data->exit_code = 0;
gtk_main_quit ();
break;
case GTK_RESPONSE_CANCEL:
zen_data->exit_code = 1;
gtk_main_quit ();
break;
default:
/* Esc dialog */
zen_data->exit_code = 1;
break;
}
}

View File

@ -32,74 +32,75 @@ static void zenity_text_dialog_response (GtkWidget *widget, int response, gpoint
void
zenity_text (ZenityData *data, ZenityTextData *text_data)
{
GladeXML *glade_dialog = NULL;
GtkWidget *dialog;
GtkWidget *text_view;
GtkTextBuffer *text_buffer;
GladeXML *glade_dialog = NULL;
GtkWidget *dialog;
GtkWidget *text_view;
GtkTextBuffer *text_buffer;
zen_text_data = text_data;
glade_dialog = zenity_util_load_glade_file ("zenity_text_dialog");
if (glade_dialog == NULL) {
data->exit_code = -1;
return;
}
zen_text_data = text_data;
glade_dialog = zenity_util_load_glade_file ("zenity_text_dialog");
glade_xml_signal_autoconnect (glade_dialog);
dialog = glade_xml_get_widget (glade_dialog, "zenity_text_dialog");
if (glade_dialog == NULL) {
data->exit_code = -1;
return;
}
g_signal_connect (G_OBJECT (dialog), "response",
G_CALLBACK (zenity_text_dialog_response), data);
glade_xml_signal_autoconnect (glade_dialog);
dialog = glade_xml_get_widget (glade_dialog, "zenity_text_dialog");
if (data->dialog_title)
gtk_window_set_title (GTK_WINDOW (dialog), data->dialog_title);
g_signal_connect (G_OBJECT (dialog), "response",
G_CALLBACK (zenity_text_dialog_response), data);
if (data->dialog_title)
gtk_window_set_title (GTK_WINDOW (dialog), data->dialog_title);
if (data->window_icon)
zenity_util_set_window_icon (dialog, data->window_icon);
else
zenity_util_set_window_icon (dialog, ZENITY_IMAGE_FULLPATH ("zenity-text.png"));
if (data->window_icon)
zenity_util_set_window_icon (dialog, data->window_icon);
else
zenity_util_set_window_icon (dialog, ZENITY_IMAGE_FULLPATH ("zenity-text.png"));
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_CLOSE);
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_CLOSE);
text_buffer = gtk_text_buffer_new (NULL);
text_view = glade_xml_get_widget (glade_dialog, "zenity_text_view");
gtk_text_view_set_buffer (GTK_TEXT_VIEW (text_view), text_buffer);
gtk_text_view_set_editable (GTK_TEXT_VIEW(text_view), text_data->editable);
if (text_data->uri) {
zenity_util_fill_file_buffer (text_buffer, text_data->uri);
}
text_buffer = gtk_text_buffer_new (NULL);
text_view = glade_xml_get_widget (glade_dialog, "zenity_text_view");
gtk_text_view_set_buffer (GTK_TEXT_VIEW (text_view), text_buffer);
gtk_text_view_set_editable (GTK_TEXT_VIEW(text_view), text_data->editable);
if (text_data->editable) {
zen_text_data->buffer = text_buffer;
}
gtk_widget_show (dialog);
if (text_data->uri)
zenity_util_fill_file_buffer (text_buffer, text_data->uri);
if (glade_dialog)
g_object_unref (glade_dialog);
if (text_data->editable)
zen_text_data->buffer = text_buffer;
gtk_main ();
gtk_widget_show (dialog);
if (glade_dialog)
g_object_unref (glade_dialog);
gtk_main ();
}
static void
zenity_text_dialog_response (GtkWidget *widget, int response, gpointer data)
{
ZenityData *zen_data = data;
ZenityData *zen_data = data;
switch (response) {
case GTK_RESPONSE_CLOSE:
if (zen_text_data->editable) {
GtkTextIter start, end;
switch (response) {
case GTK_RESPONSE_CLOSE:
if (zen_text_data->editable) {
GtkTextIter start, end;
gtk_text_buffer_get_bounds (zen_text_data->buffer, &start, &end);
g_printerr (gtk_text_buffer_get_text (zen_text_data->buffer, &start, &end, 0));
}
zen_data->exit_code = 0;
gtk_main_quit ();
break;
gtk_text_buffer_get_bounds (zen_text_data->buffer, &start, &end);
g_printerr (gtk_text_buffer_get_text (zen_text_data->buffer, &start, &end, 0));
}
zen_data->exit_code = 0;
gtk_main_quit ();
break;
default:
zen_data->exit_code = 1;
break;
}
default:
/* Esc dialog */
zen_data->exit_code = 1;
break;
}
}

View File

@ -39,351 +39,352 @@ static void zenity_tree_dialog_response (GtkWidget *widget, int response, gpoint
static void
zenity_tree_toggled_callback (GtkCellRendererToggle *cell, gchar *path_string, gpointer data)
{
GtkTreeModel *model;
GtkTreeIter iter;
GtkTreePath *path;
gboolean value;
GtkTreeModel *model;
GtkTreeIter iter;
GtkTreePath *path;
gboolean value;
model = GTK_TREE_MODEL (data);
path = gtk_tree_path_new_from_string (path_string);
model = GTK_TREE_MODEL (data);
path = gtk_tree_path_new_from_string (path_string);
gtk_tree_model_get_iter (model, &iter, path);
gtk_tree_model_get (model, &iter, 0, &value, -1);
gtk_tree_model_get_iter (model, &iter, path);
gtk_tree_model_get (model, &iter, 0, &value, -1);
value = !value;
gtk_list_store_set (GTK_LIST_STORE (model), &iter, 0, value, -1);
value = !value;
gtk_list_store_set (GTK_LIST_STORE (model), &iter, 0, value, -1);
gtk_tree_path_free (path);
gtk_tree_path_free (path);
}
static void
zenity_tree_fill_entries (GtkTreeView *tree_view, const gchar **args, gint n_columns, gboolean toggles, gboolean editable)
zenity_tree_fill_entries (GtkTreeView *tree_view,
const gchar **args,
gint n_columns,
gboolean toggles,
gboolean editable)
{
GtkTreeModel *model;
GtkTreeIter iter;
gint i = 0;
GtkTreeModel *model;
GtkTreeIter iter;
gint i = 0;
model = gtk_tree_view_get_model (tree_view);
model = gtk_tree_view_get_model (tree_view);
while (args[i] != NULL) {
gint j;
while (args[i] != NULL) {
gint j;
gtk_list_store_append (GTK_LIST_STORE (model), &iter);
gtk_list_store_append (GTK_LIST_STORE (model), &iter);
for (j = 0; j < n_columns; j++) {
for (j = 0; j < n_columns; j++) {
if (toggles && j == 0) {
if (strcmp (args[i+j], "TRUE") == 0)
gtk_list_store_set (GTK_LIST_STORE (model), &iter, j, TRUE, -1);
else
gtk_list_store_set (GTK_LIST_STORE (model), &iter, j, FALSE, -1);
}
else
gtk_list_store_set (GTK_LIST_STORE (model), &iter, j, args[i+j], -1);
}
if (toggles && j == 0) {
if (strcmp (args[i+j], "TRUE") == 0)
gtk_list_store_set (GTK_LIST_STORE (model), &iter, j, TRUE, -1);
else
gtk_list_store_set (GTK_LIST_STORE (model), &iter, j, FALSE, -1);
}
else
gtk_list_store_set (GTK_LIST_STORE (model), &iter, j, args[i+j], -1);
}
if (editable)
gtk_list_store_set (GTK_LIST_STORE (model), &iter, n_columns, TRUE, -1);
if (editable)
gtk_list_store_set (GTK_LIST_STORE (model), &iter, n_columns, TRUE, -1);
if (i == MAX_ELEMENTS_BEFORE_SCROLLING) {
GtkWidget *scrolled_window;
GtkRequisition rectangle;
if (i == MAX_ELEMENTS_BEFORE_SCROLLING) {
GtkWidget *scrolled_window;
GtkRequisition rectangle;
gtk_widget_size_request (GTK_WIDGET (tree_view), &rectangle);
scrolled_window = glade_xml_get_widget (glade_dialog, "zenity_tree_window");
gtk_widget_set_size_request (scrolled_window, -1, rectangle.height);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
}
i += n_columns;
gtk_widget_size_request (GTK_WIDGET (tree_view), &rectangle);
scrolled_window = glade_xml_get_widget (glade_dialog, "zenity_tree_window");
gtk_widget_set_size_request (scrolled_window, -1, rectangle.height);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
}
i += n_columns;
}
}
}
static void
zenity_cell_edited_callback (GtkCellRendererText *cell, const gchar *path_string, const gchar *new_text, gpointer data)
zenity_cell_edited_callback (GtkCellRendererText *cell,
const gchar *path_string,
const gchar *new_text,
gpointer data)
{
GtkTreeModel *model;
GtkTreePath *path;
GtkTreeIter iter;
gint column;
GtkTreeModel *model;
GtkTreePath *path;
GtkTreeIter iter;
gint column;
model = GTK_TREE_MODEL (data);
path = gtk_tree_path_new_from_string (path_string);
model = GTK_TREE_MODEL (data);
path = gtk_tree_path_new_from_string (path_string);
column = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (cell), "column"));
gtk_tree_model_get_iter (model, &iter, path);
column = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (cell), "column"));
gtk_tree_model_get_iter (model, &iter, path);
gtk_list_store_set (GTK_LIST_STORE (model), &iter, column, new_text, -1);
gtk_list_store_set (GTK_LIST_STORE (model), &iter,
column, new_text, -1);
gtk_tree_path_free (path);
gtk_tree_path_free (path);
}
void
zenity_tree (ZenityData *data, ZenityTreeData *tree_data)
{
GtkWidget *dialog;
GtkWidget *tree_view;
GtkTreeViewColumn *column;
GtkListStore *model;
GType *column_types;
GSList *tmp;
gboolean first_column = FALSE;
gint i, column_index, n_columns;
GtkWidget *dialog;
GtkWidget *tree_view;
GtkTreeViewColumn *column;
GtkListStore *model;
GType *column_types;
GSList *tmp;
gboolean first_column = FALSE;
gint i, column_index, n_columns;
glade_dialog = zenity_util_load_glade_file ("zenity_tree_dialog");
glade_dialog = zenity_util_load_glade_file ("zenity_tree_dialog");
if (glade_dialog == NULL) {
data->exit_code = -1;
return;
}
if (glade_dialog == NULL) {
data->exit_code = -1;
return;
}
separator = g_strdup (tree_data->separator);
separator = g_strdup (tree_data->separator);
n_columns = g_slist_length (tree_data->columns);
n_columns = g_slist_length (tree_data->columns);
if (n_columns == 0) {
g_printerr (_("No column titles specified for --list\n"));
data->exit_code = -1;
return;
}
if (n_columns == 0) {
g_printerr (_("No column titles specified for --list\n"));
data->exit_code = -1;
return;
}
if (tree_data->data == NULL) {
g_printerr (_("No contents specified for --list\n"));
data->exit_code = -1;
return;
}
if (tree_data->data == NULL) {
g_printerr (_("No contents specified for --list\n"));
data->exit_code = -1;
return;
}
glade_xml_signal_autoconnect (glade_dialog);
glade_xml_signal_autoconnect (glade_dialog);
dialog = glade_xml_get_widget (glade_dialog, "zenity_tree_dialog");
dialog = glade_xml_get_widget (glade_dialog, "zenity_tree_dialog");
g_signal_connect (G_OBJECT (dialog), "response",
G_CALLBACK (zenity_tree_dialog_response), data);
g_signal_connect (G_OBJECT (dialog), "response",
G_CALLBACK (zenity_tree_dialog_response), data);
if (data->dialog_title)
gtk_window_set_title (GTK_WINDOW (dialog), data->dialog_title);
if (data->dialog_title)
gtk_window_set_title (GTK_WINDOW (dialog), data->dialog_title);
if (data->window_icon)
zenity_util_set_window_icon (dialog, data->window_icon);
else
zenity_util_set_window_icon (dialog, ZENITY_IMAGE_FULLPATH ("zenity-list.png"));
if (data->window_icon)
zenity_util_set_window_icon (dialog, data->window_icon);
else
zenity_util_set_window_icon (dialog, ZENITY_IMAGE_FULLPATH ("zenity-list.png"));
tree_view = glade_xml_get_widget (glade_dialog, "zenity_tree_view");
tree_view = glade_xml_get_widget (glade_dialog, "zenity_tree_view");
/* Create an empty list store */
model = g_object_new (GTK_TYPE_LIST_STORE, NULL);
/* Create an empty list store */
model = g_object_new (GTK_TYPE_LIST_STORE, NULL);
if (tree_data->editable)
column_types = g_new (GType, n_columns + 1);
else
column_types = g_new (GType, n_columns);
if (tree_data->editable)
column_types = g_new (GType, n_columns + 1);
else
column_types = g_new (GType, n_columns);
for (i = 0; i < n_columns; i++) {
/* Have the limitation that the radioboxes and checkboxes are in the first column */
if (i == 0 && (tree_data->checkbox || tree_data->radiobox))
column_types[i] = G_TYPE_BOOLEAN;
else
column_types[i] = G_TYPE_STRING;
}
for (i = 0; i < n_columns; i++) {
/* Have the limitation that the radioboxes and checkboxes are in the first column */
if (i == 0 && (tree_data->checkbox || tree_data->radiobox))
column_types[i] = G_TYPE_BOOLEAN;
else
column_types[i] = G_TYPE_STRING;
}
if (tree_data->editable)
column_types[n_columns] = G_TYPE_BOOLEAN;
if (tree_data->editable)
column_types[n_columns] = G_TYPE_BOOLEAN;
if (tree_data->editable)
gtk_list_store_set_column_types (model, n_columns + 1, column_types);
else
gtk_list_store_set_column_types (model, n_columns, column_types);
if (tree_data->editable)
gtk_list_store_set_column_types (model, n_columns + 1, column_types);
else
gtk_list_store_set_column_types (model, n_columns, column_types);
gtk_tree_view_set_model (GTK_TREE_VIEW (tree_view), GTK_TREE_MODEL (model));
gtk_tree_view_set_model (GTK_TREE_VIEW (tree_view), GTK_TREE_MODEL (model));
gtk_tree_selection_set_mode (gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view)),
GTK_SELECTION_MULTIPLE);
gtk_tree_selection_set_mode (gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view)),
GTK_SELECTION_MULTIPLE);
column_index = 0;
column_index = 0;
for (tmp = tree_data->columns; tmp; tmp = tmp->next) {
if (first_column == FALSE) {
if (tree_data->checkbox || tree_data->radiobox) {
GtkCellRenderer *cell_renderer;
cell_renderer = gtk_cell_renderer_toggle_new ();
for (tmp = tree_data->columns; tmp; tmp = tmp->next) {
if (!first_column) {
if (tree_data->checkbox || tree_data->radiobox) {
GtkCellRenderer *cell_renderer;
cell_renderer = gtk_cell_renderer_toggle_new ();
if (tree_data->radiobox)
g_object_set (G_OBJECT (cell_renderer), "radio", TRUE, NULL);
if (tree_data->radiobox)
g_object_set (G_OBJECT (cell_renderer), "radio", TRUE, NULL);
g_signal_connect (cell_renderer, "toggled",
G_CALLBACK (zenity_tree_toggled_callback), model);
g_signal_connect (cell_renderer, "toggled",
G_CALLBACK (zenity_tree_toggled_callback), model);
column = gtk_tree_view_column_new_with_attributes (tmp->data,
cell_renderer,
"active", column_index, NULL);
}
column = gtk_tree_view_column_new_with_attributes (tmp->data,
cell_renderer,
"active", column_index, NULL);
}
else {
if (tree_data->editable) {
GtkCellRenderer *cell_renderer;
else {
if (tree_data->editable == TRUE) {
GtkCellRenderer *cell_renderer;
cell_renderer = gtk_cell_renderer_text_new ();
g_signal_connect (G_OBJECT (cell_renderer), "edited",
G_CALLBACK (zenity_cell_edited_callback),
gtk_tree_view_get_model (GTK_TREE_VIEW (tree_view)));
g_object_set_data (G_OBJECT (cell_renderer), "column", (gint *) column_index);
cell_renderer = gtk_cell_renderer_text_new ();
g_signal_connect (G_OBJECT (cell_renderer), "edited",
G_CALLBACK (zenity_cell_edited_callback),
gtk_tree_view_get_model (GTK_TREE_VIEW (tree_view)));
g_object_set_data (G_OBJECT (cell_renderer), "column",
(gint *) column_index);
column = gtk_tree_view_column_new_with_attributes (tmp->data,
cell_renderer,
"text", column_index,
"editable", n_columns,
NULL);
}
else {
column = gtk_tree_view_column_new_with_attributes (tmp->data,
gtk_cell_renderer_text_new (),
"text", column_index,
NULL);
}
column = gtk_tree_view_column_new_with_attributes (tmp->data,
cell_renderer,
"text", column_index,
"editable", n_columns,
NULL);
}
else {
column = gtk_tree_view_column_new_with_attributes (tmp->data,
gtk_cell_renderer_text_new (),
"text", column_index, NULL);
}
gtk_tree_view_column_set_sort_column_id (column, column_index);
gtk_tree_view_column_set_resizable (column, TRUE);
}
gtk_tree_view_column_set_sort_column_id (column, column_index);
gtk_tree_view_column_set_resizable (column, TRUE);
}
first_column = TRUE;
}
else {
if (tree_data->editable == TRUE) {
GtkCellRenderer *cell_renderer;
first_column = TRUE;
}
else {
if (tree_data->editable) {
GtkCellRenderer *cell_renderer;
cell_renderer = gtk_cell_renderer_text_new ();
g_signal_connect (G_OBJECT (cell_renderer), "edited",
G_CALLBACK (zenity_cell_edited_callback),
gtk_tree_view_get_model (GTK_TREE_VIEW (tree_view)));
g_object_set_data (G_OBJECT (cell_renderer), "column",
(gint *) column_index);
cell_renderer = gtk_cell_renderer_text_new ();
g_signal_connect (G_OBJECT (cell_renderer), "edited",
G_CALLBACK (zenity_cell_edited_callback),
gtk_tree_view_get_model (GTK_TREE_VIEW (tree_view)));
g_object_set_data (G_OBJECT (cell_renderer), "column", (gint *) column_index);
column = gtk_tree_view_column_new_with_attributes (tmp->data,
cell_renderer,
"text", column_index,
"editable", n_columns,
NULL);
}
else {
column = gtk_tree_view_column_new_with_attributes (tmp->data,
gtk_cell_renderer_text_new (),
"text", column_index, NULL);
}
column = gtk_tree_view_column_new_with_attributes (tmp->data,
cell_renderer,
"text", column_index,
"editable", n_columns,
NULL);
}
else {
column = gtk_tree_view_column_new_with_attributes (tmp->data,
gtk_cell_renderer_text_new (),
"text", column_index, NULL);
}
gtk_tree_view_column_set_sort_column_id (column, column_index);
gtk_tree_view_column_set_resizable (column, TRUE);
}
gtk_tree_view_column_set_sort_column_id (column, column_index);
gtk_tree_view_column_set_resizable (column, TRUE);
}
gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
column_index++;
}
gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
column_index++;
}
gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (tree_view), TRUE);
gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (tree_view), TRUE);
if (tree_data->radiobox || tree_data->checkbox)
zenity_tree_fill_entries (GTK_TREE_VIEW (tree_view), tree_data->data, n_columns, TRUE, tree_data->editable);
else
zenity_tree_fill_entries (GTK_TREE_VIEW (tree_view), tree_data->data, n_columns, FALSE, tree_data->editable);
if (tree_data->radiobox || tree_data->checkbox)
zenity_tree_fill_entries (GTK_TREE_VIEW (tree_view), tree_data->data, n_columns, TRUE, tree_data->editable);
else
zenity_tree_fill_entries (GTK_TREE_VIEW (tree_view), tree_data->data, n_columns, FALSE, tree_data->editable);
gtk_widget_show (dialog);
gtk_main ();
gtk_widget_show (dialog);
gtk_main ();
if (glade_dialog)
g_object_unref (glade_dialog);
if (glade_dialog)
g_object_unref (glade_dialog);
}
static void
zenity_tree_dialog_get_selected (GtkTreeModel *model, GtkTreePath *path_buf, GtkTreeIter *iter, GtkTreeView *tree_view)
{
GValue value = {0, };
GValue value = {0, };
gtk_tree_model_get_value (model, iter, 0, &value);
gtk_tree_model_get_value (model, iter, 0, &value);
selected = g_slist_append (selected, g_strdup (g_value_get_string (&value)));
g_value_unset (&value);
selected = g_slist_append (selected, g_strdup (g_value_get_string (&value)));
g_value_unset (&value);
}
static gboolean
zenity_tree_dialog_toggle_get_selected (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data)
{
GValue toggle_value = {0, };
GValue toggle_value = {0, };
gtk_tree_model_get_value (model, iter, 0, &toggle_value);
gtk_tree_model_get_value (model, iter, 0, &toggle_value);
if (g_value_get_boolean (&toggle_value) == TRUE) {
GValue value = {0, };
gtk_tree_model_get_value (model, iter, 1, &value);
selected = g_slist_append (selected, g_strdup (g_value_get_string (&value)));
g_value_unset (&value);
}
g_value_unset (&toggle_value);
return FALSE;
if (g_value_get_boolean (&toggle_value)) {
GValue value = {0, };
gtk_tree_model_get_value (model, iter, 1, &value);
selected = g_slist_append (selected, g_strdup (g_value_get_string (&value)));
g_value_unset (&value);
}
g_value_unset (&toggle_value);
return FALSE;
}
static void
zenity_tree_dialog_output (void)
{
GSList *tmp;
GSList *tmp;
for (tmp = selected; tmp; tmp = tmp->next) {
if (tmp->next != NULL) {
/* FIXME: There must be a nicer way to do this. This is just arse */
if (strstr ((const gchar *) separator, (const gchar *) "\\n") != NULL)
g_printerr ("%s\n", tmp->data);
else if (strstr ((const gchar *) separator, (const gchar *) "\\t") != NULL)
g_printerr ("%s\t", tmp->data);
else
g_printerr ("%s%s", tmp->data, separator);
}
else
g_printerr ("%s\n", tmp->data);
}
for (tmp = selected; tmp; tmp = tmp->next) {
if (tmp->next != NULL) {
/* FIXME: There must be a nicer way to do this. This is just arse */
if (strstr ((const gchar *) separator, (const gchar *) "\\n") != NULL)
g_printerr ("%s\n", tmp->data);
else if (strstr ((const gchar *) separator, (const gchar *) "\\t") != NULL)
g_printerr ("%s\t", tmp->data);
else
g_printerr ("%s%s", tmp->data, separator);
}
else
g_printerr ("%s\n", tmp->data);
}
g_free (separator);
g_slist_foreach (selected, (GFunc) g_free, NULL);
selected = NULL;
g_free (separator);
g_slist_foreach (selected, (GFunc) g_free, NULL);
selected = NULL;
}
static void
zenity_tree_dialog_response (GtkWidget *widget, int response, gpointer data)
{
ZenityData *zen_data = data;
GtkWidget *tree_view;
GtkTreeSelection *selection;
GtkTreeModel *model;
ZenityData *zen_data = data;
GtkWidget *tree_view;
GtkTreeSelection *selection;
GtkTreeModel *model;
switch (response) {
case GTK_RESPONSE_OK:
tree_view = glade_xml_get_widget (glade_dialog, "zenity_tree_view");
model = gtk_tree_view_get_model (GTK_TREE_VIEW (tree_view));
switch (response) {
case GTK_RESPONSE_OK:
tree_view = glade_xml_get_widget (glade_dialog, "zenity_tree_view");
model = gtk_tree_view_get_model (GTK_TREE_VIEW (tree_view));
if (gtk_tree_model_get_column_type (model, 0) == G_TYPE_BOOLEAN) {
gtk_tree_model_foreach (model,
(GtkTreeModelForeachFunc) zenity_tree_dialog_toggle_get_selected,
NULL);
}
else {
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view));
gtk_tree_selection_selected_foreach (selection,
(GtkTreeSelectionForeachFunc) zenity_tree_dialog_get_selected,
GTK_TREE_VIEW (tree_view));
}
zenity_tree_dialog_output ();
zen_data->exit_code = 0;
gtk_main_quit ();
break;
if (gtk_tree_model_get_column_type (model, 0) == G_TYPE_BOOLEAN)
gtk_tree_model_foreach (model, (GtkTreeModelForeachFunc) zenity_tree_dialog_toggle_get_selected, NULL);
else {
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view));
gtk_tree_selection_selected_foreach (selection,
(GtkTreeSelectionForeachFunc) zenity_tree_dialog_get_selected,
GTK_TREE_VIEW (tree_view));
}
zenity_tree_dialog_output ();
zen_data->exit_code = 0;
gtk_main_quit ();
break;
case GTK_RESPONSE_CANCEL:
zen_data->exit_code = 1;
gtk_main_quit ();
break;
case GTK_RESPONSE_CANCEL:
zen_data->exit_code = 1;
gtk_main_quit ();
break;
default:
zen_data->exit_code = 1;
break;
}
default:
/* Esc dialog */
zen_data->exit_code = 1;
break;
}
}

View File

@ -41,131 +41,131 @@
GladeXML*
zenity_util_load_glade_file (const gchar *widget_root)
{
GladeXML *xml = NULL;
GladeXML *xml = NULL;
if (g_file_test (ZENITY_GLADE_FILE_RELATIVEPATH,
G_FILE_TEST_EXISTS)) {
/* Try current dir, for debugging */
xml = glade_xml_new (ZENITY_GLADE_FILE_RELATIVEPATH, widget_root, GETTEXT_PACKAGE);
}
if (g_file_test (ZENITY_GLADE_FILE_RELATIVEPATH, G_FILE_TEST_EXISTS)) {
/* Try current dir, for debugging */
xml = glade_xml_new (ZENITY_GLADE_FILE_RELATIVEPATH, widget_root, GETTEXT_PACKAGE);
}
if (xml == NULL)
xml = glade_xml_new (ZENITY_GLADE_FILE_FULLPATH, widget_root, GETTEXT_PACKAGE);
if (xml == NULL)
xml = glade_xml_new (ZENITY_GLADE_FILE_FULLPATH, widget_root, GETTEXT_PACKAGE);
if (xml == NULL) {
g_warning ("Could not load glade file : %s", ZENITY_GLADE_FILE_FULLPATH);
return NULL;
}
if (xml == NULL) {
g_warning ("Could not load glade file : %s", ZENITY_GLADE_FILE_FULLPATH);
return NULL;
}
return xml;
return xml;
}
gboolean
zenity_util_fill_file_buffer (GtkTextBuffer *buffer, const gchar *filename)
{
GtkTextIter iter, end;
FILE* f;
gchar buf[2048];
gint remaining = 0;
GtkTextIter iter, end;
FILE *f;
gchar buf[2048];
gint remaining = 0;
if (filename == NULL)
return FALSE;
if (filename == NULL)
return FALSE;
f = fopen (filename, "r");
f = fopen (filename, "r");
if (f == NULL) {
g_warning ("Cannot open file '%s': %s", filename, g_strerror (errno));
return FALSE;
}
if (f == NULL) {
g_warning ("Cannot open file '%s': %s", filename, g_strerror (errno));
return FALSE;
}
gtk_text_buffer_get_iter_at_offset (buffer, &iter, 0);
gtk_text_buffer_get_iter_at_offset (buffer, &iter, 0);
while (!feof (f)) {
gint count;
const char *leftover;
int to_read = 2047 - remaining;
while (!feof (f)) {
gint count;
const char *leftover;
int to_read = 2047 - remaining;
count = fread (buf + remaining, 1, to_read, f);
buf[count + remaining] = '\0';
count = fread (buf + remaining, 1, to_read, f);
buf[count + remaining] = '\0';
g_utf8_validate (buf, count + remaining, &leftover);
g_utf8_validate (buf, count + remaining, &leftover);
g_assert (g_utf8_validate (buf, leftover - buf, NULL));
gtk_text_buffer_insert (buffer, &iter, buf, leftover - buf);
g_assert (g_utf8_validate (buf, leftover - buf, NULL));
gtk_text_buffer_insert (buffer, &iter, buf, leftover - buf);
remaining = (buf + remaining + count) - leftover;
g_memmove (buf, leftover, remaining);
remaining = (buf + remaining + count) - leftover;
g_memmove (buf, leftover, remaining);
if (remaining > 6 || count < to_read)
break;
}
if (remaining > 6 || count < to_read)
break;
}
if (remaining) {
g_warning ("Invalid UTF-8 data encountered reading file '%s'", filename);
return FALSE;
}
if (remaining) {
g_warning ("Invalid UTF-8 data encountered reading file '%s'", filename);
return FALSE;
}
/* We had a newline in the buffer to begin with. (The buffer always contains
* a newline, so we delete to the end of the buffer to clean up.
*/
gtk_text_buffer_get_end_iter (buffer, &end);
gtk_text_buffer_delete (buffer, &iter, &end);
/* We had a newline in the buffer to begin with. (The buffer always contains
* a newline, so we delete to the end of the buffer to clean up.
*/
gtk_text_buffer_get_end_iter (buffer, &end);
gtk_text_buffer_delete (buffer, &iter, &end);
gtk_text_buffer_set_modified (buffer, FALSE);
gtk_text_buffer_set_modified (buffer, FALSE);
return TRUE;
return TRUE;
}
static GList *
zenity_util_list_from_char_array (const char **s)
{
GList *list = NULL;
gint i;
GList *list = NULL;
gint i;
for (i = 0; s[i]; i++) {
GdkPixbuf *pixbuf;
for (i = 0; s[i]; i++) {
GdkPixbuf *pixbuf;
pixbuf = gdk_pixbuf_new_from_file (s[i], NULL);
if (pixbuf)
list = g_list_prepend (list, pixbuf);
}
pixbuf = gdk_pixbuf_new_from_file (s[i], NULL);
if (pixbuf)
list = g_list_prepend (list, pixbuf);
}
return list;
return list;
}
static void
zenity_util_free_list (GList *list)
{
g_list_foreach (list, (GFunc) g_object_unref, NULL);
g_list_free (list);
g_list_foreach (list, (GFunc) g_object_unref, NULL);
g_list_free (list);
}
void
zenity_util_set_window_icon (GtkWidget *widget, const gchar *filename)
{
const gchar *filenames[2] = { NULL};
GList *list;
const gchar *filenames[2] = { NULL};
GList *list;
g_return_if_fail (widget != NULL);
g_return_if_fail (GTK_IS_WINDOW (widget));
g_return_if_fail (widget != NULL);
g_return_if_fail (GTK_IS_WINDOW (widget));
if (filename == NULL)
return;
if (filename == NULL)
return;
filenames[0] = filename;
list = zenity_util_list_from_char_array (filenames);
gtk_window_set_icon_list (GTK_WINDOW (widget), list);
zenity_util_free_list (list);
filenames[0] = filename;
list = zenity_util_list_from_char_array (filenames);
gtk_window_set_icon_list (GTK_WINDOW (widget), list);
zenity_util_free_list (list);
}
void
zenity_util_set_window_icon_from_stock (GtkWidget *widget, const gchar *stock_id)
{
GdkPixbuf *pixbuf;
GdkPixbuf *pixbuf;
pixbuf = gtk_widget_render_icon (widget, stock_id, (GtkIconSize) -1, NULL);
gtk_window_set_icon (GTK_WINDOW (widget), pixbuf);
g_object_unref (pixbuf);
pixbuf = gtk_widget_render_icon (widget, stock_id, (GtkIconSize) -1, NULL);
gtk_window_set_icon (GTK_WINDOW (widget), pixbuf);
g_object_unref (pixbuf);
}
/* This is copied from libgnome/gnome-i18n.c since we try and avoid using
@ -178,70 +178,70 @@ static GHashTable *alias_table = NULL;
static void
zenity_read_aliases (char *file)
{
FILE *fp;
char buf[256];
FILE *fp;
char buf[256];
if (!alias_table)
alias_table = g_hash_table_new (g_str_hash, g_str_equal);
if (!alias_table)
alias_table = g_hash_table_new (g_str_hash, g_str_equal);
fp = fopen (file,"r");
fp = fopen (file,"r");
if (!fp)
return;
if (!fp)
return;
while (fgets (buf,256,fp)) {
gchar *p;
g_strstrip (buf);
while (fgets (buf,256,fp)) {
gchar *p;
g_strstrip (buf);
if (buf[0]=='#' || buf[0]=='\0')
continue;
if (buf[0]=='#' || buf[0]=='\0')
continue;
p = (gchar *) strtok (buf, "\t ");
p = (gchar *) strtok (buf, "\t ");
if (!p)
continue;
if (!p)
continue;
p = (gchar *) strtok (NULL, "\t ");
p = (gchar *) strtok (NULL, "\t ");
if(!p)
continue;
if(!p)
continue;
if (!g_hash_table_lookup (alias_table, buf))
g_hash_table_insert (alias_table, g_strdup (buf), g_strdup (p));
}
if (!g_hash_table_lookup (alias_table, buf))
g_hash_table_insert (alias_table, g_strdup (buf), g_strdup (p));
}
fclose (fp);
fclose (fp);
}
/*return the un-aliased language as a newly allocated string*/
static char *
zenity_unalias_lang (char *lang)
{
char *p;
int i;
char *p;
int i;
if (!alias_table) {
zenity_read_aliases ("/usr/share/locale/locale.alias");
zenity_read_aliases ("/usr/local/share/locale/locale.alias");
zenity_read_aliases ("/usr/lib/X11/locale/locale.alias");
zenity_read_aliases ("/usr/openwin/lib/locale/locale.alias");
}
if (!alias_table) {
zenity_read_aliases ("/usr/share/locale/locale.alias");
zenity_read_aliases ("/usr/local/share/locale/locale.alias");
zenity_read_aliases ("/usr/lib/X11/locale/locale.alias");
zenity_read_aliases ("/usr/openwin/lib/locale/locale.alias");
}
i = 0;
while ((p = g_hash_table_lookup (alias_table,lang)) && strcmp (p, lang)) {
lang = p;
i = 0;
while ((p = g_hash_table_lookup (alias_table,lang)) && strcmp (p, lang)) {
lang = p;
if (i++ == 30) {
static gboolean said_before = FALSE;
if (i++ == 30) {
static gboolean said_before = FALSE;
if (!said_before)
g_warning (_("Too many alias levels for a locale may indicate a loop"));
if (!said_before)
g_warning (_("Too many alias levels for a locale may indicate a loop"));
said_before = TRUE;
return lang;
}
}
return lang;
said_before = TRUE;
return lang;
}
}
return lang;
}
/* Mask for components of locale spec. The ordering here is from
@ -249,137 +249,139 @@ zenity_unalias_lang (char *lang)
*/
enum
{
COMPONENT_CODESET = 1 << 0,
COMPONENT_TERRITORY = 1 << 1,
COMPONENT_MODIFIER = 1 << 2
COMPONENT_CODESET = 1 << 0,
COMPONENT_TERRITORY = 1 << 1,
COMPONENT_MODIFIER = 1 << 2
};
/* Break an X/Open style locale specification into components
*/
static guint
zenity_explode_locale (const gchar *locale,
gchar **language,
gchar **territory,
gchar **codeset,
gchar **modifier)
gchar **language,
gchar **territory,
gchar **codeset,
gchar **modifier)
{
const gchar *uscore_pos;
const gchar *at_pos;
const gchar *dot_pos;
guint mask = 0;
const gchar *uscore_pos;
const gchar *at_pos;
const gchar *dot_pos;
guint mask = 0;
uscore_pos = (const gchar *) strchr (locale, '_');
dot_pos = (const gchar *) strchr (uscore_pos ? uscore_pos : locale, '.');
at_pos = (const gchar *) strchr (dot_pos ? dot_pos : (uscore_pos ? uscore_pos : locale), '@');
uscore_pos = (const gchar *) strchr (locale, '_');
dot_pos = (const gchar *) strchr (uscore_pos ? uscore_pos : locale, '.');
at_pos = (const gchar *) strchr (dot_pos ? dot_pos : (uscore_pos ? uscore_pos : locale), '@');
if (at_pos) {
mask |= COMPONENT_MODIFIER;
*modifier = g_strdup (at_pos);
} else
at_pos = locale + strlen (locale);
if (at_pos) {
mask |= COMPONENT_MODIFIER;
*modifier = g_strdup (at_pos);
}
else
at_pos = locale + strlen (locale);
if (dot_pos) {
mask |= COMPONENT_CODESET;
*codeset = g_new (gchar, 1 + at_pos - dot_pos);
strncpy (*codeset, dot_pos, at_pos - dot_pos);
(*codeset) [at_pos - dot_pos] = '\0';
} else
dot_pos = at_pos;
if (dot_pos) {
mask |= COMPONENT_CODESET;
*codeset = g_new (gchar, 1 + at_pos - dot_pos);
strncpy (*codeset, dot_pos, at_pos - dot_pos);
(*codeset) [at_pos - dot_pos] = '\0';
}
else
dot_pos = at_pos;
if (uscore_pos) {
mask |= COMPONENT_TERRITORY;
*territory = g_new (gchar, 1 + dot_pos - uscore_pos);
strncpy (*territory, uscore_pos, dot_pos - uscore_pos);
(*territory)[dot_pos - uscore_pos] = '\0';
} else
uscore_pos = dot_pos;
if (uscore_pos) {
mask |= COMPONENT_TERRITORY;
*territory = g_new (gchar, 1 + dot_pos - uscore_pos);
strncpy (*territory, uscore_pos, dot_pos - uscore_pos);
(*territory)[dot_pos - uscore_pos] = '\0';
}
else
uscore_pos = dot_pos;
*language = g_new (gchar, 1 + uscore_pos - locale);
strncpy (*language, locale, uscore_pos - locale);
(*language) [uscore_pos - locale] = '\0';
*language = g_new (gchar, 1 + uscore_pos - locale);
strncpy (*language, locale, uscore_pos - locale);
(*language) [uscore_pos - locale] = '\0';
return mask;
return mask;
}
static GList *
zenity_compute_locale_variants (const gchar *locale)
{
GList *retval = NULL;
gchar *language;
gchar *territory;
gchar *codeset;
gchar *modifier;
guint mask;
guint i;
GList *retval = NULL;
gchar *language;
gchar *territory;
gchar *codeset;
gchar *modifier;
guint mask;
guint i;
g_return_val_if_fail (locale != NULL, NULL);
g_return_val_if_fail (locale != NULL, NULL);
mask = zenity_explode_locale (locale, &language, &territory, &codeset, &modifier);
mask = zenity_explode_locale (locale, &language, &territory, &codeset, &modifier);
/* Iterate through all possible combinations, from least attractive
* to most attractive.
*/
/* Iterate through all possible combinations, from least attractive
* to most attractive.
*/
for (i = 0; i <= mask; i++)
if ((i & ~mask) == 0) {
gchar *val = g_strconcat (language,
(i & COMPONENT_TERRITORY) ? territory : "",
(i & COMPONENT_CODESET) ? codeset : "",
(i & COMPONENT_MODIFIER) ? modifier : "", NULL);
retval = g_list_prepend (retval, val);
}
for (i = 0; i <= mask; i++)
if ((i & ~mask) == 0) {
gchar *val = g_strconcat (language, (i & COMPONENT_TERRITORY) ? territory : "",
(i & COMPONENT_CODESET) ? codeset : "",
(i & COMPONENT_MODIFIER) ? modifier : "", NULL);
retval = g_list_prepend (retval, val);
}
g_free (language);
g_free (language);
if (mask & COMPONENT_CODESET)
g_free (codeset);
if (mask & COMPONENT_TERRITORY)
g_free (territory);
if (mask & COMPONENT_MODIFIER)
g_free (modifier);
if (mask & COMPONENT_CODESET)
g_free (codeset);
if (mask & COMPONENT_TERRITORY)
g_free (territory);
if (mask & COMPONENT_MODIFIER)
g_free (modifier);
return retval;
return retval;
}
static const gchar *
zenity_guess_category_value (const gchar *categoryname)
{
const gchar *retval;
const gchar *retval;
/* The highest priority value is the `LANGUAGE' environment
* variable. This is a GNU extension.
*/
/* The highest priority value is the `LANGUAGE' environment
* variable. This is a GNU extension.
*/
retval = g_getenv ("LANGUAGE");
retval = g_getenv ("LANGUAGE");
if (retval != NULL && retval[0] != '\0')
return retval;
if (retval != NULL && retval[0] != '\0')
return retval;
/* `LANGUAGE' is not set. So we have to proceed with the POSIX
* methods of looking to `LC_ALL', `LC_xxx', and `LANG'. On some
* systems this can be done by the `setlocale' function itself.
*/
/* `LANGUAGE' is not set. So we have to proceed with the POSIX
* methods of looking to `LC_ALL', `LC_xxx', and `LANG'. On some
* systems this can be done by the `setlocale' function itself.
*/
/* Setting of LC_ALL overwrites all other. */
/* Setting of LC_ALL overwrites all other. */
retval = g_getenv ("LC_ALL");
retval = g_getenv ("LC_ALL");
if (retval != NULL && retval[0] != '\0')
return retval;
if (retval != NULL && retval[0] != '\0')
return retval;
/* Next comes the name of the desired category. */
retval = g_getenv (categoryname);
/* Next comes the name of the desired category. */
retval = g_getenv (categoryname);
if (retval != NULL && retval[0] != '\0')
return retval;
if (retval != NULL && retval[0] != '\0')
return retval;
/* Last possibility is the LANG environment variable. */
retval = g_getenv ("LANG");
if (retval != NULL && retval[0] != '\0')
return retval;
/* Last possibility is the LANG environment variable. */
retval = g_getenv ("LANG");
if (retval != NULL && retval[0] != '\0')
return retval;
return NULL;
return NULL;
}
@ -388,61 +390,61 @@ static GHashTable *category_table= NULL;
static const GList *
zenity_i18n_get_language_list (const gchar *category_name)
{
GList *list;
GList *list;
if (!category_name)
category_name= "LC_ALL";
if (!category_name)
category_name= "LC_ALL";
if (category_table) {
list= g_hash_table_lookup (category_table, (const gpointer) category_name);
} else {
category_table= g_hash_table_new (g_str_hash, g_str_equal);
list= NULL;
}
if (category_table) {
list= g_hash_table_lookup (category_table, (const gpointer) category_name);
} else {
category_table= g_hash_table_new (g_str_hash, g_str_equal);
list= NULL;
}
if (!list) {
gint c_locale_defined= FALSE;
const gchar *category_value;
gchar *category_memory, *orig_category_memory;
if (!list) {
gint c_locale_defined= FALSE;
const gchar *category_value;
gchar *category_memory, *orig_category_memory;
category_value = zenity_guess_category_value (category_name);
category_value = zenity_guess_category_value (category_name);
if (! category_value)
category_value = "C";
if (! category_value)
category_value = "C";
orig_category_memory = category_memory = g_malloc (strlen (category_value) + 1);
orig_category_memory = category_memory = g_malloc (strlen (category_value) + 1);
while (category_value[0] != '\0') {
while (category_value[0] != '\0' && category_value[0] == ':')
++category_value;
while (category_value[0] != '\0') {
while (category_value[0] != '\0' && category_value[0] == ':')
++category_value;
if (category_value[0] != '\0') {
char *cp= category_memory;
if (category_value[0] != '\0') {
char *cp= category_memory;
while (category_value[0] != '\0' && category_value[0] != ':')
*category_memory++= *category_value++;
while (category_value[0] != '\0' && category_value[0] != ':')
*category_memory++= *category_value++;
category_memory[0]= '\0';
category_memory++;
category_memory[0]= '\0';
category_memory++;
cp = zenity_unalias_lang (cp);
cp = zenity_unalias_lang (cp);
if (strcmp (cp, "C") == 0)
c_locale_defined= TRUE;
if (strcmp (cp, "C") == 0)
c_locale_defined= TRUE;
list= g_list_concat (list, zenity_compute_locale_variants (cp));
}
}
g_free (orig_category_memory);
if (!c_locale_defined)
list= g_list_append (list, "C");
g_hash_table_insert (category_table, (gpointer) category_name, list);
list= g_list_concat (list, zenity_compute_locale_variants (cp));
}
}
g_free (orig_category_memory);
if (!c_locale_defined)
list= g_list_append (list, "C");
g_hash_table_insert (category_table, (gpointer) category_name, list);
}
return list;
return list;
}
/* This is copied from libgnome/gnome-help.c since we try and avoid using
@ -452,37 +454,37 @@ zenity_i18n_get_language_list (const gchar *category_name)
static char *
zenity_locate_help_file (const char *path, const char *doc_name)
{
int i;
char *exts[] = { ".xml", ".docbook", ".sgml", ".html", "", NULL };
const GList *lang_list = zenity_i18n_get_language_list ("LC_MESSAGES");
int i;
char *exts[] = { ".xml", ".docbook", ".sgml", ".html", "", NULL };
const GList *lang_list = zenity_i18n_get_language_list ("LC_MESSAGES");
for (;lang_list != NULL; lang_list = lang_list->next) {
const char *lang = lang_list->data;
for (;lang_list != NULL; lang_list = lang_list->next) {
const char *lang = lang_list->data;
/* This has to be a valid language AND a language with
* no encoding postfix. The language will come up without
* encoding next
*/
/* This has to be a valid language AND a language with
* no encoding postfix. The language will come up without
* encoding next
*/
if (lang == NULL || (gchar *) strchr (lang, '.') != NULL)
continue;
if (lang == NULL || (gchar *) strchr (lang, '.') != NULL)
continue;
for (i = 0; exts[i] != NULL; i++) {
char *name;
char *full;
for (i = 0; exts[i] != NULL; i++) {
char *name;
char *full;
name = g_strconcat (doc_name, exts[i], NULL);
full = g_build_filename (path, lang, name, NULL);
name = g_strconcat (doc_name, exts[i], NULL);
full = g_build_filename (path, lang, name, NULL);
if (g_file_test (full, G_FILE_TEST_EXISTS))
return full;
if (g_file_test (full, G_FILE_TEST_EXISTS))
return full;
g_free (full);
g_free (full);
}
}
}
}
return NULL;
return NULL;
}
/* This is copied from libgnome/gnome-url.c since we try and avoid using
@ -492,96 +494,81 @@ zenity_locate_help_file (const char *path, const char *doc_name)
gboolean
zenity_util_show_help (const gchar *path, const gchar *document, GError **error)
{
GConfClient *client;
gint i;
gchar *pos, *template;
int argc;
char **argv;
gboolean ret;
char *url;
GConfClient *client;
gint i;
gchar *pos, *template;
int argc;
char **argv;
gboolean ret;
char *url;
g_return_val_if_fail (path != NULL, FALSE);
g_return_val_if_fail (document != NULL, FALSE);
g_return_val_if_fail (path != NULL, FALSE);
g_return_val_if_fail (document != NULL, FALSE);
url = g_strconcat ("ghelp:///", zenity_locate_help_file (path, document), NULL);
pos = (gchar *) strchr (url, ':');
url = g_strconcat ("ghelp:///", zenity_locate_help_file (path, document), NULL);
pos = (gchar *) strchr (url, ':');
client = gconf_client_get_default ();
client = gconf_client_get_default ();
if (pos != NULL) {
gchar *protocol, *path;
g_return_val_if_fail (pos >= url, FALSE);
if (pos != NULL) {
gchar *protocol, *path;
protocol = g_new (gchar, pos - url + 1);
strncpy (protocol, url, pos - url);
protocol[pos - url] = '\0';
g_ascii_strdown (protocol, -1);
g_return_val_if_fail (pos >= url, FALSE);
path = g_strconcat (URL_HANDLER_DIR, protocol, "/command", NULL);
template = gconf_client_get_string (client, path, NULL);
protocol = g_new (gchar, pos - url + 1);
strncpy (protocol, url, pos - url);
protocol[pos - url] = '\0';
g_ascii_strdown (protocol, -1);
path = g_strconcat (URL_HANDLER_DIR, protocol, "/command", NULL);
template = gconf_client_get_string (client, path, NULL);
if (template == NULL) {
gchar* template_temp;
if (template == NULL) {
gchar* template_temp;
template_temp = gconf_client_get_string (client,
DEFAULT_HANDLER_PATH,
NULL);
template_temp = gconf_client_get_string (client, DEFAULT_HANDLER_PATH, NULL);
/* Retry to get the right url handler */
template = gconf_client_get_string (client, path, NULL);
/* Retry to get the right url handler */
template = gconf_client_get_string (client, path, NULL);
if (template == NULL)
template = template_temp;
else
g_free (template_temp);
if (template == NULL)
template = template_temp;
else
g_free (template_temp);
}
}
g_free (path);
g_free (protocol);
g_free (path);
g_free (protocol);
} else {
/* no ':' ? this shouldn't happen. Use default handler */
template = gconf_client_get_string (client,
DEFAULT_HANDLER_PATH,
NULL);
}
} else {
/* no ':' ? this shouldn't happen. Use default handler */
template = gconf_client_get_string (client, DEFAULT_HANDLER_PATH, NULL);
}
g_object_unref (G_OBJECT (client));
g_object_unref (G_OBJECT (client));
if (!g_shell_parse_argv (template,
&argc,
&argv,
error)) {
g_free (template);
return FALSE;
}
if (!g_shell_parse_argv (template, &argc, &argv, error)) {
g_free (template);
return FALSE;
}
g_free (template);
g_free (template);
for (i = 0; i < argc; i++) {
char *arg;
for (i = 0; i < argc; i++) {
char *arg;
if (strcmp (argv[i], "%s") != 0)
continue;
if (strcmp (argv[i], "%s") != 0)
continue;
arg = argv[i];
argv[i] = g_strdup (url);
g_free (arg);
}
arg = argv[i];
argv[i] = g_strdup (url);
g_free (arg);
}
/* This can return some errors */
ret = g_spawn_async (NULL /* working directory */,
argv,
NULL,
G_SPAWN_SEARCH_PATH /* flags */,
NULL /* child_setup */,
NULL /* data */,
NULL /* child_pid */,
error);
/* This can return some errors */
ret = g_spawn_async (NULL, argv, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, error);
g_strfreev (argv);
g_strfreev (argv);
return ret;
return ret;
}

View File

@ -6,24 +6,20 @@
G_BEGIN_DECLS
#define ZENITY_GLADE_FILE_FULLPATH ZENITY_DATADIR "/zenity.glade"
#define ZENITY_GLADE_FILE_RELATIVEPATH "./zenity.glade"
#define ZENITY_IMAGE_FULLPATH(filename) (g_strconcat (ZENITY_DATADIR, "/", filename, NULL))
#define ZENITY_GLADE_FILE_FULLPATH ZENITY_DATADIR "/zenity.glade"
#define ZENITY_GLADE_FILE_RELATIVEPATH "./zenity.glade"
#define ZENITY_IMAGE_FULLPATH(filename) (g_strconcat (ZENITY_DATADIR, "/", filename, NULL))
GladeXML* zenity_util_load_glade_file (const gchar *widget_root);
gboolean zenity_util_fill_file_buffer (GtkTextBuffer *buffer,
const gchar *filename);
void zenity_util_set_window_icon (GtkWidget *widget,
const gchar *filename);
void zenity_util_set_window_icon_from_stock (GtkWidget *widget,
const gchar *stock_id);
gboolean zenity_util_show_help (const gchar *path,
const gchar *document,
GError **error);
GladeXML* zenity_util_load_glade_file (const gchar *widget_root);
gboolean zenity_util_fill_file_buffer (GtkTextBuffer *buffer,
const gchar *filename);
void zenity_util_set_window_icon (GtkWidget *widget,
const gchar *filename);
void zenity_util_set_window_icon_from_stock (GtkWidget *widget,
const gchar *stock_id);
gboolean zenity_util_show_help (const gchar *path,
const gchar *document,
GError **error);
G_END_DECLS
#endif /* UTIL_H */

View File

@ -4,7 +4,6 @@
<glade-interface>
<widget class="GtkDialog" id="zenity_calendar_dialog">
<property name="visible">True</property>
<property name="title" translatable="yes">Calendar selection</property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_CENTER</property>
@ -148,7 +147,6 @@
</widget>
<widget class="GtkDialog" id="zenity_warning_dialog">
<property name="visible">True</property>
<property name="title" translatable="yes">Warning</property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_CENTER</property>
@ -259,7 +257,6 @@
<widget class="GtkFileSelection" id="zenity_fileselection_dialog">
<property name="border_width">10</property>
<property name="visible">True</property>
<property name="title" translatable="yes">Select a file</property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_CENTER</property>
@ -290,7 +287,6 @@
</widget>
<widget class="GtkDialog" id="zenity_question_dialog">
<property name="visible">True</property>
<property name="title" translatable="yes">Question</property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_CENTER</property>
@ -400,7 +396,6 @@
</widget>
<widget class="GtkDialog" id="zenity_entry_dialog">
<property name="visible">True</property>
<property name="title" translatable="yes">Add a new entry</property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_CENTER</property>
@ -528,7 +523,6 @@
</widget>
<widget class="GtkDialog" id="zenity_text_dialog">
<property name="visible">True</property>
<property name="title" translatable="yes">Text View</property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_CENTER</property>
@ -623,7 +617,6 @@
</widget>
<widget class="GtkDialog" id="zenity_progress_dialog">
<property name="visible">True</property>
<property name="title" translatable="yes">Progress</property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_CENTER</property>
@ -745,7 +738,6 @@
</widget>
<widget class="GtkDialog" id="zenity_error_dialog">
<property name="visible">True</property>
<property name="title" translatable="yes">Error</property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_CENTER</property>
@ -855,7 +847,6 @@
</widget>
<widget class="GtkDialog" id="zenity_tree_dialog">
<property name="visible">True</property>
<property name="title" translatable="yes">Select items from the list</property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_CENTER</property>
@ -990,7 +981,6 @@
</widget>
<widget class="GtkDialog" id="zenity_info_dialog">
<property name="visible">True</property>
<property name="title" translatable="yes">Information</property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_CENTER</property>
@ -1100,7 +1090,6 @@
</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>
@ -1192,7 +1181,7 @@
<widget class="GtkLabel" id="zenity_about_version">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="no">zenity_about_version</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>
@ -1214,7 +1203,7 @@
<widget class="GtkLabel" id="zenity_about_description">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="no">zenity_about_description</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>
@ -1236,7 +1225,7 @@
<widget class="GtkLabel" id="zenity_about_copyright">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="no">zenity_about_copyright</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>

View File

@ -24,78 +24,78 @@ G_BEGIN_DECLS
#endif
typedef struct {
gchar *dialog_title;
gchar *window_icon;
gint exit_code;
gchar *dialog_title;
gchar *window_icon;
gint exit_code;
} ZenityData;
typedef struct {
gchar *dialog_text;
gint day;
gint month;
gint year;
gchar *date_format;
gchar *dialog_text;
gint day;
gint month;
gint year;
gchar *date_format;
} ZenityCalendarData;
typedef enum {
ZENITY_MSG_WARNING,
ZENITY_MSG_QUESTION,
ZENITY_MSG_ERROR,
ZENITY_MSG_INFO
ZENITY_MSG_WARNING,
ZENITY_MSG_QUESTION,
ZENITY_MSG_ERROR,
ZENITY_MSG_INFO
} MsgMode;
typedef struct {
gchar *dialog_text;
MsgMode mode;
gchar *dialog_text;
MsgMode mode;
} ZenityMsgData;
typedef struct {
gchar *uri;
gchar *uri;
} ZenityFileData;
typedef struct {
gchar *dialog_text;
gchar *entry_text;
gboolean visible;
gchar *dialog_text;
gchar *entry_text;
gboolean visible;
} ZenityEntryData;
typedef struct {
gchar *dialog_text;
gchar *entry_text;
gboolean pulsate;
gdouble percentage;
gchar *dialog_text;
gchar *entry_text;
gboolean pulsate;
gdouble percentage;
} ZenityProgressData;
typedef struct {
gchar *uri;
gboolean editable;
GtkTextBuffer *buffer;
gchar *uri;
gboolean editable;
GtkTextBuffer *buffer;
} ZenityTextData;
typedef struct {
gchar *dialog_text;
GSList *columns;
gboolean checkbox;
gboolean radiobox;
gchar *separator;
gboolean editable;
const gchar **data;
gchar *dialog_text;
GSList *columns;
gboolean checkbox;
gboolean radiobox;
gchar *separator;
gboolean editable;
const gchar **data;
} ZenityTreeData;
void zenity_calendar (ZenityData *data,
ZenityCalendarData *calendar_data);
void zenity_msg (ZenityData *data,
ZenityMsgData *msg_data);
void zenity_fileselection (ZenityData *data,
ZenityFileData *file_data);
void zenity_entry (ZenityData *data,
ZenityEntryData *entry_data);
void zenity_progress (ZenityData *data,
ZenityProgressData *progress_data);
void zenity_text (ZenityData *data,
ZenityTextData *text_data);
void zenity_tree (ZenityData *data,
ZenityTreeData *tree_data);
void zenity_calendar (ZenityData *data,
ZenityCalendarData *calendar_data);
void zenity_msg (ZenityData *data,
ZenityMsgData *msg_data);
void zenity_fileselection (ZenityData *data,
ZenityFileData *file_data);
void zenity_entry (ZenityData *data,
ZenityEntryData *entry_data);
void zenity_progress (ZenityData *data,
ZenityProgressData *progress_data);
void zenity_text (ZenityData *data,
ZenityTextData *text_data);
void zenity_tree (ZenityData *data,
ZenityTreeData *tree_data);
void zenity_about (ZenityData *data);
G_END_DECLS