summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar waker <wakeroid@gmail.com>2011-03-13 21:26:06 +0100
committerGravatar waker <wakeroid@gmail.com>2011-03-13 21:26:06 +0100
commit10db4c77eab8a5e839076cf4988f1746ec3a69a0 (patch)
tree7dfbc30e7406d68f49af4f3b8603ee7671e3f843
parente131b2dc3f3a6e841da54806e0bb23b8939048be (diff)
finalized converter gui
-rw-r--r--plugins/converter/callbacks.c2
-rw-r--r--plugins/converter/callbacks.h40
-rw-r--r--plugins/converter/converter.c18
-rw-r--r--plugins/converter/converter.glade286
-rw-r--r--plugins/converter/converter.h4
-rw-r--r--plugins/converter/convgui.c152
-rw-r--r--plugins/converter/interface.c163
7 files changed, 566 insertions, 99 deletions
diff --git a/plugins/converter/callbacks.c b/plugins/converter/callbacks.c
index 019fde92..f609a9a1 100644
--- a/plugins/converter/callbacks.c
+++ b/plugins/converter/callbacks.c
@@ -8,3 +8,5 @@
#include "interface.h"
#include "support.h"
+
+
diff --git a/plugins/converter/callbacks.h b/plugins/converter/callbacks.h
index b349820f..1f5d7938 100644
--- a/plugins/converter/callbacks.h
+++ b/plugins/converter/callbacks.h
@@ -78,3 +78,43 @@ on_converterdlg_delete_event (GtkWidget *widget,
GtkWidget*
title_formatting_help_link_create (gchar *widget_name, gchar *string1, gchar *string2,
gint int1, gint int2);
+
+void
+on_output_folder_changed (GtkEditable *editable,
+ gpointer user_data);
+
+void
+on_numthreads_changed (GtkEditable *editable,
+ gpointer user_data);
+
+void
+on_overwrite_action_changed (GtkComboBox *combobox,
+ gpointer user_data);
+
+void
+on_encoder_changed (GtkEditable *editable,
+ gpointer user_data);
+
+void
+on_preserve_folder_browse_clicked (GtkButton *button,
+ gpointer user_data);
+
+void
+on_fname_changed (GtkEditable *editable,
+ gpointer user_data);
+
+void
+on_checkbutton1_toggled (GtkToggleButton *togglebutton,
+ gpointer user_data);
+
+void
+on_preserve_folders_toggled (GtkToggleButton *togglebutton,
+ gpointer user_data);
+
+void
+on_output_file_changed (GtkEditable *editable,
+ gpointer user_data);
+
+void
+on_preserve_folder_root_changed (GtkEditable *editable,
+ gpointer user_data);
diff --git a/plugins/converter/converter.c b/plugins/converter/converter.c
index 93e67b67..d9c59b22 100644
--- a/plugins/converter/converter.c
+++ b/plugins/converter/converter.c
@@ -50,8 +50,8 @@ encoder_preset_free (ddb_encoder_preset_t *p) {
if (p->title) {
free (p->title);
}
- if (p->fname) {
- free (p->fname);
+ if (p->ext) {
+ free (p->ext);
}
if (p->encoder) {
free (p->encoder);
@@ -90,8 +90,8 @@ encoder_preset_load (const char *fname) {
if (!strcmp (str, "title")) {
p->title = strdup (item);
}
- else if (!strcmp (str, "fname")) {
- p->fname = strdup (item);
+ else if (!strcmp (str, "ext")) {
+ p->ext = strdup (item);
}
else if (!strcmp (str, "encoder")) {
p->encoder = strdup (item);
@@ -147,7 +147,7 @@ encoder_preset_save (ddb_encoder_preset_t *p, int overwrite) {
}
fprintf (fp, "title %s\n", p->title);
- fprintf (fp, "fname %s\n", p->fname);
+ fprintf (fp, "ext %s\n", p->ext);
fprintf (fp, "encoder %s\n", p->encoder);
fprintf (fp, "method %d\n", p->method);
fprintf (fp, "formats %08X\n", p->formats);
@@ -159,7 +159,7 @@ encoder_preset_save (ddb_encoder_preset_t *p, int overwrite) {
void
encoder_preset_copy (ddb_encoder_preset_t *to, ddb_encoder_preset_t *from) {
to->title = strdup (from->title);
- to->fname = strdup (from->fname);
+ to->ext = strdup (from->ext);
to->encoder = strdup (from->encoder);
to->method = from->method;
to->formats = from->formats;
@@ -460,7 +460,7 @@ dsp_preset_replace (ddb_dsp_preset_t *from, ddb_dsp_preset_t *to) {
}
int
-convert (DB_playItem_t *it, const char *outfolder, int selected_format, ddb_encoder_preset_t *encoder_preset, ddb_dsp_preset_t *dsp_preset, int *abort) {
+convert (DB_playItem_t *it, const char *outfolder, const char *outfile, int selected_format, int preserve_folder_structure, const char *root_folder, ddb_encoder_preset_t *encoder_preset, ddb_dsp_preset_t *dsp_preset, int *abort) {
int err = -1;
FILE *enc_pipe = NULL;
FILE *temp_file = NULL;
@@ -478,8 +478,8 @@ convert (DB_playItem_t *it, const char *outfolder, int selected_format, ddb_enco
if (fileinfo) {
char fname[PATH_MAX];
int idx = deadbeef->pl_get_idx_of (it);
- deadbeef->pl_format_title (it, idx, fname, sizeof (fname), -1, encoder_preset->fname);
- snprintf (out, sizeof (out), "%s/%s", outfolder, fname);
+ deadbeef->pl_format_title (it, idx, fname, sizeof (fname), -1, outfile);
+ snprintf (out, sizeof (out), "%s/%s.%s", outfolder, fname, encoder_preset->ext);
if (encoder_preset->method == DDB_ENCODER_METHOD_FILE) {
const char *tmp = getenv ("TMPDIR");
if (!tmp) {
diff --git a/plugins/converter/converter.glade b/plugins/converter/converter.glade
index 30d55ca5..b28c37f3 100644
--- a/plugins/converter/converter.glade
+++ b/plugins/converter/converter.glade
@@ -81,7 +81,7 @@
<child>
<widget class="GtkLabel" id="label103">
<property name="visible">True</property>
- <property name="label" translatable="yes">Output folder</property>
+ <property name="label" translatable="yes">Output folder:</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
@@ -120,6 +120,7 @@
<property name="has_frame">True</property>
<property name="invisible_char">●</property>
<property name="activates_default">False</property>
+ <signal name="changed" handler="on_output_folder_changed" last_modification_time="Sun, 13 Mar 2011 11:25:59 GMT"/>
</widget>
<packing>
<property name="padding">0</property>
@@ -160,6 +161,94 @@
</child>
<child>
+ <widget class="GtkHBox" id="hbox100">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">8</property>
+
+ <child>
+ <widget class="GtkLabel" id="label122">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Output file name:</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHBox" id="hbox101">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkEntry" id="output_file">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Extension (e.g. .mp3) will be appended automatically.
+Leave the field empty for default.</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">•</property>
+ <property name="activates_default">False</property>
+ <signal name="changed" handler="on_output_file_changed" last_modification_time="Sun, 13 Mar 2011 20:02:34 GMT"/>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="Custom" id="custom6">
+ <property name="visible">True</property>
+ <property name="creation_function">title_formatting_help_link_create</property>
+ <property name="int1">0</property>
+ <property name="int2">0</property>
+ <property name="last_modification_time">Fri, 03 Dec 2010 20:39:24 GMT</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
<widget class="GtkHBox" id="hbox69">
<property name="visible">True</property>
<property name="homogeneous">False</property>
@@ -168,7 +257,7 @@
<child>
<widget class="GtkLabel" id="label104">
<property name="visible">True</property>
- <property name="label" translatable="yes">Encoder</property>
+ <property name="label" translatable="yes">Encoder:</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
@@ -260,7 +349,7 @@
<child>
<widget class="GtkLabel" id="label114">
<property name="visible">True</property>
- <property name="label" translatable="yes">DSP preset</property>
+ <property name="label" translatable="yes">DSP preset:</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
@@ -353,7 +442,7 @@
<child>
<widget class="GtkLabel" id="label116">
<property name="visible">True</property>
- <property name="label" translatable="yes">Number of threads</property>
+ <property name="label" translatable="yes">Number of threads:</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
@@ -386,6 +475,7 @@
<property name="snap_to_ticks">False</property>
<property name="wrap">False</property>
<property name="adjustment">1 0 100 1 10 0</property>
+ <signal name="changed" handler="on_numthreads_changed" last_modification_time="Sun, 13 Mar 2011 11:26:21 GMT"/>
</widget>
<packing>
<property name="padding">0</property>
@@ -410,7 +500,7 @@
<child>
<widget class="GtkLabel" id="label117">
<property name="visible">True</property>
- <property name="label" translatable="yes">Output sample format</property>
+ <property name="label" translatable="yes">Output sample format:</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
@@ -458,6 +548,130 @@
<property name="fill">True</property>
</packing>
</child>
+
+ <child>
+ <widget class="GtkHBox" id="hbox99">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">8</property>
+
+ <child>
+ <widget class="GtkLabel" id="label121">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">When file exists:</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkComboBox" id="overwrite_action">
+ <property name="visible">True</property>
+ <property name="items" translatable="yes">Prompt
+Overwrite</property>
+ <property name="add_tearoffs">False</property>
+ <property name="focus_on_click">True</property>
+ <signal name="changed" handler="on_overwrite_action_changed" last_modification_time="Sun, 13 Mar 2011 11:26:30 GMT"/>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkCheckButton" id="preserve_folders">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Preserve folder structure, starting from:</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_preserve_folders_toggled" last_modification_time="Sun, 13 Mar 2011 12:34:49 GMT"/>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHBox" id="hbox102">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkEntry" id="preserve_folder_root">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">•</property>
+ <property name="activates_default">False</property>
+ <signal name="changed" handler="on_preserve_folder_root_changed" last_modification_time="Sun, 13 Mar 2011 20:03:13 GMT"/>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="preserve_folder_browse">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">...</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <signal name="clicked" handler="on_preserve_folder_browse_clicked" last_modification_time="Sun, 13 Mar 2011 12:29:48 GMT"/>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
</widget>
<packing>
<property name="padding">0</property>
@@ -547,7 +761,7 @@
<child>
<widget class="GtkLabel" id="label105">
<property name="visible">True</property>
- <property name="label" translatable="yes">Title</property>
+ <property name="label" translatable="yes">Title:</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
@@ -604,7 +818,7 @@
<child>
<widget class="GtkLabel" id="label120">
<property name="visible">True</property>
- <property name="label" translatable="yes">Output file name</property>
+ <property name="label" translatable="yes">Output file extension:</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
@@ -627,44 +841,17 @@
</child>
<child>
- <widget class="GtkHBox" id="hbox97">
+ <widget class="GtkEntry" id="ext">
<property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
-
- <child>
- <widget class="GtkEntry" id="fname">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="editable">True</property>
- <property name="visibility">True</property>
- <property name="max_length">0</property>
- <property name="text" translatable="yes"></property>
- <property name="has_frame">True</property>
- <property name="invisible_char">●</property>
- <property name="activates_default">True</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
-
- <child>
- <widget class="Custom" id="custom5">
- <property name="visible">True</property>
- <property name="creation_function">title_formatting_help_link_create</property>
- <property name="int1">0</property>
- <property name="int2">0</property>
- <property name="last_modification_time">Fri, 03 Dec 2010 20:39:24 GMT</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
+ <property name="tooltip" translatable="yes">E.g. mp3</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">●</property>
+ <property name="activates_default">True</property>
</widget>
<packing>
<property name="padding">0</property>
@@ -689,7 +876,7 @@
<child>
<widget class="GtkLabel" id="label106">
<property name="visible">True</property>
- <property name="label" translatable="yes">Command line</property>
+ <property name="label" translatable="yes">Command line:</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
@@ -720,14 +907,17 @@
<child>
<widget class="GtkEntry" id="encoder">
<property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Example: lame - %o
+%i for input file, %o for output file, - for stdin</property>
<property name="can_focus">True</property>
<property name="editable">True</property>
<property name="visibility">True</property>
<property name="max_length">0</property>
- <property name="text" translatable="yes">encodername - %s</property>
+ <property name="text" translatable="yes"></property>
<property name="has_frame">True</property>
<property name="invisible_char">●</property>
<property name="activates_default">True</property>
+ <signal name="changed" handler="on_encoder_changed" last_modification_time="Sun, 13 Mar 2011 11:48:10 GMT"/>
</widget>
<packing>
<property name="padding">0</property>
@@ -774,7 +964,7 @@
<child>
<widget class="GtkLabel" id="label107">
<property name="visible">True</property>
- <property name="label" translatable="yes">Method</property>
+ <property name="label" translatable="yes">Method:</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
@@ -964,7 +1154,7 @@ Temporary file</property>
<child>
<widget class="GtkLabel" id="label118">
<property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Sample formats&lt;/b&gt;</property>
+ <property name="label" translatable="yes">&lt;b&gt;Sample formats supported by the encoder&lt;/b&gt;</property>
<property name="use_underline">False</property>
<property name="use_markup">True</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
diff --git a/plugins/converter/converter.h b/plugins/converter/converter.h
index f1fbfdea..87a595ee 100644
--- a/plugins/converter/converter.h
+++ b/plugins/converter/converter.h
@@ -43,7 +43,7 @@ typedef struct ddb_preset_s {
typedef struct ddb_encoder_preset_s {
char *title;
struct ddb_encoder_preset_s *next;
- char *fname;
+ char *ext;
char *encoder;
int method; // pipe or file
uint32_t formats; // combination of supported flags (FMT_*)
@@ -133,7 +133,7 @@ typedef struct {
/////////////////////////////
int
- (*convert) (DB_playItem_t *it, const char *outfolder, int selected_format, ddb_encoder_preset_t *encoder_preset, ddb_dsp_preset_t *dsp_preset, int *abort);
+ (*convert) (DB_playItem_t *it, const char *outfolder, const char *outfile, int selected_format, int preserve_folder_structure, const char *root_folder, ddb_encoder_preset_t *encoder_preset, ddb_dsp_preset_t *dsp_preset, int *abort);
} ddb_converter_t;
diff --git a/plugins/converter/convgui.c b/plugins/converter/convgui.c
index 3e1403cb..3f8c3145 100644
--- a/plugins/converter/convgui.c
+++ b/plugins/converter/convgui.c
@@ -39,6 +39,9 @@ typedef struct {
DB_playItem_t **convert_items;
int convert_items_count;
char *outfolder;
+ char *outfile;
+ int preserve_folder_structure;
+ char *preserve_root_folder;
int selected_format;
ddb_encoder_preset_t *encoder_preset;
ddb_dsp_preset_t *dsp_preset;
@@ -99,7 +102,7 @@ converter_worker (void *ctx) {
info->text = strdup (deadbeef->pl_find_meta (conv->convert_items[n], ":URI"));
g_idle_add (update_progress_cb, info);
- converter_plugin->convert (conv->convert_items[n], conv->outfolder, conv->selected_format, conv->encoder_preset, conv->dsp_preset, &conv->cancelled);
+ converter_plugin->convert (conv->convert_items[n], conv->outfolder, conv->outfile, conv->selected_format, conv->preserve_folder_structure, conv->preserve_root_folder, conv->encoder_preset, conv->dsp_preset, &conv->cancelled);
if (conv->cancelled) {
for (; n < conv->convert_items_count; n++) {
deadbeef->pl_item_unref (conv->convert_items[n]);
@@ -122,8 +125,9 @@ int
converter_process (converter_ctx_t *conv)
{
conv->outfolder = strdup (gtk_entry_get_text (GTK_ENTRY (lookup_widget (conv->converter, "output_folder"))));
- deadbeef->conf_set_str ("converter.output_folder", conv->outfolder);
- deadbeef->conf_save ();
+ conv->outfile = strdup (gtk_entry_get_text (GTK_ENTRY (lookup_widget (conv->converter, "output_file"))));
+ conv->preserve_folder_structure = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (lookup_widget (conv->converter, "preserve_folders")));
+ conv->preserve_root_folder = strdup (gtk_entry_get_text (GTK_ENTRY (lookup_widget (conv->converter, "preserve_root_folder"))));
GtkComboBox *combo = GTK_COMBO_BOX (lookup_widget (conv->converter, "encoder"));
int enc_preset = gtk_combo_box_get_active (combo);
@@ -212,6 +216,10 @@ converter_show (DB_plugin_action_t *act, DB_playItem_t *it) {
conv->converter = create_converterdlg ();
gtk_entry_set_text (GTK_ENTRY (lookup_widget (conv->converter, "output_folder")), deadbeef->conf_get_str ("converter.output_folder", ""));
+ gtk_entry_set_text (GTK_ENTRY (lookup_widget (conv->converter, "output_file")), deadbeef->conf_get_str ("converter.output_file", ""));
+ gtk_entry_set_text (GTK_ENTRY (lookup_widget (conv->converter, "preserve_folder_root")), deadbeef->conf_get_str ("converter.preserve_root_folder", ""));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (lookup_widget (conv->converter, "preserve_folders")), deadbeef->conf_get_int ("converter.preserve_folder_structure", 0));
+ gtk_combo_box_set_active (GTK_COMBO_BOX (lookup_widget (conv->converter, "overwrite_action")), deadbeef->conf_get_int ("converter.overwrite_action", 0));
GtkComboBox *combo;
// fill encoder presets
@@ -234,6 +242,9 @@ converter_show (DB_plugin_action_t *act, DB_playItem_t *it) {
combo = GTK_COMBO_BOX (lookup_widget (conv->converter, "output_format"));
gtk_combo_box_set_active (combo, deadbeef->conf_get_int ("converter.output_format", 0));
+ // overwrite action
+ combo = GTK_COMBO_BOX (lookup_widget (conv->converter, "overwrite_action"));
+ gtk_combo_box_set_active (combo, deadbeef->conf_get_int ("converter.overwrite_action", 0));
for (;;) {
int response = gtk_dialog_run (GTK_DIALOG (conv->converter));
@@ -311,6 +322,131 @@ on_converter_output_browse_clicked (GtkButton *button,
}
}
+
+void
+on_output_folder_changed (GtkEntry *entry,
+ gpointer user_data)
+{
+ deadbeef->conf_set_str ("converter.output_folder", gtk_entry_get_text (entry));
+ deadbeef->conf_save ();
+}
+
+
+void
+on_numthreads_changed (GtkEditable *editable,
+ gpointer user_data)
+{
+ deadbeef->conf_set_int ("converter.threads", gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (editable)));
+ deadbeef->conf_save ();
+}
+
+void
+on_overwrite_action_changed (GtkComboBox *combobox,
+ gpointer user_data)
+{
+ deadbeef->conf_set_int ("converter.overwrite_action", gtk_combo_box_get_active (combobox));
+ deadbeef->conf_save ();
+}
+
+void
+on_encoder_changed (GtkEditable *editable,
+ gpointer user_data)
+{
+ gtk_widget_set_has_tooltip (GTK_WIDGET (editable), TRUE);
+
+ char enc[2000];
+ const char *e = gtk_entry_get_text (GTK_ENTRY (editable));
+ char *o = enc;
+ *o = 0;
+ int len = sizeof (enc);
+ while (e && *e) {
+ if (len <= 0) {
+ break;
+ }
+ if (e[0] == '%' && e[1]) {
+ if (e[1] == 'o') {
+ int l = snprintf (o, len, "\"OUTPUT_FILE_NAME\"");
+ o += l;
+ len -= l;
+ }
+ else if (e[1] == 'i') {
+ int l = snprintf (o, len, "\"TEMP_FILE_NAME\"");
+ o += l;
+ len -= l;
+ }
+ else {
+ strncpy (o, e, 2);
+ o += 2;
+ len -= 2;
+ }
+ e += 2;
+ }
+ else {
+ *o++ = *e++;
+ *o = 0;
+ len--;
+ }
+ }
+
+ gtk_widget_set_tooltip_text (GTK_WIDGET (editable), enc);
+}
+
+void
+on_preserve_folder_browse_clicked (GtkButton *button,
+ gpointer user_data)
+{
+ GtkWidget *dlg = gtk_file_chooser_dialog_new (_("Select folder..."), GTK_WINDOW (current_ctx->converter), GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_OK, NULL);
+ gtk_window_set_transient_for (GTK_WINDOW (dlg), GTK_WINDOW (current_ctx->converter));
+
+ gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (dlg), FALSE);
+ // restore folder
+ gtk_file_chooser_set_current_folder_uri (GTK_FILE_CHOOSER (dlg), deadbeef->conf_get_str ("filechooser.lastdir", ""));
+ int response = gtk_dialog_run (GTK_DIALOG (dlg));
+ // store folder
+ gchar *folder = gtk_file_chooser_get_current_folder_uri (GTK_FILE_CHOOSER (dlg));
+ if (folder) {
+ deadbeef->conf_set_str ("filechooser.lastdir", folder);
+ g_free (folder);
+ deadbeef->sendmessage (M_CONFIG_CHANGED, 0, 0, 0);
+ }
+ if (response == GTK_RESPONSE_OK) {
+ folder = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dlg));
+ gtk_widget_destroy (dlg);
+ if (folder) {
+ GtkWidget *entry = lookup_widget (current_ctx->converter, "preserve_folder_root");
+ gtk_entry_set_text (GTK_ENTRY (entry), folder);
+ g_free (folder);
+ }
+ }
+ else {
+ gtk_widget_destroy (dlg);
+ }
+}
+
+void
+on_output_file_changed (GtkEntry *entry,
+ gpointer user_data)
+{
+ deadbeef->conf_set_str ("converter.output_file", gtk_entry_get_text (entry));
+ deadbeef->conf_save ();
+}
+
+void
+on_preserve_folders_toggled (GtkToggleButton *togglebutton,
+ gpointer user_data)
+{
+ deadbeef->conf_set_int ("converter.preserve_folder_structure", gtk_toggle_button_get_active (togglebutton));
+ deadbeef->conf_save ();
+}
+
+void
+on_preserve_folder_root_changed (GtkEntry *entry,
+ gpointer user_data)
+{
+ deadbeef->conf_set_str ("converter.preserve_root_folder", gtk_entry_get_text (entry));
+ deadbeef->conf_save ();
+}
+
DB_decoder_t *
plug_get_decoder_for_id (const char *id) {
DB_decoder_t **plugins = deadbeef->plug_get_decoder_list ();
@@ -325,7 +461,7 @@ plug_get_decoder_for_id (const char *id) {
void
init_encoder_preset_from_dlg (GtkWidget *dlg, ddb_encoder_preset_t *p) {
p->title = strdup (gtk_entry_get_text (GTK_ENTRY (lookup_widget (dlg, "title"))));
- p->fname = strdup (gtk_entry_get_text (GTK_ENTRY (lookup_widget (dlg, "fname"))));
+ p->ext = strdup (gtk_entry_get_text (GTK_ENTRY (lookup_widget (dlg, "ext"))));
p->encoder = strdup (gtk_entry_get_text (GTK_ENTRY (lookup_widget (dlg, "encoder"))));
int method_idx = gtk_combo_box_get_active (GTK_COMBO_BOX (lookup_widget (dlg, "method")));
switch (method_idx) {
@@ -367,8 +503,8 @@ edit_encoder_preset (char *title, GtkWidget *toplevel, int overwrite) {
if (p->title) {
gtk_entry_set_text (GTK_ENTRY (lookup_widget (dlg, "title")), p->title);
}
- if (p->fname) {
- gtk_entry_set_text (GTK_ENTRY (lookup_widget (dlg, "fname")), p->fname);
+ if (p->ext) {
+ gtk_entry_set_text (GTK_ENTRY (lookup_widget (dlg, "ext")), p->ext);
}
if (p->encoder) {
gtk_entry_set_text (GTK_ENTRY (lookup_widget (dlg, "encoder")), p->encoder);
@@ -407,10 +543,10 @@ edit_encoder_preset (char *title, GtkWidget *toplevel, int overwrite) {
}
}
free (old->title);
- free (old->fname);
+ free (old->ext);
free (old->encoder);
old->title = p->title;
- old->fname = p->fname;
+ old->ext = p->ext;
old->encoder = p->encoder;
old->method = p->method;
old->formats = p->formats;
diff --git a/plugins/converter/interface.c b/plugins/converter/interface.c
index dec1e948..e217bf87 100644
--- a/plugins/converter/interface.c
+++ b/plugins/converter/interface.c
@@ -37,6 +37,11 @@ create_converterdlg (void)
GtkWidget *hbox68;
GtkWidget *output_folder;
GtkWidget *converter_output_browse;
+ GtkWidget *hbox100;
+ GtkWidget *label122;
+ GtkWidget *hbox101;
+ GtkWidget *output_file;
+ GtkWidget *custom6;
GtkWidget *hbox69;
GtkWidget *label104;
GtkWidget *hbox90;
@@ -56,9 +61,19 @@ create_converterdlg (void)
GtkWidget *hbox89;
GtkWidget *label117;
GtkWidget *output_format;
+ GtkWidget *hbox99;
+ GtkWidget *label121;
+ GtkWidget *overwrite_action;
+ GtkWidget *preserve_folders;
+ GtkWidget *hbox102;
+ GtkWidget *preserve_folder_root;
+ GtkWidget *preserve_folder_browse;
GtkWidget *dialog_action_area5;
GtkWidget *converter_cancel;
GtkWidget *converter_ok;
+ GtkTooltips *tooltips;
+
+ tooltips = gtk_tooltips_new ();
converterdlg = gtk_dialog_new ();
gtk_window_set_title (GTK_WINDOW (converterdlg), _("Converter"));
@@ -79,7 +94,7 @@ create_converterdlg (void)
gtk_widget_show (hbox67);
gtk_box_pack_start (GTK_BOX (vbox26), hbox67, FALSE, TRUE, 0);
- label103 = gtk_label_new (_("Output folder"));
+ label103 = gtk_label_new (_("Output folder:"));
gtk_widget_show (label103);
gtk_box_pack_start (GTK_BOX (hbox67), label103, FALSE, FALSE, 0);
@@ -96,11 +111,35 @@ create_converterdlg (void)
gtk_widget_show (converter_output_browse);
gtk_box_pack_start (GTK_BOX (hbox68), converter_output_browse, FALSE, FALSE, 0);
+ hbox100 = gtk_hbox_new (FALSE, 8);
+ gtk_widget_show (hbox100);
+ gtk_box_pack_start (GTK_BOX (vbox26), hbox100, TRUE, TRUE, 0);
+
+ label122 = gtk_label_new (_("Output file name:"));
+ gtk_widget_show (label122);
+ gtk_box_pack_start (GTK_BOX (hbox100), label122, FALSE, FALSE, 0);
+
+ hbox101 = gtk_hbox_new (FALSE, 0);
+ gtk_widget_show (hbox101);
+ gtk_box_pack_start (GTK_BOX (hbox100), hbox101, TRUE, TRUE, 0);
+
+ output_file = gtk_entry_new ();
+ gtk_widget_show (output_file);
+ gtk_box_pack_start (GTK_BOX (hbox101), output_file, TRUE, TRUE, 0);
+ gtk_tooltips_set_tip (tooltips, output_file, _("Extension (e.g. .mp3) will be appended automatically.\nLeave the field empty for default."), NULL);
+ gtk_entry_set_invisible_char (GTK_ENTRY (output_file), 8226);
+
+ custom6 = title_formatting_help_link_create ("custom6", "", "", 0, 0);
+ gtk_widget_show (custom6);
+ gtk_box_pack_start (GTK_BOX (hbox101), custom6, TRUE, TRUE, 0);
+ GTK_WIDGET_UNSET_FLAGS (custom6, GTK_CAN_FOCUS);
+ GTK_WIDGET_UNSET_FLAGS (custom6, GTK_CAN_DEFAULT);
+
hbox69 = gtk_hbox_new (FALSE, 8);
gtk_widget_show (hbox69);
gtk_box_pack_start (GTK_BOX (vbox26), hbox69, FALSE, FALSE, 0);
- label104 = gtk_label_new (_("Encoder"));
+ label104 = gtk_label_new (_("Encoder:"));
gtk_widget_show (label104);
gtk_box_pack_start (GTK_BOX (hbox69), label104, FALSE, FALSE, 0);
@@ -124,7 +163,7 @@ create_converterdlg (void)
gtk_widget_show (hbox86);
gtk_box_pack_start (GTK_BOX (vbox26), hbox86, FALSE, TRUE, 0);
- label114 = gtk_label_new (_("DSP preset"));
+ label114 = gtk_label_new (_("DSP preset:"));
gtk_widget_show (label114);
gtk_box_pack_start (GTK_BOX (hbox86), label114, FALSE, FALSE, 0);
@@ -148,7 +187,7 @@ create_converterdlg (void)
gtk_widget_show (hbox88);
gtk_box_pack_start (GTK_BOX (vbox26), hbox88, FALSE, TRUE, 0);
- label116 = gtk_label_new (_("Number of threads"));
+ label116 = gtk_label_new (_("Number of threads:"));
gtk_widget_show (label116);
gtk_box_pack_start (GTK_BOX (hbox88), label116, FALSE, FALSE, 0);
@@ -161,7 +200,7 @@ create_converterdlg (void)
gtk_widget_show (hbox89);
gtk_box_pack_start (GTK_BOX (vbox26), hbox89, FALSE, TRUE, 0);
- label117 = gtk_label_new (_("Output sample format"));
+ label117 = gtk_label_new (_("Output sample format:"));
gtk_widget_show (label117);
gtk_box_pack_start (GTK_BOX (hbox89), label117, FALSE, FALSE, 0);
@@ -175,6 +214,37 @@ create_converterdlg (void)
gtk_combo_box_append_text (GTK_COMBO_BOX (output_format), _("32 bit signed int"));
gtk_combo_box_append_text (GTK_COMBO_BOX (output_format), _("32 bit float"));
+ hbox99 = gtk_hbox_new (FALSE, 8);
+ gtk_widget_show (hbox99);
+ gtk_box_pack_start (GTK_BOX (vbox26), hbox99, TRUE, TRUE, 0);
+
+ label121 = gtk_label_new (_("When file exists:"));
+ gtk_widget_show (label121);
+ gtk_box_pack_start (GTK_BOX (hbox99), label121, FALSE, FALSE, 0);
+
+ overwrite_action = gtk_combo_box_new_text ();
+ gtk_widget_show (overwrite_action);
+ gtk_box_pack_start (GTK_BOX (hbox99), overwrite_action, TRUE, TRUE, 0);
+ gtk_combo_box_append_text (GTK_COMBO_BOX (overwrite_action), _("Prompt"));
+ gtk_combo_box_append_text (GTK_COMBO_BOX (overwrite_action), _("Overwrite"));
+
+ preserve_folders = gtk_check_button_new_with_mnemonic (_("Preserve folder structure, starting from:"));
+ gtk_widget_show (preserve_folders);
+ gtk_box_pack_start (GTK_BOX (vbox26), preserve_folders, FALSE, FALSE, 0);
+
+ hbox102 = gtk_hbox_new (FALSE, 0);
+ gtk_widget_show (hbox102);
+ gtk_box_pack_start (GTK_BOX (vbox26), hbox102, TRUE, TRUE, 0);
+
+ preserve_folder_root = gtk_entry_new ();
+ gtk_widget_show (preserve_folder_root);
+ gtk_box_pack_start (GTK_BOX (hbox102), preserve_folder_root, TRUE, TRUE, 0);
+ gtk_entry_set_invisible_char (GTK_ENTRY (preserve_folder_root), 8226);
+
+ preserve_folder_browse = gtk_button_new_with_mnemonic (_("..."));
+ gtk_widget_show (preserve_folder_browse);
+ gtk_box_pack_start (GTK_BOX (hbox102), preserve_folder_browse, FALSE, FALSE, 0);
+
dialog_action_area5 = GTK_DIALOG (converterdlg)->action_area;
gtk_widget_show (dialog_action_area5);
gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area5), GTK_BUTTONBOX_END);
@@ -189,9 +259,15 @@ create_converterdlg (void)
gtk_dialog_add_action_widget (GTK_DIALOG (converterdlg), converter_ok, GTK_RESPONSE_OK);
GTK_WIDGET_SET_FLAGS (converter_ok, GTK_CAN_DEFAULT);
+ g_signal_connect ((gpointer) output_folder, "changed",
+ G_CALLBACK (on_output_folder_changed),
+ NULL);
g_signal_connect ((gpointer) converter_output_browse, "clicked",
G_CALLBACK (on_converter_output_browse_clicked),
NULL);
+ g_signal_connect ((gpointer) output_file, "changed",
+ G_CALLBACK (on_output_file_changed),
+ NULL);
g_signal_connect ((gpointer) encoder, "changed",
G_CALLBACK (on_converter_encoder_changed),
NULL);
@@ -204,9 +280,24 @@ create_converterdlg (void)
g_signal_connect ((gpointer) edit_dsp_presets, "clicked",
G_CALLBACK (on_edit_dsp_presets_clicked),
NULL);
+ g_signal_connect ((gpointer) numthreads, "changed",
+ G_CALLBACK (on_numthreads_changed),
+ NULL);
g_signal_connect ((gpointer) output_format, "changed",
G_CALLBACK (on_converter_output_format_changed),
NULL);
+ g_signal_connect ((gpointer) overwrite_action, "changed",
+ G_CALLBACK (on_overwrite_action_changed),
+ NULL);
+ g_signal_connect ((gpointer) preserve_folders, "toggled",
+ G_CALLBACK (on_preserve_folders_toggled),
+ NULL);
+ g_signal_connect ((gpointer) preserve_folder_root, "changed",
+ G_CALLBACK (on_preserve_folder_root_changed),
+ NULL);
+ g_signal_connect ((gpointer) preserve_folder_browse, "clicked",
+ G_CALLBACK (on_preserve_folder_browse_clicked),
+ NULL);
/* Store pointers to all widgets, for use by lookup_widget(). */
GLADE_HOOKUP_OBJECT_NO_REF (converterdlg, converterdlg, "converterdlg");
@@ -217,6 +308,11 @@ create_converterdlg (void)
GLADE_HOOKUP_OBJECT (converterdlg, hbox68, "hbox68");
GLADE_HOOKUP_OBJECT (converterdlg, output_folder, "output_folder");
GLADE_HOOKUP_OBJECT (converterdlg, converter_output_browse, "converter_output_browse");
+ GLADE_HOOKUP_OBJECT (converterdlg, hbox100, "hbox100");
+ GLADE_HOOKUP_OBJECT (converterdlg, label122, "label122");
+ GLADE_HOOKUP_OBJECT (converterdlg, hbox101, "hbox101");
+ GLADE_HOOKUP_OBJECT (converterdlg, output_file, "output_file");
+ GLADE_HOOKUP_OBJECT (converterdlg, custom6, "custom6");
GLADE_HOOKUP_OBJECT (converterdlg, hbox69, "hbox69");
GLADE_HOOKUP_OBJECT (converterdlg, label104, "label104");
GLADE_HOOKUP_OBJECT (converterdlg, hbox90, "hbox90");
@@ -235,9 +331,17 @@ create_converterdlg (void)
GLADE_HOOKUP_OBJECT (converterdlg, hbox89, "hbox89");
GLADE_HOOKUP_OBJECT (converterdlg, label117, "label117");
GLADE_HOOKUP_OBJECT (converterdlg, output_format, "output_format");
+ GLADE_HOOKUP_OBJECT (converterdlg, hbox99, "hbox99");
+ GLADE_HOOKUP_OBJECT (converterdlg, label121, "label121");
+ GLADE_HOOKUP_OBJECT (converterdlg, overwrite_action, "overwrite_action");
+ GLADE_HOOKUP_OBJECT (converterdlg, preserve_folders, "preserve_folders");
+ GLADE_HOOKUP_OBJECT (converterdlg, hbox102, "hbox102");
+ GLADE_HOOKUP_OBJECT (converterdlg, preserve_folder_root, "preserve_folder_root");
+ GLADE_HOOKUP_OBJECT (converterdlg, preserve_folder_browse, "preserve_folder_browse");
GLADE_HOOKUP_OBJECT_NO_REF (converterdlg, dialog_action_area5, "dialog_action_area5");
GLADE_HOOKUP_OBJECT (converterdlg, converter_cancel, "converter_cancel");
GLADE_HOOKUP_OBJECT (converterdlg, converter_ok, "converter_ok");
+ GLADE_HOOKUP_OBJECT_NO_REF (converterdlg, tooltips, "tooltips");
return converterdlg;
}
@@ -253,9 +357,7 @@ create_convpreset_editor (void)
GtkWidget *title;
GtkWidget *hbox96;
GtkWidget *label120;
- GtkWidget *hbox97;
- GtkWidget *fname;
- GtkWidget *custom5;
+ GtkWidget *ext;
GtkWidget *hbox72;
GtkWidget *label106;
GtkWidget *hbox93;
@@ -276,6 +378,9 @@ create_convpreset_editor (void)
GtkWidget *dialog_action_area6;
GtkWidget *convpreset_cancel;
GtkWidget *convpreset_ok;
+ GtkTooltips *tooltips;
+
+ tooltips = gtk_tooltips_new ();
convpreset_editor = gtk_dialog_new ();
gtk_window_set_title (GTK_WINDOW (convpreset_editor), _("Edit Encoder Preset"));
@@ -294,7 +399,7 @@ create_convpreset_editor (void)
gtk_widget_show (hbox70);
gtk_box_pack_start (GTK_BOX (vbox27), hbox70, FALSE, TRUE, 0);
- label105 = gtk_label_new (_("Title"));
+ label105 = gtk_label_new (_("Title:"));
gtk_widget_show (label105);
gtk_box_pack_start (GTK_BOX (hbox70), label105, FALSE, FALSE, 0);
@@ -309,31 +414,22 @@ create_convpreset_editor (void)
gtk_widget_show (hbox96);
gtk_box_pack_start (GTK_BOX (vbox27), hbox96, TRUE, TRUE, 0);
- label120 = gtk_label_new (_("Output file name"));
+ label120 = gtk_label_new (_("Output file extension:"));
gtk_widget_show (label120);
gtk_box_pack_start (GTK_BOX (hbox96), label120, FALSE, FALSE, 0);
- hbox97 = gtk_hbox_new (FALSE, 0);
- gtk_widget_show (hbox97);
- gtk_box_pack_start (GTK_BOX (hbox96), hbox97, TRUE, TRUE, 0);
-
- fname = gtk_entry_new ();
- gtk_widget_show (fname);
- gtk_box_pack_start (GTK_BOX (hbox97), fname, TRUE, TRUE, 0);
- gtk_entry_set_invisible_char (GTK_ENTRY (fname), 9679);
- gtk_entry_set_activates_default (GTK_ENTRY (fname), TRUE);
-
- custom5 = title_formatting_help_link_create ("custom5", "", "", 0, 0);
- gtk_widget_show (custom5);
- gtk_box_pack_start (GTK_BOX (hbox97), custom5, TRUE, TRUE, 0);
- GTK_WIDGET_UNSET_FLAGS (custom5, GTK_CAN_FOCUS);
- GTK_WIDGET_UNSET_FLAGS (custom5, GTK_CAN_DEFAULT);
+ ext = gtk_entry_new ();
+ gtk_widget_show (ext);
+ gtk_box_pack_start (GTK_BOX (hbox96), ext, TRUE, TRUE, 0);
+ gtk_tooltips_set_tip (tooltips, ext, _("E.g. mp3"), NULL);
+ gtk_entry_set_invisible_char (GTK_ENTRY (ext), 9679);
+ gtk_entry_set_activates_default (GTK_ENTRY (ext), TRUE);
hbox72 = gtk_hbox_new (FALSE, 8);
gtk_widget_show (hbox72);
gtk_box_pack_start (GTK_BOX (vbox27), hbox72, FALSE, TRUE, 0);
- label106 = gtk_label_new (_("Command line"));
+ label106 = gtk_label_new (_("Command line:"));
gtk_widget_show (label106);
gtk_box_pack_start (GTK_BOX (hbox72), label106, FALSE, FALSE, 0);
@@ -344,7 +440,7 @@ create_convpreset_editor (void)
encoder = gtk_entry_new ();
gtk_widget_show (encoder);
gtk_box_pack_start (GTK_BOX (hbox93), encoder, TRUE, TRUE, 0);
- gtk_entry_set_text (GTK_ENTRY (encoder), _("encodername - %s"));
+ gtk_tooltips_set_tip (tooltips, encoder, _("Example: lame - %o\n%i for input file, %o for output file, - for stdin"), NULL);
gtk_entry_set_invisible_char (GTK_ENTRY (encoder), 9679);
gtk_entry_set_activates_default (GTK_ENTRY (encoder), TRUE);
@@ -358,7 +454,7 @@ create_convpreset_editor (void)
gtk_widget_show (hbox73);
gtk_box_pack_start (GTK_BOX (vbox27), hbox73, FALSE, TRUE, 0);
- label107 = gtk_label_new (_("Method"));
+ label107 = gtk_label_new (_("Method:"));
gtk_widget_show (label107);
gtk_box_pack_start (GTK_BOX (hbox73), label107, FALSE, FALSE, 0);
@@ -414,7 +510,7 @@ create_convpreset_editor (void)
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
- label118 = gtk_label_new (_("<b>Sample formats</b>"));
+ label118 = gtk_label_new (_("<b>Sample formats supported by the encoder</b>"));
gtk_widget_show (label118);
gtk_frame_set_label_widget (GTK_FRAME (frame8), label118);
gtk_label_set_use_markup (GTK_LABEL (label118), TRUE);
@@ -433,6 +529,10 @@ create_convpreset_editor (void)
gtk_dialog_add_action_widget (GTK_DIALOG (convpreset_editor), convpreset_ok, GTK_RESPONSE_OK);
GTK_WIDGET_SET_FLAGS (convpreset_ok, GTK_CAN_DEFAULT);
+ g_signal_connect ((gpointer) encoder, "changed",
+ G_CALLBACK (on_encoder_changed),
+ NULL);
+
/* Store pointers to all widgets, for use by lookup_widget(). */
GLADE_HOOKUP_OBJECT_NO_REF (convpreset_editor, convpreset_editor, "convpreset_editor");
GLADE_HOOKUP_OBJECT_NO_REF (convpreset_editor, dialog_vbox7, "dialog_vbox7");
@@ -442,9 +542,7 @@ create_convpreset_editor (void)
GLADE_HOOKUP_OBJECT (convpreset_editor, title, "title");
GLADE_HOOKUP_OBJECT (convpreset_editor, hbox96, "hbox96");
GLADE_HOOKUP_OBJECT (convpreset_editor, label120, "label120");
- GLADE_HOOKUP_OBJECT (convpreset_editor, hbox97, "hbox97");
- GLADE_HOOKUP_OBJECT (convpreset_editor, fname, "fname");
- GLADE_HOOKUP_OBJECT (convpreset_editor, custom5, "custom5");
+ GLADE_HOOKUP_OBJECT (convpreset_editor, ext, "ext");
GLADE_HOOKUP_OBJECT (convpreset_editor, hbox72, "hbox72");
GLADE_HOOKUP_OBJECT (convpreset_editor, label106, "label106");
GLADE_HOOKUP_OBJECT (convpreset_editor, hbox93, "hbox93");
@@ -465,6 +563,7 @@ create_convpreset_editor (void)
GLADE_HOOKUP_OBJECT_NO_REF (convpreset_editor, dialog_action_area6, "dialog_action_area6");
GLADE_HOOKUP_OBJECT (convpreset_editor, convpreset_cancel, "convpreset_cancel");
GLADE_HOOKUP_OBJECT (convpreset_editor, convpreset_ok, "convpreset_ok");
+ GLADE_HOOKUP_OBJECT_NO_REF (convpreset_editor, tooltips, "tooltips");
return convpreset_editor;
}