Skip to content

Commit 606d7b2

Browse files
gtkui: use scriptable UI for dsp presets in preferences window
1 parent 6c52d0e commit 606d7b2

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+1092
-1222
lines changed

configure.ac

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -856,7 +856,7 @@ AS_IF([test "${enable_soundtouch}" != "no"], [
856856
HAVE_SOUNDTOUCH=yes
857857
])
858858

859-
PLUGINS_DIRS="plugins/liboggedit plugins/libparser plugins/lastfm plugins/mp3 plugins/vorbis plugins/opus plugins/flac plugins/wavpack plugins/sndfile plugins/vfs_curl plugins/cdda plugins/gtkui plugins/alsa plugins/ffmpeg plugins/hotkeys plugins/oss plugins/artwork plugins/adplug plugins/ffap plugins/sid plugins/nullout plugins/supereq plugins/vtx plugins/gme plugins/pulse plugins/notify plugins/musepack plugins/wildmidi plugins/tta plugins/dca plugins/aac plugins/mms plugins/shellexec plugins/shellexecui plugins/dsp_libsrc plugins/m3u plugins/vfs_zip plugins/converter plugins/dumb plugins/shn plugins/psf plugins/mono2stereo plugins/alac plugins/wma plugins/pltbrowser plugins/coreaudio plugins/sc68 plugins/rg_scanner plugins/soundtouch plugins/medialib plugins/lyrics"
859+
PLUGINS_DIRS="plugins/liboggedit plugins/lastfm plugins/mp3 plugins/vorbis plugins/opus plugins/flac plugins/wavpack plugins/sndfile plugins/vfs_curl plugins/cdda plugins/gtkui plugins/alsa plugins/ffmpeg plugins/hotkeys plugins/oss plugins/artwork plugins/adplug plugins/ffap plugins/sid plugins/nullout plugins/supereq plugins/vtx plugins/gme plugins/pulse plugins/notify plugins/musepack plugins/wildmidi plugins/tta plugins/dca plugins/aac plugins/mms plugins/shellexec plugins/shellexecui plugins/dsp_libsrc plugins/m3u plugins/vfs_zip plugins/converter plugins/dumb plugins/shn plugins/psf plugins/mono2stereo plugins/alac plugins/wma plugins/pltbrowser plugins/coreaudio plugins/sc68 plugins/rg_scanner plugins/soundtouch plugins/medialib plugins/lyrics"
860860

861861
AM_CONDITIONAL(APE_USE_YASM, test "x$APE_USE_YASM" = "xyes")
862862
AM_CONDITIONAL(HAVE_VORBIS, test "x$HAVE_VORBISPLUGIN" = "xyes")
@@ -944,7 +944,6 @@ external/ddb_output_pw/Makefile
944944
pixmaps/Makefile
945945
icons/Makefile
946946
plugins/liboggedit/Makefile
947-
plugins/libparser/Makefile
948947
plugins/gme/Makefile
949948
plugins/alsa/Makefile
950949
plugins/hotkeys/Makefile

include/deadbeef/deadbeef.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1807,8 +1807,12 @@ typedef struct {
18071807
#endif
18081808

18091809
#if (DDB_API_LEVEL >= 18)
1810-
// sort using title formatting v2, with more direct control over tf evaluation
1810+
/// sort using title formatting v2, with more direct control over tf evaluation
18111811
void (*plt_sort_v3) (ddb_tf_context_t *tf_ctx, const char *tf_bytecode, int iter, int id, int order);
1812+
1813+
/// Get the root of scriptable tree, which contains dsp and encoder presets.
1814+
/// This is used by GUI plugins for preset editing.
1815+
ddb_scriptable_item_t * (*get_shared_scriptable_root)(void);
18121816
#endif
18131817
} DB_functions_t;
18141818

osx/deadbeef.xcodeproj/project.pbxproj

Lines changed: 103 additions & 48 deletions
Large diffs are not rendered by default.

