line width window (patch)
- From: Krzysztof Foltman <kfoltman onet pl>
- To: dia-list gnome org
- Subject: line width window (patch)
- Date: Wed, 02 Jul 2003 11:16:00 +0200
This patch does the following to the line width dialog box (the one that
shows up after double click on line width control):
- reverses the OK and Cancel buttons (HIG stuff), uses stock buttons (so
Alt+O stands for OK) and gtk_dialog_new_with_buttons
- makes OK button default
- stops spin button from grabbing Enter key (so it can be used instead
of Alt+O)
- gives focus to the spin button on dialog reactivation (so that you can
enter the value immediately, not having to TAB through the dialog)
Any comments ? (I'm a Gtk+/GNOME newbie so it may be entirely broken)
I also think the way the line width widget works may be improved.
Currently it favours some arbitrarily chosen values and makes setting
other - users' preferred - values a bit tedious. Maybe those changes
would make some sense:
- double click changes current object's line width (for example: click
a line, click "width 1", line changes width to 1)
- have the "enter custom line width" dialog as a separate button/item on
a line width area
- being able to modify the predefined line widths - maybe via
right-click/Settings on a line width area ?
- some sort of preview for user line widths ?
Krzysztof
Index: linewidth_area.c
===================================================================
RCS file: /cvs/gnome/dia/app/linewidth_area.c,v
retrieving revision 1.12
diff -u -r1.12 linewidth_area.c
--- linewidth_area.c 11 May 2003 22:30:08 -0000 1.12
+++ linewidth_area.c 2 Jul 2003 08:59:02 -0000
@@ -152,6 +152,8 @@
case GDK_2BUTTON_PRESS:
if (linewidth_dialog == NULL)
linewidth_create_dialog();
+ else
+ gtk_widget_grab_focus(linewidth_button);
gtk_spin_button_set_value(GTK_SPIN_BUTTON(linewidth_button), attributes_get_default_linewidth());
gtk_widget_show(linewidth_dialog);
@@ -189,8 +191,8 @@
return event_box;
}
-static void
-linewidth_dialog_ok(GtkWidget *widget, gpointer data) {
+static void
+get_current_line_width() {
float newvalue = gtk_spin_button_get_value_as_float(GTK_SPIN_BUTTON(linewidth_button));
if (fabs(newvalue/BASE_WIDTH-rint(newvalue/BASE_WIDTH)) > 0.0005 ||
(newvalue/BASE_WIDTH > NUMLINES)) {
@@ -200,15 +202,23 @@
}
linewidth_area_draw(GTK_WIDGET(linewidth_area_widget));
attributes_set_default_linewidth(newvalue);
- gtk_widget_hide(linewidth_dialog);
}
static void
-linewidth_dialog_cancel(GtkWidget *widget, gpointer data)
+linewidth_dialog_respond(GtkWidget *widget, gint response_id, gpointer data)
{
+ if (response_id == GTK_RESPONSE_OK) {
+ get_current_line_width();
+ }
gtk_widget_hide(linewidth_dialog);
}
+static void
+linewidth_dialog_ok(GtkWidget *widget, gpointer data)
+{
+ gtk_dialog_response(GTK_DIALOG(linewidth_dialog), GTK_RESPONSE_OK);
+}
+
/* Crashes with gtk_widget_destroyed, so use this instead */
static void
dialog_destroyed(GtkWidget *widget, gpointer data)
@@ -220,14 +230,18 @@
static void
linewidth_create_dialog()
{
- GtkWidget *button;
GtkWidget *hbox;
GtkWidget *label;
GtkAdjustment *adj;
- linewidth_dialog = gtk_dialog_new();
+ linewidth_dialog = gtk_dialog_new_with_buttons(
+ _("Line width"), GTK_WINDOW(interface_get_toolbox_shell()),
+ 0,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_OK, GTK_RESPONSE_OK,
+ NULL);
- gtk_window_set_title (GTK_WINDOW (linewidth_dialog), _("Line width"));
+ gtk_dialog_set_default_response (GTK_DIALOG(linewidth_dialog), GTK_RESPONSE_OK);
gtk_window_set_role (GTK_WINDOW (linewidth_dialog), "linewidth_window");
gtk_window_set_resizable (GTK_WINDOW (linewidth_dialog), TRUE);
gtk_container_set_border_width (GTK_CONTAINER (linewidth_dialog), 2);
@@ -246,23 +260,11 @@
gtk_box_pack_start (GTK_BOX(GTK_DIALOG (linewidth_dialog)->vbox), hbox, TRUE, TRUE, 0);
gtk_widget_show (linewidth_button);
- button = gtk_button_new_with_label (_("OK"));
- GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
- gtk_box_pack_start (GTK_BOX (GTK_DIALOG (linewidth_dialog)->action_area),
- button, TRUE, TRUE, 0);
- gtk_signal_connect (GTK_OBJECT (button), "clicked",
- GTK_SIGNAL_FUNC(linewidth_dialog_ok),
- NULL);
- gtk_widget_show (button);
- button = gtk_button_new_with_label (_("Cancel"));
- GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
- gtk_box_pack_start (GTK_BOX (GTK_DIALOG (linewidth_dialog)->action_area),
- button, TRUE, TRUE, 0);
- gtk_signal_connect (GTK_OBJECT (button), "clicked",
- GTK_SIGNAL_FUNC(linewidth_dialog_cancel),
- NULL);
- gtk_widget_show (button);
+ g_signal_connect(G_OBJECT (linewidth_dialog), "response",
+ G_CALLBACK (linewidth_dialog_respond), NULL);
+ g_signal_connect_after(G_OBJECT (linewidth_button), "activate",
+ G_CALLBACK (linewidth_dialog_ok), NULL);
gtk_signal_connect (GTK_OBJECT (linewidth_dialog), "delete_event",
GTK_SIGNAL_FUNC(gtk_widget_hide), NULL);
@@ -271,4 +273,3 @@
persistence_register_window (GTK_WINDOW (linewidth_dialog));
}
-
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]