1545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 2545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochvoid wrapInFunction() 3545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{ 4545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 5545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [0] 6545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch // ... 7545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch QWebFrame *frame = myWebPage->mainFrame(); 8545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch frame->addToJavaScriptWindowObject("someNameForMyObject", myObject); 9545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch // ... 10545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [0] 11545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#if 0 12545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [1] 13545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch { 14545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch width: ..., 1506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen height: ..., 1606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen toDataURL: function() { ... }, 1706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen assignToHTMLImageElement: function(element) { ... } 1806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen } 19545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [1] 20545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#endif 21545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [2] 22545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch class MyObject : QObject { 23545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch Q_OBJECT 24545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch Q_PROPERTY(QPixmap myPixmap READ getPixmap) 25545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 26545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch public: 2706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen QPixmap getPixmap() const; 28545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch }; 29545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 30545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch /* ... */ 31545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 32545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch MyObject myObject; 33545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch myWebPage.mainFrame()->addToJavaScriptWindowObject("myObject", &myObject); 34545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 35545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [2] 36545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#if 0 37545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [3] 38545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch <html> 3906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen <head> 40545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch <script> 4106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen function loadImage() 4206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen { 4306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen myObject.myPixmap.assignToHTMLImageElement(document.getElementById("imageElement")); 4406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen } 4506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen </script> 4606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen </head> 4706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen <body onload="loadImage()"> 4806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen <img id="imageElement" width="300" height="200" /> 4906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen </body> 5006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen </html> 5106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen//! [3] 52545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#endif 5306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen//! [4] 5406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenclass MyObject : QObject { 55545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch Q_OBJECT 56545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 57545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch public slots: 58545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch void doSomethingWithWebElement(const QWebElement&); 59545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch }; 60545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 61545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch /* ... */ 62545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 63545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch MyObject myObject; 64545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch myWebPage.mainFrame()->addToJavaScriptWindowObject("myObject", &myObject); 65545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 66545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [4] 67545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#if 0 68545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [5] 69545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch <html> 70545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch <head> 71545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch <script> 72545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch function runExample() { 73545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch myObject.doSomethingWithWebElement(document.getElementById("someElement")); 74545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch } 75545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch </script> 76545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch </head> 77545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch <body onload="runExample()"> 78545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch <span id="someElement">Text</span> 79545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch </body> 80545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch </html> 81545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [5] 82545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [6] 83545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch connect(function); 84545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [6] 85545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [7] 86545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch function myInterestingScriptFunction() { ... } 87545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ... 88545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch myQObject.somethingChanged.connect(myInterestingScriptFunction); 89545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [7] 90545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [8] 91545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch myQObject.somethingChanged.connect(myOtherQObject.doSomething); 92545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [8] 93545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [9] 94545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch myQObject.somethingChanged.disconnect(myInterestingFunction); 95545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch myQObject.somethingChanged.disconnect(myOtherQObject.doSomething); 96545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [9] 97545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [10] 98dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch myQObject.somethingChanged.connect(thisObject, function) 99545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [10] 100545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [11] 101dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch var form = { x: 123 }; 102dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch var onClicked = function() { print(this.x); }; 103dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch myButton.clicked.connect(form, onClicked); 104545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [11] 105545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [12] 106dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch myQObject.somethingChanged.disconnect(thisObject, function); 107545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [12] 108545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [13] 109545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch connect(function); 110545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [13] 111545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [14] 112dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch myQObject.somethingChanged.connect(thisObject, "functionName") 113545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [14] 114545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [15] 115545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch var obj = { x: 123, fun: function() { print(this.x); } }; 116545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch myQObject.somethingChanged.connect(obj, "fun"); 117545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [15] 118545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [16] 119545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch connect(function); 120545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [16] 121545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [17] 122dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch myQObject.somethingChanged.disconnect(thisObject, "functionName"); 123545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [17] 124545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [18] 125545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch try { 126545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch myQObject.somethingChanged.connect(myQObject, "slotThatDoesntExist"); 127545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch } catch (e) { 128545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch print(e); 129545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch } 130545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [18] 131545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [19] 132545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch myQObject.somethingChanged("hello"); 133545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [19] 134545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [20] 135545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch myQObject.myOverloadedSlot(10); // will call the int overload 136545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch myQObject.myOverloadedSlot("10"); // will call the QString overload 137545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [20] 138545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [21] 139545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch myQObject['myOverloadedSlot(int)']("10"); // call int overload; the argument is converted to an int 140545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch myQObject['myOverloadedSlot(QString)'](10); // call QString overload; the argument is converted to a string 141545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [21] 142545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [22] 143545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch class MyObject : public QObject 144545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch { 145545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch Q_OBJECT 146545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 147545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch public: 148dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch Q_INVOKABLE void thisMethodIsInvokableInJavaScript(); 149dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch void thisMethodIsNotInvokableInJavaScript(); 150545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 151545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ... 152545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch }; 153545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [22] 154545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [23] 155545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch Q_PROPERTY(bool enabled READ enabled WRITE setEnabled) 156545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [23] 157545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [24] 158545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch myQObject.enabled = true; 159545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 160545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ... 161545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 162545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch myQObject.enabled = !myQObject.enabled; 163545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [24] 164545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [25] 16506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen myDialog.okButton 166545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [25] 167545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [26] 168545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch myDialog.okButton 169545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch myDialog.okButton.objectName = "cancelButton"; 170545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch // from now on, myDialog.cancelButton references the button 171545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch //! [26] 172545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#endif 173545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch} 174545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 175