radiant: make rotate/scale dialogs non-modal

git-svn-id: svn://svn.icculus.org/netradiant/trunk@95 61c419a2-8eb2-4b30-bcec-8cead039b335
This commit is contained in:
rpolzer 2008-09-19 12:31:32 +00:00
parent 8cd295151a
commit 3aab20c1d6
3 changed files with 263 additions and 209 deletions

View File

@ -2,6 +2,7 @@
* radiant: add a "Strafe Mode" option * radiant: add a "Strafe Mode" option
* radiant: ctrl-tab now focuses all XYZ views in the three-part view (as * radiant: ctrl-tab now focuses all XYZ views in the three-part view (as
that is what the user is likely to want there) that is what the user is likely to want there)
* radiant: make rotate/scale dialogs non-modal
2008-09-18 Rudolf Polzer divVerent(at)alientrap.org 2008-09-18 Rudolf Polzer divVerent(at)alientrap.org
* radiant: handle missing anisotropy extension; fixes display bug on * radiant: handle missing anisotropy extension; fixes display bug on

View File

@ -105,10 +105,13 @@ endif
CPPFLAGS_COMMON += -D_DEBUG CPPFLAGS_COMMON += -D_DEBUG
LDFLAGS_COMMON += LDFLAGS_COMMON +=
else ifeq ($(BUILD),profile) else ifeq ($(BUILD),profile)
ifeq ($(findstring $(CFLAGS),-g),)
CFLAGS_COMMON += -g
# only add -g if no -g flag is in $(CFLAGS)
endif
ifeq ($(findstring $(CFLAGS),-O),) ifeq ($(findstring $(CFLAGS),-O),)
CFLAGS_COMMON += -O CFLAGS_COMMON += -O
# only add -O3 if no -O flag is in $(CFLAGS) # only add -O if no -O flag is in $(CFLAGS)
# to allow overriding the optimizations
endif endif
CFLAGS_COMMON += -pg CFLAGS_COMMON += -pg
CPPFLAGS_COMMON += CPPFLAGS_COMMON +=

View File

