Merge lp:~michael-sheldon/jokosher/recording-preferences-bitrates into lp:jokosher
- recording-preferences-bitrates
- Merge into main
Proposed by
Michael Sheldon
Status: | Merged |
---|---|
Merged at revision: | 1120 |
Proposed branch: | lp:~michael-sheldon/jokosher/recording-preferences-bitrates |
Merge into: | lp:jokosher |
Diff against target: |
616 lines (+204/-80) 4 files modified
Jokosher/Globals.py (+2/-2) Jokosher/PreferencesDialog.py (+46/-4) Jokosher/Project.py (+9/-3) gtk-builder-ui/PreferencesDialog.ui (+147/-71) |
To merge this branch: | bzr merge lp:~michael-sheldon/jokosher/recording-preferences-bitrates |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Michael Sheldon (community) | Approve | ||
Review via email: mp+76877@code.launchpad.net |
Commit message
Description of the change
This branch allows for bit rates to be set for project wide recording when using a lossy recording method.
Without the changes included in this branch lossy formats are currently broken in trunk due ConfigParser attempting to interpret encoding strings containing "%(bitrate)d" parameters itself and failing. This branch switches to RawConfigParser (doesn't interpolate parameters like that) and provides relevant bitrate values when needed within Jokosher itself (along with making it possible for the user to set their preferred bitrate in the recording preferences).
To post a comment you must log in.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'Jokosher/Globals.py' |
2 | --- Jokosher/Globals.py 2011-03-14 22:26:44 +0000 |
3 | +++ Jokosher/Globals.py 2011-09-25 02:05:26 +0000 |
4 | @@ -91,8 +91,8 @@ |
5 | |
6 | def __init__(self): |
7 | self.filename = os.path.join(JOKOSHER_CONFIG_HOME, "config") |
8 | - |
9 | - self.config = ConfigParser.ConfigParser() |
10 | + # Use RawConfigParser so that parameters in pipelines don't get processed |
11 | + self.config = ConfigParser.RawConfigParser() |
12 | self.read() |
13 | |
14 | #_____________________________________________________________________ |
15 | |
16 | === modified file 'Jokosher/PreferencesDialog.py' |
17 | --- Jokosher/PreferencesDialog.py 2011-01-07 11:50:40 +0000 |
18 | +++ Jokosher/PreferencesDialog.py 2011-09-25 02:05:26 +0000 |
19 | @@ -58,6 +58,8 @@ |
20 | self.recordingCustomPipeline = self.gtk_builder.get_object("recordingCustomPipeline") |
21 | self.recordingSoundSystem = self.gtk_builder.get_object("recordingSoundSystem") |
22 | self.samplingRate = self.gtk_builder.get_object("samplingRate") |
23 | + self.bitRateCombo = self.gtk_builder.get_object("bitRate") |
24 | + self.bitRateLabel = self.gtk_builder.get_object("bitRateLabel") |
25 | self.playbackDevice = self.gtk_builder.get_object("playbackDevice") |
26 | self.playbackSink = self.gtk_builder.get_object("playbackSink") |
27 | self.customSink = self.gtk_builder.get_object("customSink") |
28 | @@ -145,14 +147,31 @@ |
29 | sampleRateSettingIndex = self.sampleRateList.index( (text, value) ) |
30 | self.samplingRate.set_active(sampleRateSettingIndex) |
31 | |
32 | + #Bit rate settings for lossy file formats |
33 | + try: |
34 | + bitRateSetting = int(Globals.settings.recording["bitrate"]) |
35 | + if Globals.settings.recording["file_extension"] == "ogg": |
36 | + # vorbisenc uses bps instead of kbps |
37 | + bitRateSetting /= 1024 |
38 | + except KeyError: |
39 | + bitRateSetting = int(Globals.DEFAULT_BIT_RATE) |
40 | + if bitRateSetting == 0: |
41 | + bitRateSetting = int(Globals.DEFAULT_BIT_RATE) |
42 | + |
43 | + for index, bitrate in enumerate(Globals.BIT_RATES): |
44 | + self.bitRateCombo.append_text("%d kbps" % bitrate) |
45 | + if bitrate == bitRateSetting: |
46 | + self.bitRateCombo.set_active(index) |
47 | |
48 | fileFormatSetting = Globals.settings.recording["fileformat"] |
49 | fileFormatSettingIndex = 0 |
50 | + setBitRate = False |
51 | #get all the encoders from Globals |
52 | - for format in Globals.EXPORT_FORMATS: |
53 | - self.recordingFileFormat.append_text("%s (.%s)" % (format["description"], format["extension"])) |
54 | - if fileFormatSetting == format["pipeline"]: |
55 | - fileFormatSettingIndex = Globals.EXPORT_FORMATS.index(format) |
56 | + for exportFormat in Globals.EXPORT_FORMATS: |
57 | + self.recordingFileFormat.append_text("%s (.%s)" % (exportFormat["description"], exportFormat["extension"])) |
58 | + if fileFormatSetting == exportFormat["pipeline"]: |
59 | + fileFormatSettingIndex = Globals.EXPORT_FORMATS.index(exportFormat) |
60 | + setBitRate = exportFormat["setBitRate"] |
61 | |
62 | self.recordingFileFormat.set_active(fileFormatSettingIndex) |
63 | |
64 | @@ -168,6 +187,7 @@ |
65 | self.loadingSettings = False |
66 | |
67 | self.dlg.show_all() |
68 | + self.ShowBitRate(setBitRate) |
69 | |
70 | #_____________________________________________________________________ |
71 | |
72 | @@ -222,6 +242,16 @@ |
73 | return |
74 | |
75 | exportDict = Globals.EXPORT_FORMATS[self.recordingFileFormat.get_active()] |
76 | + self.ShowBitRate(exportDict["setBitRate"]) |
77 | + if exportDict["setBitRate"]: |
78 | + bitrate = Globals.BIT_RATES[self.bitRateCombo.get_active()] |
79 | + if exportDict["extension"] == "ogg": |
80 | + # vorbisenc takes bit rate in bps instead of kbps |
81 | + bitrate *= 1024 |
82 | + else: |
83 | + # Indicates that this encoder doesn't take a bitrate parameter |
84 | + bitrate = 0 |
85 | + Globals.settings.recording["bitrate"] = bitrate |
86 | Globals.settings.recording["fileformat"] = exportDict["pipeline"] |
87 | Globals.settings.recording["file_extension"] = exportDict["extension"] |
88 | #only get the number from "44100 Hz", not the whole string |
89 | @@ -352,3 +382,15 @@ |
90 | self.LoadSetting(self.playbackDevice, Globals.settings.playback, "devicename") |
91 | |
92 | #_____________________________________________________________________ |
93 | + |
94 | + def ShowBitRate(self, show): |
95 | + """ |
96 | + Shows or hides the bit rate combo box. |
97 | + |
98 | + Parameters: |
99 | + show -- Boolean indicating whether to show the bit rate combo box or not. |
100 | + """ |
101 | + self.bitRateCombo.set_visible(show) |
102 | + self.bitRateLabel.set_visible(show) |
103 | + |
104 | + #_____________________________________________________________________ |
105 | |
106 | === modified file 'Jokosher/Project.py' |
107 | --- Jokosher/Project.py 2011-03-14 22:26:44 +0000 |
108 | +++ Jokosher/Project.py 2011-09-25 02:05:26 +0000 |
109 | @@ -383,16 +383,20 @@ |
110 | else: |
111 | instr = recInstruments[0] |
112 | event = instr.GetRecordingEvent() |
113 | - |
114 | + |
115 | encodeString = Globals.settings.recording["fileformat"] |
116 | recordString = Globals.settings.recording["audiosrc"] |
117 | + |
118 | + # 0 means this encoder doesn't take a bitrate |
119 | + if Globals.settings.recording["bitrate"] > 0: |
120 | + encodeString %= {'bitrate' : int(Globals.settings.recording["bitrate"])} |
121 | |
122 | sampleRate = 0 |
123 | try: |
124 | sampleRate = int( Globals.settings.recording["samplerate"] ) |
125 | except ValueError: |
126 | pass |
127 | - # 0 means for "autodetect", or more technically "don't use any caps". |
128 | + # 0 means "autodetect", or more technically "don't use any caps". |
129 | if sampleRate > 0: |
130 | capsString = "audio/x-raw-int,rate=%s ! audioconvert" % sampleRate |
131 | else: |
132 | @@ -626,8 +630,10 @@ |
133 | if instr.inTrack == index: |
134 | event = instr.GetRecordingEvent() |
135 | |
136 | - # TODO: get rid of string concatentation |
137 | encodeString = Globals.settings.recording["fileformat"] |
138 | + # 0 means this encoder doesn't take a bitrate |
139 | + if Globals.settings.recording["bitrate"] > 0: |
140 | + encodeString %= {'bitrate' : int(Globals.settings.recording["bitrate"])} |
141 | pipe = "queue ! audioconvert ! level name=recordlevel ! audioconvert ! %s ! filesink name=sink" |
142 | pipe %= encodeString |
143 | |
144 | |
145 | === modified file 'gtk-builder-ui/PreferencesDialog.ui' |
146 | --- gtk-builder-ui/PreferencesDialog.ui 2011-01-07 11:24:43 +0000 |
147 | +++ gtk-builder-ui/PreferencesDialog.ui 2011-09-25 02:05:26 +0000 |
148 | @@ -1,38 +1,8 @@ |
149 | <?xml version="1.0" encoding="UTF-8"?> |
150 | <interface> |
151 | <requires lib="gtk+" version="2.16"/> |
152 | - <!-- interface-naming-policy project-wide --> |
153 | - <object class="GtkListStore" id="preferences_playback_device_liststore"> |
154 | - <columns> |
155 | - <!-- column-name item --> |
156 | - <column type="gchararray"/> |
157 | - </columns> |
158 | - </object> |
159 | - <object class="GtkListStore" id="preferences_playback_sink_liststore"> |
160 | - <columns> |
161 | - <!-- column-name item --> |
162 | - <column type="gchararray"/> |
163 | - </columns> |
164 | - </object> |
165 | - <object class="GtkListStore" id="preferences_recording_system_liststore"> |
166 | - <columns> |
167 | - <!-- column-name item --> |
168 | - <column type="gchararray"/> |
169 | - </columns> |
170 | - </object> |
171 | - <object class="GtkListStore" id="preferences_sample_rate_liststore"> |
172 | - <columns> |
173 | - <!-- column-name item --> |
174 | - <column type="gchararray"/> |
175 | - </columns> |
176 | - </object> |
177 | - <object class="GtkListStore" id="preferences_recording_format_liststore"> |
178 | - <columns> |
179 | - <!-- column-name item --> |
180 | - <column type="gchararray"/> |
181 | - </columns> |
182 | - </object> |
183 | <object class="GtkWindow" id="PreferencesDialog"> |
184 | + <property name="can_focus">False</property> |
185 | <property name="border_width">6</property> |
186 | <property name="title">Preferences</property> |
187 | <property name="modal">True</property> |
188 | @@ -42,27 +12,32 @@ |
189 | <child> |
190 | <object class="GtkVBox" id="vbox3"> |
191 | <property name="visible">True</property> |
192 | + <property name="can_focus">False</property> |
193 | <child> |
194 | <object class="GtkFrame" id="frame5"> |
195 | <property name="visible">True</property> |
196 | + <property name="can_focus">False</property> |
197 | <property name="label_xalign">0</property> |
198 | <property name="shadow_type">none</property> |
199 | <child> |
200 | <object class="GtkAlignment" id="alignment8"> |
201 | <property name="visible">True</property> |
202 | + <property name="can_focus">False</property> |
203 | <property name="left_padding">12</property> |
204 | <child> |
205 | <object class="GtkVBox" id="vbox12"> |
206 | <property name="visible">True</property> |
207 | + <property name="can_focus">False</property> |
208 | <child> |
209 | <object class="GtkRadioButton" id="startupNewProject"> |
210 | <property name="label" translatable="yes">Open a _new project</property> |
211 | <property name="visible">True</property> |
212 | <property name="can_focus">True</property> |
213 | <property name="receives_default">False</property> |
214 | + <property name="use_action_appearance">False</property> |
215 | <property name="use_underline">True</property> |
216 | <property name="draw_indicator">True</property> |
217 | - <signal name="clicked" handler="on_Setting_changed"/> |
218 | + <signal name="clicked" handler="on_Setting_changed" swapped="no"/> |
219 | </object> |
220 | <packing> |
221 | <property name="expand">False</property> |
222 | @@ -76,10 +51,11 @@ |
223 | <property name="visible">True</property> |
224 | <property name="can_focus">True</property> |
225 | <property name="receives_default">False</property> |
226 | + <property name="use_action_appearance">False</property> |
227 | <property name="use_underline">True</property> |
228 | <property name="draw_indicator">True</property> |
229 | <property name="group">startupNewProject</property> |
230 | - <signal name="clicked" handler="on_Setting_changed"/> |
231 | + <signal name="clicked" handler="on_Setting_changed" swapped="no"/> |
232 | </object> |
233 | <packing> |
234 | <property name="expand">False</property> |
235 | @@ -93,10 +69,11 @@ |
236 | <property name="visible">True</property> |
237 | <property name="can_focus">True</property> |
238 | <property name="receives_default">False</property> |
239 | + <property name="use_action_appearance">False</property> |
240 | <property name="use_underline">True</property> |
241 | <property name="draw_indicator">True</property> |
242 | <property name="group">startupNewProject</property> |
243 | - <signal name="clicked" handler="on_Setting_changed"/> |
244 | + <signal name="clicked" handler="on_Setting_changed" swapped="no"/> |
245 | </object> |
246 | <packing> |
247 | <property name="expand">False</property> |
248 | @@ -111,6 +88,7 @@ |
249 | <child type="label"> |
250 | <object class="GtkLabel" id="label28"> |
251 | <property name="visible">True</property> |
252 | + <property name="can_focus">False</property> |
253 | <property name="xpad">5</property> |
254 | <property name="ypad">5</property> |
255 | <property name="label" translatable="yes"><b>Application Start-up</b></property> |
256 | @@ -125,25 +103,61 @@ |
257 | </packing> |
258 | </child> |
259 | <child> |
260 | + <object class="GtkHButtonBox" id="hbuttonbox2"> |
261 | + <property name="visible">True</property> |
262 | + <property name="can_focus">False</property> |
263 | + <property name="border_width">6</property> |
264 | + <property name="layout_style">end</property> |
265 | + <child> |
266 | + <object class="GtkButton" id="closeButton"> |
267 | + <property name="label">gtk-close</property> |
268 | + <property name="visible">True</property> |
269 | + <property name="can_focus">True</property> |
270 | + <property name="can_default">True</property> |
271 | + <property name="receives_default">False</property> |
272 | + <property name="tooltip_text" translatable="yes">Save preferences and close</property> |
273 | + <property name="use_action_appearance">False</property> |
274 | + <property name="use_stock">True</property> |
275 | + <signal name="clicked" handler="on_Close_clicked" swapped="no"/> |
276 | + </object> |
277 | + <packing> |
278 | + <property name="expand">False</property> |
279 | + <property name="fill">False</property> |
280 | + <property name="position">0</property> |
281 | + </packing> |
282 | + </child> |
283 | + </object> |
284 | + <packing> |
285 | + <property name="expand">False</property> |
286 | + <property name="fill">True</property> |
287 | + <property name="pack_type">end</property> |
288 | + <property name="position">1</property> |
289 | + </packing> |
290 | + </child> |
291 | + <child> |
292 | <object class="GtkFrame" id="frame16"> |
293 | <property name="visible">True</property> |
294 | + <property name="can_focus">False</property> |
295 | <property name="label_xalign">0</property> |
296 | <property name="shadow_type">none</property> |
297 | <child> |
298 | <object class="GtkAlignment" id="alignment30"> |
299 | <property name="visible">True</property> |
300 | + <property name="can_focus">False</property> |
301 | <property name="left_padding">12</property> |
302 | <child> |
303 | <object class="GtkTable" id="table16"> |
304 | <property name="visible">True</property> |
305 | + <property name="can_focus">False</property> |
306 | <property name="border_width">5</property> |
307 | - <property name="n_rows">2</property> |
308 | + <property name="n_rows">3</property> |
309 | <property name="n_columns">2</property> |
310 | <property name="column_spacing">5</property> |
311 | <property name="row_spacing">5</property> |
312 | <child> |
313 | <object class="GtkLabel" id="label128"> |
314 | <property name="visible">True</property> |
315 | + <property name="can_focus">False</property> |
316 | <property name="xalign">0</property> |
317 | <property name="label" translatable="yes">_Encoding:</property> |
318 | <property name="use_underline">True</property> |
319 | @@ -157,6 +171,7 @@ |
320 | <child> |
321 | <object class="GtkLabel" id="label129"> |
322 | <property name="visible">True</property> |
323 | + <property name="can_focus">False</property> |
324 | <property name="xalign">0</property> |
325 | <property name="label" translatable="yes">S_ample Rate:</property> |
326 | <property name="use_underline">True</property> |
327 | @@ -172,8 +187,9 @@ |
328 | <child> |
329 | <object class="GtkComboBox" id="recordingFileFormat"> |
330 | <property name="visible">True</property> |
331 | + <property name="can_focus">False</property> |
332 | <property name="model">preferences_recording_format_liststore</property> |
333 | - <signal name="changed" handler="on_Setting_changed"/> |
334 | + <signal name="changed" handler="on_Setting_changed" swapped="no"/> |
335 | <child> |
336 | <object class="GtkCellRendererText" id="cellrenderertext5"/> |
337 | <attributes> |
338 | @@ -190,8 +206,9 @@ |
339 | <child> |
340 | <object class="GtkComboBox" id="samplingRate"> |
341 | <property name="visible">True</property> |
342 | + <property name="can_focus">False</property> |
343 | <property name="model">preferences_sample_rate_liststore</property> |
344 | - <signal name="changed" handler="on_Setting_changed"/> |
345 | + <signal name="changed" handler="on_Setting_changed" swapped="no"/> |
346 | <child> |
347 | <object class="GtkCellRendererText" id="cellrenderertext4"/> |
348 | <attributes> |
349 | @@ -207,6 +224,41 @@ |
350 | <property name="y_options">GTK_FILL</property> |
351 | </packing> |
352 | </child> |
353 | + <child> |
354 | + <object class="GtkLabel" id="bitRateLabel"> |
355 | + <property name="can_focus">False</property> |
356 | + <property name="xalign">0</property> |
357 | + <property name="label" translatable="yes">_Bit Rate:</property> |
358 | + <property name="use_underline">True</property> |
359 | + <property name="mnemonic_widget">samplingRate</property> |
360 | + </object> |
361 | + <packing> |
362 | + <property name="top_attach">2</property> |
363 | + <property name="bottom_attach">3</property> |
364 | + <property name="x_options">GTK_FILL</property> |
365 | + <property name="y_options"></property> |
366 | + </packing> |
367 | + </child> |
368 | + <child> |
369 | + <object class="GtkComboBox" id="bitRate"> |
370 | + <property name="can_focus">False</property> |
371 | + <property name="model">preferences_bit_rate_liststore</property> |
372 | + <signal name="changed" handler="on_Setting_changed" swapped="no"/> |
373 | + <child> |
374 | + <object class="GtkCellRendererText" id="cellrenderertext1"/> |
375 | + <attributes> |
376 | + <attribute name="text">0</attribute> |
377 | + </attributes> |
378 | + </child> |
379 | + </object> |
380 | + <packing> |
381 | + <property name="left_attach">1</property> |
382 | + <property name="right_attach">2</property> |
383 | + <property name="top_attach">2</property> |
384 | + <property name="bottom_attach">3</property> |
385 | + <property name="y_options">GTK_FILL</property> |
386 | + </packing> |
387 | + </child> |
388 | </object> |
389 | </child> |
390 | </object> |
391 | @@ -214,6 +266,7 @@ |
392 | <child type="label"> |
393 | <object class="GtkLabel" id="label131"> |
394 | <property name="visible">True</property> |
395 | + <property name="can_focus">False</property> |
396 | <property name="xpad">5</property> |
397 | <property name="ypad">5</property> |
398 | <property name="label" translatable="yes"><b>Recording Format</b></property> |
399 | @@ -230,15 +283,18 @@ |
400 | <child> |
401 | <object class="GtkFrame" id="frame15"> |
402 | <property name="visible">True</property> |
403 | + <property name="can_focus">False</property> |
404 | <property name="label_xalign">0</property> |
405 | <property name="shadow_type">none</property> |
406 | <child> |
407 | <object class="GtkAlignment" id="alignment29"> |
408 | <property name="visible">True</property> |
409 | + <property name="can_focus">False</property> |
410 | <property name="left_padding">12</property> |
411 | <child> |
412 | <object class="GtkTable" id="table15"> |
413 | <property name="visible">True</property> |
414 | + <property name="can_focus">False</property> |
415 | <property name="border_width">5</property> |
416 | <property name="n_rows">2</property> |
417 | <property name="n_columns">2</property> |
418 | @@ -247,6 +303,7 @@ |
419 | <child> |
420 | <object class="GtkLabel" id="label124"> |
421 | <property name="visible">True</property> |
422 | + <property name="can_focus">False</property> |
423 | <property name="xalign">0</property> |
424 | <property name="label" translatable="yes">S_ystem:</property> |
425 | <property name="use_underline">True</property> |
426 | @@ -260,6 +317,7 @@ |
427 | <child> |
428 | <object class="GtkLabel" id="label125"> |
429 | <property name="visible">True</property> |
430 | + <property name="can_focus">False</property> |
431 | <property name="xalign">0</property> |
432 | <property name="label" translatable="yes">_Pipeline:</property> |
433 | <property name="use_underline">True</property> |
434 | @@ -277,7 +335,7 @@ |
435 | <property name="visible">True</property> |
436 | <property name="can_focus">True</property> |
437 | <property name="invisible_char">●</property> |
438 | - <signal name="focus_out_event" handler="on_recordingSoundSystem_changed"/> |
439 | + <signal name="focus-out-event" handler="on_recordingSoundSystem_changed" swapped="no"/> |
440 | </object> |
441 | <packing> |
442 | <property name="left_attach">1</property> |
443 | @@ -289,8 +347,9 @@ |
444 | <child> |
445 | <object class="GtkComboBox" id="recordingSoundSystem"> |
446 | <property name="visible">True</property> |
447 | + <property name="can_focus">False</property> |
448 | <property name="model">preferences_recording_system_liststore</property> |
449 | - <signal name="changed" handler="on_recordingSoundSystem_changed"/> |
450 | + <signal name="changed" handler="on_recordingSoundSystem_changed" swapped="no"/> |
451 | <child> |
452 | <object class="GtkCellRendererText" id="cellrenderertext3"/> |
453 | <attributes> |
454 | @@ -311,6 +370,7 @@ |
455 | <child type="label"> |
456 | <object class="GtkLabel" id="label127"> |
457 | <property name="visible">True</property> |
458 | + <property name="can_focus">False</property> |
459 | <property name="xpad">5</property> |
460 | <property name="ypad">5</property> |
461 | <property name="label" translatable="yes"><b>Recording Sound System</b></property> |
462 | @@ -327,15 +387,18 @@ |
463 | <child> |
464 | <object class="GtkFrame" id="frame7"> |
465 | <property name="visible">True</property> |
466 | + <property name="can_focus">False</property> |
467 | <property name="label_xalign">0</property> |
468 | <property name="shadow_type">none</property> |
469 | <child> |
470 | <object class="GtkAlignment" id="alignment15"> |
471 | <property name="visible">True</property> |
472 | + <property name="can_focus">False</property> |
473 | <property name="left_padding">12</property> |
474 | <child> |
475 | <object class="GtkTable" id="table9"> |
476 | <property name="visible">True</property> |
477 | + <property name="can_focus">False</property> |
478 | <property name="border_width">5</property> |
479 | <property name="n_rows">3</property> |
480 | <property name="n_columns">2</property> |
481 | @@ -344,8 +407,9 @@ |
482 | <child> |
483 | <object class="GtkComboBox" id="playbackSink"> |
484 | <property name="visible">True</property> |
485 | + <property name="can_focus">False</property> |
486 | <property name="model">preferences_playback_sink_liststore</property> |
487 | - <signal name="changed" handler="on_playbackSink_changed"/> |
488 | + <signal name="changed" handler="on_playbackSink_changed" swapped="no"/> |
489 | <child> |
490 | <object class="GtkCellRendererText" id="cellrenderertext2"/> |
491 | <attributes> |
492 | @@ -361,6 +425,7 @@ |
493 | <child> |
494 | <object class="GtkLabel" id="label62"> |
495 | <property name="visible">True</property> |
496 | + <property name="can_focus">False</property> |
497 | <property name="xalign">0</property> |
498 | <property name="label" translatable="yes">Sys_tem:</property> |
499 | <property name="use_underline">True</property> |
500 | @@ -374,6 +439,7 @@ |
501 | <child> |
502 | <object class="GtkLabel" id="label63"> |
503 | <property name="visible">True</property> |
504 | + <property name="can_focus">False</property> |
505 | <property name="xalign">0</property> |
506 | <property name="label" translatable="yes">P_ipeline:</property> |
507 | <property name="use_underline">True</property> |
508 | @@ -389,6 +455,7 @@ |
509 | <child> |
510 | <object class="GtkLabel" id="label64"> |
511 | <property name="visible">True</property> |
512 | + <property name="can_focus">False</property> |
513 | <property name="xalign">0</property> |
514 | <property name="label" translatable="yes">De_vice:</property> |
515 | <property name="use_underline">True</property> |
516 | @@ -404,8 +471,9 @@ |
517 | <child> |
518 | <object class="GtkComboBox" id="playbackDevice"> |
519 | <property name="visible">True</property> |
520 | + <property name="can_focus">False</property> |
521 | <property name="model">preferences_playback_device_liststore</property> |
522 | - <signal name="changed" handler="on_Setting_changed"/> |
523 | + <signal name="changed" handler="on_Setting_changed" swapped="no"/> |
524 | <child> |
525 | <object class="GtkCellRendererText" id="cellrenderertext6"/> |
526 | <attributes> |
527 | @@ -426,7 +494,7 @@ |
528 | <property name="can_focus">True</property> |
529 | <property name="invisible_char">●</property> |
530 | <property name="text" translatable="yes">autoaudiosink</property> |
531 | - <signal name="focus_out_event" handler="on_playbackSink_changed"/> |
532 | + <signal name="focus-out-event" handler="on_playbackSink_changed" swapped="no"/> |
533 | </object> |
534 | <packing> |
535 | <property name="left_attach">1</property> |
536 | @@ -442,6 +510,7 @@ |
537 | <child type="label"> |
538 | <object class="GtkLabel" id="label61"> |
539 | <property name="visible">True</property> |
540 | + <property name="can_focus">False</property> |
541 | <property name="xpad">5</property> |
542 | <property name="ypad">5</property> |
543 | <property name="label" translatable="yes"><b>Playback Sound System</b></property> |
544 | @@ -455,36 +524,43 @@ |
545 | <property name="position">4</property> |
546 | </packing> |
547 | </child> |
548 | - <child> |
549 | - <object class="GtkHButtonBox" id="hbuttonbox2"> |
550 | - <property name="visible">True</property> |
551 | - <property name="border_width">6</property> |
552 | - <property name="layout_style">end</property> |
553 | - <child> |
554 | - <object class="GtkButton" id="closeButton"> |
555 | - <property name="label">gtk-close</property> |
556 | - <property name="visible">True</property> |
557 | - <property name="can_focus">True</property> |
558 | - <property name="can_default">True</property> |
559 | - <property name="receives_default">False</property> |
560 | - <property name="tooltip_text" translatable="yes">Save preferences and close</property> |
561 | - <property name="use_stock">True</property> |
562 | - <signal name="clicked" handler="on_Close_clicked"/> |
563 | - </object> |
564 | - <packing> |
565 | - <property name="expand">False</property> |
566 | - <property name="fill">False</property> |
567 | - <property name="position">0</property> |
568 | - </packing> |
569 | - </child> |
570 | - </object> |
571 | - <packing> |
572 | - <property name="expand">False</property> |
573 | - <property name="pack_type">end</property> |
574 | - <property name="position">1</property> |
575 | - </packing> |
576 | - </child> |
577 | </object> |
578 | </child> |
579 | </object> |
580 | + <object class="GtkListStore" id="preferences_bit_rate_liststore"> |
581 | + <columns> |
582 | + <!-- column-name Item --> |
583 | + <column type="gchararray"/> |
584 | + </columns> |
585 | + </object> |
586 | + <object class="GtkListStore" id="preferences_playback_device_liststore"> |
587 | + <columns> |
588 | + <!-- column-name item --> |
589 | + <column type="gchararray"/> |
590 | + </columns> |
591 | + </object> |
592 | + <object class="GtkListStore" id="preferences_playback_sink_liststore"> |
593 | + <columns> |
594 | + <!-- column-name item --> |
595 | + <column type="gchararray"/> |
596 | + </columns> |
597 | + </object> |
598 | + <object class="GtkListStore" id="preferences_recording_format_liststore"> |
599 | + <columns> |
600 | + <!-- column-name item --> |
601 | + <column type="gchararray"/> |
602 | + </columns> |
603 | + </object> |
604 | + <object class="GtkListStore" id="preferences_recording_system_liststore"> |
605 | + <columns> |
606 | + <!-- column-name item --> |
607 | + <column type="gchararray"/> |
608 | + </columns> |
609 | + </object> |
610 | + <object class="GtkListStore" id="preferences_sample_rate_liststore"> |
611 | + <columns> |
612 | + <!-- column-name item --> |
613 | + <column type="gchararray"/> |
614 | + </columns> |
615 | + </object> |
616 | </interface> |
Merged.