Update
2003-01-29 Glynn Foster <glynn.foster@sun.com> * README: Update * configure.in: Remove some bogus configure checks that we almost certainly don't need. * src/about.c, data/Makefile.am, data/*.png: Add new pixbuf for about dialog. * TODO: Update accordingly
This commit is contained in:
parent
22625f8b16
commit
574404b13e
12
ChangeLog
12
ChangeLog
@ -1,3 +1,15 @@
|
||||
2003-01-29 Glynn Foster <glynn.foster@sun.com>
|
||||
|
||||
* README: Update
|
||||
|
||||
* configure.in: Remove some bogus configure checks that
|
||||
we almost certainly don't need.
|
||||
|
||||
* src/about.c, data/Makefile.am, data/*.png: Add new pixbuf for
|
||||
about dialog.
|
||||
|
||||
* TODO: Update accordingly
|
||||
|
||||
2003-01-28 Glynn Foster <glynn.foster@sun.com>
|
||||
|
||||
* src/about.c: Don't display the translators tab
|
||||
|
7
README
7
README
@ -1,3 +1,4 @@
|
||||
This is very beta, unfinished and mostly useless right now.
|
||||
It's very non-compatible with gdialog. It's also apparently
|
||||
very Zen. Obviously.
|
||||
This is zenity - a rewrite of gdialog, the GNOME port of dialog
|
||||
which allows you to display dialog boxes from the commandline
|
||||
and shell scripts. If you understand, things are just as they
|
||||
are. If you don't understand, things are just as they are.
|
||||
|
1
TODO
1
TODO
@ -1,2 +1 @@
|
||||
* Add some accessibility I guess
|
||||
* Remove extraneous cruft from configure.in
|
||||
|
17
configure.in
17
configure.in
@ -6,24 +6,9 @@ AM_MAINTAINER_MODE
|
||||
|
||||
AC_PROG_INTLTOOL([0.21])
|
||||
|
||||
dnl ********************************
|
||||
dnl I bet I don't need half of these
|
||||
dnl ********************************
|
||||
|
||||
AC_ISC_POSIX
|
||||
AC_PROG_CXX
|
||||
AC_PROG_CC
|
||||
AC_PROG_CPP
|
||||
AC_STDC_HEADERS
|
||||
AC_PROG_YACC
|
||||
AC_PROG_INSTALL
|
||||
AC_PROG_LN_S
|
||||
AC_PROG_MAKE_SET
|
||||
AC_PATH_XTRA
|
||||
|
||||
GNOME_COMPILE_WARNINGS
|
||||
|
||||
PKG_CHECK_MODULES(ZENITY, gtk+-2.0 libglade-2.0 gconf-2.0)
|
||||
PKG_CHECK_MODULES(ZENITY, gtk+-2.0 libglade-2.0 gconf-2.0 libgnomecanvas-2.0)
|
||||
AC_SUBST(ZENITY_CFLAGS)
|
||||
AC_SUBST(ZENITY_LIBS)
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
clothesdir = $(datadir)/zenity/clothes
|
||||
clothes_DATA = \
|
||||
monk.png \
|
||||
gnome-tshirt.png
|
||||
|
||||
imagesdir = $(datadir)/zenity/
|
||||
images_DATA = \
|
||||
zenity.png \
|
||||
@ -8,4 +13,4 @@ images_DATA = \
|
||||
zenity-text.png \
|
||||
zenity-entry.png
|
||||
|
||||
EXTRA_DIST = $(images_DATA)
|
||||
EXTRA_DIST = $(images_DATA) $(clothes_DATA)
|
||||
|
BIN
data/gnome-tshirt.png
Normal file
BIN
data/gnome-tshirt.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.0 KiB |
BIN
data/monk.png
Normal file
BIN
data/monk.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 9.5 KiB |
219
src/about.c
219
src/about.c
@ -27,10 +27,16 @@
|
||||
#include "config.h"
|
||||
#include "zenity.h"
|
||||
#include "util.h"
|
||||
#include <gdk/gdkkeysyms.h>
|
||||
#include <libgnomecanvas/gnome-canvas.h>
|
||||
#include <glade/glade.h>
|
||||
|
||||
#define GTK_RESPONSE_CREDITS 0
|
||||
#define ZENITY_HELP_PATH ZENITY_DATADIR "/help/"
|
||||
#define ZENITY_CLOTHES_PATH ZENITY_DATADIR "/clothes/"
|
||||
|
||||
#define ZENITY_CANVAS_X 580.0
|
||||
#define ZENITY_CANVAS_Y 400.0
|
||||
|
||||
static GtkWidget *dialog;
|
||||
static GtkWidget *cred_dialog;
|
||||
@ -54,6 +60,214 @@ static const gchar *author_credits[] = {
|
||||
|
||||
gchar *translator_credits;
|
||||
|
||||
static gint
|
||||
zenity_move_clothes_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data)
|
||||
{
|
||||
static double x, y;
|
||||
double new_x, new_y;
|
||||
GdkCursor *fleur;
|
||||
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);
|
||||
|
||||
switch (event->type) {
|
||||
case GDK_BUTTON_PRESS:
|
||||
switch (event->button.button) {
|
||||
case 1:
|
||||
if (event->button.state & GDK_SHIFT_MASK)
|
||||
gtk_object_destroy (GTK_OBJECT (item));
|
||||
else {
|
||||
x = item_x;
|
||||
y = item_y;
|
||||
|
||||
fleur = gdk_cursor_new (GDK_FLEUR);
|
||||
#if 0
|
||||
gnome_canvas_item_grab (item,
|
||||
GDK_POINTER_MOTION_MASK | GDK_BUTTON_RELEASE_MASK,
|
||||
fleur,
|
||||
event->button.time);
|
||||
#endif
|
||||
gdk_cursor_unref (fleur);
|
||||
dragging = TRUE;
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
if (event->button.state & GDK_SHIFT_MASK)
|
||||
gnome_canvas_item_lower_to_bottom (item);
|
||||
else
|
||||
gnome_canvas_item_lower (item, 1);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
if (event->button.state & GDK_SHIFT_MASK)
|
||||
gnome_canvas_item_raise_to_top (item);
|
||||
else
|
||||
gnome_canvas_item_raise (item, 1);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
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;
|
||||
|
||||
case GDK_BUTTON_RELEASE:
|
||||
gnome_canvas_item_ungrab (item, event->button.time);
|
||||
dragging = FALSE;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
typedef struct
|
||||
{
|
||||
const gchar *filename;
|
||||
gdouble x, y;
|
||||
} MonkClothes;
|
||||
|
||||
static MonkClothes monk_clothes[] = {
|
||||
{"gnome-tshirt.png", 10.0, 10.0}
|
||||
};
|
||||
|
||||
static void
|
||||
zenity_create_clothes (GtkWidget *canvas_board)
|
||||
{
|
||||
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);
|
||||
|
||||
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 };
|
||||
|
||||
canvas_board = gnome_canvas_new ();
|
||||
|
||||
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);
|
||||
|
||||
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);
|
||||
|
||||
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 + 20.0,
|
||||
"y", (ZENITY_CANVAS_Y / 2.0)/2.0 - 10.0,
|
||||
"pixbuf", pixbuf,
|
||||
"anchor", GTK_ANCHOR_NW,
|
||||
NULL);
|
||||
|
||||
zenity_create_clothes (canvas_board);
|
||||
|
||||
return canvas_board;
|
||||
}
|
||||
|
||||
static GtkWidget *
|
||||
zenity_create_boutique (void)
|
||||
{
|
||||
GtkWidget *window;
|
||||
GtkWidget *canvas;
|
||||
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
|
||||
/* FIXME: We need to connect to the close event
|
||||
* for the window
|
||||
*/
|
||||
|
||||
canvas = zenity_create_monk ();
|
||||
gtk_container_add (GTK_CONTAINER (window), canvas);
|
||||
|
||||
return window;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
zenity_zen_wisdom (GtkDialog *dialog, GdkEventKey *event, gpointer user_data)
|
||||
{
|
||||
static gint string_count;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void
|
||||
zenity_about (ZenityData *data)
|
||||
{
|
||||
@ -78,6 +292,8 @@ zenity_about (ZenityData *data)
|
||||
|
||||
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"));
|
||||
|
||||
@ -91,14 +307,17 @@ zenity_about (ZenityData *data)
|
||||
}
|
||||
|
||||
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_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);
|
||||
|
Reference in New Issue
Block a user