SCDoc: Use proper static string constants instead of comparing string literals.
[supercollider.git] / SCClassLibrary / QtCollider / QPenPrinter.sc
blob6b536187c0cc8976de1bf40e195036678262165f
1 QPenPrinter : QObject {
2   var printFunc, cancelFunc, okFunc;
4   *qtClass { ^'QcPenPrinter' }
6   *new {
7     ^super.new.init;
8   }
10   *print { |printFunc, cancelFunc|
11     this.new.showDialog( { |p| p.print(printFunc) }, cancelFunc);
12   }
14   init {
15     heap.remove(this);
16     this.connectFunction('printFunc()', synchronous:true) {
17       printFunc.value(this);
18       printFunc = nil;
19       heap.remove(this);
20     };
21     this.connectFunction('dialogDone(int)', synchronous:false) { |me, ok|
22       if( ok == 1 ) {
23         okFunc.value(this);
24       } {
25         cancelFunc.value(this);
26       };
27       okFunc = nil;
28       cancelFunc = nil;
29       heap.remove(this);
30     };
31   }
33   showDialog { |aOkFunc, aCancelFunc|
34     if(okFunc.notNil or: cancelFunc.notNil) {
35       "QPenPrinter: dialog already open".warn;
36       ^this;
37     };
38     okFunc = aOkFunc;
39     cancelFunc = aCancelFunc;
40     heap = heap.add(this);
41     this.invokeMethod(\show, synchronous:false);
42   }
44   print { |aPrintFunc|
45     if(printFunc.notNil) {
46       "QPenPrinter: printing already in progress".warn;
47       ^this;
48     };
49     printFunc = aPrintFunc;
50     heap = heap.add(this);
51     this.invokeMethod(\print, synchronous:false);
52   }
54   newPage {
55     this.invokeMethod(\newPage, synchronous:true);
56   }
58   pageRect { ^this.getProperty(\pageRect) }
59   paperRect { ^this.getProperty(\paperRect) }
60   fromPage { ^this.getProperty(\fromPage) }
61   toPage { ^this.getProperty(\toPage) }
62   pageSize { ^this.pageRect.size }