Beginning to add a preferences window
This commit is contained in:
parent
a62648d601
commit
c86e3e03d3
@ -91,8 +91,86 @@ void on_file_open_url(GtkWidget * widget, gpointer data)
|
|||||||
|
|
||||||
/* edit menu */
|
/* edit menu */
|
||||||
/* on_edit_preferences */
|
/* on_edit_preferences */
|
||||||
|
static void _preferences_set(Surfer * surfer);
|
||||||
|
/* callbacks */
|
||||||
|
static gboolean _preferences_on_closex(GtkWidget * widget, GdkEvent * event,
|
||||||
|
gpointer data);
|
||||||
|
static void _preferences_on_cancel(GtkWidget * widget, gpointer data);
|
||||||
|
static void _preferences_on_ok(GtkWidget * widget, gpointer data);
|
||||||
|
|
||||||
void on_edit_preferences(GtkWidget * widget, gpointer data)
|
void on_edit_preferences(GtkWidget * widget, gpointer data)
|
||||||
{
|
{
|
||||||
|
Surfer * surfer = data;
|
||||||
|
GtkWidget * vbox;
|
||||||
|
GtkWidget * notebook;
|
||||||
|
GtkWidget * hbox;
|
||||||
|
|
||||||
|
if(surfer->pr_window != NULL)
|
||||||
|
{
|
||||||
|
gtk_widget_show(surfer->pr_window);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
/* FIXME consider using gtk_dialog_new() */
|
||||||
|
surfer->pr_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
||||||
|
gtk_window_set_resizable(GTK_WINDOW(surfer->pr_window), FALSE);
|
||||||
|
gtk_window_set_title(GTK_WINDOW(surfer->pr_window),
|
||||||
|
"Web surfer preferences");
|
||||||
|
gtk_window_set_transient_for(GTK_WINDOW(surfer->pr_window), GTK_WINDOW(
|
||||||
|
surfer->window));
|
||||||
|
g_signal_connect(G_OBJECT(surfer->pr_window), "delete-event",
|
||||||
|
G_CALLBACK(_preferences_on_closex), surfer);
|
||||||
|
vbox = gtk_vbox_new(FALSE, 0);
|
||||||
|
/* notebook */
|
||||||
|
notebook = gtk_notebook_new();
|
||||||
|
gtk_box_pack_start(GTK_BOX(vbox), notebook, TRUE, TRUE, 4);
|
||||||
|
/* separator */
|
||||||
|
hbox = gtk_hbox_new(FALSE, 0);
|
||||||
|
widget = gtk_hseparator_new();
|
||||||
|
gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 4);
|
||||||
|
gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 4);
|
||||||
|
/* dialog */
|
||||||
|
hbox = gtk_hbox_new(TRUE, 0);
|
||||||
|
widget = gtk_button_new_from_stock(GTK_STOCK_OK);
|
||||||
|
g_signal_connect(G_OBJECT(widget), "clicked", G_CALLBACK(
|
||||||
|
_preferences_on_ok), surfer);
|
||||||
|
gtk_box_pack_end(GTK_BOX(hbox), widget, FALSE, TRUE, 4);
|
||||||
|
widget = gtk_button_new_from_stock(GTK_STOCK_CANCEL);
|
||||||
|
g_signal_connect(G_OBJECT(widget), "clicked", G_CALLBACK(
|
||||||
|
_preferences_on_cancel), surfer);
|
||||||
|
gtk_box_pack_end(GTK_BOX(hbox), widget, FALSE, TRUE, 4);
|
||||||
|
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 4);
|
||||||
|
_preferences_set(surfer);
|
||||||
|
gtk_container_add(GTK_CONTAINER(surfer->pr_window), vbox);
|
||||||
|
gtk_widget_show_all(surfer->pr_window);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void _preferences_set(Surfer * surfer)
|
||||||
|
{
|
||||||
|
/* FIXME implement */
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean _preferences_on_closex(GtkWidget * widget, GdkEvent * event,
|
||||||
|
gpointer data)
|
||||||
|
{
|
||||||
|
Surfer * surfer = data;
|
||||||
|
|
||||||
|
_preferences_on_cancel(widget, surfer);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void _preferences_on_cancel(GtkWidget * widget, gpointer data)
|
||||||
|
{
|
||||||
|
Surfer * surfer = data;
|
||||||
|
|
||||||
|
gtk_widget_hide(surfer->pr_window);
|
||||||
|
_preferences_set(surfer);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void _preferences_on_ok(GtkWidget * widget, gpointer data)
|
||||||
|
{
|
||||||
|
Surfer * surfer = data;
|
||||||
|
|
||||||
|
gtk_widget_hide(surfer->pr_window);
|
||||||
/* FIXME implement */
|
/* FIXME implement */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -235,6 +235,8 @@ Surfer * surfer_new(char const * url)
|
|||||||
gtk_container_add(GTK_CONTAINER(surfer->window), vbox);
|
gtk_container_add(GTK_CONTAINER(surfer->window), vbox);
|
||||||
gtk_widget_grab_focus(GTK_WIDGET(surfer->tb_path));
|
gtk_widget_grab_focus(GTK_WIDGET(surfer->tb_path));
|
||||||
gtk_widget_show_all(surfer->window);
|
gtk_widget_show_all(surfer->window);
|
||||||
|
/* preferences window */
|
||||||
|
surfer->pr_window = NULL;
|
||||||
/* hack to display the statusbar only if necessary */
|
/* hack to display the statusbar only if necessary */
|
||||||
gtk_box_pack_start(GTK_BOX(vbox), surfer->statusbox, FALSE, FALSE, 0);
|
gtk_box_pack_start(GTK_BOX(vbox), surfer->statusbox, FALSE, FALSE, 0);
|
||||||
surfer_set_status(surfer, NULL);
|
surfer_set_status(surfer, NULL);
|
||||||
|
@ -60,6 +60,9 @@ typedef struct _Surfer
|
|||||||
GtkWidget * statusbox;
|
GtkWidget * statusbox;
|
||||||
GtkWidget * statusbar;
|
GtkWidget * statusbar;
|
||||||
guint statusbar_id;
|
guint statusbar_id;
|
||||||
|
|
||||||
|
/* preferences */
|
||||||
|
GtkWidget * pr_window;
|
||||||
} Surfer;
|
} Surfer;
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user