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