danfalck

svg_ace_webkit_in_freecad.py

Oct 3rd, 2012
230
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.13 KB | None | 0 0
  1. import sys
  2. from PySide import QtCore, QtGui, QtWebKit
  3. import WebGui
  4. import Part
  5. import FreeCADGui, FreeCAD
  6.  
  7. html = """
  8.  
  9. <HTML>
  10. <HEAD>
  11. <TITLE>Test Input</TITLE>
  12.  
  13. <SCRIPT LANGUAGE="JavaScript">
  14. function testResults (form) {
  15.    var lenVar = form.boxlength.value;
  16.    var widthVar = form.boxwidth.value;
  17.    var heightVar = form.boxheight.value;
  18.    pyObj.newBox(lenVar,widthVar,heightVar);
  19. }</SCRIPT>
  20. </HEAD>
  21. <BODY>
  22.  
  23. <FORM NAME="myform" ACTION="" METHOD="GET">
  24.  
  25.  <table> <TR>
  26. <img src="file:///home/danfalck/Documents/Part_Box.svg" onmousedown="alert('hello');"/><br />
  27.      <TH align=right>Box Length:
  28.      <TD><INPUT TYPE="text" NAME="boxlength" VALUE=""><TR>
  29.      <TH align=right>Box Width:
  30.      <TD><INPUT TYPE="text" NAME="boxwidth" VALUE=""><TR>
  31.      <TH align=right>Box Height:
  32.      <TD><INPUT TYPE="text" NAME="boxheight" VALUE=""><TR> </table>
  33.  
  34. <INPUT TYPE="button" NAME="button" Value="Draw Box" onClick="testResults(this.form)">
  35. <INPUT TYPE="button" NAME="button2" Value="Print Text" onClick="printResults(this.form)">
  36. <INPUT TYPE="button" NAME="button3" Value="Clear Text" onClick="clearEditor(this.form)">
  37. <INPUT TYPE="button" NAME="button4" Value="Python Version" onClick="populateEditor(this.form)">
  38.  
  39. <div id="editor" style="height: 300px; width: 500px">#this is a test</div>
  40. <script src="file:///home/danfalck/programming/ace/build/src/ace.js" type="text/javascript" charset="utf-8"></script>
  41. <script src="file:///home/danfalck/programming/ace/build/src/theme-twilight.js" type="text/javascript" charset="utf-8"></script>
  42. <script src="file:///home/danfalck/programming/ace/build/src/mode-python.js" type="text/javascript" charset="utf-8"></script>
  43. <script>
  44. window.onload = function() {
  45.    editor = ace.edit("editor");
  46.    editor.setTheme("ace/theme/twilight");
  47.    
  48.    var PythonMode = require("ace/mode/python").Mode;
  49.    editor.getSession().setMode(new PythonMode());
  50.    editor.renderer.setShowGutter(false)
  51.    document.getElementById('editor').style.fontSize='18px';
  52. };
  53. </script>
  54.  
  55. <SCRIPT LANGUAGE="JavaScript">
  56. function printResults(form) {
  57.    var stuff = editor.getSession().getValue();
  58.    pyObj.printAce(stuff);
  59. }</SCRIPT>
  60.  
  61. <SCRIPT LANGUAGE="JavaScript">
  62. function clearEditor(form) {
  63.    editor.getSession().setValue("");
  64. }</SCRIPT>
  65.  
  66. <SCRIPT LANGUAGE="JavaScript">
  67. function populateEditor(form) {
  68.    editor.getSession().setValue('Python ' + pyObj.pyVersion);
  69. }</SCRIPT>
  70.  
  71.  
  72. </FORM> </BODY> </HTML>
  73. """
  74.  
  75.  
  76. class TestClass(QtCore.QObject):
  77.     @QtCore.Slot(str,str,str)
  78.     def newBox(self, msg1,msg2,msg3):
  79.         l = float(msg1); w= float(msg2);h = float(msg3)
  80.         box1 = Part.makeBox(l,w,h)
  81.         Part.show(box1)
  82.  
  83.     @QtCore.Slot(str)
  84.     def printAce(self, msg1):
  85.         FreeCAD.Console.PrintMessage(str(msg1)+"\n")
  86.         #print 'test\n'
  87.  
  88.     def _pyVersion(self):
  89.         """Return the Python version."""
  90.         return sys.version
  91.  
  92.     """Python interpreter version property."""
  93.     pyVersion = QtCore.Property(str, fget=_pyVersion)
  94.  
  95.  
  96. def getMainWindow():
  97.     "returns the main window"
  98.     # using QtGui.qApp.activeWindow() isn't very reliable because if another
  99.     # widget than the mainwindow is active (e.g. a dialog) the wrong widget is
  100.     # returned
  101.     toplevel = QtGui.qApp.topLevelWidgets()
  102.     for i in toplevel:
  103.         if i.metaObject().className() == "Gui::MainWindow":
  104.             return i
  105.     raise Exception("No main window found")
  106.  
  107.  
  108.  
  109. def getComboView(mw):
  110.     dw=mw.findChildren(QtGui.QDockWidget)
  111.     for i in dw:
  112.         if str(i.objectName()) == "Combo View":
  113.             return i.findChild(QtGui.QTabWidget)
  114.     raise Exception("No tab widget found")
  115.  
  116.  
  117. myObj = TestClass()
  118.  
  119. a = QtGui.qApp
  120. mw = getMainWindow()
  121. tab = getComboView(getMainWindow())
  122.  
  123. tab2 = QtGui.QTabWidget(parent = mw)
  124. web = QtWebKit.QWebView(tab2)
  125. tab.addTab(tab2,"DrawBox")
  126. button1 = QtGui.QPushButton("PySide Button",tab2)
  127. button1.move(200, 10)
  128.  
  129. def message():
  130.     print 'test!'
  131.  
  132. connect(button1, SIGNAL("clicked()"), (FreeCAD.Console.PrintMessage("pyside message")) )
  133. v= web
  134. v.setContent(html)
  135. #fun urls to load:
  136. #v.load("http://machinetouch.appspot.com/index.py")
  137. #v.load("http://demo.qooxdoo.org/devel/playground/#Hello%20World-ria") #too slow
  138. #v.load("http://demo.qooxdoo.org/devel/playground/#Hello%20World-mobile") #too slow
  139. #v.load("http://www.jstree.com/demo")
  140. #v.load("http://www.pageresource.com/jscript/jex12.htm")
  141. #v.load("http://www.pageresource.com/html5/canvas-basics/")
  142. #v.load("http://www.w3schools.com/html5/html5_svg.asp")
  143. #v.load("http://tavmjong.free.fr/blog/?p=36")
  144. #v.setPage("http://www.htmlfivewow.com/slide1")
  145. #v.load("http://andrew-hoyer.com/andrewhoyer/experiments/cloth/") #super cool!!
  146. #v.load("http://alteredqualia.com/canvasmol/#DNA")#runs slow
  147. #v.load("http://dl.dropbox.com/u/40496552/awwation-intro.svg#19") #use arrow keys to navigate this one- fun!!!
  148. curr1 = v.page()
  149. frame1 = curr1.currentFrame()
  150. frame1.addToJavaScriptWindowObject("pyObj", myObj)
  151.  
  152. #<img src="http://tavmjong.free.fr/blog/wp-content/uploads/buttonA.svg" /><br />
  153. #<img src="file:////home/danfalck/Documents/freecad/simple1.svg" /><br />
  154. #tab.removeTab(2)
Add Comment
Please, Sign In to add comment