qtcollider: QDialog: fix and improve passing paths to result handler
[supercollider.git] / SCClassLibrary / QtCollider / QDialog.sc
blobe678292872231fd57e73feef7a8765aff6549b00
1 QFileDialog : QObject {
2   *qtClass { ^'QcFileDialog' }
4   *new { arg okFunc, cancelFunc, fileMode, acceptMode, stripResult = false;
6     var me = super.new( [fileMode, acceptMode] );
8     if( okFunc.notNil ) {
9       me.connectFunction( 'accepted(VariantList)', {
10         |me, result|
11         if( stripResult )
12           { okFunc.performList(\value, result) }
13           { okFunc.value(result) }
14       });
15     };
17     if( cancelFunc.notNil ) {
18       me.connectFunction( 'rejected()', { cancelFunc.value() } );
19     };
21     me.invokeMethod('show', synchronous:false);
23     ^me;
24   }
27 QDialog {
28   *getPaths { arg okFunc, cancelFunc, allowsMultiple=true;
29     var fileMode;
30     if( allowsMultiple ) { fileMode = 3 } { fileMode = 1 };
31     ^QFileDialog.new( okFunc, cancelFunc, fileMode, 0 );
32   }
34   *openPanel { arg okFunc, cancelFunc, multipleSelection=false;
35     var fileMode;
36     if( multipleSelection ) { fileMode = 3 } { fileMode = 1 };
37     ^QFileDialog.new( okFunc, cancelFunc, fileMode, 0, stripResult:true );
38   }
40   *savePanel { arg okFunc, cancelFunc;
41     ^QFileDialog.new( okFunc, cancelFunc, 0, 1, stripResult:true );
42   }