1 /* properties.c
2 * Copyright (C) 2005 Sylvain Cresto <scresto@gmail.com>
3 *
4 * This file is part of graveman!
5 *
6 * graveman! is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or
9 * (at your option) any later version.
10 *
11 * graveman! is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with program; see the file COPYING. If not, write to the
18 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
19 * MA 02111-1307, USA.
20 *
21 * URL: http://www.nongnu.org/graveman/
22 *
23 */
24
25 #include "graveman.h"
26
27 /* alimentation du combobox charset */
remplirecombocharset(GtkComboBox * Acombo,gboolean Ainit,gchar * Asel)28 void remplirecombocharset(GtkComboBox *Acombo, gboolean Ainit, gchar *Asel)
29 {
30 GtkListStore *Lmodel;
31
32 if (Ainit == TRUE) {
33 GtkCellRenderer *Lcellrender;
34 Lmodel = gtk_list_store_new(4, G_TYPE_INT, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING);
35
36 gtk_combo_box_set_model(Acombo, GTK_TREE_MODEL(Lmodel));
37 gtk_cell_layout_clear(GTK_CELL_LAYOUT(Acombo));
38
39 Lcellrender = GTK_CELL_RENDERER(gtk_cell_renderer_pixbuf_new());
40 gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(Acombo), Lcellrender, TRUE);
41 gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(Acombo), Lcellrender,
42 "pixbuf", 1, NULL);
43 Lcellrender = GTK_CELL_RENDERER(gtk_cell_renderer_text_new());
44 gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(Acombo), Lcellrender, TRUE);
45 gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(Acombo), Lcellrender,
46 "text", 3, NULL);
47 } else {
48 Lmodel = GTK_LIST_STORE(gtk_combo_box_get_model(Acombo));
49 }
50
51 remplirelistecharset(Lmodel, TRUE);
52 selectcombocharset(Acombo, Asel);
53 }
54
55 /* alimentation du combo contenant les themes */
remplirecombothemes(GtkComboBox * Acombo,gboolean Ainit,gchar * Asel)56 void remplirecombothemes(GtkComboBox *Acombo, gboolean Ainit, gchar *Asel)
57 {
58 GtkListStore *Lmodel;
59
60 if (Ainit == TRUE) {
61 GtkCellRenderer *Lcellrender;
62 Lmodel = gtk_list_store_new(4, G_TYPE_INT, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING);
63
64 gtk_combo_box_set_model(Acombo, GTK_TREE_MODEL(Lmodel));
65 gtk_cell_layout_clear(GTK_CELL_LAYOUT(Acombo));
66
67 Lcellrender = GTK_CELL_RENDERER(gtk_cell_renderer_pixbuf_new());
68 gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(Acombo), Lcellrender, TRUE);
69 gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(Acombo), Lcellrender,
70 "pixbuf", 1, NULL);
71 Lcellrender = GTK_CELL_RENDERER(gtk_cell_renderer_text_new());
72 gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(Acombo), Lcellrender, TRUE);
73 gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(Acombo), Lcellrender,
74 "text", 2, NULL);
75 } else {
76 Lmodel = GTK_LIST_STORE(gtk_combo_box_get_model(Acombo));
77 }
78
79 managelistethemes(Acombo, TRUE, conf_get_string("theme"));
80 }
81
82 /* fenetre proprietes */
create_dialog_proprietes(GtkWidget * Aparent)83 Tgrave *create_dialog_proprietes (GtkWidget *Aparent)
84 {
85 Tgrave *Lg = sc_grave_load("dialog_properties.glade");
86 GtkTreeView *Ltreeview, *Ltreeviewcharset;
87 GtkWidget *Ldialog;
88 GtkTooltips *Ltooltips = gtk_tooltips_new();
89
90 g_assert(Lg);
91
92 Ldialog = sc_grave_get_widget(Lg, "dialog_properties");
93 gtk_window_set_transient_for(GTK_WINDOW(Ldialog), GTK_WINDOW(Aparent));
94 sc_grave_set_data(Lg, Ldialog, "window");
95 sc_grave_set_data(Lg, Ltooltips, "_tooltips");
96
97 /** onglet "General" **/
98
99 /* overburn actif ? */
100 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(sc_grave_get_widget(Lg, "overburn")), conf_get_boolean("overburn"));
101
102 /* effacer les cdrw avant ecriture */
103 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(sc_grave_get_widget(Lg, "autoblank")), conf_get_boolean("autoblank"));
104
105 /* effacer les cdrw en mode fast ? */
106 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(sc_grave_get_widget(Lg, "fastblank")), conf_get_boolean("fastblank"));
107
108 /* ejecter le cdr apres l'operation ? */
109 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(sc_grave_get_widget(Lg, "eject")), conf_get_boolean("eject"));
110
111 /* afficher le status bar ? */
112 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(sc_grave_get_widget(Lg, "statusbar")), conf_get_boolean("statusbar"));
113
114 /* afficher les tooltips ? */
115 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(sc_grave_get_widget(Lg, "tooltips")), conf_get_boolean("tooltips"));
116
117 /* combo taille des icones */
118 remplirecombo(GTK_COMBO_BOX(sc_grave_get_widget(Lg, "iconsizelist")), "",
119 Gtypeicosize, TRUE, conf_get_string("iconsize"));
120
121 /* combo charset */
122 remplirecombocharset(GTK_COMBO_BOX(sc_grave_get_widget(Lg, "inputcharset")), TRUE, conf_get_string("charsetdata"));
123
124 /* combo themes */
125 remplirecombothemes(GTK_COMBO_BOX(sc_grave_get_widget(Lg, "themelist")), TRUE, conf_get_string("theme"));
126
127 /* sauver les donnees lorsque l'on quitte ? */
128 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(sc_grave_get_widget(Lg, "saveconfig")), conf_get_boolean("saveconfig"));
129
130 /* fonctions etendues ? */
131 #if 0
132 Ltoggleoption = GTK_TOGGLE_BUTTON(glade_to_hash(Lxml, Lhash, "extended"));
133 gtk_toggle_button_set_active(Ltoggleoption, conf_get_boolean("extended"));
134 #endif
135
136 /* repertoire temporraire */
137 gtk_entry_set_text(GTK_ENTRY(sc_grave_get_widget(Lg, "dirtmpvalue")), conf_get_string("tmpdir"));
138
139 /** onglet "Format des medias" **/
140 #if 0
141 Ltreeview = GTK_TREE_VIEW(glade_to_hash(Lxml, Lhash, "medialist"));
142 prepare_properties_mediatreeview(Ltreeview);
143 remplirelistemedia(Ltreeview);
144
145 Lbtn = GTK_BUTTON(glade_xml_get_widget(Lxml, "addmediaformat"));
146 g_signal_connect(G_OBJECT(Lbtn), "clicked", G_CALLBACK(on_addmediaformat), Lhash);
147 #endif
148
149
150 Ltreeview = GTK_TREE_VIEW(sc_grave_get_widget(Lg, "periphdata"));
151 prepare_properties_devicestreeview(Ltreeview);
152 g_signal_connect(G_OBJECT(Ltreeview), "button-press-event", G_CALLBACK(gtk_do_eventbuttonpress), Lg);
153 g_signal_connect(G_OBJECT(Ltreeview), "popup-menu", G_CALLBACK(key_popupmenu_devices), Lg);
154 g_signal_connect(G_OBJECT(Ltreeview), "key-release-event", G_CALLBACK(gtk_do_eventkeyrelease), Lg);
155
156 /* popup sur les peripheriques */
157 g_signal_connect(G_OBJECT(sc_grave_get_widget(Lg, "popupdevices_edit")),
158 "activate", G_CALLBACK(gtk_devices_edit), Lg);
159 g_signal_connect(G_OBJECT(sc_grave_get_widget(Lg, "popupdevices_remove")),
160 "activate", G_CALLBACK(gtk_devices_remove), Lg);
161
162 Ltreeviewcharset = GTK_TREE_VIEW(sc_grave_get_widget(Lg, "charsetdata"));
163 prepare_properties_charsettreeview(Ltreeviewcharset);
164 g_signal_connect(G_OBJECT(Ltreeviewcharset), "button-press-event", G_CALLBACK(gtk_do_eventbuttonpress), Lg);
165 g_signal_connect(G_OBJECT(Ltreeviewcharset), "popup-menu", G_CALLBACK(key_popupmenu_charset), Lg);
166 g_signal_connect(G_OBJECT(Ltreeviewcharset), "key-release-event", G_CALLBACK(gtk_do_eventkeyrelease), Lg);
167
168 /* popup sur les charsets */
169 g_signal_connect(G_OBJECT(sc_grave_get_widget(Lg, "popupcharset_edit")),
170 "activate", G_CALLBACK(gtk_charset_edit), Lg);
171 g_signal_connect(G_OBJECT(sc_grave_get_widget(Lg, "popupcharset_remove")),
172 "activate", G_CALLBACK(gtk_charset_remove), Lg);
173
174
175 sc_grave_set_data(Lg, Aparent, "topwindow");
176
177 maj_proprietes_prog(Lg);
178 remplirelistegraveur(Ltreeview);
179 remplirelistecharset(GTK_LIST_STORE(gtk_tree_view_get_model(Ltreeviewcharset)), FALSE);
180
181 g_signal_connect(G_OBJECT(sc_grave_get_widget(Lg, "dirtmp")), "clicked", G_CALLBACK(gtk_file_sel), Lg);
182
183 g_signal_connect(G_OBJECT(sc_grave_get_widget(Lg, "scanprog")), "clicked", G_CALLBACK(chercheprog), Lg);
184
185 g_signal_connect(G_OBJECT(sc_grave_get_widget(Lg, "scandevice")), "clicked", G_CALLBACK(cherchelecteur), Lg);
186
187 g_signal_connect(G_OBJECT(sc_grave_get_widget(Lg, "adddevice")), "clicked", G_CALLBACK(gtk_devices_add), Lg);
188
189 g_signal_connect(G_OBJECT(sc_grave_get_widget(Lg, "scancharset")), "clicked", G_CALLBACK(cherchecharset), Lg);
190
191 g_signal_connect(G_OBJECT(sc_grave_get_widget(Lg, "addcharset")), "clicked", G_CALLBACK(gtk_charset_add), Lg);
192
193
194 return Lg;
195 }
196
197 /*
198 * vim:et:ts=8:sts=2:sw=2
199 */
200