@ -970,247 +970,297 @@ struct RotateDialog
GtkSpinButton* x; GtkSpinButton* x;
GtkSpinButton* y; GtkSpinButton* y;
GtkSpinButton* z; GtkSpinButton* z;
GtkWindow *window;
}; };
static void rotatedlg_apply (GtkWidget *widget, RotateDialog* rotateDialog) static gboolean rotatedlg_apply (GtkWidget *widget, RotateDialog* rotateDialog)
{ {
Vector3 eulerXYZ; Vector3 eulerXYZ;
eulerXYZ[0] = static_cast<float>(gtk_spin_button_get_value(rotateDialog->x)); eulerXYZ[0] = static_cast<float>(gtk_spin_button_get_value(rotateDialog->x));
gtk_spin_button_set_value(rotateDialog->x, 0.0f); // reset to 0 on Apply
eulerXYZ[1] = static_cast<float>(gtk_spin_button_get_value(rotateDialog->y)); eulerXYZ[1] = static_cast<float>(gtk_spin_button_get_value(rotateDialog->y));
gtk_spin_button_set_value(rotateDialog->y, 0.0f);
eulerXYZ[2] = static_cast<float>(gtk_spin_button_get_value(rotateDialog->z)); eulerXYZ[2] = static_cast<float>(gtk_spin_button_get_value(rotateDialog->z));
gtk_spin_button_set_value(rotateDialog->z, 0.0f);
StringOutputStream command; StringOutputStream command;
command << "rotateSelectedEulerXYZ -x " << eulerXYZ[0] << " -y " << eulerXYZ[1] << " -z " << eulerXYZ[2]; command << "rotateSelectedEulerXYZ -x " << eulerXYZ[0] << " -y " << eulerXYZ[1] << " -z " << eulerXYZ[2];
UndoableCommand undo(command.c_str()); UndoableCommand undo(command.c_str());
GlobalSelectionSystem().rotateSelected(quaternion_for_euler_xyz_degrees(eulerXYZ)); GlobalSelectionSystem().rotateSelected(quaternion_for_euler_xyz_degrees(eulerXYZ));
return TRUE;
} }
static gboolean rotatedlg_cancel (GtkWidget *widget, RotateDialog* rotateDialog)
{
gtk_widget_hide(GTK_WIDGET(rotateDialog->window));
gtk_spin_button_set_value(rotateDialog->x, 0.0f); // reset to 0 on close
gtk_spin_button_set_value(rotateDialog->y, 0.0f);
gtk_spin_button_set_value(rotateDialog->z, 0.0f);
return TRUE;
}
static gboolean rotatedlg_ok (GtkWidget *widget, RotateDialog* rotateDialog)
{
rotatedlg_apply(widget, rotateDialog);
rotatedlg_cancel(widget, rotateDialog);
return TRUE;
}
static gboolean rotatedlg_delete (GtkWidget *widget, GdkEventAny *event, RotateDialog* rotateDialog)
{
rotatedlg_cancel(widget, rotateDialog);
return TRUE;
}
RotateDialog g_rotate_dialog;
void DoRotateDlg() void DoRotateDlg()
{ {
ModalDialog dialog; if(g_rotate_dialog.window == NULL)
RotateDialog rotateDialog;
GtkWindow* window = create_dialog_window(MainFrame_getWindow(), "Arbitrary rotation", G_CALLBACK(dialog_delete_callback), &dialog);
GtkAccelGroup* accel = gtk_accel_group_new();
gtk_window_add_accel_group(window, accel);
{ {
GtkHBox* hbox = create_dialog_hbox(4, 4); g_rotate_dialog.window = create_dialog_window(MainFrame_getWindow(), "Arbitrary rotation", G_CALLBACK(rotatedlg_delete), &g_rotate_dialog);
gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(hbox));
{
GtkTable* table = create_dialog_table(3, 2, 4, 4);
gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(table), TRUE, TRUE, 0);
{
GtkWidget* label = gtk_label_new (" X ");
gtk_widget_show (label);
gtk_table_attach(table, label, 0, 1, 0, 1,
(GtkAttachOptions) (0),
(GtkAttachOptions) (0), 0, 0);
}
{
GtkWidget* label = gtk_label_new (" Y ");
gtk_widget_show (label);
gtk_table_attach(table, label, 0, 1, 1, 2,
(GtkAttachOptions) (0),
(GtkAttachOptions) (0), 0, 0);
}
{
GtkWidget* label = gtk_label_new (" Z ");
gtk_widget_show (label);
gtk_table_attach(table, label, 0, 1, 2, 3,
(GtkAttachOptions) (0),
(GtkAttachOptions) (0), 0, 0);
}
{
GtkAdjustment* adj = GTK_ADJUSTMENT(gtk_adjustment_new(0, -359, 359, 1, 10, 10));
GtkSpinButton* spin = GTK_SPIN_BUTTON(gtk_spin_button_new(adj, 1, 0));
gtk_widget_show(GTK_WIDGET(spin));
gtk_table_attach(table, GTK_WIDGET(spin), 1, 2, 0, 1,
(GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
gtk_widget_set_size_request(GTK_WIDGET(spin), 64, -1);
gtk_spin_button_set_wrap(spin, TRUE);
gtk_widget_grab_focus(GTK_WIDGET(spin)); GtkAccelGroup* accel = gtk_accel_group_new();
gtk_window_add_accel_group(g_rotate_dialog.window, accel);
rotateDialog.x = spin; {
} GtkHBox* hbox = create_dialog_hbox(4, 4);
{ gtk_container_add(GTK_CONTAINER(g_rotate_dialog.window), GTK_WIDGET(hbox));
GtkAdjustment* adj = GTK_ADJUSTMENT(gtk_adjustment_new(0, -359, 359, 1, 10, 10)); {
GtkSpinButton* spin = GTK_SPIN_BUTTON(gtk_spin_button_new(adj, 1, 0)); GtkTable* table = create_dialog_table(3, 2, 4, 4);
gtk_widget_show(GTK_WIDGET(spin)); gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(table), TRUE, TRUE, 0);
gtk_table_attach(table, GTK_WIDGET(spin), 1, 2, 1, 2, {
(GtkAttachOptions) (GTK_EXPAND | GTK_FILL), GtkWidget* label = gtk_label_new (" X ");
(GtkAttachOptions) (0), 0, 0); gtk_widget_show (label);
gtk_widget_set_size_request(GTK_WIDGET(spin), 64, -1); gtk_table_attach(table, label, 0, 1, 0, 1,
gtk_spin_button_set_wrap(spin, TRUE); (GtkAttachOptions) (0),
(GtkAttachOptions) (0), 0, 0);
}
{
GtkWidget* label = gtk_label_new (" Y ");
gtk_widget_show (label);
gtk_table_attach(table, label, 0, 1, 1, 2,
(GtkAttachOptions) (0),
(GtkAttachOptions) (0), 0, 0);
}
{
GtkWidget* label = gtk_label_new (" Z ");
gtk_widget_show (label);
gtk_table_attach(table, label, 0, 1, 2, 3,
(GtkAttachOptions) (0),
(GtkAttachOptions) (0), 0, 0);
}
{
GtkAdjustment* adj = GTK_ADJUSTMENT(gtk_adjustment_new(0, -359, 359, 1, 10, 10));
GtkSpinButton* spin = GTK_SPIN_BUTTON(gtk_spin_button_new(adj, 1, 0));
gtk_widget_show(GTK_WIDGET(spin));
gtk_table_attach(table, GTK_WIDGET(spin), 1, 2, 0, 1,
(GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
gtk_widget_set_size_request(GTK_WIDGET(spin), 64, -1);
gtk_spin_button_set_wrap(spin, TRUE);
rotateDialog.y = spin; gtk_widget_grab_focus(GTK_WIDGET(spin));
}
{
GtkAdjustment* adj = GTK_ADJUSTMENT(gtk_adjustment_new(0, -359, 359, 1, 10, 10));
GtkSpinButton* spin = GTK_SPIN_BUTTON(gtk_spin_button_new(adj, 1, 0));
gtk_widget_show(GTK_WIDGET(spin));
gtk_table_attach(table, GTK_WIDGET(spin), 1, 2, 2, 3,
(GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
gtk_widget_set_size_request(GTK_WIDGET(spin), 64, -1);
gtk_spin_button_set_wrap(spin, TRUE);
rotateDialog.z = spin; g_rotate_dialog.x = spin;
} }
} {
{ GtkAdjustment* adj = GTK_ADJUSTMENT(gtk_adjustment_new(0, -359, 359, 1, 10, 10));
GtkVBox* vbox = create_dialog_vbox(4); GtkSpinButton* spin = GTK_SPIN_BUTTON(gtk_spin_button_new(adj, 1, 0));
gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(vbox), TRUE, TRUE, 0); gtk_widget_show(GTK_WIDGET(spin));
{ gtk_table_attach(table, GTK_WIDGET(spin), 1, 2, 1, 2,
GtkButton* button = create_dialog_button("OK", G_CALLBACK(dialog_button_ok), &dialog); (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(button), FALSE, FALSE, 0); (GtkAttachOptions) (0), 0, 0);
widget_make_default(GTK_WIDGET(button)); gtk_widget_set_size_request(GTK_WIDGET(spin), 64, -1);
gtk_widget_add_accelerator(GTK_WIDGET(button), "clicked", accel, GDK_Return, (GdkModifierType)0, (GtkAccelFlags)0); gtk_spin_button_set_wrap(spin, TRUE);
}
{ g_rotate_dialog.y = spin;
GtkButton* button = create_dialog_button("Cancel", G_CALLBACK(dialog_button_cancel), &dialog); }
gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(button), FALSE, FALSE, 0); {
gtk_widget_add_accelerator(GTK_WIDGET(button), "clicked", accel, GDK_Escape, (GdkModifierType)0, (GtkAccelFlags)0); GtkAdjustment* adj = GTK_ADJUSTMENT(gtk_adjustment_new(0, -359, 359, 1, 10, 10));
} GtkSpinButton* spin = GTK_SPIN_BUTTON(gtk_spin_button_new(adj, 1, 0));
{ gtk_widget_show(GTK_WIDGET(spin));
GtkButton* button = create_dialog_button("Apply", G_CALLBACK(rotatedlg_apply), &rotateDialog); gtk_table_attach(table, GTK_WIDGET(spin), 1, 2, 2, 3,
gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(button), FALSE, FALSE, 0); (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
} (GtkAttachOptions) (0), 0, 0);
} gtk_widget_set_size_request(GTK_WIDGET(spin), 64, -1);
gtk_spin_button_set_wrap(spin, TRUE);
g_rotate_dialog.z = spin;
}
}
{
GtkVBox* vbox = create_dialog_vbox(4);
gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(vbox), TRUE, TRUE, 0);
{
GtkButton* button = create_dialog_button("OK", G_CALLBACK(rotatedlg_ok), &g_rotate_dialog);
gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(button), FALSE, FALSE, 0);
widget_make_default(GTK_WIDGET(button));
gtk_widget_add_accelerator(GTK_WIDGET(button), "clicked", accel, GDK_Return, (GdkModifierType)0, (GtkAccelFlags)0);
}
{
GtkButton* button = create_dialog_button("Cancel", G_CALLBACK(rotatedlg_cancel), &g_rotate_dialog);
gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(button), FALSE, FALSE, 0);
gtk_widget_add_accelerator(GTK_WIDGET(button), "clicked", accel, GDK_Escape, (GdkModifierType)0, (GtkAccelFlags)0);
}
{
GtkButton* button = create_dialog_button("Apply", G_CALLBACK(rotatedlg_apply), &g_rotate_dialog);
gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(button), FALSE, FALSE, 0);
}
}
}
} }
if(modal_dialog_show(window, dialog) == eIDOK) gtk_widget_show(GTK_WIDGET(g_rotate_dialog.window));
{
rotatedlg_apply(0, &rotateDialog);
}
gtk_widget_destroy(GTK_WIDGET(window));
} }
void DoScaleDlg()
struct ScaleDialog
{ {
ModalDialog dialog;
GtkWidget* x; GtkWidget* x;
GtkWidget* y; GtkWidget* y;
GtkWidget* z; GtkWidget* z;
GtkWindow *window;
};
GtkWindow* window = create_dialog_window(MainFrame_getWindow(), "Scale", G_CALLBACK(dialog_delete_callback), &dialog); static gboolean scaledlg_apply (GtkWidget *widget, ScaleDialog* scaleDialog)
{
float sx, sy, sz;
GtkAccelGroup* accel = gtk_accel_group_new(); sx = static_cast<float>(atof(gtk_entry_get_text (GTK_ENTRY (scaleDialog->x))));
gtk_window_add_accel_group(window, accel); sy = static_cast<float>(atof(gtk_entry_get_text (GTK_ENTRY (scaleDialog->y))));
sz = static_cast<float>(atof(gtk_entry_get_text (GTK_ENTRY (scaleDialog->z))));
{ StringOutputStream command;
GtkHBox* hbox = create_dialog_hbox(4, 4); command << "scaleSelected -x " << sx << " -y " << sy << " -z " << sz;
gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(hbox)); UndoableCommand undo(command.c_str());
{
GtkTable* table = create_dialog_table(3, 2, 4, 4);
gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(table), TRUE, TRUE, 0);
{
GtkWidget* label = gtk_label_new ("X:");
gtk_widget_show (label);
gtk_table_attach(table, label, 0, 1, 0, 1,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
}
{
GtkWidget* label = gtk_label_new ("Y:");
gtk_widget_show (label);
gtk_table_attach(table, label, 0, 1, 1, 2,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
}
{
GtkWidget* label = gtk_label_new ("Z:");
gtk_widget_show (label);
gtk_table_attach(table, label, 0, 1, 2, 3,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
}
{
GtkWidget* entry = gtk_entry_new();
gtk_widget_show (entry);
gtk_table_attach(table, entry, 1, 2, 0, 1,
(GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
gtk_widget_grab_focus(entry); Select_Scale(sx, sy, sz);
x = entry; return TRUE;
} }
{
GtkWidget* entry = gtk_entry_new(); static gboolean scaledlg_cancel (GtkWidget *widget, ScaleDialog* scaleDialog)
gtk_widget_show (entry); {
gtk_table_attach(table, entry, 1, 2, 1, 2, gtk_widget_hide(GTK_WIDGET(scaleDialog->window));
(GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
(GtkAttachOptions) (0), 0, 0); gtk_entry_set_text (GTK_ENTRY(scaleDialog->x), "1.0");
gtk_entry_set_text (GTK_ENTRY(scaleDialog->y), "1.0");
y = entry; gtk_entry_set_text (GTK_ENTRY(scaleDialog->z), "1.0");
}
{ return TRUE;
GtkWidget* entry = gtk_entry_new(); }
gtk_widget_show (entry);
gtk_table_attach(table, entry, 1, 2, 2, 3, static gboolean scaledlg_ok (GtkWidget *widget, ScaleDialog* scaleDialog)
(GtkAttachOptions) (GTK_EXPAND | GTK_FILL), {
(GtkAttachOptions) (0), 0, 0); scaledlg_apply(widget, scaleDialog);
scaledlg_cancel(widget, scaleDialog);
z = entry; return TRUE;
} }
}
{ static gboolean scaledlg_delete (GtkWidget *widget, GdkEventAny *event, ScaleDialog* scaleDialog)
GtkVBox* vbox = create_dialog_vbox(4); {
gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(vbox), TRUE, TRUE, 0); scaledlg_cancel(widget, scaleDialog);
{ return TRUE;
GtkButton* button = create_dialog_button("OK", G_CALLBACK(dialog_button_ok), &dialog); }
gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(button), FALSE, FALSE, 0);
widget_make_default(GTK_WIDGET(button)); ScaleDialog g_scale_dialog;
gtk_widget_add_accelerator(GTK_WIDGET(button), "clicked", accel, GDK_Return, (GdkModifierType)0, (GtkAccelFlags)0);
} void DoScaleDlg()
{ {
GtkButton* button = create_dialog_button("Cancel", G_CALLBACK(dialog_button_cancel), &dialog); if(g_scale_dialog.window == NULL)
gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(button), FALSE, FALSE, 0); {
gtk_widget_add_accelerator(GTK_WIDGET(button), "clicked", accel, GDK_Escape, (GdkModifierType)0, (GtkAccelFlags)0); g_scale_dialog.window = create_dialog_window(MainFrame_getWindow(), "Arbitrary scale", G_CALLBACK(scaledlg_delete), &g_scale_dialog);
}
} GtkAccelGroup* accel = gtk_accel_group_new();
} gtk_window_add_accel_group(g_scale_dialog.window, accel);
// Initialize dialog {
gtk_entry_set_text (GTK_ENTRY (x), "1.0"); GtkHBox* hbox = create_dialog_hbox(4, 4);
gtk_entry_set_text (GTK_ENTRY (y), "1.0"); gtk_container_add(GTK_CONTAINER(g_scale_dialog.window), GTK_WIDGET(hbox));
gtk_entry_set_text (GTK_ENTRY (z), "1.0"); {
GtkTable* table = create_dialog_table(3, 2, 4, 4);
if(modal_dialog_show(window, dialog) == eIDOK) gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(table), TRUE, TRUE, 0);
{ {
float sx, sy, sz; GtkWidget* label = gtk_label_new (" X ");
sx = static_cast<float>(atof(gtk_entry_get_text (GTK_ENTRY (x)))); gtk_widget_show (label);
sy = static_cast<float>(atof(gtk_entry_get_text (GTK_ENTRY (y)))); gtk_table_attach(table, label, 0, 1, 0, 1,
sz = static_cast<float>(atof(gtk_entry_get_text (GTK_ENTRY (z)))); (GtkAttachOptions) (0),
(GtkAttachOptions) (0), 0, 0);
if (sx > 0 && sy > 0 && sz > 0) }
{ {
StringOutputStream command; GtkWidget* label = gtk_label_new (" Y ");
command << "scaleSelected -x " << sx << " -y " << sy << " -z " << sz; gtk_widget_show (label);
UndoableCommand undo(command.c_str()); gtk_table_attach(table, label, 0, 1, 1, 2,
(GtkAttachOptions) (0),
Select_Scale(sx, sy, sz); (GtkAttachOptions) (0), 0, 0);
} }
else {
{ GtkWidget* label = gtk_label_new (" Z ");
globalOutputStream() << "Warning.. Tried to scale by a zero value."; gtk_widget_show (label);
} gtk_table_attach(table, label, 0, 1, 2, 3,
} (GtkAttachOptions) (0),
(GtkAttachOptions) (0), 0, 0);
gtk_widget_destroy(GTK_WIDGET(window)); }
{
GtkWidget* entry = gtk_entry_new();
gtk_entry_set_text (GTK_ENTRY(entry), "1.0");
gtk_widget_show (entry);
gtk_table_attach(table, entry, 1, 2, 0, 1,
(GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
g_scale_dialog.x = entry;
}
{
GtkWidget* entry = gtk_entry_new();
gtk_entry_set_text (GTK_ENTRY(entry), "1.0");
gtk_widget_show (entry);
gtk_table_attach(table, entry, 1, 2, 1, 2,
(GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
g_scale_dialog.y = entry;
}
{
GtkWidget* entry = gtk_entry_new();
gtk_entry_set_text (GTK_ENTRY(entry), "1.0");
gtk_widget_show (entry);
gtk_table_attach(table, entry, 1, 2, 2, 3,
(GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
g_scale_dialog.z = entry;
}
}
{
GtkVBox* vbox = create_dialog_vbox(4);
gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(vbox), TRUE, TRUE, 0);
{
GtkButton* button = create_dialog_button("OK", G_CALLBACK(scaledlg_ok), &g_scale_dialog);
gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(button), FALSE, FALSE, 0);
widget_make_default(GTK_WIDGET(button));
gtk_widget_add_accelerator(GTK_WIDGET(button), "clicked", accel, GDK_Return, (GdkModifierType)0, (GtkAccelFlags)0);
}
{
GtkButton* button = create_dialog_button("Cancel", G_CALLBACK(scaledlg_cancel), &g_scale_dialog);
gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(button), FALSE, FALSE, 0);
gtk_widget_add_accelerator(GTK_WIDGET(button), "clicked", accel, GDK_Escape, (GdkModifierType)0, (GtkAccelFlags)0);
}
{
GtkButton* button = create_dialog_button("Apply", G_CALLBACK(scaledlg_apply), &g_scale_dialog);
gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(button), FALSE, FALSE, 0);
}
}
}
}
gtk_widget_show(GTK_WIDGET(g_scale_dialog.window));
} }