renatofilho@20: #include renatofilho@20: #include renatofilho@20: #include renatofilho@20: #include renatofilho@20: #include renatofilho@20: #include renatofilho@20: #include renatofilho@20: #include renatofilho@20: renatofilho@20: #include "mmyth_uisettings.h" renatofilho@20: rosfran@208: #include renatofilho@20: renatofilho@20: static GtkWidget *settings_dialog; renatofilho@20: static GtkWidget *entry_hostname; renatofilho@20: static GtkWidget *entry_dbname; renatofilho@20: static GtkWidget *entry_username; renatofilho@20: static GtkWidget *entry_passwd; renatofilho@20: static GtkWidget *entry_port; renatofilho@20: renatofilho@754: static void settings_dialog_update_data(void); renatofilho@754: static GtkWidget *add_entry_to_table(GtkWidget * table, renatofilho@754: const gchar * init_str, renatofilho@754: guint pos_left, guint pos_right, renatofilho@754: guint pos_top, guint pos_bottom); renatofilho@754: static GtkWidget *add_label_to_table(GtkWidget * table, const gchar * str, renatofilho@754: guint pos_left, guint pos_right, renatofilho@754: guint pos_top, guint pos_bottom); renatofilho@754: rosfran@208: static GMythBackendInfo *backend_info = NULL; rosfran@208: renatofilho@20: gboolean renatofilho@754: mmyth_uisettings_run(GtkWindow * main_window) renatofilho@20: { renatofilho@20: renatofilho@754: GtkWidget *settings_table; renatofilho@754: GtkWidget *label_hostname, renatofilho@754: *label_dbname; renatofilho@754: GtkWidget *label_username, renatofilho@754: *label_passwd, renatofilho@754: *label_port; renatofilho@20: renatofilho@754: backend_info = gmyth_backend_info_new_full("localhost", "mythtv", renatofilho@754: "mythtv", "mythconverg", renatofilho@754: 6543); renatofilho@20: renatofilho@754: settings_dialog = gtk_dialog_new_with_buttons("Settings", renatofilho@754: main_window, renatofilho@754: GTK_DIALOG_DESTROY_WITH_PARENT, renatofilho@754: GTK_STOCK_OK, renatofilho@754: GTK_RESPONSE_ACCEPT, renatofilho@754: GTK_STOCK_CANCEL, renatofilho@754: GTK_RESPONSE_REJECT, renatofilho@754: NULL); renatofilho@20: renatofilho@754: gtk_widget_set_size_request(settings_dialog, 400, 244); renatofilho@20: renatofilho@754: /* renatofilho@754: * scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL); renatofilho@754: * gtk_widget_show (scrolledwindow1); gtk_container_add (GTK_CONTAINER renatofilho@754: * (window1), scrolledwindow1); gtk_scrolled_window_set_policy renatofilho@754: * (GTK_SCROLLED_WINDOW (scrolledwindow1), GTK_POLICY_AUTOMATIC, renatofilho@754: * GTK_POLICY_NEVER); renatofilho@754: * renatofilho@754: * viewport1 = gtk_viewport_new (NULL, NULL); gtk_widget_show renatofilho@754: * (viewport1); gtk_container_add (GTK_CONTAINER (scrolledwindow1), renatofilho@754: * viewport1); gtk_viewport_set_shadow_type (GTK_VIEWPORT (viewport1), renatofilho@754: * GTK_SHADOW_NONE); renatofilho@754: */ renatofilho@20: renatofilho@754: // Creates the table and attach it to the settings dialog renatofilho@754: settings_table = gtk_table_new(5, 2, FALSE); renatofilho@754: gtk_widget_show(settings_table); renatofilho@754: gtk_box_pack_start(GTK_BOX(GTK_DIALOG(settings_dialog)->vbox), renatofilho@754: settings_table, FALSE, TRUE, 0); renatofilho@754: gtk_container_set_border_width(GTK_CONTAINER(settings_table), 3); renatofilho@754: gtk_table_set_row_spacings(GTK_TABLE(settings_table), 5); renatofilho@754: gtk_table_set_col_spacings(GTK_TABLE(settings_table), 10); renatofilho@754: renatofilho@754: label_hostname = renatofilho@754: add_label_to_table(settings_table, "Host Name:", 0, 1, 0, 1); renatofilho@754: label_dbname = renatofilho@754: add_label_to_table(settings_table, "Database Name:", 0, 1, 1, 2); renatofilho@754: label_username = renatofilho@754: add_label_to_table(settings_table, "Username:", 0, 1, 2, 3); renatofilho@754: label_passwd = renatofilho@754: add_label_to_table(settings_table, "Password:", 0, 1, 3, 4); renatofilho@754: label_port = renatofilho@754: add_label_to_table(settings_table, "Server port:", 0, 1, 4, 5); renatofilho@754: renatofilho@754: entry_hostname = add_entry_to_table(settings_table, renatofilho@754: gmyth_backend_info_get_hostname renatofilho@754: (backend_info), 1, 2, 0, 1); renatofilho@754: entry_dbname = renatofilho@754: add_entry_to_table(settings_table, renatofilho@754: gmyth_backend_info_get_db_name(backend_info), 1, renatofilho@754: 2, 1, 2); renatofilho@754: entry_username = renatofilho@754: add_entry_to_table(settings_table, renatofilho@754: gmyth_backend_info_get_username(backend_info), renatofilho@754: 1, 2, 2, 3); renatofilho@754: entry_passwd = renatofilho@754: add_entry_to_table(settings_table, renatofilho@754: gmyth_backend_info_get_password(backend_info), renatofilho@754: 1, 2, 3, 4); renatofilho@754: renatofilho@754: entry_port = renatofilho@754: add_entry_to_table(settings_table, renatofilho@754: g_strdup_printf("%d", renatofilho@754: gmyth_backend_info_get_port renatofilho@754: (backend_info)), 1, 2, 4, 5); renatofilho@754: renatofilho@754: if (gtk_dialog_run(GTK_DIALOG(settings_dialog)) == GTK_RESPONSE_ACCEPT) { renatofilho@754: settings_dialog_update_data(); renatofilho@754: gtk_widget_destroy(settings_dialog); renatofilho@754: return TRUE; renatofilho@754: } renatofilho@754: renatofilho@754: gtk_widget_destroy(settings_dialog); renatofilho@754: renatofilho@754: return FALSE; renatofilho@754: renatofilho@20: } renatofilho@20: renatofilho@754: static GtkWidget * renatofilho@754: add_label_to_table(GtkWidget * table, const gchar * str, guint pos_left, renatofilho@754: guint pos_right, guint pos_top, guint pos_bottom) renatofilho@20: { renatofilho@754: GtkWidget *tmp_label = gtk_label_new(str); renatofilho@754: renatofilho@754: gtk_widget_show(tmp_label); renatofilho@754: gtk_table_attach(GTK_TABLE(table), tmp_label, renatofilho@754: pos_left, pos_right, pos_top, pos_bottom, renatofilho@754: (GtkAttachOptions) (GTK_FILL), renatofilho@754: (GtkAttachOptions) (0), 0, 0); renatofilho@754: gtk_misc_set_alignment(GTK_MISC(tmp_label), 0, 0.5); renatofilho@754: renatofilho@754: return tmp_label; renatofilho@20: } renatofilho@20: renatofilho@754: static GtkWidget * renatofilho@754: add_entry_to_table(GtkWidget * table, const gchar * init_str, renatofilho@754: guint pos_left, guint pos_right, guint pos_top, renatofilho@754: guint pos_bottom) renatofilho@20: { renatofilho@754: GtkWidget *tmp_entry = gtk_entry_new(); renatofilho@754: gtk_widget_show(tmp_entry); renatofilho@754: gtk_table_attach(GTK_TABLE(table), tmp_entry, renatofilho@754: pos_left, pos_right, pos_top, pos_bottom, renatofilho@754: (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), renatofilho@754: (GtkAttachOptions) (0), 0, 0); renatofilho@20: if (init_str) renatofilho@754: gtk_entry_set_text(GTK_ENTRY(tmp_entry), init_str); renatofilho@754: renatofilho@754: // gtk_entry_set_invisible_char (GTK_ENTRY (entry_port), 9679); renatofilho@754: renatofilho@754: return tmp_entry; renatofilho@20: } renatofilho@20: renatofilho@20: static void renatofilho@754: settings_dialog_update_data(void) renatofilho@20: { renatofilho@754: // GMythSettings *backend_info = gmyth_context_get_settings(); rosfran@208: renatofilho@754: if (!backend_info) { renatofilho@754: g_warning renatofilho@754: ("[%s] Could not get GMythSettings instance from context\n", renatofilho@754: __FUNCTION__); renatofilho@754: return; renatofilho@754: } renatofilho@754: renatofilho@754: gmyth_backend_info_set_hostname(backend_info, renatofilho@754: gtk_entry_get_text(GTK_ENTRY renatofilho@754: (entry_hostname))); renatofilho@754: renatofilho@754: gmyth_backend_info_set_db_name(backend_info, renatofilho@754: gtk_entry_get_text(GTK_ENTRY renatofilho@754: (entry_dbname))); renatofilho@754: renatofilho@754: gmyth_backend_info_set_username(backend_info, renatofilho@754: gtk_entry_get_text(GTK_ENTRY renatofilho@754: (entry_username))); renatofilho@754: renatofilho@754: gmyth_backend_info_set_password(backend_info, renatofilho@754: gtk_entry_get_text(GTK_ENTRY renatofilho@754: (entry_passwd))); renatofilho@754: renatofilho@754: gmyth_backend_info_set_port(backend_info, renatofilho@754: (gint) renatofilho@754: g_ascii_strtoull(gtk_entry_get_text renatofilho@754: (GTK_ENTRY(entry_port)), renatofilho@754: NULL, 10)); renatofilho@754: renatofilho@754: // gmyth_backend_info_save (backend_info); renatofilho@754: renatofilho@20: }