Started spreadsheet module
This commit is contained in:
parent
837ad096f2
commit
3a64a9db8a
31
src/Mod/Spreadsheet/Init.py
Normal file
31
src/Mod/Spreadsheet/Init.py
Normal file
|
@ -0,0 +1,31 @@
|
|||
#***************************************************************************
|
||||
#* *
|
||||
#* Copyright (c) 2013 - Yorik van Havre <yorik@uncreated.net> *
|
||||
#* *
|
||||
#* This program is free software; you can redistribute it and/or modify *
|
||||
#* it under the terms of the GNU Lesser General Public License (LGPL) *
|
||||
#* as published by the Free Software Foundation; either version 2 of *
|
||||
#* the License, or (at your option) any later version. *
|
||||
#* for detail see the LICENCE text file. *
|
||||
#* *
|
||||
#* This program is distributed in the hope that it will be useful, *
|
||||
#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
#* GNU Library General Public License for more details. *
|
||||
#* *
|
||||
#* You should have received a copy of the GNU Library General Public *
|
||||
#* License along with this program; if not, write to the Free Software *
|
||||
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
|
||||
#* USA *
|
||||
#* *
|
||||
#***************************************************************************
|
||||
|
||||
# Get the Parameter Group of this module
|
||||
ParGrp = App.ParamGet("System parameter:Modules").GetGroup("Spreadsheet")
|
||||
|
||||
# Set the needed information
|
||||
ParGrp.SetString("HelpIndex","http://free-cad.sf.net")
|
||||
|
||||
# import types
|
||||
#FreeCAD.addImportType("Spreadsheet data (*.csv)","importCSV")
|
||||
|
25
src/Mod/Spreadsheet/InitGui.py
Normal file
25
src/Mod/Spreadsheet/InitGui.py
Normal file
|
@ -0,0 +1,25 @@
|
|||
#***************************************************************************
|
||||
#* *
|
||||
#* Copyright (c) 2013 - Yorik van Havre <yorik@uncreated.net> *
|
||||
#* *
|
||||
#* This program is free software; you can redistribute it and/or modify *
|
||||
#* it under the terms of the GNU Lesser General Public License (LGPL) *
|
||||
#* as published by the Free Software Foundation; either version 2 of *
|
||||
#* the License, or (at your option) any later version. *
|
||||
#* for detail see the LICENCE text file. *
|
||||
#* *
|
||||
#* This program is distributed in the hope that it will be useful, *
|
||||
#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
#* GNU Library General Public License for more details. *
|
||||
#* *
|
||||
#* You should have received a copy of the GNU Library General Public *
|
||||
#* License along with this program; if not, write to the Free Software *
|
||||
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
|
||||
#* USA *
|
||||
#* *
|
||||
#***************************************************************************
|
||||
|
||||
import Spreadsheet_rc
|
||||
|
||||
|
5
src/Mod/Spreadsheet/Resources/Spreadsheet.qrc
Normal file
5
src/Mod/Spreadsheet/Resources/Spreadsheet.qrc
Normal file
|
@ -0,0 +1,5 @@
|
|||
<!DOCTYPE RCC><RCC version="1.0">
|
||||
<qresource>
|
||||
<file>icons/Spreadsheet.svg</file>
|
||||
</qresource>
|
||||
</RCC>
|
144
src/Mod/Spreadsheet/Resources/icons/Spreadsheet.svg
Normal file
144
src/Mod/Spreadsheet/Resources/icons/Spreadsheet.svg
Normal file
|
@ -0,0 +1,144 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64px"
|
||||
height="64px"
|
||||
id="svg2860"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
sodipodi:docname="Part_Box.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
version="1.1">
|
||||
<defs
|
||||
id="defs2862">
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3377"
|
||||
id="radialGradient3692"
|
||||
cx="45.883327"
|
||||
cy="28.869568"
|
||||
fx="45.883327"
|
||||
fy="28.869568"
|
||||
r="19.467436"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3377"
|
||||
id="radialGradient3703"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
cx="135.38333"
|
||||
cy="97.369568"
|
||||
fx="135.38333"
|
||||
fy="97.369568"
|
||||
r="19.467436"
|
||||
gradientTransform="matrix(0.97435,0.2250379,-0.4623105,2.0016728,48.487554,-127.99883)" />
|
||||
<linearGradient
|
||||
id="linearGradient3377">
|
||||
<stop
|
||||
id="stop3379"
|
||||
offset="0"
|
||||
style="stop-color:#faff2b;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop3381"
|
||||
offset="1"
|
||||
style="stop-color:#ffaa00;stop-opacity:1;" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3377"
|
||||
id="radialGradient3705"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
cx="148.88333"
|
||||
cy="81.869568"
|
||||
fx="148.88333"
|
||||
fy="81.869568"
|
||||
r="19.467436"
|
||||
gradientTransform="matrix(1.3852588,-0.05136783,0.03705629,0.9993132,-60.392403,7.7040438)" />
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 32 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="64 : 32 : 1"
|
||||
inkscape:persp3d-origin="32 : 21.333333 : 1"
|
||||
id="perspective2868" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="5.5"
|
||||
inkscape:cx="10.658514"
|
||||
inkscape:cy="35.257738"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1053"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata2865">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<rect
|
||||
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="rect3002"
|
||||
width="56.18182"
|
||||
height="46.545456"
|
||||
x="4"
|
||||
y="9.272728" />
|
||||
<rect
|
||||
style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="rect3002-9"
|
||||
width="56.18182"
|
||||
height="46.545456"
|
||||
x="4"
|
||||
y="9.272728" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
d="m 4,20.545455 55.636364,0"
|
||||
id="path3790"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
d="M 20.909091,9.6363636 20.909091,56"
|
||||
id="path3792"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 4,32.429811 55.090909,0"
|
||||
id="path3794"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 4,44.483064 55.636364,0"
|
||||
id="path3796"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 5.1 KiB |
213
src/Mod/Spreadsheet/Spreadsheet.py
Normal file
213
src/Mod/Spreadsheet/Spreadsheet.py
Normal file
|
@ -0,0 +1,213 @@
|
|||
#***************************************************************************
|
||||
#* *
|
||||
#* Copyright (c) 2013 - Yorik van Havre <yorik@uncreated.net> *
|
||||
#* *
|
||||
#* This program is free software; you can redistribute it and/or modify *
|
||||
#* it under the terms of the GNU Lesser General Public License (LGPL) *
|
||||
#* as published by the Free Software Foundation; either version 2 of *
|
||||
#* the License, or (at your option) any later version. *
|
||||
#* for detail see the LICENCE text file. *
|
||||
#* *
|
||||
#* This program is distributed in the hope that it will be useful, *
|
||||
#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
#* GNU Library General Public License for more details. *
|
||||
#* *
|
||||
#* You should have received a copy of the GNU Library General Public *
|
||||
#* License along with this program; if not, write to the Free Software *
|
||||
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
|
||||
#* USA *
|
||||
#* *
|
||||
#***************************************************************************
|
||||
|
||||
import re, math
|
||||
from PyQt4 import QtCore,QtGui
|
||||
from DraftTools import translate
|
||||
|
||||
class Spreadsheet(object):
|
||||
"A spreadsheet object"
|
||||
|
||||
def __init__(self):
|
||||
self._cells = {}
|
||||
# a list of safe functions to allow
|
||||
safe_list = ['acos', 'asin', 'atan', 'atan2', 'ceil',
|
||||
'cos', 'cosh', 'e', 'exp', 'fabs',
|
||||
'floor', 'fmod', 'frexp', 'hypot', 'ldexp', 'log',
|
||||
'log10', 'modf', 'pi', 'pow', 'radians', 'sin',
|
||||
'sinh', 'sqrt', 'tan', 'tanh']
|
||||
self._tools = dict((k, getattr(math, k)) for k in safe_list)
|
||||
# adding abs
|
||||
self._tools["abs"] = abs
|
||||
# removing all builtins from allowed functions
|
||||
self._tools["__builtins__"] = None
|
||||
self._relations = {}
|
||||
self.cols = []
|
||||
self.rows = []
|
||||
|
||||
def __repr__(self):
|
||||
return "Spreadsheet object containing " + str(len(self._cells)) + " cells"
|
||||
|
||||
def allowedFunctions(self):
|
||||
"returns a list of allowed functions in cells"
|
||||
return self.tools.keys()
|
||||
|
||||
def __setattr__(self, key, value):
|
||||
#print "setting key:",key," to value:",value
|
||||
if self.isKey(key):
|
||||
self._cells[key] = value
|
||||
if value:
|
||||
if self.isFunction(value):
|
||||
self._updateDependencies(key,value)
|
||||
c,r = splitKey(key)
|
||||
if not c in self.cols:
|
||||
self.cols.append(c)
|
||||
self.cols.sort()
|
||||
if not r in self.rows:
|
||||
self.rows.append(r)
|
||||
self.rows.sort()
|
||||
else:
|
||||
self.__dict__.__setitem__(key,value)
|
||||
|
||||
def __getattr__(self, key):
|
||||
if key in self._cells:
|
||||
if self.isFunction(self._cells[key]):
|
||||
#print "result = ",self.getFunction(key)
|
||||
return eval(self._format(key),self._tools,{"self":self})
|
||||
else:
|
||||
return self._cells[key]
|
||||
else:
|
||||
return None
|
||||
|
||||
def _format(self,key):
|
||||
"formats all cellnames in the function a the given cell"
|
||||
elts = re.split(r'(\W+)',self._cells[key][1:])
|
||||
#print elts
|
||||
result = ''
|
||||
for e in elts:
|
||||
if self.isKey(e):
|
||||
result += "self."+e
|
||||
else:
|
||||
result += e
|
||||
return result
|
||||
|
||||
def _updateDependencies(self,key,value):
|
||||
"search for ancestors in the value and updates the table"
|
||||
ancestors = []
|
||||
for v in re.findall(r"[\w']+",value):
|
||||
if self.isKey(v):
|
||||
ancestors.append(v)
|
||||
for a in ancestors:
|
||||
if a in self._relations:
|
||||
if not key in self._relations[a]:
|
||||
self._relations[a].append(key)
|
||||
else:
|
||||
self._relations[a] = [key]
|
||||
|
||||
def isFunction(self,key):
|
||||
"isFunction(cell): returns True if the given cell or value is a function"
|
||||
if key in self._cells:
|
||||
if str(self._cells[key])[0] == "=":
|
||||
return True
|
||||
elif str(key)[0] == "=":
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def isKey(self,value):
|
||||
"isKey(val): returns True if the given value is a valid cell number"
|
||||
al = False
|
||||
nu = False
|
||||
for v in value:
|
||||
if not v.isalnum():
|
||||
return False
|
||||
elif not al:
|
||||
if v.isalpha():
|
||||
al = True
|
||||
else:
|
||||
return False
|
||||
else:
|
||||
if not nu:
|
||||
# forbidden to set items at row 0
|
||||
if v == "0":
|
||||
return False
|
||||
if v.isalpha():
|
||||
if nu:
|
||||
return False
|
||||
elif v.isdigit():
|
||||
nu = True
|
||||
if not nu:
|
||||
return False
|
||||
return True
|
||||
|
||||
def splitKey(self,key):
|
||||
"splitKey(cell): splits a key between column and row"
|
||||
c = ''
|
||||
r = ''
|
||||
for ch in key:
|
||||
if ch.isalpha():
|
||||
c += ch
|
||||
else:
|
||||
r += ch
|
||||
return c,r
|
||||
|
||||
def getFunction(self,key):
|
||||
"getFunction(cell): returns the function contained in the given cell, instead of the value"
|
||||
if key in self._cells:
|
||||
return self._cells[key]
|
||||
else:
|
||||
return None
|
||||
|
||||
def getSize(self):
|
||||
"getSize(): returns a tuple with number of columns and rows of this spreadsheet"
|
||||
return (len(self.columns),len(self.rows))
|
||||
|
||||
def getCells(self,index):
|
||||
"getCells(index): returns the cells from the given column of row number"
|
||||
cells = {}
|
||||
for k in self._cells.keys():
|
||||
c,r = self.splitKey(k)
|
||||
if index in [c,r]:
|
||||
cells[k] = self._cells[k]
|
||||
return cells
|
||||
|
||||
|
||||
class SpreadsheetView(QtGui.QWidget):
|
||||
"A spreadsheet viewer for FreeCAD"
|
||||
|
||||
def __init__(self):
|
||||
QtGui.QWidget.__init__(self)
|
||||
self.setWindowIcon(QtGui.QIcon(":/icons/Spreadsheet.svg"))
|
||||
self.setWindowTitle(str(translate("Spreadsheet","Spreadsheet")))
|
||||
self.setObjectName("Spreadsheet viewer")
|
||||
self.verticalLayout = QtGui.QVBoxLayout(self)
|
||||
self.table = QtGui.QTableWidget(30,26,self)
|
||||
for i in range(26):
|
||||
ch = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[i]
|
||||
self.table.setHorizontalHeaderItem(i, QtGui.QTableWidgetItem(ch))
|
||||
self.verticalLayout.addWidget(self.table)
|
||||
self.spreadsheet = None
|
||||
|
||||
QtCore.QObject.connect(self.table, QtCore.SIGNAL("cellChanged(int,int)"), self.changeCell)
|
||||
|
||||
def changeCell(self,r,c):
|
||||
"changes the contens of a cell"
|
||||
key = "abcdefghijklmnopqrstuvwxyz"[c]+str(r+1)
|
||||
value = self.table.item(r,c).text()
|
||||
print "Changing "+key+" to "+value
|
||||
if self.spreadsheet:
|
||||
setattr(self.spreadsheet,key,value)
|
||||
|
||||
def clear(self):
|
||||
"clears the spreadsheet"
|
||||
for r in range(self.table.columnCount):
|
||||
for c in range(self.table.rowCount):
|
||||
self.table.item(r,c).setText("")
|
||||
|
||||
|
||||
def addSpreadsheetView(view):
|
||||
"addSpreadsheetView(view): adds the given spreadsheet view to the FreeCAD MDI area"
|
||||
import FreeCAD
|
||||
if FreeCAD.GuiUp:
|
||||
import FreeCADGui,Spreadsheet_rc
|
||||
mdi = FreeCADGui.getMainWindow().findChild(QtGui.QMdiArea)
|
||||
mdi.addSubWindow(view)
|
134
src/Mod/Spreadsheet/Spreadsheet_rc.py
Normal file
134
src/Mod/Spreadsheet/Spreadsheet_rc.py
Normal file
|
@ -0,0 +1,134 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Resource object code
|
||||
#
|
||||
# Created: Fri Aug 2 17:09:28 2013
|
||||
# by: The Resource Compiler for PyQt (Qt v4.8.4)
|
||||
#
|
||||
# WARNING! All changes made in this file will be lost!
|
||||
|
||||
from PyQt4 import QtCore
|
||||
|
||||
qt_resource_data = "\
|
||||
\x00\x00\x05\xda\
|
||||
\x00\
|
||||
\x00\x14\x77\x78\x9c\xe5\x57\x59\x8f\xdb\x36\x10\x7e\xdf\x5f\xa1\
|
||||
\x2a\x2f\x29\x6a\x49\x14\xa9\x7b\x6d\x07\x68\x83\x14\x01\x5a\xb4\
|
||||
\x68\x12\xf4\x31\xa0\x25\xca\x56\x57\x16\x0d\x8a\x5e\xdb\xfb\xeb\
|
||||
\x3b\xa4\xee\xb5\x36\x57\x51\xa4\x87\x85\x5d\x8b\x73\x70\x38\xdf\
|
||||
\xcc\x70\xc6\xcb\x17\xe7\x7d\x69\xdc\x33\x51\x17\xbc\x5a\x99\xae\
|
||||
\x8d\x4c\x83\x55\x29\xcf\x8a\x6a\xbb\x32\xdf\xbd\x7d\x65\x45\xa6\
|
||||
\x51\x4b\x5a\x65\xb4\xe4\x15\x5b\x99\x15\x37\x5f\xac\x6f\x96\xdf\
|
||||
\x58\x96\xf1\x83\x60\x54\xb2\xcc\x38\x15\x72\x67\xbc\xae\xee\xea\
|
||||
\x94\x1e\x98\xf1\x7c\x27\xe5\x21\x71\x9c\xd3\xe9\x64\x17\x2d\xd1\
|
||||
\xe6\x62\xeb\x7c\x6b\x58\xd6\xfa\xe6\x66\x59\xdf\x6f\x6f\x0c\xc3\
|
||||
\x00\xbb\x55\x9d\x64\xe9\xca\x6c\x15\x0e\x47\x51\x6a\xc1\x2c\x75\
|
||||
\x58\xc9\xf6\xac\x92\xb5\xe3\xda\xae\x63\x0e\xe2\xe9\x20\x9e\x2a\
|
||||
\xeb\xc5\x3d\x4b\xf9\x7e\xcf\xab\x5a\x6b\x56\xf5\xb3\x91\xb0\xc8\
|
||||
\xf2\x5e\x5a\x9d\xe6\x44\xb4\x90\x1b\xc7\xb1\x83\xb0\x83\xb1\x05\
|
||||
\x12\x56\x7d\xa9\x24\x3d\x5b\x53\x55\x38\xe3\x9c\x2a\x46\x08\x39\
|
||||
\xc0\x1b\x24\x3f\x4d\x2a\x39\x97\x00\xc5\x93\x87\xd1\xdc\xb1\x75\
|
||||
\x80\xff\x00\x7f\xbd\x42\x47\xb0\x6b\x7e\x14\x29\xcb\x41\x93\xd9\
|
||||
\x15\x93\xce\xcb\xb7\x2f\x7b\xa6\x85\xec\x4c\x66\xa3\x6d\x3a\xf4\
|
||||
\x27\x76\x27\x21\xa9\xe8\x9e\xd5\x07\x9a\xb2\xda\xe9\xe8\x5a\xff\
|
||||
\x54\x64\x72\xb7\x32\x03\xef\x70\xd6\xeb\x1d\x2b\xb6\x3b\x39\x22\
|
||||
\x14\xd9\xca\x04\x0f\x71\x14\x20\xbd\xee\xce\x90\xf4\x99\x84\x6c\
|
||||
\x82\x1b\xd1\x76\xe3\x31\xcb\x8b\x6c\xcf\x10\x71\x4c\xe2\xa9\x76\
|
||||
\xc6\x53\x75\xa4\x95\xf9\x2b\x15\xf2\xfd\xf7\xfc\x6c\x77\x30\xf6\
|
||||
\xbb\xf0\xa3\x3c\x1c\xe5\x7b\x76\x96\xac\x6a\xb6\x03\x47\x46\x5e\
|
||||
\x69\xb6\x52\xb3\x27\x1e\x8d\x32\xdc\x35\xd7\x40\x59\x66\x2c\xaf\
|
||||
\x15\xa7\x71\x46\xad\xc0\x1b\xac\x79\xc0\x15\x34\x2b\x68\xf9\xa3\
|
||||
\xfa\x82\x3c\x6c\xe4\x46\xa7\x48\x79\x59\xb2\x14\x10\xa1\xe5\x89\
|
||||
\x5e\x6a\xb3\x13\xd0\x91\x4c\x76\x82\x41\xe6\x3d\x83\x77\x46\x45\
|
||||
\xb7\x07\x21\x61\xd8\xcb\x29\x93\x53\x13\x24\x88\x71\xcf\x4e\xcf\
|
||||
\x2b\xd3\xf3\xed\x28\x22\x04\x0f\x4a\xe9\x65\x65\xe2\xc8\x8e\x82\
|
||||
\xd8\x0f\xa2\x9e\x9a\xcf\xca\xe6\xb3\xb2\x02\xfc\x8f\x6d\x2f\x08\
|
||||
\x3d\x12\xf4\xc4\x6d\x7b\x82\x77\x55\x21\x21\x9f\x8f\x35\x13\x6f\
|
||||
\x54\x4e\xfc\x52\xbd\xab\x99\x69\x38\x5f\x0d\x91\x10\x91\x4f\x3c\
|
||||
\xe4\x18\x37\x97\xf8\x36\x01\x30\xc8\x04\xb7\x38\xb4\xc9\x35\x6e\
|
||||
\xd7\xb2\xf9\xac\xec\x07\x71\x7b\x2b\x68\x55\x43\x49\xee\x57\xe6\
|
||||
\x9e\x4a\x51\x9c\x9f\x23\x3b\x06\x49\x7f\x81\x6c\x8c\x7d\x44\xc2\
|
||||
\x78\x01\xb5\xe9\x05\x98\xb8\xc8\x5f\x60\x1b\x21\x37\x08\x71\xb4\
|
||||
\x50\x55\x10\x85\xbe\xef\x2d\x2c\x17\x87\x76\x1c\x43\x0c\xbf\x1d\
|
||||
\x00\x9f\x82\x35\xc6\x69\x06\xc6\x75\xcb\x5f\xd6\x92\x1f\x3a\xd9\
|
||||
\xb6\x4e\x81\x02\x32\xb1\x39\x90\x79\x9e\xd7\x0c\x62\x85\x46\xb4\
|
||||
\x5a\x5e\x4a\xd6\x48\x5b\x10\x4c\x2e\x92\x67\x39\xcd\x73\xbc\xb9\
|
||||
\xd5\x24\x0e\x68\x17\xf2\x92\xb8\xb7\xfd\x09\x3f\x60\x2d\x72\x67\
|
||||
\xac\xb9\x1f\xb1\x96\x53\x8a\xd0\x93\xd6\x96\xce\xd4\xed\xaf\x98\
|
||||
\x96\xfe\x97\xa4\x25\x44\x3b\xba\x4a\xcb\xc8\x9d\x2b\xe7\x6b\xd9\
|
||||
\x7c\x56\xf6\x33\xd3\xd2\x85\x5c\xf7\xb1\x1f\x45\x2a\x1d\x91\xef\
|
||||
\x92\x20\x8c\x08\x24\x29\x52\x2e\x05\x38\x86\x57\xe8\x46\xc4\x25\
|
||||
\x78\x61\x05\x70\x7f\xc7\xd8\x43\x64\x11\xda\x21\xf2\x90\x47\xa2\
|
||||
\x51\x6a\xf6\xf0\x1e\xe0\x5a\x3d\x00\xbe\xd0\x87\x3b\xfb\xfd\x65\
|
||||
\x2e\x2f\xaa\xf5\x4c\x45\x49\x66\x5e\x85\xe8\xfe\xf0\x1e\x7c\x46\
|
||||
\x46\x62\x10\x0c\xff\xdc\x59\x89\x4b\x23\xe1\x42\x6b\x85\x2f\x34\
|
||||
\x2b\xf3\xa0\x1a\xd4\x07\xb6\x69\x4f\x60\x71\x51\x6c\x0b\x68\x05\
|
||||
\x5a\x0e\x03\x2a\xfa\x33\xd5\x81\xb0\x8f\x7c\x83\xce\x10\xb5\xde\
|
||||
\x2f\x1d\xd5\x2a\xf4\x5b\xef\xa9\xea\x59\xd9\x7d\xc1\x4e\x43\x3f\
|
||||
\xd9\xd0\x3e\xfe\x07\xba\x65\x3a\xc5\x21\xd3\x72\xfd\x69\x19\x1b\
|
||||
\x2e\x32\x26\x3a\x56\xa0\x3f\x13\x56\x5b\x05\xcd\x58\x76\xf3\xc8\
|
||||
\x19\xd8\xb5\xe7\xa3\x79\x7e\xbd\xa3\x19\x3f\x41\x23\x78\xcc\x7c\
|
||||
\xe0\x1c\xd2\xc2\xb7\xfd\xc7\x0c\x9d\xa9\xc8\x0e\xfc\xc8\x77\xbd\
|
||||
\x2b\x26\x58\x82\x0b\x13\xfb\x61\x48\xa2\x2b\xe6\x51\x08\xc8\x3a\
|
||||
\xab\xa4\x17\x06\xee\xe8\xaf\x0e\xcf\x7a\xc7\x4f\x5b\xa1\x60\x91\
|
||||
\xe2\xc8\x1e\x6b\x42\xd3\x3f\xaa\x61\xcf\x3a\x36\x45\xd4\x8e\x18\
|
||||
\x23\x09\xa5\x6b\x6d\x36\xfc\x3c\xbf\xc1\xa9\xa8\xc0\x4d\xab\x1d\
|
||||
\x5a\xdc\x18\x5f\x81\xd1\x4a\x74\x63\x0c\x5c\xc3\xe4\x09\x91\xf3\
|
||||
\x70\x29\x3e\x66\x5d\x9e\x66\xed\xe9\xb9\xd8\x17\x0f\x2c\x53\x97\
|
||||
\x5c\x9b\x27\x7b\x26\x69\x46\x25\x1d\x72\xa2\xa3\x40\x36\xf9\xfd\
|
||||
\x9c\x91\xe5\xc9\x6f\x2f\x5f\xf5\x17\x6a\x9a\x26\xbf\x73\x71\x37\
|
||||
\x5c\x94\x4a\x80\x6e\x60\xac\x59\x99\xfd\x25\xaf\xa6\x97\x34\x51\
|
||||
\xb5\x4d\xe5\xba\xd8\x43\xa4\xd5\xb8\xf9\x1d\x4c\x7d\x90\x9d\x3d\
|
||||
\x63\x22\xac\x8a\x71\xd8\xb4\xd9\x56\xb0\x66\x9c\x9c\x9d\xc0\xb3\
|
||||
\x74\x5f\x28\x25\xe7\x8d\x2c\xca\xf2\xb5\x32\x32\xba\xf8\xdb\x4d\
|
||||
\x0b\x59\xb2\xb5\xb6\xd9\xbc\x76\x5e\x38\xad\x1b\xdd\xcd\x3d\xf2\
|
||||
\x72\xe9\x74\x30\xe8\xd5\x76\x80\x67\x92\x32\x3d\xc2\x25\xdd\xb0\
|
||||
\x72\x65\xfe\xa4\x98\xc6\x15\x77\x2b\xf8\xf1\xb0\xe7\x19\x6b\xd5\
|
||||
\x7b\x58\xa1\x6e\xfb\x0b\xa9\x69\x35\x6d\x97\x41\xfa\x73\x9b\x83\
|
||||
\x53\x49\x5b\x8e\x7a\x31\x6a\x39\x7a\x29\x8e\x25\x4b\x2a\x5e\x3d\
|
||||
\x40\x19\x42\x4f\x12\xfc\x4e\x2f\x59\xfb\xde\x64\x5b\xe2\x75\x4b\
|
||||
\xd5\x42\xe0\x44\xc9\xe6\x28\xe5\x98\xf6\x07\x2f\xaa\x04\x0e\x59\
|
||||
\x65\x1d\x15\x60\x65\xa2\x84\x74\x91\x83\xf6\x60\xbb\x25\x64\x14\
|
||||
\x6a\x57\x08\x7a\x99\xd8\x54\xd4\xa6\x99\x26\xe8\x76\x4f\xc5\x1d\
|
||||
\x13\x0d\xff\xbe\xa8\x8b\x4d\x51\xaa\x2d\xf4\x6b\xc9\x6e\xb3\xa2\
|
||||
\x3e\x00\x24\xf0\x23\x40\x1d\xe3\x96\xc3\x00\x9c\x97\xfc\xd4\xf3\
|
||||
\x59\x45\xe1\xcb\xda\xd0\xf4\x6e\xab\xcf\x97\xd0\x14\xea\xf0\x58\
|
||||
\xc2\x4f\xba\x69\xf7\x03\x28\x09\x42\xc3\x70\xda\xd6\x99\x1f\xd8\
|
||||
\x6e\xe4\x46\x03\xbd\xab\x2e\x2f\xb0\x7d\x0f\x9e\xa1\x25\xa9\x09\
|
||||
\xb5\x5f\xa8\x01\xcb\xc6\x21\x3c\xd1\x68\xb8\xfc\xa4\x78\x69\x5f\
|
||||
\x3f\x35\x58\x9d\xe6\xff\x35\x5e\x56\xfc\xb7\x46\xec\x40\xe5\xee\
|
||||
\x51\xc4\x86\x18\xfd\xf5\x10\x68\xd4\x9f\x84\x7b\x2e\x26\xd3\x10\
|
||||
\xf4\x87\x57\xf7\xae\xe1\x2d\x30\x6a\x5c\xf4\x0d\xdf\xb7\x03\x02\
|
||||
\x8f\xb7\x40\xd3\x76\x0f\x0e\xc1\x94\x3c\x33\x5a\xa4\xbc\x82\x93\
|
||||
\x4a\x2e\x2c\x68\x72\xf7\x54\x1e\x05\x53\xad\xe0\xdf\x08\xc5\xcf\
|
||||
\x06\x00\x11\x23\x78\xdc\x45\xdc\xe0\x40\x82\x11\x6d\x94\x02\x23\
|
||||
\x4c\xf0\x3f\x1b\x93\x2f\xa8\xd0\xc7\xe9\x41\xb0\xed\xe1\x38\x72\
|
||||
\x5d\x95\x1e\x48\x83\x31\x9f\x1e\xde\x7f\x1e\x0a\xcf\x83\x5f\xa5\
|
||||
\x04\xc1\x24\xfd\x91\x4a\x09\x3e\x13\x8a\xa5\xb3\x5d\xdf\x2c\xd5\
|
||||
\xa4\xb2\xbe\xf9\x13\x2d\x67\x17\x7f\
|
||||
"
|
||||
|
||||
qt_resource_name = "\
|
||||
\x00\x05\
|
||||
\x00\x6f\xa6\x53\
|
||||
\x00\x69\
|
||||
\x00\x63\x00\x6f\x00\x6e\x00\x73\
|
||||
\x00\x0f\
|
||||
\x0a\xa9\x40\xe7\
|
||||
\x00\x53\
|
||||
\x00\x70\x00\x72\x00\x65\x00\x61\x00\x64\x00\x73\x00\x68\x00\x65\x00\x65\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\
|
||||
"
|
||||
|
||||
qt_resource_struct = "\
|
||||
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
|
||||
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\
|
||||
\x00\x00\x00\x10\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\
|
||||
"
|
||||
|
||||
def qInitResources():
|
||||
QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data)
|
||||
|
||||
def qCleanupResources():
|
||||
QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data)
|
||||
|
||||
qInitResources()
|
Loading…
Reference in New Issue
Block a user