FreeCAD/src/Mod/TemplatePyMod/TaskPanel.py
2014-09-01 22:47:05 +02:00

114 lines
3.3 KiB
Python

# FreeCAD TemplatePyMod module
# (c) 2011 Werner Mayer LGPL
import FreeCAD as App
import FreeCADGui as Gui
from PySide import QtGui,QtCore
class MyLineEdit(QtGui.QLineEdit):
pass
class TaskWatcher:
def __init__(self):
self.commands = ["Part_Box", "Part_Sphere", "Part_Cylinder"]
self.title = "Create primitives"
self.icon = "Part_Sphere"
self.widgets = [MyLineEdit()]
self.widgets[0].setText("Line edit inside task box")
def shouldShow(self):
return App.ActiveDocument is not None
class TaskLineEdit:
def __init__(self):
self.widgets = [MyLineEdit()]
self.widgets[0].setText("Line edit with no task box")
def shouldShow(self):
return True
class TaskWatcherFilter:
def __init__(self):
self.commands = ["Sketcher_NewSketch", "PartDesign_Fillet", "PartDesign_Chamfer"]
self.filter = "SELECT Part::Feature SUBELEMENT Face COUNT 1"
self.title = "Face tools"
self.icon = "Part_Box"
class TaskPanel:
def __init__(self):
self.ui = App.getResourceDir() + "Mod/TemplatePyMod/TaskPanel.ui"
def accept(self):
return True
def reject(self):
return True
def clicked(self, index):
pass
def open(self):
pass
def needsFullSpace(self):
return False
def isAllowedAlterSelection(self):
return True
def isAllowedAlterView(self):
return True
def isAllowedAlterDocument(self):
return True
def getStandardButtons(self):
return int(QtGui.QDialogButtonBox.Ok)
def helpRequested(self):
pass
def setupUi(self):
mw = self.getMainWindow()
form = mw.findChild(QtGui.QWidget, "TaskPanel")
form.pushButton = form.findChild(QtGui.QPushButton, "pushButton")
form.listWidget = form.findChild(QtGui.QListWidget, "listWidget")
self.form = form
#Connect Signals and Slots
QtCore.QObject.connect(form.pushButton, QtCore.SIGNAL("clicked()"), self.addElement)
def getMainWindow(self):
"returns the main window"
# using QtGui.qApp.activeWindow() isn't very reliable because if another
# widget than the mainwindow is active (e.g. a dialog) the wrong widget is
# returned
toplevel = QtGui.qApp.topLevelWidgets()
for i in toplevel:
if i.metaObject().className() == "Gui::MainWindow":
return i
raise RuntimeError("No main window found")
def addElement(self):
item=QtGui.QInputDialog.getText(self.form, 'Add item', 'Enter:')
if item[1]:
self.form.listWidget.addItem(item[0])
class TaskCalendar:
def __init__(self):
self.form = QtGui.QCalendarWidget()
class TaskManyTaskBoxes:
"illustrates how to add several taskboxes"
def __init__(self):
widget1 = QtGui.QCalendarWidget()
widget2 = QtGui.QWidget()
widget2.setWindowTitle("My Test Box")
text = QtGui.QLabel("testBox",widget2)
self.form = [widget1,widget2]
def createTask():
Gui.Control.addTaskWatcher([TaskWatcher(), TaskLineEdit(), TaskWatcherFilter()])
panel = TaskCalendar()
#panel = TaskPanel()
Gui.Control.showDialog(panel)
#panel.setupUi()
return panel