Mercurial > audlegacy
annotate Plugins/General/scrobbler/configure.c @ 700:99382cddf771 trunk
[svn] Fixes for all warnings (except 3 spurious GCC 4.0 ones, upgrade to 4.1 if you see them) and a performance increase. By external contributor Diego "FlameEyes" Petteno (Gentoo).
author | chainsaw |
---|---|
date | Sun, 26 Feb 2006 10:21:49 -0800 |
parents | 961b252f32bf |
children | 6549a4c58e15 |
rev | line source |
---|---|
694 | 1 #ifdef HAVE_CONFIG_H |
2 # include <config.h> | |
3 #endif | |
4 | |
695 | 5 #include "libaudacious/util.h" |
6 #include "libaudacious/configdb.h" | |
7 | |
694 | 8 #include <sys/types.h> |
9 #include <sys/stat.h> | |
10 #include <unistd.h> | |
11 #include <string.h> | |
12 #include <stdio.h> | |
13 | |
695 | 14 #include "md5.h" |
15 | |
694 | 16 #include <glib.h> |
17 #include <glib/gi18n.h> | |
18 | |
19 #include <gdk/gdkkeysyms.h> | |
20 #include <gtk/gtk.h> | |
21 | |
22 #include "configure.h" | |
23 | |
24 #define GLADE_HOOKUP_OBJECT(component,widget,name) \ | |
25 g_object_set_data_full (G_OBJECT (component), name, \ | |
26 gtk_widget_ref (widget), (GDestroyNotify) gtk_widget_unref) | |
27 | |
28 #define GLADE_HOOKUP_OBJECT_NO_REF(component,widget,name) \ | |
29 g_object_set_data (G_OBJECT (component), name, widget) | |
30 | |
695 | 31 GtkWidget *entry1, *entry2, *cfgdlg; |
32 | |
33 static char *hexify(char *pass, int len) | |
34 { | |
35 static char buf[33]; | |
36 char *bp = buf; | |
37 char hexchars[] = "0123456789abcdef"; | |
38 int i; | |
39 | |
40 memset(buf, 0, sizeof(buf)); | |
41 | |
42 for(i = 0; i < len; i++) { | |
43 *(bp++) = hexchars[(pass[i] >> 4) & 0x0f]; | |
44 *(bp++) = hexchars[pass[i] & 0x0f]; | |
45 } | |
46 *bp = 0; | |
47 return buf; | |
48 } | |
49 | |
700
99382cddf771
[svn] Fixes for all warnings (except 3 spurious GCC 4.0 ones, upgrade to 4.1 if you see them) and a performance increase. By external contributor Diego "FlameEyes" Petteno (Gentoo).
chainsaw
parents:
698
diff
changeset
|
50 static void saveconfig(GtkWidget *wid __attribute__((unused)), gpointer data) |
695 | 51 { |
52 ConfigDb *cfgfile; | |
53 | |
54 const char *uid = gtk_entry_get_text(GTK_ENTRY(entry1)); | |
55 const char *pwd = gtk_entry_get_text(GTK_ENTRY(entry2)); | |
56 | |
57 if ((cfgfile = bmp_cfg_db_open())) | |
58 { | |
59 md5_state_t md5state; | |
60 unsigned char md5pword[16]; | |
61 | |
62 bmp_cfg_db_set_string(cfgfile, "audioscrobbler", "username", (char *)uid); | |
63 | |
64 if (pwd != NULL && pwd[0] != '\0') | |
65 { | |
66 md5_init(&md5state); | |
67 md5_append(&md5state, (unsigned const char *)pwd, strlen(pwd)); | |
68 md5_finish(&md5state, md5pword); | |
69 bmp_cfg_db_set_string(cfgfile, "audioscrobbler", "password", | |
700
99382cddf771
[svn] Fixes for all warnings (except 3 spurious GCC 4.0 ones, upgrade to 4.1 if you see them) and a performance increase. By external contributor Diego "FlameEyes" Petteno (Gentoo).
chainsaw
parents:
698
diff
changeset
|
70 hexify((char*)md5pword, sizeof(md5pword))); |
695 | 71 } |
72 bmp_cfg_db_close(cfgfile); | |
73 } | |
74 | |
75 gtk_widget_destroy(GTK_WIDGET(data)); | |
76 } | |
77 | |
700
99382cddf771
[svn] Fixes for all warnings (except 3 spurious GCC 4.0 ones, upgrade to 4.1 if you see them) and a performance increase. By external contributor Diego "FlameEyes" Petteno (Gentoo).
chainsaw
parents:
698
diff
changeset
|
78 static void closewin(GtkWidget *wid __attribute__((unused)), gpointer data) |
698 | 79 { |
80 gtk_widget_destroy(GTK_WIDGET(data)); | |
81 } | |
82 | |
695 | 83 void |
84 configure_dialog(void) | |
85 { | |
86 ConfigDb *db; | |
87 | |
88 cfgdlg = create_cfgdlg(); | |
89 | |
90 gtk_entry_set_text(GTK_ENTRY(entry1), ""); | |
91 gtk_entry_set_text(GTK_ENTRY(entry2), ""); | |
92 | |
93 if ((db = bmp_cfg_db_open())) { | |
94 gchar *username = NULL; | |
95 bmp_cfg_db_get_string(db, "audioscrobbler", "username", | |
96 &username); | |
97 if (username) { | |
98 gtk_entry_set_text(GTK_ENTRY(entry1), username); | |
99 g_free(username); | |
100 } | |
101 bmp_cfg_db_close(db); | |
102 } | |
103 | |
104 gtk_widget_show(GTK_WIDGET(cfgdlg)); | |
105 } | |
106 | |
107 /* Generated by glade, sorta. */ | |
108 GtkWidget * | |
109 create_cfgdlg(void) | |
694 | 110 { |
111 GtkWidget *window1; | |
112 GtkWidget *vbox2; | |
113 GtkWidget *table1; | |
114 GtkWidget *label3; | |
115 GtkWidget *hseparator2; | |
116 GtkWidget *hseparator3; | |
117 GtkWidget *label1; | |
118 GtkWidget *label2; | |
119 GtkWidget *hseparator1; | |
120 GtkWidget *hbuttonbox1; | |
121 GtkWidget *button5; | |
122 GtkWidget *button6; | |
123 | |
124 window1 = gtk_window_new (GTK_WINDOW_TOPLEVEL); | |
125 gtk_container_set_border_width (GTK_CONTAINER (window1), 12); | |
695 | 126 gtk_window_set_title (GTK_WINDOW (window1), _("Scrobbler Configuration")); |
694 | 127 |
128 vbox2 = gtk_vbox_new (FALSE, 0); | |
129 gtk_widget_show (vbox2); | |
130 gtk_container_add (GTK_CONTAINER (window1), vbox2); | |
131 | |
132 table1 = gtk_table_new (4, 2, FALSE); | |
133 gtk_widget_show (table1); | |
134 gtk_box_pack_start (GTK_BOX (vbox2), table1, FALSE, FALSE, 0); | |
135 | |
136 entry2 = gtk_entry_new (); | |
137 gtk_widget_show (entry2); | |
138 gtk_table_attach (GTK_TABLE (table1), entry2, 1, 2, 3, 4, | |
139 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), | |
140 (GtkAttachOptions) (0), 0, 0); | |
141 | |
142 label3 = gtk_label_new (_("Password:")); | |
143 gtk_widget_show (label3); | |
144 gtk_table_attach (GTK_TABLE (table1), label3, 0, 1, 3, 4, | |
145 (GtkAttachOptions) (GTK_FILL), | |
146 (GtkAttachOptions) (0), 0, 0); | |
147 gtk_label_set_justify (GTK_LABEL (label3), GTK_JUSTIFY_RIGHT); | |
148 gtk_misc_set_alignment (GTK_MISC (label3), 1, 0.5); | |
149 | |
150 hseparator2 = gtk_hseparator_new (); | |
151 gtk_widget_show (hseparator2); | |
152 gtk_table_attach (GTK_TABLE (table1), hseparator2, 0, 1, 1, 2, | |
153 (GtkAttachOptions) (GTK_FILL), | |
154 (GtkAttachOptions) (0), 0, 0); | |
155 | |
156 hseparator3 = gtk_hseparator_new (); | |
157 gtk_widget_show (hseparator3); | |
158 gtk_table_attach (GTK_TABLE (table1), hseparator3, 1, 2, 1, 2, | |
159 (GtkAttachOptions) (GTK_FILL), | |
160 (GtkAttachOptions) (0), 0, 0); | |
161 | |
162 label1 = gtk_label_new (_("<b>Scrobbler Preferences</b>")); | |
163 gtk_widget_show (label1); | |
164 gtk_table_attach (GTK_TABLE (table1), label1, 0, 1, 0, 1, | |
165 (GtkAttachOptions) (GTK_FILL), | |
166 (GtkAttachOptions) (0), 0, 0); | |
167 gtk_label_set_use_markup (GTK_LABEL (label1), TRUE); | |
168 gtk_misc_set_alignment (GTK_MISC (label1), 0, 0.5); | |
169 | |
170 label2 = gtk_label_new (_("Username:")); | |
171 gtk_widget_show (label2); | |
172 gtk_table_attach (GTK_TABLE (table1), label2, 0, 1, 2, 3, | |
173 (GtkAttachOptions) (GTK_FILL), | |
174 (GtkAttachOptions) (0), 0, 0); | |
175 gtk_label_set_justify (GTK_LABEL (label2), GTK_JUSTIFY_RIGHT); | |
176 gtk_misc_set_alignment (GTK_MISC (label2), 1, 0.5); | |
177 | |
178 entry1 = gtk_entry_new (); | |
179 gtk_widget_show (entry1); | |
180 gtk_table_attach (GTK_TABLE (table1), entry1, 1, 2, 2, 3, | |
181 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), | |
182 (GtkAttachOptions) (0), 0, 0); | |
183 | |
184 hseparator1 = gtk_hseparator_new (); | |
185 gtk_widget_show (hseparator1); | |
186 gtk_box_pack_start (GTK_BOX (vbox2), hseparator1, FALSE, FALSE, 0); | |
187 | |
188 hbuttonbox1 = gtk_hbutton_box_new (); | |
189 gtk_widget_show (hbuttonbox1); | |
190 gtk_box_pack_start (GTK_BOX (vbox2), hbuttonbox1, FALSE, FALSE, 0); | |
191 gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox1), GTK_BUTTONBOX_END); | |
192 gtk_box_set_spacing (GTK_BOX (hbuttonbox1), 5); | |
193 | |
194 button5 = gtk_button_new_from_stock ("gtk-ok"); | |
195 gtk_widget_show (button5); | |
196 gtk_container_add (GTK_CONTAINER (hbuttonbox1), button5); | |
197 GTK_WIDGET_SET_FLAGS (button5, GTK_CAN_DEFAULT); | |
198 | |
695 | 199 gtk_signal_connect(GTK_OBJECT(button5), "clicked", |
200 GTK_SIGNAL_FUNC(saveconfig), GTK_OBJECT(window1)); | |
201 | |
694 | 202 button6 = gtk_button_new_from_stock ("gtk-close"); |
203 gtk_widget_show (button6); | |
204 gtk_container_add (GTK_CONTAINER (hbuttonbox1), button6); | |
205 GTK_WIDGET_SET_FLAGS (button6, GTK_CAN_DEFAULT); | |
206 | |
695 | 207 gtk_signal_connect(GTK_OBJECT(button6), "clicked", |
698 | 208 GTK_SIGNAL_FUNC(closewin), GTK_OBJECT(window1)); |
695 | 209 |
694 | 210 /* Store pointers to all widgets, for use by lookup_widget(). */ |
211 GLADE_HOOKUP_OBJECT_NO_REF (window1, window1, "window1"); | |
212 GLADE_HOOKUP_OBJECT (window1, vbox2, "vbox2"); | |
213 GLADE_HOOKUP_OBJECT (window1, table1, "table1"); | |
214 GLADE_HOOKUP_OBJECT (window1, entry2, "entry2"); | |
215 GLADE_HOOKUP_OBJECT (window1, label3, "label3"); | |
216 GLADE_HOOKUP_OBJECT (window1, hseparator2, "hseparator2"); | |
217 GLADE_HOOKUP_OBJECT (window1, hseparator3, "hseparator3"); | |
218 GLADE_HOOKUP_OBJECT (window1, label1, "label1"); | |
219 GLADE_HOOKUP_OBJECT (window1, label2, "label2"); | |
220 GLADE_HOOKUP_OBJECT (window1, entry1, "entry1"); | |
221 GLADE_HOOKUP_OBJECT (window1, hseparator1, "hseparator1"); | |
222 GLADE_HOOKUP_OBJECT (window1, hbuttonbox1, "hbuttonbox1"); | |
223 GLADE_HOOKUP_OBJECT (window1, button5, "button5"); | |
224 GLADE_HOOKUP_OBJECT (window1, button6, "button6"); | |
225 | |
226 return window1; | |
227 } | |
228 |