Implemented the system preferences window (requires a restart to apply)
This commit is contained in:
parent
4003cac6e5
commit
c8ebfdebba
38
src/phone.c
38
src/phone.c
@ -210,7 +210,7 @@ struct _Phone
|
|||||||
/* system preferences */
|
/* system preferences */
|
||||||
GtkWidget * sy_window;
|
GtkWidget * sy_window;
|
||||||
GtkWidget * sy_device;
|
GtkWidget * sy_device;
|
||||||
GtkWidget * sy_flow;
|
GtkWidget * sy_hwflow;
|
||||||
|
|
||||||
/* write */
|
/* write */
|
||||||
GtkWidget * wr_window;
|
GtkWidget * wr_window;
|
||||||
@ -2073,6 +2073,7 @@ void phone_show_settings(Phone * phone, gboolean show)
|
|||||||
|
|
||||||
/* phone_show_system */
|
/* phone_show_system */
|
||||||
static void _on_system_cancel(gpointer data);
|
static void _on_system_cancel(gpointer data);
|
||||||
|
static void _on_system_ok(gpointer data);
|
||||||
|
|
||||||
void phone_show_system(Phone * phone, gboolean show)
|
void phone_show_system(Phone * phone, gboolean show)
|
||||||
{
|
{
|
||||||
@ -2112,9 +2113,9 @@ void phone_show_system(Phone * phone, gboolean show)
|
|||||||
GTK_FILE_CHOOSER_ACTION_OPEN);
|
GTK_FILE_CHOOSER_ACTION_OPEN);
|
||||||
phone->sy_device = widget;
|
phone->sy_device = widget;
|
||||||
gtk_box_pack_start(GTK_BOX(vbox), widget, FALSE, TRUE, 4);
|
gtk_box_pack_start(GTK_BOX(vbox), widget, FALSE, TRUE, 4);
|
||||||
phone->sy_flow = gtk_check_button_new_with_label(
|
phone->sy_hwflow = gtk_check_button_new_with_label(
|
||||||
_("Enable flow control"));
|
_("Enable flow control"));
|
||||||
gtk_box_pack_start(GTK_BOX(vbox), phone->sy_flow, FALSE, TRUE, 4);
|
gtk_box_pack_start(GTK_BOX(vbox), phone->sy_hwflow, FALSE, TRUE, 4);
|
||||||
bbox = gtk_hbutton_box_new();
|
bbox = gtk_hbutton_box_new();
|
||||||
gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END);
|
gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END);
|
||||||
gtk_button_box_set_spacing(GTK_BUTTON_BOX(bbox), 4);
|
gtk_button_box_set_spacing(GTK_BUTTON_BOX(bbox), 4);
|
||||||
@ -2123,6 +2124,8 @@ void phone_show_system(Phone * phone, gboolean show)
|
|||||||
_on_system_cancel), phone);
|
_on_system_cancel), phone);
|
||||||
gtk_container_add(GTK_CONTAINER(bbox), widget);
|
gtk_container_add(GTK_CONTAINER(bbox), widget);
|
||||||
widget = gtk_button_new_from_stock(GTK_STOCK_OK);
|
widget = gtk_button_new_from_stock(GTK_STOCK_OK);
|
||||||
|
g_signal_connect_swapped(G_OBJECT(widget), "clicked", G_CALLBACK(
|
||||||
|
_on_system_ok), phone);
|
||||||
gtk_container_add(GTK_CONTAINER(bbox), widget);
|
gtk_container_add(GTK_CONTAINER(bbox), widget);
|
||||||
gtk_box_pack_end(GTK_BOX(vbox), bbox, FALSE, TRUE, 0);
|
gtk_box_pack_end(GTK_BOX(vbox), bbox, FALSE, TRUE, 0);
|
||||||
gtk_container_add(GTK_CONTAINER(phone->sy_window), vbox);
|
gtk_container_add(GTK_CONTAINER(phone->sy_window), vbox);
|
||||||
@ -2144,11 +2147,32 @@ static void _on_system_cancel(gpointer data)
|
|||||||
phone->sy_device), p);
|
phone->sy_device), p);
|
||||||
if((p = config_get(phone->config, NULL, "hwflow")) != NULL
|
if((p = config_get(phone->config, NULL, "hwflow")) != NULL
|
||||||
&& strtoul(p, NULL, 10) != 0)
|
&& strtoul(p, NULL, 10) != 0)
|
||||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(phone->sy_flow),
|
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(
|
||||||
TRUE);
|
phone->sy_hwflow), TRUE);
|
||||||
else
|
else
|
||||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(phone->sy_flow),
|
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(
|
||||||
FALSE);
|
phone->sy_hwflow), FALSE);
|
||||||
|
gtk_widget_hide(phone->sy_window);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void _on_system_ok(gpointer data)
|
||||||
|
{
|
||||||
|
Phone * phone = data;
|
||||||
|
char const * p;
|
||||||
|
char * filename;
|
||||||
|
|
||||||
|
/* FIXME requires a restart to be applied at the moment */
|
||||||
|
if((p = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(
|
||||||
|
phone->sy_device))) != NULL)
|
||||||
|
config_set(phone->config, NULL, "device", p);
|
||||||
|
config_set(phone->config, NULL, "hwflow", gtk_toggle_button_get_active(
|
||||||
|
GTK_TOGGLE_BUTTON(phone->sy_hwflow))
|
||||||
|
? "1" : "0");
|
||||||
|
if((filename = _phone_config_filename()) != NULL)
|
||||||
|
{
|
||||||
|
config_save(phone->config, filename);
|
||||||
|
free(filename);
|
||||||
|
}
|
||||||
gtk_widget_hide(phone->sy_window);
|
gtk_widget_hide(phone->sy_window);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user