plugins/cocoaui/ConverterWindowController.m

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ - (void)windowDidLoad {
115115
[self initializeWidgets];
116116
self.window.delegate = self;
117117

118-
self.dspPresetsDataSource = [ScriptableTableDataSource dataSourceWithScriptable:scriptableDspRoot(scriptableRootShared())];
118+
self.dspPresetsDataSource = [ScriptableTableDataSource dataSourceWithScriptable:scriptableDspRoot(deadbeef->get_shared_scriptable_root())];
119119
self.dspSelectViewController.dataSource = self.dspPresetsDataSource;
120120
self.dspSelectViewController = [ScriptableSelectViewController new];
121121
self.dspSelectViewController.view.frame = self.dspPresetSelectorContainer.bounds;
@@ -126,12 +126,12 @@ - (void)windowDidLoad {
126126

127127
char dsp_preset_name[100];
128128
deadbeef->conf_get_str ("converter.dsp_preset_name", "", dsp_preset_name, sizeof(dsp_preset_name));
129-
scriptableItem_t *dspPreset = scriptableItemSubItemForName(scriptableDspRoot(scriptableRootShared()), dsp_preset_name);
129+
scriptableItem_t *dspPreset = scriptableItemSubItemForName(scriptableDspRoot(deadbeef->get_shared_scriptable_root()), dsp_preset_name);
130130
if (dspPreset) {
131131
[self.dspSelectViewController selectItem:dspPreset];
132132
}
133133

134-
self.encoderPresetsDataSource = [ScriptableTableDataSource dataSourceWithScriptable:scriptableEncoderRoot(scriptableRootShared())];
134+
self.encoderPresetsDataSource = [ScriptableTableDataSource dataSourceWithScriptable:scriptableEncoderRoot(deadbeef->get_shared_scriptable_root())];
135135
self.encoderSelectViewController.dataSource = self.dspPresetsDataSource;
136136

137137
self.encoderSelectViewController = [ScriptableSelectViewController new];
@@ -143,7 +143,7 @@ - (void)windowDidLoad {
143143

144144
char enc_preset_name[100];
145145
deadbeef->conf_get_str ("converter.encoder_preset_name", "", enc_preset_name, sizeof(enc_preset_name));
146-
scriptableItem_t *encPreset = scriptableItemSubItemForName(scriptableEncoderRoot(scriptableRootShared()), enc_preset_name);
146+
scriptableItem_t *encPreset = scriptableItemSubItemForName(scriptableEncoderRoot(deadbeef->get_shared_scriptable_root()), enc_preset_name);
147147
if (encPreset) {
148148
[self.encoderSelectViewController selectItem:encPreset];
149149
}
@@ -220,7 +220,7 @@ -(void)updateFilenamesPreview {
220220
if (selectedEncoderPreset == -1) {
221221
return;
222222
}
223-
scriptableItem_t *preset = scriptableItemChildAtIndex(scriptableEncoderRoot(scriptableRootShared()), (unsigned int)selectedEncoderPreset);
223+
scriptableItem_t *preset = scriptableItemChildAtIndex(scriptableEncoderRoot(deadbeef->get_shared_scriptable_root()), (unsigned int)selectedEncoderPreset);
224224
ddb_encoder_preset_t *encoder_preset = self.converter_plugin->encoder_preset_alloc();
225225
scriptableEncoderPresetToConverterEncoderPreset(preset, encoder_preset);
226226

@@ -402,7 +402,7 @@ - (IBAction)okAction:(id)sender {
402402

403403
NSInteger selectedEncoderPreset = self.encoderSelectViewController.indexOfSelectedItem;
404404
if (selectedEncoderPreset != -1) {
405-
scriptableItem_t *preset = scriptableItemChildAtIndex(scriptableEncoderRoot(scriptableRootShared()), (unsigned int)selectedEncoderPreset);
405+
scriptableItem_t *preset = scriptableItemChildAtIndex(scriptableEncoderRoot(deadbeef->get_shared_scriptable_root()), (unsigned int)selectedEncoderPreset);
406406
self.encoder_preset = self.converter_plugin->encoder_preset_alloc();
407407
scriptableEncoderPresetToConverterEncoderPreset(preset, self.encoder_preset);
408408
}
@@ -422,7 +422,7 @@ - (IBAction)okAction:(id)sender {
422422

423423
NSInteger selectedDspPreset = self.dspSelectViewController.indexOfSelectedItem;
424424
if (selectedDspPreset != -1) {
425-
scriptableItem_t *preset = scriptableItemChildAtIndex(scriptableDspRoot(scriptableRootShared()), (unsigned int)selectedDspPreset);
425+
scriptableItem_t *preset = scriptableItemChildAtIndex(scriptableDspRoot(deadbeef->get_shared_scriptable_root()), (unsigned int)selectedDspPreset);
426426
ddb_dsp_context_t *chain = scriptableDspConfigToDspChain(preset);
427427
if (chain) {
428428
self.dsp_preset = self.converter_plugin->dsp_preset_alloc ();
@@ -604,27 +604,27 @@ + (void)cleanup {
604604
#pragma mark - ScriptableSelectDelegate
605605

606606
- (void)scriptableSelectItemSelected:(nonnull scriptableItem_t *)item {
607-
if (scriptableItemParent(item) == scriptableEncoderRoot(scriptableRootShared())) {
607+
if (scriptableItemParent(item) == scriptableEncoderRoot(deadbeef->get_shared_scriptable_root())) {
608608
const char *name = scriptableItemPropertyValueForKey(item, "name");
609609
deadbeef->conf_set_str ("converter.encoder_preset_name", name);
610610
[self updateFilenamesPreview];
611611
}
612-
else if (scriptableItemParent(item) == scriptableDspRoot(scriptableRootShared())) {
612+
else if (scriptableItemParent(item) == scriptableDspRoot(deadbeef->get_shared_scriptable_root())) {
613613
const char *name = scriptableItemPropertyValueForKey(item, "name");
614614
deadbeef->conf_set_str ("converter.dsp_preset_name", name);
615615
}
616616
}
617617

618618
- (void)scriptableItemDidChange:(scriptableItem_t * _Nonnull)scriptable change:(ScriptableItemChange)change {
619-
if (scriptable == scriptableEncoderRoot(scriptableRootShared())) {
619+
if (scriptable == scriptableEncoderRoot(deadbeef->get_shared_scriptable_root())) {
620620
NSInteger selectedEncPresetIndex = self.encoderSelectViewController.indexOfSelectedItem;
621-
scriptableItem_t *selectedEncPreset = scriptableItemChildAtIndex(scriptableEncoderRoot(scriptableRootShared()), (unsigned int)selectedEncPresetIndex);
621+
scriptableItem_t *selectedEncPreset = scriptableItemChildAtIndex(scriptableEncoderRoot(deadbeef->get_shared_scriptable_root()), (unsigned int)selectedEncPresetIndex);
622622
[self scriptableSelectItemSelected:selectedEncPreset];
623623
[self.encoderSelectViewController reloadData];
624624
}
625-
else if (scriptable == scriptableDspRoot(scriptableRootShared())) {
625+
else if (scriptable == scriptableDspRoot(deadbeef->get_shared_scriptable_root())) {
626626
NSInteger selectedDspPresetIndex = self.dspSelectViewController.indexOfSelectedItem;
627-
scriptableItem_t *selectedDspPreset = scriptableItemChildAtIndex(scriptableDspRoot(scriptableRootShared()), (unsigned int)selectedDspPresetIndex);
627+
scriptableItem_t *selectedDspPreset = scriptableItemChildAtIndex(scriptableDspRoot(deadbeef->get_shared_scriptable_root()), (unsigned int)selectedDspPresetIndex);
628628
[self scriptableSelectItemSelected:selectedDspPreset];
629629
[self.dspSelectViewController reloadData];
630630
}

plugins/cocoaui/Preferences/DspPreferencesViewController.m

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ - (void)viewDidLoad {
5858
_currentDspChain = scriptableDspPresetFromDspChain (deadbeef->streamer_get_dsp_chain ());
5959
self.dspChainDataSource = [ScriptableTableDataSource dataSourceWithScriptable:_currentDspChain];
6060

61-
self.dspPresetsDataSource = [ScriptableTableDataSource dataSourceWithScriptable:scriptableDspRoot(scriptableRootShared())];
61+
self.dspPresetsDataSource = [ScriptableTableDataSource dataSourceWithScriptable:scriptableDspRoot(deadbeef->get_shared_scriptable_root())];
6262

6363
// preset list and browse button
6464
self.dspSelectViewController = [ScriptableSelectViewController new];
@@ -101,7 +101,7 @@ - (void)segmentedControlAction:(NSSegmentedControl *)sender {
101101
if (returnCode == NSModalResponseOK) {
102102
const char *name = self.dspPresetNameTextField.stringValue.UTF8String;
103103
scriptableItem_t *preset = scriptableItemClone (self.dspChainDataSource.scriptable);
104-
scriptableItem_t *presets = scriptableDspRoot(scriptableRootShared());
104+
scriptableItem_t *presets = scriptableDspRoot(deadbeef->get_shared_scriptable_root());
105105
scriptableItemSetUniqueNameUsingPrefixAndRoot(preset, name, presets);
106106
scriptableItemAddSubItem(presets, preset);
107107
[self.dspSelectViewController reloadData];
@@ -111,11 +111,11 @@ - (void)segmentedControlAction:(NSSegmentedControl *)sender {
111111

112112
- (IBAction)presetNameOK:(id)sender {
113113
const char *name = self.dspPresetNameTextField.stringValue.UTF8String;
114-
if (scriptableItemContainsSubItemWithName(scriptableDspRoot(scriptableRootShared()), name)) {
114+
if (scriptableItemContainsSubItemWithName(scriptableDspRoot(deadbeef->get_shared_scriptable_root()), name)) {
115115
[ScriptableErrorViewer.sharedInstance displayDuplicateNameError];
116116
return;
117117
}
118-
if (!scriptableItemIsSubItemNameAllowed(scriptableDspRoot(scriptableRootShared()), name)) {
118+
if (!scriptableItemIsSubItemNameAllowed(scriptableDspRoot(deadbeef->get_shared_scriptable_root()), name)) {
119119
[ScriptableErrorViewer.sharedInstance displayInvalidNameError];
120120
return;
121121
}

plugins/gtkui/Makefile.am

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ GTKUI_SOURCES = \
6060
prefwin/prefwinplugins.c prefwin/prefwinplugins.h\
6161
prefwin/prefwinsound.c prefwin/prefwinsound.h\
6262
scriptable/gtkScriptable.c scriptable/gtkScriptable.h\
63+
scriptable/gtkScriptablePropertySheetEditViewController.c scriptable/gtkScriptablePropertySheetEditViewController.h\
64+
scriptable/gtkScriptablePropertySheetEditWindowController.c scriptable/gtkScriptablePropertySheetEditWindowController.h\
6365
scriptable/gtkScriptableListEditViewController.c scriptable/gtkScriptableListEditViewController.h\
6466
scriptable/gtkScriptableListEditWindowController.c scriptable/gtkScriptableListEditWindowController.h\
6567
scriptable/gtkScriptableSelectViewController.c scriptable/gtkScriptableSelectViewController.h\
@@ -103,7 +105,7 @@ GTKUI_SOURCES_GTK2 = $(GTKUI_SOURCES)
103105
ddb_gui_GTK2_la_SOURCES = $(GTKUI_SOURCES_GTK2)
104106
ddb_gui_GTK2_la_LDFLAGS = -module -avoid-version -lm
105107

106-
ddb_gui_GTK2_la_LIBADD = $(LDADD) $(GTK2_DEPS_LIBS) $(SM_LIBADD) ../libparser/libparser.la ../../shared/libtrkpropertiesutil.la ../../shared/libeqpreset.la ../../shared/libdeletefromdisk.la ../../shared/libtftintutil.la ../../shared/analyzer/libanalyzer.la ../../shared/scope/libscope.la ../../shared/scriptable/libscriptable.la $(JANSSON_LIBS) $(DISPATCH_LIBS)
108+
ddb_gui_GTK2_la_LIBADD = $(LDADD) $(GTK2_DEPS_LIBS) $(SM_LIBADD) ../../shared/libtrkpropertiesutil.la ../../shared/libeqpreset.la ../../shared/libdeletefromdisk.la ../../shared/libtftintutil.la ../../shared/analyzer/libanalyzer.la ../../shared/scope/libscope.la ../../shared/scriptable/libscriptable.la ../../shared/libgrowablebuffer.la ../../shared/libpluginsettings.la ../../shared/libparser.la $(JANSSON_LIBS) $(DISPATCH_LIBS)
107109

108110
ddb_gui_GTK2_la_CFLAGS = -std=c99 -Werror -DGLIB_DISABLE_DEPRECATION_WARNINGS -DGDK_DISABLE_DEPRECATION_WARNINGS -DGTK_DISABLE_DEPRECATION_WARNINGS $(GTK2_DEPS_CFLAGS) $(SM_CFLAGS) $(JANSSON_CFLAGS) $(DISPATCH_CFLAGS) $(MEDIALIB_CFLAGS) -I@top_srcdir@/include -I@top_srcdir@/shared -DDDB_WARN_DEPRECATED=1
109111

@@ -112,10 +114,11 @@ endif
112114
if HAVE_GTK3
113115
GTKUI_SOURCES_GTK3 = deadbeefapp.c deadbeefapp.h $(GTKUI_SOURCES)
114116

117+
ddb_gui_GTK3_la_SOURCES = $(GTKUI_SOURCES_GTK3)
115118
ddb_gui_GTK3_la_LDFLAGS = -module -avoid-version -lm
116119

117-
ddb_gui_GTK3_la_SOURCES = $(GTKUI_SOURCES_GTK3)
118-
ddb_gui_GTK3_la_LIBADD = $(LDADD) $(GTK3_DEPS_LIBS) $(SM_LIBADD) ../libparser/libparser.la ../../shared/libtrkpropertiesutil.la ../../shared/libeqpreset.la ../../shared/libdeletefromdisk.la ../../shared/libtftintutil.la ../../shared/analyzer/libanalyzer.la ../../shared/scope/libscope.la ../../shared/scriptable/libscriptable.la $(JANSSON_LIBS) $(DISPATCH_LIBS)
120+
ddb_gui_GTK3_la_LIBADD = $(LDADD) $(GTK3_DEPS_LIBS) $(SM_LIBADD) ../../shared/libtrkpropertiesutil.la ../../shared/libeqpreset.la ../../shared/libdeletefromdisk.la ../../shared/libtftintutil.la ../../shared/analyzer/libanalyzer.la ../../shared/scope/libscope.la ../../shared/scriptable/libscriptable.la ../../shared/libgrowablebuffer.la ../../shared/libpluginsettings.la ../../shared/libparser.la $(JANSSON_LIBS) $(DISPATCH_LIBS)
121+
119122
ddb_gui_GTK3_la_CFLAGS = -std=c99 -Werror -DGLIB_DISABLE_DEPRECATION_WARNINGS -DGDK_DISABLE_DEPRECATION_WARNINGS -DGTK_DISABLE_DEPRECATION_WARNINGS $(GTK3_DEPS_CFLAGS) $(SM_CFLAGS) $(JANSSON_CFLAGS) $(DISPATCH_CFLAGS) $(MEDIALIB_CFLAGS) -I@top_srcdir@/include -I@top_srcdir@/shared -DDDB_WARN_DEPRECATED=1
120123
ddb_gui_GTK3_la_OBJCFLAGS = $(GTK3_DEPS_CFLAGS) $(SM_CFLAGS) $(JANSSON_CFLAGS)
121124

plugins/gtkui/callbacks.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
#include "search.h"
4747
#include "progress.h"
4848
#include "gtkui.h"
49-
#include "../libparser/parser.h"
49+
#include "../../shared/parser.h"
5050
#include "drawing.h"
5151
#include "eq.h"
5252
#include "undostack.h"

plugins/gtkui/ctmapping.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
#include "support.h"
3434
#include "interface.h"
3535
#include "callbacks.h"
36-
#include "../libparser/parser.h"
36+
#include "../../shared/parser.h"
3737
#include "ctmapping.h"
3838

3939
static GtkWidget *ctmapping_dlg;

0 commit comments

Comments
 (0)