11studio . menu . addMenuItem ( {
2- name : "Bulk Add" ,
3- execute : bulkadd ,
2+ name : "Bulk Add" ,
3+ execute : bulkadd ,
44} )
55
66function bulkadd ( ) {
7- var track = studio . window . editorCurrent ( ) ;
8- var files = studio . window . browserSelection ( ) ;
9- if ( track == null || files . length < 1 ) {
10- error ( "You must select one or more assets and a track." ) ;
11- return ;
12- }
13-
14- if ( ! track . isOfType ( 'GroupTrack' ) ) {
15- error ( "You must select a track in the editor pane." ) ;
16- return ;
17- }
18-
19- for ( var i = 0 ; i < files . length ; i ++ ) {
20- if ( ! files [ i ] . isOfType ( 'AudioFile' ) ) {
21- error ( "You must select only audio files in the browser" ) ;
22- return ;
23- }
24- }
25-
26- // This API is Very Bad and does not provide a way to get parameter names
27- // The preset ID is the same for all sixteenth_note parameters so we just search for that
28- var presetId = '{c2b359ee-617f-49f2-a8bd-c627a9f4902b}' ;
29- var possibleParams = studio . window . editorCurrent ( ) . event . parameters ;
30- var parameter ;
31-
32- for ( var i = 0 ; i < possibleParams . length ; i ++ ) {
33- if ( possibleParams [ i ] . preset . id == presetId ) {
34- parameter = possibleParams [ i ] ;
35- break ;
36- }
37- }
38-
39- if ( parameter == undefined ) {
40- error ( "Could not find parameter with preset ID " + presetId ) ;
41- return ;
42- }
43-
44- for ( var i = 0 ; i < files . length ; i ++ ) {
45- var sound = track . addSound ( parameter , 'SingleSound' , i + 1 , 1 ) ;
46- sound . audioFile = files [ i ] ;
47- }
7+ var track = studio . window . editorCurrent ( ) ;
8+ var parameter = track . event . uiLastParameterSelection ;
9+ var files = studio . window . browserSelection ( ) ;
10+
11+ if ( track == null || files . length < 1 ) {
12+ error ( "You must select one or more assets and a track." ) ;
13+ return ;
14+ }
15+
16+ if ( ! track . isOfType ( 'GroupTrack' ) ) {
17+ error ( "You must select a track in the editor pane." ) ;
18+ return ;
19+ }
20+
21+ for ( var i = 0 ; i < files . length ; i ++ ) {
22+ if ( ! files [ i ] . isOfType ( 'AudioFile' ) ) {
23+ error ( "You must select only audio files in the browser" ) ;
24+ return ;
25+ }
26+ }
27+
28+ for ( var i = 0 ; i < files . length ; i ++ ) {
29+ var sound = track . addSound ( parameter , 'SingleSound' , i + 1 , 1 ) ;
30+ sound . audioFile = files [ i ] ;
31+ }
4832}
4933
5034function error ( reason ) {
51- studio . ui . showModalDialog ( {
35+ studio . ui . showModalDialog ( {
5236 windowTitle : "Error" ,
5337 widgetType : studio . ui . widgetType . Layout ,
54- layout : studio . ui . layoutType . VBoxLayout ,
55- items : [
56- { widgetType : studio . ui . widgetType . Label , text : reason } ,
57- {
38+ layout : studio . ui . layoutType . VBoxLayout ,
39+ items : [
40+ { widgetType : studio . ui . widgetType . Label , text : reason } ,
41+ {
5842 widgetType : studio . ui . widgetType . Layout ,
5943 layout : studio . ui . layoutType . HBoxLayout ,
60- contentsMargins : { left : 0 , top : 12 , right : 0 , bottom : 0 } ,
44+ contentsMargins : { left : 0 , top : 12 , right : 0 , bottom : 0 } ,
6145 items : [
62- { widgetType : studio . ui . widgetType . Spacer , sizePolicy : { horizontalPolicy : studio . ui . sizePolicy . MinimumExpanding } } ,
63- { widgetType : studio . ui . widgetType . PushButton , text : "OK" , onClicked : function ( ) { this . closeDialog ( ) ; } } ,
46+ {
47+ widgetType : studio . ui . widgetType . Spacer ,
48+ sizePolicy : { horizontalPolicy : studio . ui . sizePolicy . MinimumExpanding }
49+ } ,
50+ {
51+ widgetType : studio . ui . widgetType . PushButton , text : "OK" , onClicked : function ( ) {
52+ this . closeDialog ( ) ;
53+ }
54+ } ,
6455 ] ,
6556 } ,
66- ]
67- } )
57+ ]
58+ } )
6859}
0 commit comments