From: phantomjinx <pha...@us...> - 2012-02-11 10:35:20
|
commit 73e8ad2912a643b11975c810e24fbc8d18a5ab65 Author: phantomjinx <p.g...@ph...> Date: Mon Jan 2 20:55:57 2012 +0000 Boiler plate for sjcd plugin * includes acknowledgement of sound-juicer authors in AUTHORS file AUTHORS | 2 + plugins/Makefile.am | 3 +- plugins/sjcd/Makefile.am | 43 ++ plugins/sjcd/plugin.c | 100 ++++ plugins/sjcd/plugin.h | 56 ++ plugins/sjcd/sjcd.plugin.in | 4 + plugins/sjcd/sjcd.ui | 11 + plugins/sjcd/sjcd.xml | 1247 +++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 1465 insertions(+), 1 deletions(-) --- diff --git a/AUTHORS b/AUTHORS index 703d3af..aa4912d 100644 --- a/AUTHORS +++ b/AUTHORS @@ -90,6 +90,8 @@ This program borrows code from the following projects mp3info - mp3 playlength detection <http://ibiblio.org/mp3info/> xmms - dirbrowser, mp3 playlength detection <http://www.xmms.org> + + sound-juicer - by Ross Burton <ro...@bu...> <http://http://live.gnome.org/SoundJuicer> The GUI was created with the help of glade <http://glade.gnome.org/> and anjuta <http://projects.gnome.org/anjuta>. diff --git a/plugins/Makefile.am b/plugins/Makefile.am index 872d785..391f7a6 100644 --- a/plugins/Makefile.am +++ b/plugins/Makefile.am @@ -21,6 +21,7 @@ SUBDIRS = . \ filetype_video \ filetype_mp4 \ filetype_m4a \ - clarity + clarity \ + sjcd # indent diff --git a/plugins/sjcd/Makefile.am b/plugins/sjcd/Makefile.am new file mode 100644 index 0000000..f6c19c0 --- /dev/null +++ b/plugins/sjcd/Makefile.am @@ -0,0 +1,43 @@ +plugin_name = sjcd +plugin_file = $(plugin_name).plugin + +# Plugin UI file +sjcd_uidir = $(gtkpod_ui_dir) +sjcd_ui_DATA = $(plugin_name).ui + +# Plugin Glade file +sjcd_gladedir = $(gtkpod_glade_dir) +sjcd_glade_DATA = $(plugin_name).xml + +# Plugin Icon file +sjcd_pixmapsdir = $(gtkpod_image_dir) +sjcd_pixmaps_DATA = + +sjcd_plugindir = $(gtkpod_plugin_dir) +sjcd_plugin_DATA = + +SUBDIRS = data libjuicer + +include ../plugins.mk +sjcd.plugin: build-plugin-file + +# The plugin +plugin_lib = lib$(plugin_name).so +plugin_LTLIBRARIES = libsjcd.la + +# Plugin sources +libsjcd_la_SOURCES = plugin.c plugin.h + +libsjcd_la_LDFLAGS = $(GTKPOD_PLUGIN_LDFLAGS) + +# Plugin dependencies +libsjcd_la_LIBADD = \ + $(GTKPOD_LIBS) \ + $(LIBANJUTA_LIBS) + +EXTRA_DIST = \ + $(plugin_file).in \ + $(sjcd_plugin_DATA) \ + $(sjcd_ui_DATA) \ + $(sjcd_glade_DATA) \ + $(sjcd_pixmaps_DATA) diff --git a/plugins/sjcd/plugin.c b/plugins/sjcd/plugin.c new file mode 100644 index 0000000..8d24d6c --- /dev/null +++ b/plugins/sjcd/plugin.c @@ -0,0 +1,100 @@ +/* + | Copyright (C) 2002-2010 Jorg Schuler <jcsjcs at users sourceforge net> + | Paul Richardson <phantom_sf at users.sourceforge.net> + | Part of the gtkpod project. + | + | URL: http://www.gtkpod.org/ + | URL: http://gtkpod.sourceforge.net/ + | + | This program is free software; you can redistribute it and/or modify + | it under the terms of the GNU General Public License as published by + | the Free Software Foundation; either version 2 of the License, or + | (at your option) any later version. + | + | This program is distributed in the hope that it will be useful, + | but WITHOUT ANY WARRANTY; without even the implied warranty of + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + | GNU General Public License for more details. + | + | You should have received a copy of the GNU General Public License + | along with this program; if not, write to the Free Software + | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + | + | iTunes and iPod are trademarks of Apple + | + | This product is not supported/written/published by Apple! + | + | $Id$ + */ +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <glib.h> +#include "libgtkpod/gtkpod_app_iface.h" +#include "libgtkpod/directories.h" +#include "plugin.h" + +/* Parent class. Part of standard class definition */ +static gpointer parent_class; + +static GtkActionEntry sjcd_actions[] = + {}; + +static gboolean activate_plugin(AnjutaPlugin *plugin) { + AnjutaUI *ui; + GtkActionGroup* action_group; + + sjcd_plugin = (SjCdPlugin*) plugin; + ui = anjuta_shell_get_ui(plugin->shell, NULL); + + /* Add actions */ + action_group + = anjuta_ui_add_action_group_entries(ui, "ActionGroupSjCd", _("Sound Juicer"), sjcd_actions, G_N_ELEMENTS (sjcd_actions), GETTEXT_PACKAGE, TRUE, plugin); + sjcd_plugin->action_group = action_group; + + /* Merge UI */ + gchar *uipath = g_build_filename(get_ui_dir(), "sjcd.ui", NULL); + sjcd_plugin->uiid = anjuta_ui_merge(ui, uipath); + g_free(uipath); + + return TRUE; /* FALSE if activation failed */ +} + +static gboolean deactivate_plugin(AnjutaPlugin *plugin) { + AnjutaUI *ui; + + destroy_sjcd(); + + ui = anjuta_shell_get_ui(plugin->shell, NULL); + + /* Unmerge UI */ + anjuta_ui_unmerge(ui, sjcd_plugin->uiid); + + /* Remove Action groups */ + anjuta_ui_remove_action_group(ui, sjcd_plugin->action_group); + + /* FALSE if plugin doesn't want to deactivate */ + return TRUE; +} + +static void sjcd_plugin_instance_init(GObject *obj) { + SjCdPlugin *plugin = (SjCdPlugin*) obj; + plugin->uiid = 0; + plugin->action_group = NULL; +} + +static void sjcd_plugin_class_init(GObjectClass *klass) { + AnjutaPluginClass *plugin_class = ANJUTA_PLUGIN_CLASS (klass); + + parent_class = g_type_class_peek_parent(klass); + + plugin_class->activate = activate_plugin; + plugin_class->deactivate = deactivate_plugin; +} + +ANJUTA_PLUGIN_BEGIN (SjCdPlugin, sjcd_plugin); +ANJUTA_PLUGIN_END; + +ANJUTA_SIMPLE_PLUGIN (SjCdPlugin, sjcd_plugin) +; diff --git a/plugins/sjcd/plugin.h b/plugins/sjcd/plugin.h new file mode 100644 index 0000000..f957c92 --- /dev/null +++ b/plugins/sjcd/plugin.h @@ -0,0 +1,56 @@ +/* +| Copyright (C) 2002-2010 Jorg Schuler <jcsjcs at users sourceforge net> +| Paul Richardson <phantom_sf at users.sourceforge.net> +| Part of the gtkpod project. +| +| URL: http://www.gtkpod.org/ +| URL: http://gtkpod.sourceforge.net/ +| +| This program is free software; you can redistribute it and/or modify +| it under the terms of the GNU General Public License as published by +| the Free Software Foundation; either version 2 of the License, or +| (at your option) any later version. +| +| This program is distributed in the hope that it will be useful, +| but WITHOUT ANY WARRANTY; without even the implied warranty of +| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +| GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License +| along with this program; if not, write to the Free Software +| Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +| +| iTunes and iPod are trademarks of Apple +| +| This product is not supported/written/published by Apple! +| +| $Id$ +*/ + +#ifndef PLUGIN_H_ +#define PLUGIN_H_ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <libanjuta/anjuta-plugin.h> + +typedef struct _SJCDPlugin SJCDPlugin; +typedef struct _SJCDPluginClass SJCDPluginClass; + +struct _SJCDPlugin { + AnjutaPlugin parent; + gint uiid; + GtkWidget *sj_window; + GtkWidget *sj_instance; + GtkActionGroup *action_group; +}; + +struct _SJCDPluginClass { + AnjutaPluginClass parent_class; +}; + +SJCDPlugin *sjcd_plugin; + +#endif /* PLUGIN_H_ */ diff --git a/plugins/sjcd/sjcd.plugin.in b/plugins/sjcd/sjcd.plugin.in new file mode 100644 index 0000000..46572e3 --- /dev/null +++ b/plugins/sjcd/sjcd.plugin.in @@ -0,0 +1,4 @@ +[Anjuta Plugin] +Location=sjcd:SJCDPlugin +_Name=Sound Juicer Plugin +_Description=Extract tracks from CDs diff --git a/plugins/sjcd/sjcd.ui b/plugins/sjcd/sjcd.ui new file mode 100644 index 0000000..5631266 --- /dev/null +++ b/plugins/sjcd/sjcd.ui @@ -0,0 +1,11 @@ +<!--*- xml -*--> +<ui> + <menubar name="MenuMain"> + <menu name="MenuTools" action="ActionMenuTools"> + </menu> + <menu name="MenuEdit" action="ActionMenuEdit"> + </menu> + </menubar> + <toolbar name="ToolbarMain"> + </toolbar> +</ui> diff --git a/plugins/sjcd/sjcd.xml b/plugins/sjcd/sjcd.xml new file mode 100644 index 0000000..12de20c --- /dev/null +++ b/plugins/sjcd/sjcd.xml @@ -0,0 +1,1247 @@ +<?xml version="1.0"?> +<interface> + <requires lib="gtk+" version="2.16"/> + <!-- interface-naming-policy project-wide --> + <object class="GtkWindow" id="main_window"> + <property name="width_request">500</property> + <property name="height_request">420</property> + <property name="title" translatable="yes">Sound Juicer</property> + <signal name="destroy" handler="on_destroy_signal"/> + <signal name="delete_event" handler="on_delete_event"/> + <child> + <object class="GtkVBox" id="vbox1"> + <property name="visible">True</property> + <property name="orientation">vertical</property> + <child> + <object class="GtkMenuBar" id="menubar1"> + <property name="visible">True</property> + <child> + <object class="GtkMenuItem" id="menuitem1"> + <property name="visible">True</property> + <property name="label" translatable="yes">_Disc</property> + <property name="use_underline">True</property> + <child type="submenu"> + <object class="GtkMenu" id="menuitem1_menu"> + <child> + <object class="GtkImageMenuItem" id="play_menuitem"> + <property name="label">_Play / Pause</property> + <property name="visible">True</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + <accelerator key="p" signal="activate" modifiers="GDK_CONTROL_MASK"/> + <signal name="activate" handler="on_play_activate"/> + </object> + </child> + <child> + <object class="GtkImageMenuItem" id="next_track_menuitem"> + <property name="label">_Next Track</property> + <property name="visible">True</property> + <property name="tooltip_text" translatable="yes">Skip to the next track</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + <accelerator key="N" signal="activate" modifiers="GDK_CONTROL_MASK"/> + <signal name="activate" handler="on_next_track_activate"/> + </object> + </child> + <child> + <object class="GtkImageMenuItem" id="previous_track_menuitem"> + <property name="label">Pre_vious Track</property> + <property name="visible">True</property> + <property name="tooltip_text" translatable="yes">Skip to the previous track</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + <accelerator key="B" signal="activate" modifiers="GDK_CONTROL_MASK"/> + <signal name="activate" handler="on_previous_track_activate"/> + </object> + </child> + <child> + <object class="GtkMenuItem" id="eject"> + <property name="visible">True</property> + <property name="label" translatable="yes">E_ject</property> + <property name="use_underline">True</property> + <accelerator key="J" signal="activate" modifiers="GDK_CONTROL_MASK"/> + <signal name="activate" handler="on_eject_activate"/> + </object> + </child> + <child> + <object class="GtkMenuItem" id="submit"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="label" translatable="yes">_Submit Track Names...</property> + <property name="use_underline">True</property> + <accelerator key="S" signal="activate" modifiers="GDK_CONTROL_MASK"/> + <signal name="activate" handler="on_submit_activate"/> + </object> + </child> + <child> + <object class="GtkSeparatorMenuItem" id="separatormenuitem1"> + <property name="visible">True</property> + </object> + </child> + <child> + <object class="GtkImageMenuItem" id="extract_menuitem"> + <property name="label">sj-stock-extract</property> + <property name="visible">True</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + <signal name="activate" handler="on_extract_activate"/> + </object> + </child> + <child> + <object class="GtkImageMenuItem" id="re-read"> + <property name="label">_Re-read Disc</property> + <property name="visible">True</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + <accelerator key="R" signal="activate" modifiers="GDK_CONTROL_MASK"/> + <signal name="activate" handler="on_reread_activate"/> + </object> + </child> + <child> + <object class="GtkMenuItem" id="duplicate_menuitem"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes">_Duplicate Disc</property> + <property name="use_underline">True</property> + <signal name="activate" handler="on_duplicate_activate"/> + </object> + </child> + <child> + <object class="GtkSeparatorMenuItem" id="separator2"> + <property name="visible">True</property> + </object> + </child> + <child> + <object class="GtkImageMenuItem" id="quit"> + <property name="label">gtk-quit</property> + <property name="visible">True</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + <signal name="activate" handler="on_quit_activate"/> + </object> + </child> + </object> + </child> + </object> + </child> + <child> + <object class="GtkMenuItem" id="menuitem2"> + <property name="visible">True</property> + <property name="label" translatable="yes">_Edit</property> + <property name="use_underline">True</property> + <child type="submenu"> + <object class="GtkMenu" id="menuitem2_menu"> + <child> + <object class="GtkMenuItem" id="select_all"> + <property name="visible">True</property> + <property name="label" translatable="yes">_Select All</property> + <property name="use_underline">True</property> + <accelerator key="A" signal="activate" modifiers="GDK_CONTROL_MASK"/> + <signal name="activate" handler="on_select_all_activate"/> + </object> + </child> + <child> + <object class="GtkMenuItem" id="deselect_all"> + <property name="visible">True</property> + <property name="label" translatable="yes">_Deselect All</property> + <property name="use_underline">True</property> + <accelerator key="A" signal="activate" modifiers="GDK_SHIFT_MASK | GDK_CONTROL_MASK"/> + <signal name="activate" handler="on_deselect_all_activate"/> + </object> + </child> + <child> + <object class="GtkSeparatorMenuItem" id="separator1"> + <property name="visible">True</property> + </object> + </child> + <child> + <object class="GtkImageMenuItem" id="edit_preferences"> + <property name="label">gtk-preferences</property> + <property name="visible">True</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + <signal name="activate" handler="on_edit_preferences_cb"/> + </object> + </child> + </object> + </child> + </object> + </child> + <child> + <object class="GtkMenuItem" id="menuitem4"> + <property name="visible">True</property> + <property name="label" translatable="yes">_Help</property> + <property name="use_underline">True</property> + <child type="submenu"> + <object class="GtkMenu" id="menuitem4_menu"> + <child> + <object class="GtkImageMenuItem" id="contents"> + <property name="label">_Contents</property> + <property name="visible">True</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + <accelerator key="F1" signal="activate"/> + <signal name="activate" handler="on_contents_activate"/> + </object> + </child> + <child> + <object class="GtkImageMenuItem" id="about"> + <property name="label">gtk-about</property> + <property name="visible">True</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + <signal name="activate" handler="on_about_activate"/> + </object> + </child> + </object> + </child> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkEventBox" id="message_area_eventbox"> + <property name="visible">True</property> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkVBox" id="vbox2"> + <property name="visible">True</property> + <property name="border_width">8</property> + <property name="orientation">vertical</property> + <property name="spacing">8</property> + <child> + <object class="GtkTable" id="table1"> + <property name="visible">True</property> + <property name="n_rows">4</property> + <property name="n_columns">2</property> + <property name="column_spacing">12</property> + <property name="row_spacing">6</property> + <child> + <object class="GtkHBox" id="hbox1"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="spacing">12</property> + <child> + <object class="GtkEntry" id="genre_entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <signal name="changed" handler="on_genre_edit_changed"/> + </object> + <packing> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label4"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">_Year:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">year_entry</property> + <accessibility> + <relation type="label-for" target="year_entry"/> + </accessibility> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkEntry" id="year_entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="max_length">4</property> + <property name="width_chars">4</property> + <accessibility> + <relation type="labelled-by" target="label4"/> + </accessibility> + <signal name="changed" handler="on_year_edit_changed"/> + </object> + <packing> + <property name="expand">False</property> + <property name="position">2</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label6"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Disc:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">year_entry</property> + <accessibility> + <relation type="label-for" target="disc_number_entry"/> + </accessibility> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="expand">False</property> + <property name="position">3</property> + </packing> + </child> + <child> + <object class="GtkEntry" id="disc_number_entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="width_chars">2</property> + <accessibility> + <relation type="labelled-by" target="label6"/> + </accessibility> + <signal name="changed" handler="on_disc_number_edit_changed"/> + </object> + <packing> + <property name="expand">False</property> + <property name="position">4</property> + </packing> + </child> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label1"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">_Title:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">title_entry</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkEntry" id="title_entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <signal name="changed" handler="on_title_edit_changed" after="yes"/> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label2"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">_Artist:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">artist_entry</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkEntry" id="artist_entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <signal name="changed" handler="on_artist_edit_changed" after="yes"/> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label31"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">_Genre:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">genre_entry</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label3"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Duration:</property> + <accessibility> + <relation type="label-for" target="duration_label"/> + </accessibility> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkLabel" id="duration_label"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="xalign">0</property> + <property name="ypad">3</property> + <property name="selectable">True</property> + <accessibility> + <relation type="labelled-by" target="label3"/> + </accessibility> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkScrolledWindow" id="scrolledwindow1"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">automatic</property> + <property name="vscrollbar_policy">automatic</property> + <property name="shadow_type">in</property> + <child> + <object class="GtkTreeView" id="track_listview"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="has_focus">True</property> + <property name="rules_hint">True</property> + <child internal-child="accessible"> + <object class="AtkObject" id="track_listview-atkobject"> + <property name="AtkObject::accessible-name" translatable="yes">Tracks</property> + </object> + </child> + <signal name="cursor_changed" handler="on_tracklist_row_selected"/> + <signal name="row_activated" handler="on_tracklist_row_activate"/> + </object> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkHBox" id="hbox10"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <object class="GtkHButtonBox" id="hbuttonbox1"> + <property name="visible">True</property> + <property name="spacing">6</property> + <property name="layout_style">end</property> + <child> + <object class="GtkButton" id="play_button"> + <property name="label">gtk-media-play</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="can_default">True</property> + <property name="receives_default">False</property> + <property name="use_stock">True</property> + <signal name="clicked" handler="on_play_activate"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkButton" id="extract_button"> + <property name="label">sj-stock-extract</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="can_default">True</property> + <property name="receives_default">False</property> + <property name="use_stock">True</property> + <signal name="clicked" handler="on_extract_activate"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkHScale" id="seek_scale"> + <property name="can_focus">True</property> + <property name="digits">0</property> + <property name="draw_value">False</property> + <child internal-child="accessible"> + <object class="AtkObject" id="seek_scale-atkobject"> + <property name="AtkObject::accessible-name" translatable="yes">Track Progress</property> + </object> + </child> + <signal name="button_press_event" handler="on_seek_press"/> + <signal name="value_changed" handler="on_seek_moved"/> + <signal name="button_release_event" handler="on_seek_release"/> + </object> + <packing> + <property name="position">2</property> + </packing> + </child> + <child> + <object class="GtkVolumeButton" id="volume_button"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="has_tooltip">True</property> + <property name="relief">none</property> + <property name="focus_on_click">False</property> + <property name="orientation">vertical</property> + <property name="icons">audio-volume-muted +audio-volume-high +audio-volume-low +audio-volume-medium</property> + <signal name="value_changed" handler="on_volume_changed"/> + </object> + <packing> + <property name="expand">False</property> + <property name="position">2</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="pack_type">end</property> + <property name="position">2</property> + </packing> + </child> + </object> + <packing> + <property name="position">2</property> + </packing> + </child> + <child> + <object class="GtkHBox" id="hbox13"> + <property name="height_request">22</property> + <property name="visible">True</property> + <child> + <object class="GtkAlignment" id="alignment1"> + <property name="visible">True</property> + <property name="top_padding">2</property> + <property name="bottom_padding">2</property> + <child> + <object class="GtkProgressBar" id="progress_bar"> + <property name="pulse_step">0.10000000149</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkStatusbar" id="status_bar"> + <property name="visible">True</property> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">3</property> + </packing> + </child> + </object> + </child> + </object> + <object class="GtkDialog" id="multiple_dialog"> + <property name="border_width">5</property> + <property name="title" translatable="yes">Multiple Albums Found</property> + <property name="type_hint">dialog</property> + <property name="has_separator">False</property> + <child internal-child="vbox"> + <object class="GtkVBox" id="dialog-vbox2"> + <property name="visible">True</property> + <property name="orientation">vertical</property> + <property name="spacing">2</property> + <child> + <object class="GtkVBox" id="vbox4"> + <property name="visible">True</property> + <property name="border_width">5</property> + <property name="orientation">vertical</property> + <property name="spacing">6</property> + <child> + <object class="GtkLabel" id="label10"> + <property name="visible">True</property> + <property name="label" translatable="yes">This CD could be more than one album. Please select which album it is below and press <i>Continue</i>.</property> + <property name="use_markup">True</property> + <property name="wrap">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkScrolledWindow" id="scrolledwindow2"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">automatic</property> + <property name="vscrollbar_policy">automatic</property> + <property name="shadow_type">in</property> + <child> + <object class="GtkTreeView" id="albums_listview"> + <property name="visible">True</property> + <property name="can_focus">True</property> + </object> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + <child internal-child="action_area"> + <object class="GtkHButtonBox" id="dialog-action_area2"> + <property name="visible">True</property> + <property name="layout_style">end</property> + <child> + <object class="GtkButton" id="ok_button"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="can_default">True</property> + <property name="has_default">True</property> + <property name="receives_default">False</property> + <child> + <object class="GtkAlignment" id="alignment2"> + <property name="visible">True</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <child> + <object class="GtkHBox" id="hbox2"> + <property name="visible">True</property> + <property name="spacing">2</property> + <child> + <object class="GtkImage" id="image16"> + <property name="visible">True</property> + <property name="stock">gtk-go-forward</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label11"> + <property name="visible">True</property> + <property name="label" translatable="yes">_Continue</property> + <property name="use_underline">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="pack_type">end</property> + <property name="position">0</property> + </packing> + </child> + </object> + </child> + <action-widgets> + <action-widget response="-5">ok_button</action-widget> + </action-widgets> + </object> + <object class="GtkDialog" id="prefs_dialog"> + <property name="border_width">5</property> + <property name="title" translatable="yes">Preferences</property> + <property name="resizable">False</property> + <property name="type_hint">dialog</property> + <property name="has_separator">False</property> + <signal name="delete_event" handler="gtk_widget_hide_on_delete"/> + <child internal-child="vbox"> + <object class="GtkVBox" id="dialog-vbox4"> + <property name="visible">True</property> + <property name="orientation">vertical</property> + <property name="spacing">2</property> + <child> + <object class="GtkVBox" id="vbox11"> + <property name="visible">True</property> + <property name="border_width">5</property> + <property name="orientation">vertical</property> + <property name="spacing">18</property> + <child> + <object class="GtkVBox" id="frame_device"> + <property name="visible">True</property> + <property name="orientation">vertical</property> + <property name="spacing">6</property> + <child> + <object class="GtkLabel" id="label32"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Device</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkAlignment" id="alignment5"> + <property name="visible">True</property> + <property name="left_padding">12</property> + <child> + <object class="GtkTable" id="table7"> + <property name="visible">True</property> + <property name="n_rows">3</property> + <property name="n_columns">2</property> + <property name="column_spacing">12</property> + <property name="row_spacing">6</property> + <child> + <object class="GtkLabel" id="cd_label"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">CD _drive:</property> + <property name="use_underline">True</property> + </object> + <packing> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="BraseroDriveSelection" id="cd_option"> + <property name="visible">True</property> + <property name="can_focus">True</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="check_eject"> + <property name="label" translatable="yes">_Eject after extracting tracks</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_underline">True</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="check_open"> + <property name="label" translatable="yes">_Open music folder when finished</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_underline">True</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + </object> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkVBox" id="frame_folder"> + <property name="visible">True</property> + <property name="orientation">vertical</property> + <property name="spacing">6</property> + <child> + <object class="GtkLabel" id="label33"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Music Folder</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkAlignment" id="alignment10"> + <property name="visible">True</property> + <property name="left_padding">12</property> + <child> + <object class="GtkHBox" id="hbox9"> + <property name="visible">True</property> + <property name="spacing">12</property> + <child> + <object class="GtkLabel" id="path_label"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">_Folder:</property> + <property name="use_underline">True</property> + <property name="wrap">True</property> + <property name="mnemonic_widget">path_chooser</property> + </object> + <packing> + <property name="expand">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkFileChooserButton" id="path_chooser"> + <property name="visible">True</property> + <property name="local_only">False</property> + <property name="action">select-folder</property> + <property name="title" translatable="yes">Select A Folder</property> + <signal name="current_folder_changed" handler="prefs_base_folder_changed"/> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkVBox" id="frame_names"> + <property name="visible">True</property> + <property name="orientation">vertical</property> + <property name="spacing">6</property> + <child> + <object class="GtkLabel" id="label34"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Track Names</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkAlignment" id="alignment11"> + <property name="visible">True</property> + <property name="left_padding">12</property> + <child> + <object class="GtkTable" id="table6"> + <property name="visible">True</property> + <property name="n_rows">4</property> + <property name="n_columns">2</property> + <property name="column_spacing">12</property> + <property name="row_spacing">6</property> + <child> + <object class="GtkLabel" id="folder_label"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Folder hie_rarchy:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">path_option</property> + </object> + <packing> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkLabel" id="file_label"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">File _name:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">file_option</property> + </object> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkComboBox" id="path_option"> + <property name="visible">True</property> + <child> + <object class="GtkCellRendererText" id="cellrenderertext2"/> + <attributes> + <attribute name="text">0</attribute> + </attributes> + </child> + </object> + <packing> + <property name="left_attach">1</pro... [truncated message content] |