~ubuntu-branches/debian/wheezy/brasero/wheezy

« back to all changes in this revision

Viewing changes to libbrasero-media/brasero-media.c

  • Committer: Bazaar Package Importer
  • Author(s): Josselin Mouette, Pedro Fragoso, Luca Bruno, Josselin Mouette, Emilio Pozuelo Monfort
  • Date: 2009-06-24 18:59:46 UTC
  • mfrom: (1.2.13 upstream)
  • Revision ID: james.westby@ubuntu.com-20090624185946-iyxkgf3gjptir5y3
Tags: 2.26.2-1
[ Pedro Fragoso ]
* Add myself to Maintainer field
  - Thanks Ondřej Surý
* New upstream version (Closes: #528945)
  - Split package into brasero, libbrasero-media0 and libbrasero-dev
  - Add Replaces to libbrasero-media0
  - Bump libgtk to 2.14.0
  - Remove libnotify Build-dep
  - Add Build-dep libnautilus-extension-dev (>= 2.22.2)
    and install it.
  - Add Build-dep to libsm-dev
  - Add Build-dep on intltool
* Install omf files to prevent crash on Help
* Move gstreamer0.10-plugins-bad to Suggests, and add
  dvdauthor and vcdimager
* Recommends gvfs (Closes: #491827)
* Pass --disable-scrollkeeper in DEB_CONFIGURE_EXTRA_FLAGS
* debian/patches/007-fix-gnome-doc-utils-path.patch:
  - Removed, not needed anymore
* debian/patches/008-fix-volume-identifier-crash.patch:
  - Removed, merged upstream
* debian/patches/011_nautilus_menu_move.patch:
 - Move CD/DVD Creator Menu to Acessories, taken from Ubuntu

[ Luca Bruno ]
* debian/control.in:
  - Add Build-Depend gtk-doc-tools 1.9.
* debian/patches/006-fix-libdvdcss.patch:
  - Removed as applied upstream.

[ Josselin Mouette ]
* New upstream release.
* Update build-dependencies.
* Move the translations and data to a new brasero-common package.
* Rewrite the descriptions.
* Add -dev depends to the development package.
* Remove inappropriate recommends in the library package.
* Let’s not forget dvd+rw-tools so that we can write DVDs too.
* Rework dependencies accordingly.
* Put the nautilus extension in brasero.
* Conflict against nautilus-cd-burner to avoid having two burning 
  extensions.
* Include clean-la.mk and gnome-version.mk; build-depend on 
  gnome-pkg-tools 0.7.
* Don’t run dh_makeshlibs on brasero and libbrasero-plugins.
* 011_nautilus_menu_move.patch: add NoDisplay=true, this icon is 
  duplicating existing functionality (brasero icon in sound&video 
  menu, and nautilus autorun).
* Update list of copyright holders.

[ Emilio Pozuelo Monfort ]
* debian/copyright: updated.

[ Josselin Mouette ]
* copyright: improve indentation, and point to versioned LGPL.
* 090_relibtoolize.patch: add a relibtoolization patch to avoid the 
  rpath crap.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
 
2
/*
 
3
 * Libbrasero-media
 
4
 * Copyright (C) Philippe Rouquier 2005-2009 <bonfire-app@wanadoo.fr>
 
5
 *
 
6
 * Libbrasero-media 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 of the License, or
 
9
 * (at your option) any later version.
 
10
 *
 
11
 * The Libbrasero-media authors hereby grant permission for non-GPL compatible
 
12
 * GStreamer plugins to be used and distributed together with GStreamer
 
13
 * and Libbrasero-media. This permission is above and beyond the permissions granted
 
14
 * by the GPL license by which Libbrasero-media is covered. If you modify this code
 
15
 * you may extend this exception to your version of the code, but you are not
 
16
 * obligated to do so. If you do not wish to do so, delete this exception
 
17
 * statement from your version.
 
18
 * 
 
19
 * Libbrasero-media is distributed in the hope that it will be useful,
 
20
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
21
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
22
 * GNU Library General Public License for more details.
 
23
 * 
 
24
 * You should have received a copy of the GNU General Public License
 
25
 * along with this program; if not, write to:
 
26
 *      The Free Software Foundation, Inc.,
 
27
 *      51 Franklin Street, Fifth Floor
 
28
 *      Boston, MA  02110-1301, USA.
 
29
 */
 
30
 
 
31
#ifdef HAVE_CONFIG_H
 
32
#  include <config.h>
 
33
#endif
 
34
 
 
35
#include <string.h>
 
36
 
 
37
#include <glib.h>
 
38
#include <glib/gi18n-lib.h>
 
39
 
 
40
#include "brasero-media.h"
 
41
 
 
42
static gboolean debug = 0;
 
43
 
 
44
#define BRASERO_MEDIUM_TRUE_RANDOM_WRITABLE(media)                              \
 
45
        (BRASERO_MEDIUM_IS (media, BRASERO_MEDIUM_DVDRW_RESTRICTED) ||          \
 
46
         BRASERO_MEDIUM_IS (media, BRASERO_MEDIUM_DVDRW_PLUS) ||                \
 
47
         BRASERO_MEDIUM_IS (media, BRASERO_MEDIUM_DVD_RAM) ||                   \
 
48
         BRASERO_MEDIUM_IS (media, BRASERO_MEDIUM_BDRE))
 
49
 
 
50
static const GOptionEntry options [] = {
 
51
        { "brasero-media-debug", 0, 0, G_OPTION_ARG_NONE, &debug,
 
52
          N_("Display debug statements on stdout for Brasero media library"),
 
53
          NULL }
 
54
};
 
55
 
 
56
static GSList *
 
57
brasero_media_add_to_list (GSList *retval,
 
58
                           BraseroMedia media)
 
59
{
 
60
        retval = g_slist_prepend (retval, GINT_TO_POINTER (media));
 
61
        return retval;
 
62
}
 
63
 
 
64
static GSList *
 
65
brasero_media_new_status (GSList *retval,
 
66
                          BraseroMedia media,
 
67
                          BraseroMedia type)
 
68
{
 
69
        if ((type & BRASERO_MEDIUM_BLANK)
 
70
        && !(media & BRASERO_MEDIUM_ROM)) {
 
71
                /* If media is blank there is no other possible property. */
 
72
                retval = brasero_media_add_to_list (retval,
 
73
                                                    media|
 
74
                                                    BRASERO_MEDIUM_BLANK);
 
75
 
 
76
                /* NOTE about BR-R they can be "formatted" but they are never
 
77
                 * unformatted since by default they'll be used as sequential */
 
78
                if (!(media & BRASERO_MEDIUM_RAM)
 
79
                &&   (BRASERO_MEDIUM_IS (media, BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_REWRITABLE)
 
80
                ||    BRASERO_MEDIUM_IS (media, BRASERO_MEDIUM_BD|BRASERO_MEDIUM_REWRITABLE))) {
 
81
                        if (type & BRASERO_MEDIUM_UNFORMATTED)
 
82
                                retval = brasero_media_add_to_list (retval,
 
83
                                                                    media|
 
84
                                                                    BRASERO_MEDIUM_BLANK|
 
85
                                                                    BRASERO_MEDIUM_UNFORMATTED);
 
86
                }
 
87
        }
 
88
 
 
89
        if (type & BRASERO_MEDIUM_CLOSED) {
 
90
                if (media & (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_BD))
 
91
                        retval = brasero_media_add_to_list (retval,
 
92
                                                            media|
 
93
                                                            BRASERO_MEDIUM_CLOSED|
 
94
                                                            (type & BRASERO_MEDIUM_HAS_DATA)|
 
95
                                                            (type & BRASERO_MEDIUM_PROTECTED));
 
96
                else {
 
97
                        if (type & BRASERO_MEDIUM_HAS_AUDIO)
 
98
                                retval = brasero_media_add_to_list (retval,
 
99
                                                                    media|
 
100
                                                                    BRASERO_MEDIUM_CLOSED|
 
101
                                                                    BRASERO_MEDIUM_HAS_AUDIO);
 
102
                        if (type & BRASERO_MEDIUM_HAS_DATA)
 
103
                                retval = brasero_media_add_to_list (retval,
 
104
                                                                    media|
 
105
                                                                    BRASERO_MEDIUM_CLOSED|
 
106
                                                                    BRASERO_MEDIUM_HAS_DATA);
 
107
                        if (BRASERO_MEDIUM_IS (type, BRASERO_MEDIUM_HAS_AUDIO|BRASERO_MEDIUM_HAS_DATA))
 
108
                                retval = brasero_media_add_to_list (retval,
 
109
                                                                    media|
 
110
                                                                    BRASERO_MEDIUM_CLOSED|
 
111
                                                                    BRASERO_MEDIUM_HAS_DATA|
 
112
                                                                    BRASERO_MEDIUM_HAS_AUDIO);
 
113
                }
 
114
        }
 
115
 
 
116
        if ((type & BRASERO_MEDIUM_APPENDABLE)
 
117
        && !(media & BRASERO_MEDIUM_ROM)
 
118
        && !BRASERO_MEDIUM_TRUE_RANDOM_WRITABLE (media)) {
 
119
                if (media & (BRASERO_MEDIUM_BD|BRASERO_MEDIUM_DVD))
 
120
                        retval = brasero_media_add_to_list (retval,
 
121
                                                            media|
 
122
                                                            BRASERO_MEDIUM_APPENDABLE|
 
123
                                                            BRASERO_MEDIUM_HAS_DATA);
 
124
                else {
 
125
                        if (type & BRASERO_MEDIUM_HAS_AUDIO)
 
126
                                retval = brasero_media_add_to_list (retval,
 
127
                                                                    media|
 
128
                                                                    BRASERO_MEDIUM_APPENDABLE|
 
129
                                                                    BRASERO_MEDIUM_HAS_AUDIO);
 
130
                        if (type & BRASERO_MEDIUM_HAS_DATA)
 
131
                                retval = brasero_media_add_to_list (retval,
 
132
                                                                    media|
 
133
                                                                    BRASERO_MEDIUM_APPENDABLE|
 
134
                                                                    BRASERO_MEDIUM_HAS_DATA);
 
135
                        if (BRASERO_MEDIUM_IS (type, BRASERO_MEDIUM_HAS_AUDIO|BRASERO_MEDIUM_HAS_DATA))
 
136
                                retval = brasero_media_add_to_list (retval,
 
137
                                                                    media|
 
138
                                                                    BRASERO_MEDIUM_HAS_DATA|
 
139
                                                                    BRASERO_MEDIUM_APPENDABLE|
 
140
                                                                    BRASERO_MEDIUM_HAS_AUDIO);
 
141
                }
 
142
        }
 
143
 
 
144
        return retval;
 
145
}
 
146
 
 
147
static GSList *
 
148
brasero_media_new_attribute (GSList *retval,
 
149
                             BraseroMedia media,
 
150
                             BraseroMedia type)
 
151
{
 
152
        /* NOTE: never reached by BDs, ROMs (any) or Restricted Overwrite
 
153
         * and DVD- dual layer */
 
154
 
 
155
        /* NOTE: there is no dual layer DVD-RW */
 
156
        if (type & BRASERO_MEDIUM_REWRITABLE)
 
157
                retval = brasero_media_new_status (retval,
 
158
                                                   media|BRASERO_MEDIUM_REWRITABLE,
 
159
                                                   type);
 
160
 
 
161
        if (type & BRASERO_MEDIUM_WRITABLE)
 
162
                retval = brasero_media_new_status (retval,
 
163
                                                   media|BRASERO_MEDIUM_WRITABLE,
 
164
                                                   type);
 
165
 
 
166
        return retval;
 
167
}
 
168
 
 
169
static GSList *
 
170
brasero_media_new_subtype (GSList *retval,
 
171
                           BraseroMedia media,
 
172
                           BraseroMedia type)
 
173
{
 
174
        if (media & BRASERO_MEDIUM_BD) {
 
175
                /* There seems to be Dual layers BDs as well */
 
176
 
 
177
                if (type & BRASERO_MEDIUM_ROM) {
 
178
                        retval = brasero_media_new_status (retval,
 
179
                                                           media|
 
180
                                                           BRASERO_MEDIUM_ROM,
 
181
                                                           type);
 
182
                        if (type & BRASERO_MEDIUM_DUAL_L)
 
183
                                retval = brasero_media_new_status (retval,
 
184
                                                                   media|
 
185
                                                                   BRASERO_MEDIUM_ROM|
 
186
                                                                   BRASERO_MEDIUM_DUAL_L,
 
187
                                                                   type);
 
188
                }
 
189
 
 
190
                if (type & BRASERO_MEDIUM_RANDOM) {
 
191
                        retval = brasero_media_new_status (retval,
 
192
                                                           media|
 
193
                                                           BRASERO_MEDIUM_RANDOM|
 
194
                                                           BRASERO_MEDIUM_WRITABLE,
 
195
                                                           type);
 
196
                        if (type & BRASERO_MEDIUM_DUAL_L)
 
197
                                retval = brasero_media_new_status (retval,
 
198
                                                                   media|
 
199
                                                                   BRASERO_MEDIUM_RANDOM|
 
200
                                                                   BRASERO_MEDIUM_WRITABLE|
 
201
                                                                   BRASERO_MEDIUM_DUAL_L,
 
202
                                                                   type);
 
203
                }
 
204
 
 
205
                if (type & BRASERO_MEDIUM_SRM) {
 
206
                        retval = brasero_media_new_status (retval,
 
207
                                                           media|
 
208
                                                           BRASERO_MEDIUM_SRM|
 
209
                                                           BRASERO_MEDIUM_WRITABLE,
 
210
                                                           type);
 
211
                        if (type & BRASERO_MEDIUM_DUAL_L)
 
212
                                retval = brasero_media_new_status (retval,
 
213
                                                                   media|
 
214
                                                                   BRASERO_MEDIUM_SRM|
 
215
                                                                   BRASERO_MEDIUM_WRITABLE|
 
216
                                                                   BRASERO_MEDIUM_DUAL_L,
 
217
                                                                   type);
 
218
                }
 
219
 
 
220
                if (type & BRASERO_MEDIUM_POW) {
 
221
                        retval = brasero_media_new_status (retval,
 
222
                                                           media|
 
223
                                                           BRASERO_MEDIUM_POW|
 
224
                                                           BRASERO_MEDIUM_WRITABLE,
 
225
                                                           type);
 
226
                        if (type & BRASERO_MEDIUM_DUAL_L)
 
227
                                retval = brasero_media_new_status (retval,
 
228
                                                                   media|
 
229
                                                                   BRASERO_MEDIUM_POW|
 
230
                                                                   BRASERO_MEDIUM_WRITABLE|
 
231
                                                                   BRASERO_MEDIUM_DUAL_L,
 
232
                                                                   type);
 
233
                }
 
234
 
 
235
                /* BD-RE */
 
236
                if (type & BRASERO_MEDIUM_REWRITABLE) {
 
237
                        retval = brasero_media_new_status (retval,
 
238
                                                           media|
 
239
                                                           BRASERO_MEDIUM_REWRITABLE,
 
240
                                                           type);
 
241
                        if (type & BRASERO_MEDIUM_DUAL_L)
 
242
                                retval = brasero_media_new_status (retval,
 
243
                                                                   media|
 
244
                                                                   BRASERO_MEDIUM_REWRITABLE|
 
245
                                                                   BRASERO_MEDIUM_DUAL_L,
 
246
                                                                   type);
 
247
                }
 
248
        }
 
249
 
 
250
        if (media & BRASERO_MEDIUM_DVD) {
 
251
                /* There is no such thing as DVD-RW DL nor DVD-RAM DL*/
 
252
 
 
253
                /* The following is always a DVD-R dual layer */
 
254
                if (type & BRASERO_MEDIUM_JUMP)
 
255
                        retval = brasero_media_new_status (retval,
 
256
                                                           media|
 
257
                                                           BRASERO_MEDIUM_JUMP|
 
258
                                                           BRASERO_MEDIUM_DUAL_L|
 
259
                                                           BRASERO_MEDIUM_WRITABLE,
 
260
                                                           type);
 
261
 
 
262
                if (type & BRASERO_MEDIUM_SEQUENTIAL) {
 
263
                        retval = brasero_media_new_attribute (retval,
 
264
                                                              media|
 
265
                                                              BRASERO_MEDIUM_SEQUENTIAL,
 
266
                                                              type);
 
267
 
 
268
                        /* This one has to be writable only, no RW */
 
269
                        if (type & BRASERO_MEDIUM_DUAL_L)
 
270
                                retval = brasero_media_new_status (retval,
 
271
                                                                   media|
 
272
                                                                   BRASERO_MEDIUM_SEQUENTIAL|
 
273
                                                                   BRASERO_MEDIUM_WRITABLE|
 
274
                                                                   BRASERO_MEDIUM_DUAL_L,
 
275
                                                                   type);
 
276
                }
 
277
 
 
278
                /* Restricted Overwrite media are always rewritable */
 
279
                if (type & BRASERO_MEDIUM_RESTRICTED)
 
280
                        retval = brasero_media_new_status (retval,
 
281
                                                           media|
 
282
                                                           BRASERO_MEDIUM_RESTRICTED|
 
283
                                                           BRASERO_MEDIUM_REWRITABLE,
 
284
                                                           type);
 
285
 
 
286
                if (type & BRASERO_MEDIUM_PLUS) {
 
287
                        retval = brasero_media_new_attribute (retval,
 
288
                                                              media|
 
289
                                                              BRASERO_MEDIUM_PLUS,
 
290
                                                              type);
 
291
 
 
292
                        if (type & BRASERO_MEDIUM_DUAL_L)
 
293
                                retval = brasero_media_new_attribute (retval,
 
294
                                                                      media|
 
295
                                                                      BRASERO_MEDIUM_PLUS|
 
296
                                                                      BRASERO_MEDIUM_DUAL_L,
 
297
                                                                      type);
 
298
 
 
299
                }
 
300
 
 
301
                if (type & BRASERO_MEDIUM_ROM) {
 
302
                        retval = brasero_media_new_status (retval,
 
303
                                                           media|
 
304
                                                           BRASERO_MEDIUM_ROM,
 
305
                                                           type);
 
306
 
 
307
                        if (type & BRASERO_MEDIUM_DUAL_L)
 
308
                                retval = brasero_media_new_status (retval,
 
309
                                                                   media|
 
310
                                                                   BRASERO_MEDIUM_ROM|
 
311
                                                                   BRASERO_MEDIUM_DUAL_L,
 
312
                                                                   type);
 
313
                }
 
314
 
 
315
                /* RAM media are always rewritable */
 
316
                if (type & BRASERO_MEDIUM_RAM)
 
317
                        retval = brasero_media_new_status (retval,
 
318
                                                           media|
 
319
                                                           BRASERO_MEDIUM_RAM|
 
320
                                                           BRASERO_MEDIUM_REWRITABLE,
 
321
                                                           type);
 
322
        }
 
323
 
 
324
        return retval;
 
325
}
 
326
 
 
327
GSList *
 
328
brasero_media_get_all_list (BraseroMedia type)
 
329
{
 
330
        GSList *retval = NULL;
 
331
 
 
332
        if (type & BRASERO_MEDIUM_FILE)
 
333
                retval = brasero_media_add_to_list (retval, BRASERO_MEDIUM_FILE);                                              
 
334
 
 
335
        if (type & BRASERO_MEDIUM_CD) {
 
336
                if (type & BRASERO_MEDIUM_ROM)
 
337
                        retval = brasero_media_new_status (retval,
 
338
                                                           BRASERO_MEDIUM_CD|
 
339
                                                           BRASERO_MEDIUM_ROM,
 
340
                                                           type);
 
341
 
 
342
                retval = brasero_media_new_attribute (retval,
 
343
                                                      BRASERO_MEDIUM_CD,
 
344
                                                      type);
 
345
        }
 
346
 
 
347
        if (type & BRASERO_MEDIUM_DVD)
 
348
                retval = brasero_media_new_subtype (retval,
 
349
                                                    BRASERO_MEDIUM_DVD,
 
350
                                                    type);
 
351
 
 
352
 
 
353
        if (type & BRASERO_MEDIUM_BD)
 
354
                retval = brasero_media_new_subtype (retval,
 
355
                                                    BRASERO_MEDIUM_BD,
 
356
                                                    type);
 
357
 
 
358
        return retval;
 
359
}
 
360
 
 
361
GQuark
 
362
brasero_media_quark (void)
 
363
{
 
364
        static GQuark quark = 0;
 
365
 
 
366
        if (!quark)
 
367
                quark = g_quark_from_static_string ("BraseroMediaError");
 
368
 
 
369
        return quark;
 
370
}
 
371
 
 
372
void
 
373
brasero_media_to_string (BraseroMedia media,
 
374
                         gchar *buffer)
 
375
{
 
376
        if (media & BRASERO_MEDIUM_FILE)
 
377
                strcat (buffer, "file ");
 
378
 
 
379
        if (media & BRASERO_MEDIUM_CD)
 
380
                strcat (buffer, "CD ");
 
381
 
 
382
        if (media & BRASERO_MEDIUM_DVD)
 
383
                strcat (buffer, "DVD ");
 
384
 
 
385
        if (media & BRASERO_MEDIUM_RAM)
 
386
                strcat (buffer, "RAM ");
 
387
 
 
388
        if (media & BRASERO_MEDIUM_BD)
 
389
                strcat (buffer, "BD ");
 
390
 
 
391
        if (media & BRASERO_MEDIUM_DUAL_L)
 
392
                strcat (buffer, "DL ");
 
393
 
 
394
        /* DVD subtypes */
 
395
        if (media & BRASERO_MEDIUM_PLUS)
 
396
                strcat (buffer, "+ ");
 
397
 
 
398
        if (media & BRASERO_MEDIUM_SEQUENTIAL)
 
399
                strcat (buffer, "- (sequential) ");
 
400
 
 
401
        if (media & BRASERO_MEDIUM_RESTRICTED)
 
402
                strcat (buffer, "- (restricted) ");
 
403
 
 
404
        if (media & BRASERO_MEDIUM_JUMP)
 
405
                strcat (buffer, "- (jump) ");
 
406
 
 
407
        /* BD subtypes */
 
408
        if (media & BRASERO_MEDIUM_SRM)
 
409
                strcat (buffer, "SRM ");
 
410
 
 
411
        if (media & BRASERO_MEDIUM_POW)
 
412
                strcat (buffer, "POW ");
 
413
 
 
414
        if (media & BRASERO_MEDIUM_RANDOM)
 
415
                strcat (buffer, "RANDOM ");
 
416
 
 
417
        /* discs attributes */
 
418
        if (media & BRASERO_MEDIUM_REWRITABLE)
 
419
                strcat (buffer, "RW ");
 
420
 
 
421
        if (media & BRASERO_MEDIUM_WRITABLE)
 
422
                strcat (buffer, "W ");
 
423
 
 
424
        if (media & BRASERO_MEDIUM_ROM)
 
425
                strcat (buffer, "ROM ");
 
426
 
 
427
        /* status of the disc */
 
428
        if (media & BRASERO_MEDIUM_CLOSED)
 
429
                strcat (buffer, "closed ");
 
430
 
 
431
        if (media & BRASERO_MEDIUM_BLANK)
 
432
                strcat (buffer, "blank ");
 
433
 
 
434
        if (media & BRASERO_MEDIUM_APPENDABLE)
 
435
                strcat (buffer, "appendable ");
 
436
 
 
437
        if (media & BRASERO_MEDIUM_PROTECTED)
 
438
                strcat (buffer, "protected ");
 
439
 
 
440
        if (media & BRASERO_MEDIUM_HAS_DATA)
 
441
                strcat (buffer, "with data ");
 
442
 
 
443
        if (media & BRASERO_MEDIUM_HAS_AUDIO)
 
444
                strcat (buffer, "with audio ");
 
445
 
 
446
        if (media & BRASERO_MEDIUM_UNFORMATTED)
 
447
                strcat (buffer, "Unformatted ");
 
448
}
 
449
 
 
450
#define BRASERO_MEDIA_LOG_DOMAIN                                "BraseroMedia"
 
451
 
 
452
/**
 
453
 * brasero_media_get_option_group:
 
454
 *
 
455
 * Returns a GOptionGroup for the commandline arguments recognized by libbrasero-media.
 
456
 * You should add this to your GOptionContext if your are using g_option_context_parse ()
 
457
 * to parse your commandline arguments.
 
458
 *
 
459
 * Return value: a #GOptionGroup *
 
460
 **/
 
461
GOptionGroup *
 
462
brasero_media_get_option_group (void)
 
463
{
 
464
        GOptionGroup *group;
 
465
 
 
466
        group = g_option_group_new ("brasero-media",
 
467
                                    N_("Brasero optical media library"),
 
468
                                    N_("Display options for Brasero-media library"),
 
469
                                    NULL,
 
470
                                    NULL);
 
471
        g_option_group_add_entries (group, options);
 
472
        return group;
 
473
}
 
474
 
 
475
void
 
476
brasero_media_message (const gchar *location,
 
477
                       const gchar *format,
 
478
                       ...)
 
479
{
 
480
        va_list arg_list;
 
481
        gchar *format_real;
 
482
 
 
483
        if (!debug)
 
484
                return;
 
485
 
 
486
        format_real = g_strdup_printf ("At %s: %s",
 
487
                                       location,
 
488
                                       format);
 
489
 
 
490
        va_start (arg_list, format);
 
491
        g_logv (BRASERO_MEDIA_LOG_DOMAIN,
 
492
                G_LOG_LEVEL_DEBUG,
 
493
                format_real,
 
494
                arg_list);
 
495
        va_end (arg_list);
 
496
 
 
497
        g_free (format_real);
 
498
}
 
499
 
 
500
#include <gtk/gtk.h>
 
501
 
 
502
#include "brasero-medium-monitor.h"
 
503
 
 
504
static BraseroMediumMonitor *default_monitor = NULL;
 
505
 
 
506
/**
 
507
 * brasero_media_start:
 
508
 *
 
509
 * Initialize the library.
 
510
 *
 
511
 * You should call this function before using any other from the library.
 
512
 *
 
513
 **/
 
514
void
 
515
brasero_media_library_start (void)
 
516
{
 
517
        if (default_monitor) {
 
518
                g_object_ref (default_monitor);
 
519
                return;
 
520
        }
 
521
 
 
522
        /* Initialize i18n */
 
523
        bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
 
524
        bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
 
525
 
 
526
        /* Initialize icon-theme */
 
527
        gtk_icon_theme_append_search_path (gtk_icon_theme_get_default (),
 
528
                                           BRASERO_DATADIR "/icons");
 
529
 
 
530
        /* Take a reference for the monitoring library */
 
531
        default_monitor = brasero_medium_monitor_get_default ();
 
532
}
 
533
 
 
534
/**
 
535
 * brasero_media_stop:
 
536
 *
 
537
 * De-initialize the library once you do not need the library anymore.
 
538
 *
 
539
 **/
 
540
void
 
541
brasero_media_library_stop (void)
 
542
{
 
543
        g_object_unref (default_monitor);
 
544
        default_monitor = NULL;
 
545
}