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:
parent
aaf773626e
commit
49f8979534
10
ChangeLog
10
ChangeLog
@ -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).
|
||||
|
558
src/about.c
558
src/about.c
@ -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;
|
||||
}
|
||||
}
|
||||
|
118
src/calendar.c
118
src/calendar.c
@ -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;
|
||||
}
|
||||
}
|
||||
|
109
src/entry.c
109
src/entry.c
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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
1898
src/main.c
File diff suppressed because it is too large
Load Diff
169
src/msg.c
169
src/msg.c
@ -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;
|
||||
}
|
||||
}
|
||||
|
200
src/progress.c
200
src/progress.c
@ -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;
|
||||
}
|
||||
}
|
||||
|
107
src/text.c
107
src/text.c
@ -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;
|
||||
}
|
||||
}
|
||||
|
505
src/tree.c
505
src/tree.c
@ -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;
|
||||
}
|
||||
}
|
||||
|
665
src/util.c
665
src/util.c
@ -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;
|
||||
}
|
||||
|
30
src/util.h
30
src/util.h
@ -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 */
|
||||
|
@ -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>
|
||||
|
92
src/zenity.h
92
src/zenity.h
@ -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
|
||||
|
Reference in New Issue
Block a user