renatofilho@20
|
1 |
#include<gtk/gtk.h>
|
renatofilho@20
|
2 |
#include<glib.h>
|
renatofilho@20
|
3 |
#include <sys/types.h>
|
renatofilho@20
|
4 |
#include <sys/stat.h>
|
renatofilho@20
|
5 |
#include <unistd.h>
|
renatofilho@20
|
6 |
#include <string.h>
|
renatofilho@20
|
7 |
#include <stdio.h>
|
renatofilho@20
|
8 |
#include <stdlib.h>
|
renatofilho@20
|
9 |
|
renatofilho@20
|
10 |
#include "mmyth_uisettings.h"
|
renatofilho@20
|
11 |
|
rosfran@208
|
12 |
#include <gmyth/gmyth_backendinfo.h>
|
renatofilho@20
|
13 |
|
renatofilho@20
|
14 |
static GtkWidget *settings_dialog;
|
renatofilho@20
|
15 |
static GtkWidget *entry_hostname;
|
renatofilho@20
|
16 |
static GtkWidget *entry_dbname;
|
renatofilho@20
|
17 |
static GtkWidget *entry_username;
|
renatofilho@20
|
18 |
static GtkWidget *entry_passwd;
|
renatofilho@20
|
19 |
static GtkWidget *entry_port;
|
renatofilho@20
|
20 |
|
renatofilho@754
|
21 |
static void settings_dialog_update_data(void);
|
renatofilho@754
|
22 |
static GtkWidget *add_entry_to_table(GtkWidget * table,
|
renatofilho@754
|
23 |
const gchar * init_str,
|
renatofilho@754
|
24 |
guint pos_left, guint pos_right,
|
renatofilho@754
|
25 |
guint pos_top, guint pos_bottom);
|
renatofilho@754
|
26 |
static GtkWidget *add_label_to_table(GtkWidget * table, const gchar * str,
|
renatofilho@754
|
27 |
guint pos_left, guint pos_right,
|
renatofilho@754
|
28 |
guint pos_top, guint pos_bottom);
|
renatofilho@754
|
29 |
|
rosfran@208
|
30 |
static GMythBackendInfo *backend_info = NULL;
|
rosfran@208
|
31 |
|
renatofilho@20
|
32 |
gboolean
|
renatofilho@754
|
33 |
mmyth_uisettings_run(GtkWindow * main_window)
|
renatofilho@20
|
34 |
{
|
renatofilho@20
|
35 |
|
renatofilho@754
|
36 |
GtkWidget *settings_table;
|
renatofilho@754
|
37 |
GtkWidget *label_hostname,
|
renatofilho@754
|
38 |
*label_dbname;
|
renatofilho@754
|
39 |
GtkWidget *label_username,
|
renatofilho@754
|
40 |
*label_passwd,
|
renatofilho@754
|
41 |
*label_port;
|
renatofilho@20
|
42 |
|
renatofilho@754
|
43 |
backend_info = gmyth_backend_info_new_full("localhost", "mythtv",
|
renatofilho@754
|
44 |
"mythtv", "mythconverg",
|
renatofilho@754
|
45 |
6543);
|
renatofilho@20
|
46 |
|
renatofilho@754
|
47 |
settings_dialog = gtk_dialog_new_with_buttons("Settings",
|
renatofilho@754
|
48 |
main_window,
|
renatofilho@754
|
49 |
GTK_DIALOG_DESTROY_WITH_PARENT,
|
renatofilho@754
|
50 |
GTK_STOCK_OK,
|
renatofilho@754
|
51 |
GTK_RESPONSE_ACCEPT,
|
renatofilho@754
|
52 |
GTK_STOCK_CANCEL,
|
renatofilho@754
|
53 |
GTK_RESPONSE_REJECT,
|
renatofilho@754
|
54 |
NULL);
|
renatofilho@20
|
55 |
|
renatofilho@754
|
56 |
gtk_widget_set_size_request(settings_dialog, 400, 244);
|
renatofilho@20
|
57 |
|
renatofilho@754
|
58 |
/*
|
renatofilho@754
|
59 |
* scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
|
renatofilho@754
|
60 |
* gtk_widget_show (scrolledwindow1); gtk_container_add (GTK_CONTAINER
|
renatofilho@754
|
61 |
* (window1), scrolledwindow1); gtk_scrolled_window_set_policy
|
renatofilho@754
|
62 |
* (GTK_SCROLLED_WINDOW (scrolledwindow1), GTK_POLICY_AUTOMATIC,
|
renatofilho@754
|
63 |
* GTK_POLICY_NEVER);
|
renatofilho@754
|
64 |
*
|
renatofilho@754
|
65 |
* viewport1 = gtk_viewport_new (NULL, NULL); gtk_widget_show
|
renatofilho@754
|
66 |
* (viewport1); gtk_container_add (GTK_CONTAINER (scrolledwindow1),
|
renatofilho@754
|
67 |
* viewport1); gtk_viewport_set_shadow_type (GTK_VIEWPORT (viewport1),
|
renatofilho@754
|
68 |
* GTK_SHADOW_NONE);
|
renatofilho@754
|
69 |
*/
|
renatofilho@20
|
70 |
|
renatofilho@754
|
71 |
// Creates the table and attach it to the settings dialog
|
renatofilho@754
|
72 |
settings_table = gtk_table_new(5, 2, FALSE);
|
renatofilho@754
|
73 |
gtk_widget_show(settings_table);
|
renatofilho@754
|
74 |
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(settings_dialog)->vbox),
|
renatofilho@754
|
75 |
settings_table, FALSE, TRUE, 0);
|
renatofilho@754
|
76 |
gtk_container_set_border_width(GTK_CONTAINER(settings_table), 3);
|
renatofilho@754
|
77 |
gtk_table_set_row_spacings(GTK_TABLE(settings_table), 5);
|
renatofilho@754
|
78 |
gtk_table_set_col_spacings(GTK_TABLE(settings_table), 10);
|
renatofilho@754
|
79 |
|
renatofilho@754
|
80 |
label_hostname =
|
renatofilho@754
|
81 |
add_label_to_table(settings_table, "Host Name:", 0, 1, 0, 1);
|
renatofilho@754
|
82 |
label_dbname =
|
renatofilho@754
|
83 |
add_label_to_table(settings_table, "Database Name:", 0, 1, 1, 2);
|
renatofilho@754
|
84 |
label_username =
|
renatofilho@754
|
85 |
add_label_to_table(settings_table, "Username:", 0, 1, 2, 3);
|
renatofilho@754
|
86 |
label_passwd =
|
renatofilho@754
|
87 |
add_label_to_table(settings_table, "Password:", 0, 1, 3, 4);
|
renatofilho@754
|
88 |
label_port =
|
renatofilho@754
|
89 |
add_label_to_table(settings_table, "Server port:", 0, 1, 4, 5);
|
renatofilho@754
|
90 |
|
renatofilho@754
|
91 |
entry_hostname = add_entry_to_table(settings_table,
|
renatofilho@754
|
92 |
gmyth_backend_info_get_hostname
|
renatofilho@754
|
93 |
(backend_info), 1, 2, 0, 1);
|
renatofilho@754
|
94 |
entry_dbname =
|
renatofilho@754
|
95 |
add_entry_to_table(settings_table,
|
renatofilho@754
|
96 |
gmyth_backend_info_get_db_name(backend_info), 1,
|
renatofilho@754
|
97 |
2, 1, 2);
|
renatofilho@754
|
98 |
entry_username =
|
renatofilho@754
|
99 |
add_entry_to_table(settings_table,
|
renatofilho@754
|
100 |
gmyth_backend_info_get_username(backend_info),
|
renatofilho@754
|
101 |
1, 2, 2, 3);
|
renatofilho@754
|
102 |
entry_passwd =
|
renatofilho@754
|
103 |
add_entry_to_table(settings_table,
|
renatofilho@754
|
104 |
gmyth_backend_info_get_password(backend_info),
|
renatofilho@754
|
105 |
1, 2, 3, 4);
|
renatofilho@754
|
106 |
|
renatofilho@754
|
107 |
entry_port =
|
renatofilho@754
|
108 |
add_entry_to_table(settings_table,
|
renatofilho@754
|
109 |
g_strdup_printf("%d",
|
renatofilho@754
|
110 |
gmyth_backend_info_get_port
|
renatofilho@754
|
111 |
(backend_info)), 1, 2, 4, 5);
|
renatofilho@754
|
112 |
|
renatofilho@754
|
113 |
if (gtk_dialog_run(GTK_DIALOG(settings_dialog)) == GTK_RESPONSE_ACCEPT) {
|
renatofilho@754
|
114 |
settings_dialog_update_data();
|
renatofilho@754
|
115 |
gtk_widget_destroy(settings_dialog);
|
renatofilho@754
|
116 |
return TRUE;
|
renatofilho@754
|
117 |
}
|
renatofilho@754
|
118 |
|
renatofilho@754
|
119 |
gtk_widget_destroy(settings_dialog);
|
renatofilho@754
|
120 |
|
renatofilho@754
|
121 |
return FALSE;
|
renatofilho@754
|
122 |
|
renatofilho@20
|
123 |
}
|
renatofilho@20
|
124 |
|
renatofilho@754
|
125 |
static GtkWidget *
|
renatofilho@754
|
126 |
add_label_to_table(GtkWidget * table, const gchar * str, guint pos_left,
|
renatofilho@754
|
127 |
guint pos_right, guint pos_top, guint pos_bottom)
|
renatofilho@20
|
128 |
{
|
renatofilho@754
|
129 |
GtkWidget *tmp_label = gtk_label_new(str);
|
renatofilho@754
|
130 |
|
renatofilho@754
|
131 |
gtk_widget_show(tmp_label);
|
renatofilho@754
|
132 |
gtk_table_attach(GTK_TABLE(table), tmp_label,
|
renatofilho@754
|
133 |
pos_left, pos_right, pos_top, pos_bottom,
|
renatofilho@754
|
134 |
(GtkAttachOptions) (GTK_FILL),
|
renatofilho@754
|
135 |
(GtkAttachOptions) (0), 0, 0);
|
renatofilho@754
|
136 |
gtk_misc_set_alignment(GTK_MISC(tmp_label), 0, 0.5);
|
renatofilho@754
|
137 |
|
renatofilho@754
|
138 |
return tmp_label;
|
renatofilho@20
|
139 |
}
|
renatofilho@20
|
140 |
|
renatofilho@754
|
141 |
static GtkWidget *
|
renatofilho@754
|
142 |
add_entry_to_table(GtkWidget * table, const gchar * init_str,
|
renatofilho@754
|
143 |
guint pos_left, guint pos_right, guint pos_top,
|
renatofilho@754
|
144 |
guint pos_bottom)
|
renatofilho@20
|
145 |
{
|
renatofilho@754
|
146 |
GtkWidget *tmp_entry = gtk_entry_new();
|
renatofilho@754
|
147 |
gtk_widget_show(tmp_entry);
|
renatofilho@754
|
148 |
gtk_table_attach(GTK_TABLE(table), tmp_entry,
|
renatofilho@754
|
149 |
pos_left, pos_right, pos_top, pos_bottom,
|
renatofilho@754
|
150 |
(GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
|
renatofilho@754
|
151 |
(GtkAttachOptions) (0), 0, 0);
|
renatofilho@20
|
152 |
if (init_str)
|
renatofilho@754
|
153 |
gtk_entry_set_text(GTK_ENTRY(tmp_entry), init_str);
|
renatofilho@754
|
154 |
|
renatofilho@754
|
155 |
// gtk_entry_set_invisible_char (GTK_ENTRY (entry_port), 9679);
|
renatofilho@754
|
156 |
|
renatofilho@754
|
157 |
return tmp_entry;
|
renatofilho@20
|
158 |
}
|
renatofilho@20
|
159 |
|
renatofilho@20
|
160 |
static void
|
renatofilho@754
|
161 |
settings_dialog_update_data(void)
|
renatofilho@20
|
162 |
{
|
renatofilho@754
|
163 |
// GMythSettings *backend_info = gmyth_context_get_settings();
|
rosfran@208
|
164 |
|
renatofilho@754
|
165 |
if (!backend_info) {
|
renatofilho@754
|
166 |
g_warning
|
renatofilho@754
|
167 |
("[%s] Could not get GMythSettings instance from context\n",
|
renatofilho@754
|
168 |
__FUNCTION__);
|
renatofilho@754
|
169 |
return;
|
renatofilho@754
|
170 |
}
|
renatofilho@754
|
171 |
|
renatofilho@754
|
172 |
gmyth_backend_info_set_hostname(backend_info,
|
renatofilho@754
|
173 |
gtk_entry_get_text(GTK_ENTRY
|
renatofilho@754
|
174 |
(entry_hostname)));
|
renatofilho@754
|
175 |
|
renatofilho@754
|
176 |
gmyth_backend_info_set_db_name(backend_info,
|
renatofilho@754
|
177 |
gtk_entry_get_text(GTK_ENTRY
|
renatofilho@754
|
178 |
(entry_dbname)));
|
renatofilho@754
|
179 |
|
renatofilho@754
|
180 |
gmyth_backend_info_set_username(backend_info,
|
renatofilho@754
|
181 |
gtk_entry_get_text(GTK_ENTRY
|
renatofilho@754
|
182 |
(entry_username)));
|
renatofilho@754
|
183 |
|
renatofilho@754
|
184 |
gmyth_backend_info_set_password(backend_info,
|
renatofilho@754
|
185 |
gtk_entry_get_text(GTK_ENTRY
|
renatofilho@754
|
186 |
(entry_passwd)));
|
renatofilho@754
|
187 |
|
renatofilho@754
|
188 |
gmyth_backend_info_set_port(backend_info,
|
renatofilho@754
|
189 |
(gint)
|
renatofilho@754
|
190 |
g_ascii_strtoull(gtk_entry_get_text
|
renatofilho@754
|
191 |
(GTK_ENTRY(entry_port)),
|
renatofilho@754
|
192 |
NULL, 10));
|
renatofilho@754
|
193 |
|
renatofilho@754
|
194 |
// gmyth_backend_info_save (backend_info);
|
renatofilho@754
|
195 |
|
renatofilho@20
|
196 |
}
|