def __init__(self, schid, parent=None): super().__init__(parent) self.setAttribute(Qt.WA_DeleteOnClose) self.setWindowTitle("Multiselect move") self.lay = QHBoxLayout(self) self.tree = DragDropServerview(schid, self) self.lay.addWidget(self.tree) self.resize(400, 600)
def __init__(self, schid, parent=None): self.lay = QHBoxLayout(parent) self.tree = DragDropServerview(schid, parent) self.lay.addWidget(self.tree) self.lay.setContentsMargins(0,0,0,0) parent.setLayout(self.lay) self.tree.connect("clicked(QModelIndex)", self.tree.onItemClicked) self.tree.connect("customContextMenuRequested(QPoint)", self.tree.onContextMenu) self.searchFrame = [item for item in QApplication.instance().allWidgets() if type(item).__name__ == "SearchFrame"][0] self.searchFrame.connect("find(QString,QTextDocument::FindFlags,bool,bool,bool&)", self.tree.onSearch)
class MultiSelectDialog(QDialog): def __init__(self, schid, parent=None): super().__init__(parent) self.setAttribute(Qt.WA_DeleteOnClose) self.setWindowTitle("Multiselect move") self.lay = QHBoxLayout(self) self.tree = DragDropServerview(schid, self) self.lay.addWidget(self.tree) self.resize(400, 600) def select(self, firstid, firsttype, secid, sectype, action): self.tree.select(firstid, firsttype, secid, sectype, action)
def __init__(self, tabcomplete=True, spaces=True, tabwidth=2, font=defaultFont(), bgcolor=Qt.black, textcolor=Qt.white, width=800, height=600, startup="", silentStartup=False, parent=None, *, catchstd=False): super(QDialog, self).__init__(parent) self.setAttribute(Qt.WA_DeleteOnClose) self.hlayout = QHBoxLayout(self) self.console = PythonConsole(tabcomplete, spaces, tabwidth, font, bgcolor, textcolor, startup, silentStartup, self, catchstd=catchstd, closeAction=self.close) self.hlayout.addWidget(self.console) self.resize(width, height)
class PythonConsoleDialog(QDialog): def __init__(self, tabcomplete=True, spaces=True, tabwidth=2, font=defaultFont(), bgcolor=Qt.black, textcolor=Qt.white, width=800, height=600, startup="", silentStartup=False, parent=None, *, catchstd=False): super(QDialog, self).__init__(parent) self.setAttribute(Qt.WA_DeleteOnClose) self.hlayout = QHBoxLayout(self) self.console = PythonConsole(tabcomplete, spaces, tabwidth, font, bgcolor, textcolor, startup, silentStartup, self, catchstd=catchstd, closeAction=self.close) self.hlayout.addWidget(self.console) self.resize(width, height)
def __init__(self): super(QDialog, self).__init__(None) self.setAttribute(Qt.WA_DeleteOnClose) self.splitter = QSplitter(Qt.Horizontal, self) self.leftwidg = QWidget(self) self.vlayout = QVBoxLayout(self.leftwidg) self.checkbox = QCheckBox("Mark selection", self) self.tree = QTreeView(self) self.tree.header().hide() self.vlayout.addWidget(self.checkbox) self.vlayout.addWidget(self.tree) self.table = QTableView(self) self.table.horizontalHeader().setStretchLastSection(True) self.splitter.addWidget(self.leftwidg) self.splitter.addWidget(self.table) self.hlayout = QHBoxLayout(self) self.hlayout.addWidget(self.splitter) self.treemodel = WidgetModel(self.tree) self.tree.setModel(self.treemodel) self.tablemodel = PropertyModel(self.table) self.table.setModel(self.tablemodel) self.stylesheet = None self.connect("finished(int)", self.onClosed) self.tree.selectionModel().connect( "currentChanged(const QModelIndex&, const QModelIndex&)", self.onTreeSelectionChanged) self.tree.connect("doubleClicked(const QModelIndex&)", self.onTreeDoubleClicked) self.checkbox.connect("toggled(bool)", self.onCheckBoxClicked) self.resize(800, 500) self.setWindowTitle('Inspect Element : : Developer Tools')
def __init__(self, title, label1, label2, parent=None): super().__init__(parent) self.setWindowTitle(title) self.lay = QVBoxLayout(self) self.lay1 = QHBoxLayout() self.label1 = QLabel(label1, self) self.lay1.addWidget(self.label1) self.input1 = QLineEdit(self) self.lay1.addWidget(self.input1) self.lay.addLayout(self.lay1) self.lay2 = QHBoxLayout() self.label2 = QLabel(label2, self) self.lay2.addWidget(self.label2) self.input2 = QLineEdit(self) self.lay2.addWidget(self.input2) self.lay.addLayout(self.lay2) bbox = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel, self) bbox.connect("accepted()", self.accept) bbox.connect("rejected()", self.reject) self.lay.addWidget(bbox)
def updateMaterialTab(self, ent): #ent = self.controller.active if ent is not None: self.clearDialogForm() qprim = ent.prim mats = qprim.Materials for i in range(len(mats)): index = str(i) tuple = mats[index] line = lines.UUIDEditLine(self.controller) line.update_text(tuple[1]) line.name = index asset_type = tuple[0] combobox = QComboBox() for text in PRIMTYPES.itervalues(): combobox.addItem(text) if PRIMTYPES.has_key(asset_type): realIndex = combobox.findText(PRIMTYPES[asset_type]) combobox.setCurrentIndex(realIndex) applyButton = self.getButton("materialApplyButton", self.ICON_OK, line, line.applyAction) cancelButton = self.getButton("materialCancelButton", self.ICON_CANCEL, line, line.cancelAction) line.index = index line.combobox = combobox line.connect('textEdited(QString)', applyButton.lineValueChanged) line.connect('textEdited(QString)', cancelButton.lineValueChanged) box = QHBoxLayout() box.addWidget(line) box.addWidget(applyButton) box.addWidget(cancelButton) self.materialTabFormWidget.materialFormLayout.addRow( combobox, box)
def initWidget(self): # Main layout mainBox = QVBoxLayout(self) # Add text edit to write regex by hand box = QVBoxLayout() mainBox.addLayout(box) self.textEdit = QLineEdit(self) box.addWidget(QLabel("You can write your regexp here", self)) box.addWidget(self.textEdit) button = QPushButton("Find", self) button.connect("clicked()", self.applyRegex) box.addWidget(button) # Add grippers list self.grippersList = QListWidget(self) mainBox.addWidget(self.grippersList) # Sub layout for the action type box = QHBoxLayout() mainBox.addLayout(box) self.graspCheck = QCheckBox("Grasp", self) box.addWidget(self.graspCheck) self.pregraspCheck = QCheckBox("Pregrasp", self) box.addWidget(self.pregraspCheck) # Add handle list self.handlesList = QListWidget(self) mainBox.addWidget(self.handlesList) # Add a table to display results self.resultList = QListWidget(self) mainBox.addWidget(self.resultList) # Add button to refresh button = QPushButton(self) button.setText("Refresh") button.connect("clicked()", self.refresh) mainBox.addWidget(button) # Get the grippers and handles names # Connect the widget to functions self.addConnection()
class NewServerTreeView(): def __init__(self, schid, parent=None): self.lay = QHBoxLayout(parent) self.tree = DragDropServerview(schid, parent) self.lay.addWidget(self.tree) self.lay.setContentsMargins(0,0,0,0) parent.setLayout(self.lay) self.tree.connect("clicked(QModelIndex)", self.tree.onItemClicked) self.tree.connect("customContextMenuRequested(QPoint)", self.tree.onContextMenu) self.searchFrame = [item for item in QApplication.instance().allWidgets() if type(item).__name__ == "SearchFrame"][0] self.searchFrame.connect("find(QString,QTextDocument::FindFlags,bool,bool,bool&)", self.tree.onSearch) def close(self): self.lay.removeWidget(self.tree) self.lay.deleteLater() self.tree.setParent(None) #no parent-> child of python -> gets garbage collected when out of scope #maybe use deleteLater def select(self, firstid, firsttype, secid, sectype, action): self.tree.select(firstid, firsttype, secid, sectype, action) def show(self): self.tree.show() def raise_(self): self.tree.raise_() def toggle(self): if self.tree.isHidden(): self.show() else: self.hide() def show(self): self.tree.show() self.tree.raise_() def hide(self): self.tree.hide()
def updateMaterialTab(self, ent): #ent = self.controller.active if ent is not None: self.clearDialogForm() qprim = ent.prim mats = qprim.Materials #print mats#, r.formwidget.formLayout.children() #for tuple in sorted(mats.itervalues()): for i in range(len(mats)): index = str(i) tuple = mats[index] line = lines.UUIDEditLine(self.controller)#QLineEdit() line.update_text(tuple[1]) line.name = index asset_type = tuple[0] combobox = QComboBox() for text in PRIMTYPES.itervalues(): combobox.addItem(text) if PRIMTYPES.has_key(asset_type): realIndex = combobox.findText(PRIMTYPES[asset_type]) #print realIndex, asset_type, PRIMTYPES[asset_type] combobox.setCurrentIndex(realIndex) applyButton = self.getButton("materialApplyButton", self.ICON_OK, line, line.applyAction) cancelButton = self.getButton("materialCancelButton", self.ICON_CANCEL, line, line.cancelAction) line.index = index line.combobox = combobox line.connect('textEdited(QString)', applyButton.lineValueChanged) line.connect('textEdited(QString)', cancelButton.lineValueChanged) box = QHBoxLayout() box.addWidget(line) box.addWidget(applyButton) box.addWidget(cancelButton) self.materialTabFormWidget.materialFormLayout.addRow(combobox, box) self.tabwidget.setTabEnabled(1, True)
uifile2 = QFile("pymodules/editgui/editobject.ui") ui2 = loader.load(uifile2) uiprops2 = r.createUiWidgetProperty() uiprops2.show_at_toolbar_ = False uiprops2.widget_name_ = "editobject" uiprops2.my_size_ = QSize(ui2.size.width(), ui2.size.height()) pw2 = r.createUiProxyWidget(ui2, uiprops2) r.pw2 = pw2 r.tab_manager.addTab(r.pw, QIcon("pymodules/editgui/cancel.png"), "test") r.tab_manager.addTab(r.pw2, QIcon("pymodules/editgui/cancel.png"), "editobject") if 0: from PythonQt.QtGui import QLineEdit, QHBoxLayout box = r.c.materialDialogFormWidget.formLayout hor = QHBoxLayout() line = QLineEdit() hor.addWidget(line) print hor if 0: from PythonQt.QtGui import QLineEdit, QHBoxLayout, QComboBox, QLabel combo = QComboBox() combo.addItem("aaaa") combo.addItem("bbbb") combo.addItem("cccc") combo.addItem("dddd") print combo.currentIndex, combo.findText("ccCc") if 0:
def __init__(self, controller): self.controller = controller loader = QUiLoader() loader.setLanguageChangeEnabled(True) uifile = QFile(self.UIFILE) ui = loader.load(uifile) width = ui.size.width() height = ui.size.height() uism = naali.ui self.widget = ui # Material/Texture widgets self.materialTabFormWidget = ui.findChild( "QWidget", "MaterialsTab").formLayoutWidget # Mesh line edit and buttons self.meshline = lines.MeshAssetidEditline(controller) self.meshline.name = "meshLineEdit" button_ok = self.getButton("Apply", self.ICON_OK, self.meshline, self.meshline.applyAction) button_cancel = self.getButton("Cancel", self.ICON_CANCEL, self.meshline, self.meshline.cancelAction) button_browse = self.getButton("Browse", self.ICON_FOLDER, None, None) box = QHBoxLayout() box.setContentsMargins(0, 0, 0, 0) box.addWidget(self.meshline) box.addWidget(button_browse) box.addWidget(button_ok) box.addWidget(button_cancel) self.mesh_widget = QWidget() self.mesh_widget.setLayout(box) # Sound line edit and buttons self.soundline = lines.SoundAssetidEditline(controller) self.soundline.name = "soundLineEdit" soundbutton_ok = self.getButton("Apply", self.ICON_OK, self.soundline, self.soundline.applyAction) soundbutton_cancel = self.getButton("Cancel", self.ICON_CANCEL, self.soundline, self.soundline.cancelAction) soundbutton_browse = self.getButton("Browse", self.ICON_FOLDER, None, None) soundRadius = self.getDoubleSpinBox("soundRadius", "Set sound radius", self.soundline) soundVolume = self.getDoubleSpinBox("soundVolume", "Set sound volume", self.soundline) main_box = QVBoxLayout() main_box.setContentsMargins(0, 0, 0, 0) box_buttons = QHBoxLayout() box_buttons.setContentsMargins(0, 0, 0, 0) # TODO no need for self? # crashed always if didnt put self to second label :P you can try to remove them... # basically the qwidget ptr must stay somewhere in py otherwise will crash when gets to painting -Pforce self.label_radius = QLabel("Radius") self.label_radius.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Preferred) self.label_volume = QLabel("Volume") self.label_volume.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Preferred) box_buttons.addWidget(self.label_radius) box_buttons.addWidget(soundRadius) box_buttons.addWidget(self.label_volume) box_buttons.addWidget(soundVolume) box_buttons.addWidget(soundbutton_browse) box_buttons.addWidget(soundbutton_ok) box_buttons.addWidget(soundbutton_cancel) main_box.addWidget(self.soundline) main_box.addLayout(box_buttons) self.sound_widget = QWidget() self.sound_widget.setLayout(main_box) # Animation line edit and buttons self.animation_title = QLabel("Skeleton Animation") self.animation_title.setStyleSheet( "font-size:18px;font-weight:bold;padding-top:5px;") self.animation_title.setIndent(0) self.animationline = lines.AnimationAssetidEditline(controller) self.animationline.name = "animationLineEdit" animation_combobox = self.getCombobox("AnimationName", "Animation Name", self.animationline) animationbutton_ok = self.getButton("Apply", self.ICON_OK, self.animationline, self.animationline.applyAction) animationbutton_cancel = self.getButton( "Cancel", self.ICON_CANCEL, self.animationline, self.animationline.cancelAction) animationbutton_browse = self.getButton("Browse", self.ICON_FOLDER, None, None) animationRate = self.getDoubleSpinBox("animationRate", "Set animation rate", self.animationline) animationbox = QVBoxLayout() animationbox.setContentsMargins(0, 0, 0, 0) self.anim_box_buttons = QHBoxLayout() self.anim_box_buttons.name = "AnimBoxButtons" self.anim_box_buttons.setContentsMargins(0, 0, 0, 0) label_rate = QLabel("Rate") label_rate.name = "Animation Rate" label_rate.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Preferred) self.anim_box_buttons.addWidget(animation_combobox) self.anim_box_buttons.addWidget(label_rate) self.anim_box_buttons.addWidget(animationRate) self.anim_box_buttons.addWidget(animationbutton_browse) self.anim_box_buttons.addWidget(animationbutton_ok) self.anim_box_buttons.addWidget(animationbutton_cancel) animationbox.addWidget(self.animation_title) animationbox.addWidget(self.animationline) animationbox.addLayout(self.anim_box_buttons) self.animation_widget = QWidget() self.animation_widget.setLayout(animationbox) self.animation_widget.hide() self.updatingSelection = False # mesh buttons self.meshline.connect('textEdited(QString)', button_ok.lineValueChanged) self.meshline.connect('textEdited(QString)', button_cancel.lineValueChanged) # audio buttons self.soundline.connect('textEdited(QString)', soundbutton_ok.lineValueChanged) self.soundline.connect('textEdited(QString)', soundbutton_cancel.lineValueChanged) soundRadius.connect('valueChanged(double)', soundbutton_ok.lineValueChanged) soundRadius.connect('valueChanged(double)', soundbutton_cancel.lineValueChanged) soundVolume.connect('valueChanged(double)', soundbutton_ok.lineValueChanged) soundVolume.connect('valueChanged(double)', soundbutton_cancel.lineValueChanged) # animation buttons self.animationline.connect('textEdited(QString)', animationbutton_ok.lineValueChanged) self.animationline.connect('textEdited(QString)', animationbutton_cancel.lineValueChanged) animationRate.connect('valueChanged(double)', animationbutton_ok.lineValueChanged) animationRate.connect('valueChanged(double)', animationbutton_cancel.lineValueChanged) animation_combobox.connect('currentIndexChanged(int)', animationbutton_ok.lineValueChanged) animation_combobox.connect('currentIndexChanged(int)', animationbutton_cancel.lineValueChanged) self.mainTabList = {} self.currentlySelectedTreeWidgetItem = []
class MultiInputDialog(QDialog): def __init__(self, title, label1, label2, parent=None): super().__init__(parent) self.setWindowTitle(title) self.lay = QVBoxLayout(self) self.lay1 = QHBoxLayout() self.label1 = QLabel(label1, self) self.lay1.addWidget(self.label1) self.input1 = QLineEdit(self) self.lay1.addWidget(self.input1) self.lay.addLayout(self.lay1) self.lay2 = QHBoxLayout() self.label2 = QLabel(label2, self) self.lay2.addWidget(self.label2) self.input2 = QLineEdit(self) self.lay2.addWidget(self.input2) self.lay.addLayout(self.lay2) bbox = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel, self) bbox.connect("accepted()", self.accept) bbox.connect("rejected()", self.reject) self.lay.addWidget(bbox) def cleanup(self): self.lay1.delete() self.lay2.delete() @staticmethod def getTexts(title, label1, label2, text1="", text2="", parent=None): dlg = MultiInputDialog(title, label1, label2, parent) dlg.label1.setText(label1) dlg.input1.setText(text1) dlg.label2.setText(label2) dlg.input2.setText(text2) if dlg.exec_() == QDialog.Accepted: ret1 = dlg.input1.text ret2 = dlg.input2.text dlg.cleanup() dlg.delete() return (True, ret1, ret2) else: return (False, "", "")
class InfoDialog(QDialog): def __init__(self): super(QDialog, self).__init__(None) self.setAttribute(Qt.WA_DeleteOnClose) self.splitter = QSplitter(Qt.Horizontal, self) self.leftwidg = QWidget(self) self.vlayout = QVBoxLayout(self.leftwidg) self.checkbox = QCheckBox("Mark selection", self) self.tree = QTreeView(self) self.tree.header().hide() self.vlayout.addWidget(self.checkbox) self.vlayout.addWidget(self.tree) self.table = QTableView(self) self.table.horizontalHeader().setStretchLastSection(True) self.splitter.addWidget(self.leftwidg) self.splitter.addWidget(self.table) self.hlayout = QHBoxLayout(self) self.hlayout.addWidget(self.splitter) self.treemodel = WidgetModel(self.tree) self.tree.setModel(self.treemodel) self.tablemodel = PropertyModel(self.table) self.table.setModel(self.tablemodel) self.stylesheet = None self.connect("finished(int)", self.onClosed) self.tree.selectionModel().connect("currentChanged(const QModelIndex&, const QModelIndex&)", self.onTreeSelectionChanged) self.tree.connect("doubleClicked(const QModelIndex&)", self.onTreeDoubleClicked) self.checkbox.connect("toggled(bool)", self.onCheckBoxClicked) self.resize(800, 500) def onClosed(self): if self.checkbox.isChecked() and self.stylesheet is not None: index = self.tree.selectionModel().currentIndex if index.isValid(): obj = index.internalPointer() if hasattr(obj, "setStyleSheet"): obj.setStyleSheet(self.stylesheet) def setWidget(self, widg): self.widget = widg tlw = QApplication.topLevelWidgets() if widg in tlw: index = self.treemodel.createIndex(tlw.index(widg), 0, widg) else: index = self.treemodel.createIndex(widg.parent().children().index(widg), 0, widg) self.tree.selectionModel().select(index, QItemSelectionModel.ClearAndSelect) self.tree.scrollTo(index) while index.isValid(): self.tree.expand(index) index = index.parent() self.tablemodel.setWidget(widg) def onTreeDoubleClicked(self, index): obj = index.internalPointer() if obj.inherits("QMenu"): obj.popup(QCursor.pos()) def onTreeSelectionChanged(self, cur, prev): obj = cur.internalPointer() self.tablemodel.setWidget(obj) if self.checkbox.isChecked(): if prev.isValid() and self.stylesheet is not None: oldobj = prev.internalPointer() if hasattr(oldobj, "setStyleSheet"): oldobj.setStyleSheet(self.stylesheet) if hasattr(obj, "setStyleSheet"): self.stylesheet = obj.styleSheet obj.setStyleSheet("background: red;") def onCheckBoxClicked(self, act): index = self.tree.selectionModel().currentIndex if not index.isValid(): return obj = index.internalPointer() if not hasattr(obj, "setStyleSheet"): return if act: self.stylesheet = obj.styleSheet obj.setStyleSheet("background: red;") elif self.stylesheet is not None: obj.setStyleSheet(self.stylesheet)
def __init__(self, cfg, parent): super().__init__(parent) self.setAttribute(Qt.WA_DeleteOnClose) self.setWindowTitle("Eventlog") self.cfg = cfg self.pauseButton = QPushButton("Pause", self) self.pauseButton.setCheckable(True) self.pauseButton.connect("toggled(bool)", self.onPauseButtonToggled) self.spacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.maxLabel = QLabel("Maximum Events:", self) self.maxSpin = QSpinBox(self) self.maxSpin.setMaximum(10000) self.maxSpin.setToolTip("Set to 0 to not shrink events at all") self.maxSpin.setValue(cfg.getint("maximumEvents")) self.maxSpin.connect("valueChanged(int)", self.onMaxSpinChanged) self.sublay1 = QHBoxLayout() self.sublay1.addWidget(self.pauseButton) self.sublay1.addItem(self.spacer) self.sublay1.addWidget(self.maxLabel) self.sublay1.addWidget(self.maxSpin) self.filterLabel = QLabel("Filter:", self) self.filterEdit = QLineEdit(self) self.filterEdit.connect("textChanged(QString)", self.onFilterEditChanged) self.filterButton = QToolButton(self) self.filterButton.connect("clicked()", self.filterEdit.clear) try: ico = ts3client.IconPack.current() ico.open() self.filterButton.setIcon(QIcon(ico.icon("ERROR"))) ico.close() except Exception as e: self.filterButton.setText("X") self.sublay2 = QHBoxLayout() self.sublay2.addWidget(self.filterLabel) self.sublay2.addWidget(self.filterEdit) self.sublay2.addWidget(self.filterButton) self.model = EventlogModel(self) self.model.maximumEvents = cfg.getint("maximumEvents") self.proxy = QSortFilterProxyModel(self) self.proxy.setFilterRole(Qt.UserRole) self.proxy.setSourceModel(self.model) self.tree = QTreeView(self) self.tree.header().hide() self.tree.setModel(self.proxy) self.lay = QVBoxLayout(self) self.lay.addLayout(self.sublay1) self.lay.addLayout(self.sublay2) self.lay.addWidget(self.tree) self.resize(cfg.getint("width"), cfg.getint("height")) self.connect("finished(int)", self.onFinished)
class ObjectEditWindow: UIFILE = "pymodules/objectedit/editobject.ui" ICON_FOLDER = "pymodules/objectedit/folder.png" ICON_OK = "pymodules/objectedit/ok-small.png" ICON_CANCEL = "pymodules/objectedit/cancel-small.png" def __init__(self, controller): self.controller = controller loader = QUiLoader() loader.setLanguageChangeEnabled(True) uifile = QFile(self.UIFILE) ui = loader.load(uifile) width = ui.size.width() height = ui.size.height() uism = naali.ui self.widget = ui # Material/Texture widgets self.materialTabFormWidget = ui.findChild( "QWidget", "MaterialsTab").formLayoutWidget # Mesh line edit and buttons self.meshline = lines.MeshAssetidEditline(controller) self.meshline.name = "meshLineEdit" button_ok = self.getButton("Apply", self.ICON_OK, self.meshline, self.meshline.applyAction) button_cancel = self.getButton("Cancel", self.ICON_CANCEL, self.meshline, self.meshline.cancelAction) button_browse = self.getButton("Browse", self.ICON_FOLDER, None, None) box = QHBoxLayout() box.setContentsMargins(0, 0, 0, 0) box.addWidget(self.meshline) box.addWidget(button_browse) box.addWidget(button_ok) box.addWidget(button_cancel) self.mesh_widget = QWidget() self.mesh_widget.setLayout(box) # Sound line edit and buttons self.soundline = lines.SoundAssetidEditline(controller) self.soundline.name = "soundLineEdit" soundbutton_ok = self.getButton("Apply", self.ICON_OK, self.soundline, self.soundline.applyAction) soundbutton_cancel = self.getButton("Cancel", self.ICON_CANCEL, self.soundline, self.soundline.cancelAction) soundbutton_browse = self.getButton("Browse", self.ICON_FOLDER, None, None) soundRadius = self.getDoubleSpinBox("soundRadius", "Set sound radius", self.soundline) soundVolume = self.getDoubleSpinBox("soundVolume", "Set sound volume", self.soundline) main_box = QVBoxLayout() main_box.setContentsMargins(0, 0, 0, 0) box_buttons = QHBoxLayout() box_buttons.setContentsMargins(0, 0, 0, 0) # TODO no need for self? # crashed always if didnt put self to second label :P you can try to remove them... # basically the qwidget ptr must stay somewhere in py otherwise will crash when gets to painting -Pforce self.label_radius = QLabel("Radius") self.label_radius.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Preferred) self.label_volume = QLabel("Volume") self.label_volume.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Preferred) box_buttons.addWidget(self.label_radius) box_buttons.addWidget(soundRadius) box_buttons.addWidget(self.label_volume) box_buttons.addWidget(soundVolume) box_buttons.addWidget(soundbutton_browse) box_buttons.addWidget(soundbutton_ok) box_buttons.addWidget(soundbutton_cancel) main_box.addWidget(self.soundline) main_box.addLayout(box_buttons) self.sound_widget = QWidget() self.sound_widget.setLayout(main_box) # Animation line edit and buttons self.animation_title = QLabel("Skeleton Animation") self.animation_title.setStyleSheet( "font-size:18px;font-weight:bold;padding-top:5px;") self.animation_title.setIndent(0) self.animationline = lines.AnimationAssetidEditline(controller) self.animationline.name = "animationLineEdit" animation_combobox = self.getCombobox("AnimationName", "Animation Name", self.animationline) animationbutton_ok = self.getButton("Apply", self.ICON_OK, self.animationline, self.animationline.applyAction) animationbutton_cancel = self.getButton( "Cancel", self.ICON_CANCEL, self.animationline, self.animationline.cancelAction) animationbutton_browse = self.getButton("Browse", self.ICON_FOLDER, None, None) animationRate = self.getDoubleSpinBox("animationRate", "Set animation rate", self.animationline) animationbox = QVBoxLayout() animationbox.setContentsMargins(0, 0, 0, 0) self.anim_box_buttons = QHBoxLayout() self.anim_box_buttons.name = "AnimBoxButtons" self.anim_box_buttons.setContentsMargins(0, 0, 0, 0) label_rate = QLabel("Rate") label_rate.name = "Animation Rate" label_rate.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Preferred) self.anim_box_buttons.addWidget(animation_combobox) self.anim_box_buttons.addWidget(label_rate) self.anim_box_buttons.addWidget(animationRate) self.anim_box_buttons.addWidget(animationbutton_browse) self.anim_box_buttons.addWidget(animationbutton_ok) self.anim_box_buttons.addWidget(animationbutton_cancel) animationbox.addWidget(self.animation_title) animationbox.addWidget(self.animationline) animationbox.addLayout(self.anim_box_buttons) self.animation_widget = QWidget() self.animation_widget.setLayout(animationbox) self.animation_widget.hide() self.updatingSelection = False # mesh buttons self.meshline.connect('textEdited(QString)', button_ok.lineValueChanged) self.meshline.connect('textEdited(QString)', button_cancel.lineValueChanged) # audio buttons self.soundline.connect('textEdited(QString)', soundbutton_ok.lineValueChanged) self.soundline.connect('textEdited(QString)', soundbutton_cancel.lineValueChanged) soundRadius.connect('valueChanged(double)', soundbutton_ok.lineValueChanged) soundRadius.connect('valueChanged(double)', soundbutton_cancel.lineValueChanged) soundVolume.connect('valueChanged(double)', soundbutton_ok.lineValueChanged) soundVolume.connect('valueChanged(double)', soundbutton_cancel.lineValueChanged) # animation buttons self.animationline.connect('textEdited(QString)', animationbutton_ok.lineValueChanged) self.animationline.connect('textEdited(QString)', animationbutton_cancel.lineValueChanged) animationRate.connect('valueChanged(double)', animationbutton_ok.lineValueChanged) animationRate.connect('valueChanged(double)', animationbutton_cancel.lineValueChanged) animation_combobox.connect('currentIndexChanged(int)', animationbutton_ok.lineValueChanged) animation_combobox.connect('currentIndexChanged(int)', animationbutton_cancel.lineValueChanged) self.mainTabList = {} self.currentlySelectedTreeWidgetItem = [] def selected(self, ent, keepold=False): self.meshline.update_text(ent.prim.MeshID) self.soundline.update_text(ent.prim.SoundID) self.soundline.update_soundradius(ent.prim.SoundRadius) self.soundline.update_soundvolume(ent.prim.SoundVolume) self.updateAnimation(ent) self.updateMaterialTab(ent) self.updatingSelection = True self.update_guivals(ent) self.updatingSelection = False self.controller.soundRuler(ent) def deselected(self): self.meshline.update_text("") self.soundline.update_text("") self.updateAnimation() def update_guivals(self, ent): if ent is not None: self.update_posvals(ent.placeable.Position) self.update_scalevals(ent.placeable.Scale) self.update_rotvals(ent.placeable) #self.controller.updateSelectionBox(ent) #PositionAndOrientation(ent) def update_scalevals(self, scale): if self.controller.cpp_python_handler != None: self.controller.cpp_python_handler.SetScaleValues( scale.x(), scale.y(), scale.z()) def update_posvals(self, pos): if self.controller.cpp_python_handler != None: self.controller.cpp_python_handler.SetPosValues( pos.x(), pos.y(), pos.z()) def update_rotvals(self, placeable): # We use now pitch, yaw and roll we get directly from placeable # this ensures we don't have to do weird conversions with all # potential problems :) # TODO: figure out this shift - Looks like we need to give Ogre-style # info. Yaw in viewer is around z axis, but placeable gets # directly Ogre orientation x_val = math.degrees(placeable.Pitch) y_val = math.degrees(placeable.Yaw) z_val = math.degrees(placeable.Roll) if self.controller.cpp_python_handler != None: self.controller.cpp_python_handler.SetRotateValues( x_val, y_val, z_val) def updateAnimation(self, ent=None): # Hide by default self.animation_widget.setVisible(False) self.animationline.update_text("") self.animationline.update_animationrate(0.0) combobox = self.animationline.combobox combobox.clear() # Return if no mesh if not ent: return try: ent.mesh except: return # Show, update animation id and rate self.animation_widget.setVisible(True) self.animationline.update_text(ent.prim.AnimationPackageID) self.animationline.update_animationrate(ent.prim.AnimationRate) # Down update other elements if no asset ref in place if ent.prim.AnimationPackageID in ( u'', '00000000-0000-0000-0000-000000000000'): return # Get anim component try: ac = ent.animationcontroller except: ent.GetOrCreateComponentRaw('EC_AnimationController') ac = ent.animationcontroller ac.SetNetworkSyncEnabled(False) ac.SetMeshEntity(ent.mesh) # Update rest of the ui current_animation = ent.prim.AnimationName available_animations = ac.GetAvailableAnimations() for anim in available_animations: combobox.addItem(anim) if current_animation in available_animations: idx = combobox.findText(current_animation) combobox.setCurrentIndex(idx) # Deactivate as this is the current data, no changes made self.animationline.deactivateButtons() def updateMaterialTab(self, ent): #ent = self.controller.active if ent is not None: self.clearDialogForm() qprim = ent.prim mats = qprim.Materials for i in range(len(mats)): index = str(i) tuple = mats[index] line = lines.UUIDEditLine(self.controller) line.update_text(tuple[1]) line.name = index asset_type = tuple[0] combobox = QComboBox() for text in PRIMTYPES.itervalues(): combobox.addItem(text) if PRIMTYPES.has_key(asset_type): realIndex = combobox.findText(PRIMTYPES[asset_type]) combobox.setCurrentIndex(realIndex) applyButton = self.getButton("materialApplyButton", self.ICON_OK, line, line.applyAction) cancelButton = self.getButton("materialCancelButton", self.ICON_CANCEL, line, line.cancelAction) line.index = index line.combobox = combobox line.connect('textEdited(QString)', applyButton.lineValueChanged) line.connect('textEdited(QString)', cancelButton.lineValueChanged) box = QHBoxLayout() box.addWidget(line) box.addWidget(applyButton) box.addWidget(cancelButton) self.materialTabFormWidget.materialFormLayout.addRow( combobox, box) def clearDialogForm(self): children = self.materialTabFormWidget.children() for child in children: if child.name != "materialFormLayout": #dont want to remove the actual form layout from the widget self.materialTabFormWidget.materialFormLayout.removeWidget( child) child.delete() children = self.materialTabFormWidget.findChildren("QHBoxLayout") for child in children: self.materialTabFormWidget.materialFormLayout.removeItem(child) child.delete() def getButton(self, name, iconname, line, action): size = QSize(20, 20) button = buttons.PyPushButton() icon = QIcon(QPixmap(iconname).scaled(size)) button.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) button.setMaximumSize(size) button.setMinimumSize(size) button.text = "" button.name = name button.setIcon(icon) button.setFlat(True) if action != None: button.connect('clicked()', action) if line != None: button.setEnabled(False) line.buttons.append(button) return button def getDoubleSpinBox(self, name, tooltip, line): spinner = QDoubleSpinBox() spinner.setValue(0.0) spinner.name = name spinner.toolTip = tooltip spinner.setEnabled(True) line.spinners.append(spinner) return spinner def getCombobox(self, name, tooltip, line): combobox = QComboBox() combobox.name = name combobox.toolTip = tooltip combobox.setEnabled(True) line.combobox = combobox return combobox
class ObjectEditWindow: UIFILE = "pymodules/objectedit/editobject.ui" ICON_FOLDER = "pymodules/objectedit/folder.png" ICON_OK = "pymodules/objectedit/ok-small.png" ICON_CANCEL = "pymodules/objectedit/cancel-small.png" def __init__(self, controller): self.controller = controller loader = QUiLoader() loader.setLanguageChangeEnabled(True) uifile = QFile(self.UIFILE) ui = loader.load(uifile) width = ui.size.width() height = ui.size.height() uism = naali.ui self.widget = ui # Material/Texture widgets self.materialTabFormWidget = ui.findChild("QWidget", "MaterialsTab").formLayoutWidget # Mesh line edit and buttons self.meshline = lines.MeshAssetidEditline(controller) self.meshline.name = "meshLineEdit" button_ok = self.getButton("Apply", self.ICON_OK, self.meshline, self.meshline.applyAction) button_cancel = self.getButton("Cancel", self.ICON_CANCEL, self.meshline, self.meshline.cancelAction) button_browse = self.getButton("Browse", self.ICON_FOLDER, None, None) box = QHBoxLayout() box.setContentsMargins(0,0,0,0) box.addWidget(self.meshline) box.addWidget(button_browse) box.addWidget(button_ok) box.addWidget(button_cancel) self.mesh_widget = QWidget() self.mesh_widget.setLayout(box) # Sound line edit and buttons self.soundline = lines.SoundAssetidEditline(controller) self.soundline.name = "soundLineEdit" soundbutton_ok = self.getButton("Apply", self.ICON_OK, self.soundline, self.soundline.applyAction) soundbutton_cancel = self.getButton("Cancel", self.ICON_CANCEL, self.soundline, self.soundline.cancelAction) soundbutton_browse = self.getButton("Browse", self.ICON_FOLDER, None, None) soundRadius = self.getDoubleSpinBox("soundRadius", "Set sound radius", self.soundline) soundVolume = self.getDoubleSpinBox("soundVolume", "Set sound volume", self.soundline) main_box = QVBoxLayout() main_box.setContentsMargins(0,0,0,0) box_buttons = QHBoxLayout() box_buttons.setContentsMargins(0,0,0,0) # TODO no need for self? # crashed always if didnt put self to second label :P you can try to remove them... # basically the qwidget ptr must stay somewhere in py otherwise will crash when gets to painting -Pforce self.label_radius = QLabel("Radius") self.label_radius.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Preferred) self.label_volume = QLabel("Volume") self.label_volume.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Preferred) box_buttons.addWidget(self.label_radius) box_buttons.addWidget(soundRadius) box_buttons.addWidget(self.label_volume) box_buttons.addWidget(soundVolume) box_buttons.addWidget(soundbutton_browse) box_buttons.addWidget(soundbutton_ok) box_buttons.addWidget(soundbutton_cancel) main_box.addWidget(self.soundline) main_box.addLayout(box_buttons) self.sound_widget = QWidget() self.sound_widget.setLayout(main_box) # Animation line edit and buttons self.animation_title = QLabel("Skeleton Animation") self.animation_title.setStyleSheet("font-size:18px;font-weight:bold;padding-top:5px;") self.animation_title.setIndent(0) self.animationline = lines.AnimationAssetidEditline(controller) self.animationline.name = "animationLineEdit" animation_combobox = self.getCombobox("AnimationName", "Animation Name", self.animationline) animationbutton_ok = self.getButton("Apply", self.ICON_OK, self.animationline, self.animationline.applyAction) animationbutton_cancel = self.getButton("Cancel", self.ICON_CANCEL, self.animationline, self.animationline.cancelAction) animationbutton_browse = self.getButton("Browse", self.ICON_FOLDER, None, None) animationRate = self.getDoubleSpinBox("animationRate", "Set animation rate", self.animationline) animationbox = QVBoxLayout() animationbox.setContentsMargins(0,0,0,0) self.anim_box_buttons = QHBoxLayout() self.anim_box_buttons.name = "AnimBoxButtons" self.anim_box_buttons.setContentsMargins(0,0,0,0) label_rate = QLabel("Rate") label_rate.name = "Animation Rate" label_rate.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Preferred) self.anim_box_buttons.addWidget(animation_combobox) self.anim_box_buttons.addWidget(label_rate) self.anim_box_buttons.addWidget(animationRate) self.anim_box_buttons.addWidget(animationbutton_browse) self.anim_box_buttons.addWidget(animationbutton_ok) self.anim_box_buttons.addWidget(animationbutton_cancel) animationbox.addWidget(self.animation_title) animationbox.addWidget(self.animationline) animationbox.addLayout(self.anim_box_buttons) self.animation_widget = QWidget() self.animation_widget.setLayout(animationbox) self.animation_widget.hide() self.updatingSelection = False # mesh buttons self.meshline.connect('textEdited(QString)', button_ok.lineValueChanged) self.meshline.connect('textEdited(QString)', button_cancel.lineValueChanged) # audio buttons self.soundline.connect('textEdited(QString)', soundbutton_ok.lineValueChanged) self.soundline.connect('textEdited(QString)', soundbutton_cancel.lineValueChanged) soundRadius.connect('valueChanged(double)', soundbutton_ok.lineValueChanged) soundRadius.connect('valueChanged(double)', soundbutton_cancel.lineValueChanged) soundVolume.connect('valueChanged(double)', soundbutton_ok.lineValueChanged) soundVolume.connect('valueChanged(double)', soundbutton_cancel.lineValueChanged) # animation buttons self.animationline.connect('textEdited(QString)', animationbutton_ok.lineValueChanged) self.animationline.connect('textEdited(QString)', animationbutton_cancel.lineValueChanged) animationRate.connect('valueChanged(double)', animationbutton_ok.lineValueChanged) animationRate.connect('valueChanged(double)', animationbutton_cancel.lineValueChanged) animation_combobox.connect('currentIndexChanged(int)', animationbutton_ok.lineValueChanged) animation_combobox.connect('currentIndexChanged(int)', animationbutton_cancel.lineValueChanged) self.mainTabList = {} self.currentlySelectedTreeWidgetItem = [] def selected(self, ent, keepold=False): self.meshline.update_text(ent.prim.MeshID) self.soundline.update_text(ent.prim.SoundID) self.soundline.update_soundradius(ent.prim.SoundRadius) self.soundline.update_soundvolume(ent.prim.SoundVolume) self.updateAnimation(ent) self.updateMaterialTab(ent) self.updatingSelection = True self.update_guivals(ent) self.updatingSelection = False self.controller.soundRuler(ent) def deselected(self): self.meshline.update_text("") self.soundline.update_text("") self.updateAnimation() def update_guivals(self, ent): if ent is not None: self.update_posvals(ent.placeable.Position) self.update_scalevals(ent.placeable.Scale) self.update_rotvals(ent.placeable) #self.controller.updateSelectionBox(ent) #PositionAndOrientation(ent) def update_scalevals(self, scale): if self.controller.cpp_python_handler != None: self.controller.cpp_python_handler.SetScaleValues(scale.x(), scale.y(), scale.z()) def update_posvals(self, pos): if self.controller.cpp_python_handler != None: self.controller.cpp_python_handler.SetPosValues(pos.x(), pos.y(), pos.z()) def update_rotvals(self, placeable): # We use now pitch, yaw and roll we get directly from placeable # this ensures we don't have to do weird conversions with all # potential problems :) # TODO: figure out this shift - Looks like we need to give Ogre-style # info. Yaw in viewer is around z axis, but placeable gets # directly Ogre orientation x_val = math.degrees(placeable.Pitch) y_val = math.degrees(placeable.Yaw) z_val = math.degrees(placeable.Roll) if self.controller.cpp_python_handler != None: self.controller.cpp_python_handler.SetRotateValues(x_val, y_val, z_val) def updateAnimation(self, ent = None): # Hide by default self.animation_widget.setVisible(False) self.animationline.update_text("") self.animationline.update_animationrate(0.0) combobox = self.animationline.combobox combobox.clear() # Return if no mesh if not ent: return try: ent.mesh except: return # Show, update animation id and rate self.animation_widget.setVisible(True) self.animationline.update_text(ent.prim.AnimationPackageID) self.animationline.update_animationrate(ent.prim.AnimationRate) # Down update other elements if no asset ref in place if ent.prim.AnimationPackageID in (u'', '00000000-0000-0000-0000-000000000000'): return # Get anim component try: ac = ent.animationcontroller except: ent.GetOrCreateComponentRaw('EC_AnimationController') ac = ent.animationcontroller ac.SetNetworkSyncEnabled(False) ac.SetMeshEntity(ent.mesh) # Update rest of the ui current_animation = ent.prim.AnimationName available_animations = ac.GetAvailableAnimations() for anim in available_animations: combobox.addItem(anim) if current_animation in available_animations: idx = combobox.findText(current_animation) combobox.setCurrentIndex(idx) # Deactivate as this is the current data, no changes made self.animationline.deactivateButtons() def updateMaterialTab(self, ent): #ent = self.controller.active if ent is not None: self.clearDialogForm() qprim = ent.prim mats = qprim.Materials for i in range(len(mats)): index = str(i) tuple = mats[index] line = lines.UUIDEditLine(self.controller) line.update_text(tuple[1]) line.name = index asset_type = tuple[0] combobox = QComboBox() for text in PRIMTYPES.itervalues(): combobox.addItem(text) if PRIMTYPES.has_key(asset_type): realIndex = combobox.findText(PRIMTYPES[asset_type]) combobox.setCurrentIndex(realIndex) applyButton = self.getButton("materialApplyButton", self.ICON_OK, line, line.applyAction) cancelButton = self.getButton("materialCancelButton", self.ICON_CANCEL, line, line.cancelAction) line.index = index line.combobox = combobox line.connect('textEdited(QString)', applyButton.lineValueChanged) line.connect('textEdited(QString)', cancelButton.lineValueChanged) box = QHBoxLayout() box.addWidget(line) box.addWidget(applyButton) box.addWidget(cancelButton) self.materialTabFormWidget.materialFormLayout.addRow(combobox, box) def clearDialogForm(self): children = self.materialTabFormWidget.children() for child in children: if child.name != "materialFormLayout": #dont want to remove the actual form layout from the widget self.materialTabFormWidget.materialFormLayout.removeWidget(child) child.delete() children = self.materialTabFormWidget.findChildren("QHBoxLayout") for child in children: self.materialTabFormWidget.materialFormLayout.removeItem(child) child.delete() def getButton(self, name, iconname, line, action): size = QSize(20, 20) button = buttons.PyPushButton() icon = QIcon(QPixmap(iconname).scaled(size)) button.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) button.setMaximumSize(size) button.setMinimumSize(size) button.text = "" button.name = name button.setIcon(icon) button.setFlat(True) if action != None: button.connect('clicked()', action) if line != None: button.setEnabled(False) line.buttons.append(button) return button def getDoubleSpinBox(self, name, tooltip, line): spinner = QDoubleSpinBox() spinner.setValue(0.0) spinner.name = name spinner.toolTip = tooltip spinner.setEnabled(True) line.spinners.append(spinner) return spinner def getCombobox(self, name, tooltip, line): combobox = QComboBox() combobox.name = name combobox.toolTip = tooltip combobox.setEnabled(True) line.combobox = combobox return combobox
def __init__(self, controller): self.controller = controller loader = QUiLoader() loader.setLanguageChangeEnabled(True) uifile = QFile(self.UIFILE) ui = loader.load(uifile) width = ui.size.width() height = ui.size.height() uism = naali.ui self.widget = ui # Material/Texture widgets self.materialTabFormWidget = ui.findChild("QWidget", "MaterialsTab").formLayoutWidget # Mesh line edit and buttons self.meshline = lines.MeshAssetidEditline(controller) self.meshline.name = "meshLineEdit" button_ok = self.getButton("Apply", self.ICON_OK, self.meshline, self.meshline.applyAction) button_cancel = self.getButton("Cancel", self.ICON_CANCEL, self.meshline, self.meshline.cancelAction) button_browse = self.getButton("Browse", self.ICON_FOLDER, None, None) box = QHBoxLayout() box.setContentsMargins(0,0,0,0) box.addWidget(self.meshline) box.addWidget(button_browse) box.addWidget(button_ok) box.addWidget(button_cancel) self.mesh_widget = QWidget() self.mesh_widget.setLayout(box) # Sound line edit and buttons self.soundline = lines.SoundAssetidEditline(controller) self.soundline.name = "soundLineEdit" soundbutton_ok = self.getButton("Apply", self.ICON_OK, self.soundline, self.soundline.applyAction) soundbutton_cancel = self.getButton("Cancel", self.ICON_CANCEL, self.soundline, self.soundline.cancelAction) soundbutton_browse = self.getButton("Browse", self.ICON_FOLDER, None, None) soundRadius = self.getDoubleSpinBox("soundRadius", "Set sound radius", self.soundline) soundVolume = self.getDoubleSpinBox("soundVolume", "Set sound volume", self.soundline) main_box = QVBoxLayout() main_box.setContentsMargins(0,0,0,0) box_buttons = QHBoxLayout() box_buttons.setContentsMargins(0,0,0,0) # TODO no need for self? # crashed always if didnt put self to second label :P you can try to remove them... # basically the qwidget ptr must stay somewhere in py otherwise will crash when gets to painting -Pforce self.label_radius = QLabel("Radius") self.label_radius.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Preferred) self.label_volume = QLabel("Volume") self.label_volume.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Preferred) box_buttons.addWidget(self.label_radius) box_buttons.addWidget(soundRadius) box_buttons.addWidget(self.label_volume) box_buttons.addWidget(soundVolume) box_buttons.addWidget(soundbutton_browse) box_buttons.addWidget(soundbutton_ok) box_buttons.addWidget(soundbutton_cancel) main_box.addWidget(self.soundline) main_box.addLayout(box_buttons) self.sound_widget = QWidget() self.sound_widget.setLayout(main_box) # Animation line edit and buttons self.animation_title = QLabel("Skeleton Animation") self.animation_title.setStyleSheet("font-size:18px;font-weight:bold;padding-top:5px;") self.animation_title.setIndent(0) self.animationline = lines.AnimationAssetidEditline(controller) self.animationline.name = "animationLineEdit" animation_combobox = self.getCombobox("AnimationName", "Animation Name", self.animationline) animationbutton_ok = self.getButton("Apply", self.ICON_OK, self.animationline, self.animationline.applyAction) animationbutton_cancel = self.getButton("Cancel", self.ICON_CANCEL, self.animationline, self.animationline.cancelAction) animationbutton_browse = self.getButton("Browse", self.ICON_FOLDER, None, None) animationRate = self.getDoubleSpinBox("animationRate", "Set animation rate", self.animationline) animationbox = QVBoxLayout() animationbox.setContentsMargins(0,0,0,0) self.anim_box_buttons = QHBoxLayout() self.anim_box_buttons.name = "AnimBoxButtons" self.anim_box_buttons.setContentsMargins(0,0,0,0) label_rate = QLabel("Rate") label_rate.name = "Animation Rate" label_rate.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Preferred) self.anim_box_buttons.addWidget(animation_combobox) self.anim_box_buttons.addWidget(label_rate) self.anim_box_buttons.addWidget(animationRate) self.anim_box_buttons.addWidget(animationbutton_browse) self.anim_box_buttons.addWidget(animationbutton_ok) self.anim_box_buttons.addWidget(animationbutton_cancel) animationbox.addWidget(self.animation_title) animationbox.addWidget(self.animationline) animationbox.addLayout(self.anim_box_buttons) self.animation_widget = QWidget() self.animation_widget.setLayout(animationbox) self.animation_widget.hide() self.updatingSelection = False # mesh buttons self.meshline.connect('textEdited(QString)', button_ok.lineValueChanged) self.meshline.connect('textEdited(QString)', button_cancel.lineValueChanged) # audio buttons self.soundline.connect('textEdited(QString)', soundbutton_ok.lineValueChanged) self.soundline.connect('textEdited(QString)', soundbutton_cancel.lineValueChanged) soundRadius.connect('valueChanged(double)', soundbutton_ok.lineValueChanged) soundRadius.connect('valueChanged(double)', soundbutton_cancel.lineValueChanged) soundVolume.connect('valueChanged(double)', soundbutton_ok.lineValueChanged) soundVolume.connect('valueChanged(double)', soundbutton_cancel.lineValueChanged) # animation buttons self.animationline.connect('textEdited(QString)', animationbutton_ok.lineValueChanged) self.animationline.connect('textEdited(QString)', animationbutton_cancel.lineValueChanged) animationRate.connect('valueChanged(double)', animationbutton_ok.lineValueChanged) animationRate.connect('valueChanged(double)', animationbutton_cancel.lineValueChanged) animation_combobox.connect('currentIndexChanged(int)', animationbutton_ok.lineValueChanged) animation_combobox.connect('currentIndexChanged(int)', animationbutton_cancel.lineValueChanged) self.mainTabList = {} self.currentlySelectedTreeWidgetItem = []
ui2 = loader.load(uifile2) uiprops2 = r.createUiWidgetProperty() uiprops2.show_at_toolbar_ = False uiprops2.widget_name_ = "editobject" uiprops2.my_size_ = QSize(ui2.size.width(), ui2.size.height()) pw2 = r.createUiProxyWidget(ui2, uiprops2) r.pw2 = pw2 r.tab_manager.addTab(r.pw, QIcon("pymodules/editgui/cancel.png"), "test") r.tab_manager.addTab(r.pw2, QIcon("pymodules/editgui/cancel.png"), "editobject") if 0: from PythonQt.QtGui import QLineEdit, QHBoxLayout box = r.c.materialDialogFormWidget.formLayout hor = QHBoxLayout() line = QLineEdit() hor.addWidget(line) print hor if 0: from PythonQt.QtGui import QLineEdit, QHBoxLayout, QComboBox, QLabel combo = QComboBox() combo.addItem("aaaa") combo.addItem("bbbb") combo.addItem("cccc") combo.addItem("dddd") print combo.currentIndex, combo.findText("ccCc") if 0: