def __init__(self, category): super(ProfilingTaskView, self).__init__(category, 'Profile') self.profile = None self.sortKey = 'prim' self.sortDir = 0 self.table = self.addTopWidget(gui.TableView()) self.sortKeyBox = self.addLeftWidget(gui.GroupBox('Sort')) group = [] for name, key in Stat._fields: radio = self.sortKeyBox.addWidget(KeyRadioButton(group, name, key)) self.sortDirBox = self.addLeftWidget(gui.GroupBox('Sort')) group = [] for name, dir in [('Descending', 0), ('Ascending', 1)]: radio = self.sortDirBox.addWidget(DirRadioButton(group, name, dir)) self.saveBox = self.addLeftWidget(gui.GroupBox('Save')) self.save = gui.BrowseButton('save') self.saveBox.addWidget(self.save) self.save.setEnabled(False) self.table.setColumnCount(len(self._columns)) self.table.setHorizontalHeaderLabels(self._columns) self.table.setColumnWidth(len(self._columns) - 1, 300) @self.save.mhEvent def onClicked(path): if path: self.saveStats(path)
def __init__(self, category): gui3d.TaskView.__init__(self, category, 'Expression mixer') self.human = gui3d.app.selectedHuman self.base_bvh = None self.base_anim = None self.sliders = [] self.modifiers = {} savebox = self.addRightWidget(gui.GroupBox("Save")) loadbox = self.addRightWidget(gui.GroupBox('Load')) resetbox = self.addRightWidget(gui.GroupBox('Reset')) self.nameField = savebox.addWidget(TextEdit("Name")) self.descrField = savebox.addWidget(TextEdit("Description")) self.tagsField = savebox.addWidget(TextEdit("Tags (separate with ;)")) self.authorField = savebox.addWidget(TextEdit("Author")) self.copyrightField = savebox.addWidget(TextEdit("Copyright")) self.licenseField = savebox.addWidget(TextEdit("License")) self.websiteField = savebox.addWidget(TextEdit("Website")) lic = mh.getAssetLicense() self.authorField.setValue(lic.author) self.copyrightField.setValue(lic.copyright) self.licenseField.setValue(lic.license) self.websiteField.setValue(lic.homepage) self.descrField.setValue("No description set") self.tagsField.setValue("") self.saveBtn = savebox.addWidget( gui.BrowseButton(mode='save', label="Save pose")) self.saveBtn.setFilter("MakeHuman blend pose file (*.mhpose)") savepath = getpath.getDataPath('expressions') if not os.path.exists(savepath): os.makedirs(savepath) self.saveBtn.setDirectory(getpath.getDataPath('expressions')) self.loadBtn = loadbox.addWidget( gui.BrowseButton(mode='open', label='Load pose')) self.loadBtn.setFilter('MakeHuman Poses (*.mhpose)') self.resetBtn = resetbox.addWidget(gui.Button('Reset')) @self.saveBtn.mhEvent def onClicked(path): if path: if not os.path.splitext(path)[1]: path = path + ".mhpose" self.saveCurrentPose(path) @self.loadBtn.mhEvent def onClicked(path): if os.path.isfile(path): self.loadPose(path) @self.resetBtn.mhEvent def onClicked(event): self.resetExpression()
def __init__(self, category): gui3d.TaskView.__init__(self, category, 'Skeleton Debug') self.human = gui3d.app.selectedHuman self.displayBox = self.addRightWidget(gui.GroupBox('Display')) self.selectedBone = None self.boneBox = self.addRightWidget(gui.GroupBox('Bones')) self.boneSelector = [] self.xray_mat = None self.skelMesh = None self.skelObj = None self.showWeightsTggl = self.displayBox.addWidget( gui.CheckBox("Show bone weights")) @self.showWeightsTggl.mhEvent def onClicked(event): if self.showWeightsTggl.selected: # Highlight bone selected in bone explorer again for rdio in self.boneSelector: if rdio.selected: self.highlightBone(str(rdio.text())) else: self.clearBoneWeights() self.showWeightsTggl.setSelected(True)
def __init__(self, category, app): self.app = app gui3d.TaskView.__init__(self, category, 'Custom') self.targetsPath = getpath.getPath('data/custom') if not os.path.exists(self.targetsPath): os.makedirs(self.targetsPath) self.optionsBox = self.addRightWidget(gui.GroupBox('Options')) rescanButton = self.optionsBox.addWidget( gui.Button("Rescan targets' folder")) self.folderBox = self.addRightWidget(gui.GroupBox('Folders')) self.targetsBox = self.addLeftWidget(gui.StackedBox()) self.human = app.selectedHuman @rescanButton.mhEvent def onClicked(event): self.searchTargets() self.folders = [] self.sliders = [] self.modifiers = {} self.searchTargets()
def build(self, options, taskview): import gui Exporter.build(self, options, taskview) self.hiddenGeom = options.addWidget( gui.CheckBox("Helper geometry", False)) self.facePoseUnits = options.addWidget( gui.CheckBox("Facial pose-units", False)) orients = [] box = options.addWidget(gui.GroupBox("Orientation")) self.yUpFaceZ = box.addWidget( gui.RadioButton(orients, "Y up, face Z", True)) self.yUpFaceX = box.addWidget( gui.RadioButton(orients, "Y up, face X", False)) self.zUpFaceNegY = box.addWidget( gui.RadioButton(orients, "Z up, face -Y", False)) self.zUpFaceX = box.addWidget( gui.RadioButton(orients, "Z up, face X", False)) csyses = [] box = options.addWidget(gui.GroupBox("Bone orientation")) self.localY = box.addWidget( gui.RadioButton(csyses, "Along local Y", True)) self.localX = box.addWidget( gui.RadioButton(csyses, "Along local X", False)) self.localG = box.addWidget( gui.RadioButton(csyses, "Local = Global", False))
def __init__(self, category): gui3d.TaskView.__init__(self, category, 'Help') aboutBox = self.addLeftWidget(gui.GroupBox('About MakeHuman')) self.aboutButton = aboutBox.addWidget(gui.Button('About / License')) self.websiteButton = aboutBox.addWidget(gui.Button('Website')) self.facebookButton = aboutBox.addWidget(gui.Button('FaceBook page')) optionsBox = self.addLeftWidget(gui.GroupBox('Support')) self.faqButton = optionsBox.addWidget(gui.Button('FAQ')) self.forumButton = optionsBox.addWidget(gui.Button('Forum')) self.manualButton = optionsBox.addWidget(gui.Button('Wiki')) self.patreonButton = optionsBox.addWidget(gui.Button('Patreon')) self.reportBugButton = optionsBox.addWidget(gui.Button('Report bug')) self.requestFeatureButton = optionsBox.addWidget(gui.Button('Request feature')) copyBox = self.addLeftWidget(gui.GroupBox('Copy to clipboard')) self.versionButton = copyBox.addWidget(gui.Button('Version String')) @self.aboutButton.mhEvent def onClicked(event): gui3d.app.about() @self.websiteButton.mhEvent def onClicked(event): webbrowser.open('http://www.makehumancommunity.org') @self.manualButton.mhEvent def onClicked(event): webbrowser.open('http://www.makehumancommunity.org/wiki/Main_Page') @self.reportBugButton.mhEvent def onClicked(event): webbrowser.open('http://bugtracker.makehumancommunity.org/issues/new?project_id=makehuman') @self.requestFeatureButton.mhEvent def onClicked(event): webbrowser.open('http://bugtracker.makehumancommunity.org/issues/new?project_id=makehuman&issue[tracker_id]=2') @self.faqButton.mhEvent def onClicked(event): webbrowser.open('http://www.makehumancommunity.org/wiki/FAQ:Index') @self.forumButton.mhEvent def onClicked(event): webbrowser.open('http://www.makehumancommunity.org/forum') @self.patreonButton.mhEvent def onClicked(event): webbrowser.open('https://www.patreon.com/makehuman/overview') @self.facebookButton.mhEvent def onClicked(event): webbrowser.open('https://www.facebook.com/makehuman/') @self.versionButton.mhEvent def onClicked(event): mhv = MHVersion() gui3d.app.clipboard().setText(mhv.getFullVersionStr())
def __init__(self, category, mainLib): gui3d.TaskView.__init__(self, category, 'Skeleton Debug') self.mainLib = mainLib mainLib.debugLib = self ''' displayBox = mainLib.displayBox mainLib.showWeightsTggl = displayBox.addWidget(gui.CheckBox("Show bone weights")) @mainLib.showWeightsTggl.mhEvent def onClicked(event): if mainLib.showWeightsTggl.selected: # Highlight bone selected in bone explorer again for rdio in self.boneSelector: if rdio.selected: mainLib.highlightBone(str(rdio.text())) else: mainLib.clearBoneWeights() mainLib.showWeightsTggl.setSelected(True) ''' self.boneBox = self.addRightWidget(gui.GroupBox('Bones')) self.boneSelector = [] # Add event listeners to skeleton mesh for bone highlighting @mainLib.mhEvent def onMouseEntered(event): """ Event fired when mouse hovers over a skeleton mesh facegroup """ gui3d.TaskView.onMouseEntered(self, event) mainLib.removeBoneHighlights() mainLib.highlightBone(event.group.name) @mainLib.mhEvent def onMouseExited(event): """ Event fired when mouse hovers off of a skeleton mesh facegroup """ gui3d.TaskView.onMouseExited(self, event) mainLib.removeBoneHighlights() # Highlight bone selected in bone explorer again for rdio in self.boneSelector: if rdio.selected: mainLib.clearBoneWeights() mainLib.highlightBone(str(rdio.text())) # # Options. For fine-tuning # self.optionsBox = self.addLeftWidget(gui.GroupBox('Rig Options')) selector = mainLib.optionsSelector = armature.options.ArmatureSelector(self.optionsBox) selector.fromOptions(mainLib.amtOptions) self.amtUpdateBtn = self.optionsBox.addWidget(gui.Button("Update Bones")) @self.amtUpdateBtn.mhEvent def onClicked(event): mainLib.updateSkeleton() mainLib.descrLbl.setText("No description available")
def __init__(self, category): gui3d.TaskView.__init__(self, category, 'Shortcuts') box = None self.widgets = [] row = [0] def add(action): box.addWidget(gui.TextView(action.text), row[0], 0) w = box.addWidget(AppShortcutEdit(action), row[0], 1) self.widgets.append(w) row[0] += 1 actions = gui3d.app.actions box = self.cameraBox = self.addLeftWidget(gui.GroupBox('Camera')) add(actions.rotateU) add(actions.rotateD) add(actions.rotateL) add(actions.rotateR) add(actions.panU) add(actions.panD) add(actions.panL) add(actions.panR) add(actions.zoomIn) add(actions.zoomOut) add(actions.front) add(actions.right) add(actions.top) add(actions.back) add(actions.left) add(actions.bottom) add(actions.resetCam) box = self.actionBox = self.addRightWidget(gui.GroupBox('Actions')) add(actions.undo) add(actions.redo) box = self.navigationBox = self.addRightWidget( gui.GroupBox('Navigation')) add(actions.modelling) add(actions.save) add(actions.load) add(actions.export) add(actions.rendering) add(actions.help) add(actions.exit) restorebox = gui.GroupBox('Restore Settings') self.addLeftWidget(restorebox) self.restoreBtn = gui.Button('Restore to defaults') restorebox.addWidget(self.restoreBtn) @self.restoreBtn.mhEvent def onClicked(event): gui3d.app.resetShortcuts() self.updateShortcuts()
def __init__(self, category): gui3d.TaskView.__init__(self, category, u"Help") aboutBox = self.addLeftWidget(gui.GroupBox(u"About MakeHuman")) self.aboutButton = aboutBox.addWidget(gui.Button(u"About")) self.websiteButton = aboutBox.addWidget(gui.Button(u"Website")) self.facebookButton = aboutBox.addWidget(gui.Button(u"FaceBook page")) optionsBox = self.addLeftWidget(gui.GroupBox(u"Support")) self.forumButton = optionsBox.addWidget(gui.Button(u"Forum")) self.manualButton = optionsBox.addWidget(gui.Button(u"Wiki")) self.reportBugButton = optionsBox.addWidget(gui.Button(u"Report bug")) self.requestFeatureButton = optionsBox.addWidget( gui.Button(u"Request feature")) copyBox = self.addLeftWidget(gui.GroupBox(u"Copy to clipboard")) self.versionButton = copyBox.addWidget(gui.Button(u"Version String")) @self.aboutButton.mhEvent def onClicked(event): gui3d.app.about() @self.websiteButton.mhEvent def onClicked(event): webbrowser.open("http://www.makehumancommunity.org") @self.manualButton.mhEvent def onClicked(event): webbrowser.open("http://www.makehumancommunity.org/wiki/Main_Page") @self.reportBugButton.mhEvent def onClicked(event): webbrowser.open( "http://bugtracker.makehumancommunity.org/issues/new?project_id=makehuman" ) @self.requestFeatureButton.mhEvent def onClicked(event): webbrowser.open( "http://bugtracker.makehumancommunity.org/issues/new?project_id=makehuman&issue[tracker_id]=2" ) @self.forumButton.mhEvent def onClicked(event): webbrowser.open("http://www.makehumancommunity.org/forum") @self.facebookButton.mhEvent def onClicked(event): webbrowser.open("https://www.facebook.com/makehuman/") @self.versionButton.mhEvent def onClicked(event): version_string = u"v" + mh.getVersionDigitsStr() + u" " + os.getenv(u"HGBRANCH", u"") \ + u" (r" + os.getenv(u"HGREVISION", u"") + " " + os.getenv(u"HGNODEID", u"") + ")" gui3d.app.clipboard().setText(version_string)
def __init__(self, category): gui3d.TaskView.__init__(self, category, 'Help') aboutBox = self.addLeftWidget(gui.GroupBox('About MakeHuman')) self.aboutButton = aboutBox.addWidget(gui.Button("About")) self.websiteButton = aboutBox.addWidget(gui.Button("Website")) self.facebookButton = aboutBox.addWidget(gui.Button("FaceBook page")) optionsBox = self.addLeftWidget(gui.GroupBox('Support')) self.forumButton = optionsBox.addWidget(gui.Button("Forum")) self.manualButton = optionsBox.addWidget(gui.Button("Wiki")) self.reportBugButton = optionsBox.addWidget(gui.Button("Report bug")) self.requestFeatureButton = optionsBox.addWidget( gui.Button("Request feature")) copyBox = self.addLeftWidget(gui.GroupBox('Copy to clipboard')) self.versionButton = copyBox.addWidget(gui.Button('Version String')) @self.aboutButton.mhEvent def onClicked(event): gui3d.app.about() @self.websiteButton.mhEvent def onClicked(event): webbrowser.open('http://www.makehumancommunity.org') @self.manualButton.mhEvent def onClicked(event): webbrowser.open('http://www.makehumancommunity.org/wiki/Main_Page') @self.reportBugButton.mhEvent def onClicked(event): webbrowser.open( 'http://bugtracker.makehumancommunity.org/issues/new?project_id=makehuman' ) @self.requestFeatureButton.mhEvent def onClicked(event): webbrowser.open( 'http://bugtracker.makehumancommunity.org/issues/new?project_id=makehuman&issue[tracker_id]=2' ) @self.forumButton.mhEvent def onClicked(event): webbrowser.open('http://www.makehumancommunity.org/forum') @self.facebookButton.mhEvent def onClicked(event): webbrowser.open('https://www.facebook.com/makehuman/') @self.versionButton.mhEvent def onClicked(event): version_string ='v' + mh.getVersionDigitsStr() + ' ' + os.getenv('HGBRANCH','') \ + ' (r' + os.getenv('HGREVISION','') + ' ' + os.getenv('HGNODEID','') + ')' gui3d.app.clipboard().setText(version_string)
def __init__(self, category): gui3d.TaskView.__init__(self, category, 'Help') aboutBox = self.addLeftWidget(gui.GroupBox('About MakeHuman')) self.aboutButton = aboutBox.addWidget(gui.Button('About')) self.websiteButton = aboutBox.addWidget(gui.Button('Website')) self.facebookButton = aboutBox.addWidget(gui.Button('FaceBook page')) optionsBox = self.addLeftWidget(gui.GroupBox('Support')) self.faqButton = optionsBox.addWidget(gui.Button('FAQ')) self.forumButton = optionsBox.addWidget(gui.Button('Forum')) self.manualButton = optionsBox.addWidget(gui.Button('Wiki')) self.reportBugButton = optionsBox.addWidget(gui.Button('Report bug')) self.requestFeatureButton = optionsBox.addWidget(gui.Button('Request feature')) copyBox = self.addLeftWidget(gui.GroupBox('Copy to clipboard')) self.versionButton = copyBox.addWidget(gui.Button('Version String')) @self.aboutButton.mhEvent def onClicked(event): gui3d.app.about() @self.websiteButton.mhEvent def onClicked(event): webbrowser.open('http://www.makehumancommunity.org') @self.manualButton.mhEvent def onClicked(event): webbrowser.open('http://www.makehumancommunity.org/wiki/Main_Page') @self.reportBugButton.mhEvent def onClicked(event): webbrowser.open('http://bugtracker.makehumancommunity.org/issues/new?project_id=makehuman') @self.requestFeatureButton.mhEvent def onClicked(event): webbrowser.open('http://bugtracker.makehumancommunity.org/issues/new?project_id=makehuman&issue[tracker_id]=2') @self.faqButton.mhEvent def onClicked(event): webbrowser.open('http://www.makehumancommunity.org/wiki/FAQ:Index') @self.forumButton.mhEvent def onClicked(event): webbrowser.open('http://www.makehumancommunity.org/forum') @self.facebookButton.mhEvent def onClicked(event): webbrowser.open('https://www.facebook.com/makehuman/') @self.versionButton.mhEvent def onClicked(event): version_string = mh.getVersionDigitsStr() + ' ' + gitutils.getCurrentBranch() \ + ':' + gitutils.getCurrentCommit(short=True) gui3d.app.clipboard().setText(version_string)
def __init__(self, category): guirender.RenderTaskView.__init__(self, category, 'Mitsuba') # Buttons pathBox = self.addLeftWidget(gui.GroupBox('Mitsuba bin path')) mitsuba_bin = gui3d.app.settings.get('mitsuba_bin', '') self.path= pathBox.addWidget(gui.TextEdit(str(mitsuba_bin)), 0, 0, 1, 2) self.browse = pathBox.addWidget(gui.BrowseButton('dir'), 1, 0, 1, 1) self.browse.setPath(mitsuba_bin) if sys.platform == 'win32': self.browse.setFilter('Executable programs (*.exe);;All files (*.*)') # @self.path.mhEvent def onChange(value): gui3d.app.settings['mitsuba_bin'] = 'Enter your path' if not value else str(value) @self.browse.mhEvent def onClicked(path): if os.path.isfile(path): gui3d.app.settings['mitsuba_bin'] = path self.path.setText(path) # Type of lighting method lightingBox = self.addLeftWidget(gui.GroupBox('Integrators')) lighting = [] self.dlButton = lightingBox.addWidget(gui.RadioButton(lighting, 'DirectLighting', selected = True)) self.ptButton = lightingBox.addWidget(gui.RadioButton(lighting, 'Path Tracing')) self.pmButton = lightingBox.addWidget(gui.RadioButton(lighting, 'Photon Mapping')) # samplerBox = self.addLeftWidget(gui.GroupBox('Sampler Options')) sampler = [] self.lowdButton = samplerBox.addWidget(gui.RadioButton(sampler, 'Low Discrepancy', selected = True)) self.indepButton = samplerBox.addWidget(gui.RadioButton(sampler, 'Independent')) # renderBox = self.addLeftWidget(gui.GroupBox('Render Options')) source=[] self.consoleButton = renderBox.addWidget(gui.RadioButton(source, 'Render console')) self.guiButton = renderBox.addWidget(gui.RadioButton(source, 'Render GUI', selected = True)) self.xmlButton = renderBox.addWidget(gui.RadioButton(source, 'Write XML')) self.renderButton = renderBox.addWidget(gui.Button('Render')) @self.renderButton.mhEvent def onClicked(event): reload(mh2mitsuba) # Avoid having to close and reopen MH for every coding change (can be removed once testing is complete) mh2mitsuba.MitsubaExport(gui3d.app.selectedHuman.mesh, gui3d.app, {'source':'console' if self.consoleButton.selected else 'gui' if self.guiButton.selected else 'xml', 'lighting':'dl' if self.dlButton.selected else 'pt' if self.ptButton.selected else 'pm', 'sampler':'low' if self.lowdButton.selected else 'ind'})
def __init__(self, category, backgroundChooserView): self.human = gui3d.app.selectedHuman self.backgroundImage = backgroundChooserView.backgroundImage self.texture = backgroundChooserView.texture self.backgroundChooserView = backgroundChooserView gui3d.TaskView.__init__(self, category, 'Projection') self.projectionBox = self.addLeftWidget(gui.GroupBox('Projection')) self.backgroundBox = self.addLeftWidget( gui.GroupBox('Background settings')) self.chooseBGButton = self.backgroundBox.addWidget( gui.Button('Choose background')) @self.chooseBGButton.mhEvent def onClicked(event): mh.changeTask('Settings', 'Background') self.projectBackgroundButton = self.projectionBox.addWidget( gui.Button('Project background')) @self.projectBackgroundButton.mhEvent def onClicked(event): self.projectBackground() self.projectLightingButton = self.projectionBox.addWidget( gui.Button('Project lighting')) @self.projectLightingButton.mhEvent def onClicked(event): self.projectLighting() self.projectUVButton = self.projectionBox.addWidget( gui.Button('Project UV topology')) @self.projectUVButton.mhEvent def onClicked(event): self.projectUV() displayBox = self.addRightWidget(gui.GroupBox('Display settings')) self.shadelessButton = displayBox.addWidget(gui.CheckBox('Shadeless')) @self.shadelessButton.mhEvent def onClicked(event): gui3d.app.selectedHuman.setShadeless( 1 if self.shadelessButton.selected else 0)
def __init__(self, category): gui3d.TaskView.__init__(self, category, 'Help') optionsBox = self.addLeftWidget(gui.GroupBox('Support options')) self.manualButton = optionsBox.addWidget(gui.Button("Manual")) self.reportBugButton = optionsBox.addWidget(gui.Button("Report bug")) self.requestFeatureButton = optionsBox.addWidget( gui.Button("Request feature")) self.forumButton = optionsBox.addWidget(gui.Button("Forum")) self.facebookButton = optionsBox.addWidget(gui.Button("FaceBook page")) @self.manualButton.mhEvent def onClicked(event): webbrowser.open('http://www.makehuman.org/documentation') @self.reportBugButton.mhEvent def onClicked(event): webbrowser.open( 'http://bugtracker.makehuman.org/issues/new?project_id=makehuman' ) @self.requestFeatureButton.mhEvent def onClicked(event): webbrowser.open( 'http://bugtracker.makehuman.org/issues/new?project_id=makehuman&issue[tracker_id]=2' ) @self.forumButton.mhEvent def onClicked(event): webbrowser.open('http://www.makehuman.org/forum/') @self.facebookButton.mhEvent def onClicked(event): webbrowser.open('https://www.facebook.com/makehuman/')
def __init__(self, category): gui3d.TaskView.__init__(self, category, 'Data generation') self.human = gui3d.app.selectedHuman box = self.addLeftWidget(gui.GroupBox('Data generation')) self.button = box.addWidget(gui.Button('Generate')) self.path_label = box.addWidget(gui.TextView('Path')) self.path = box.addWidget(gui.TextEdit()) self.num_label = box.addWidget(gui.TextView('# Meshes')) self.num = box.addWidget(gui.TextEdit()) @self.button.mhEvent def onClicked(event): num_gen = int(self.num.getText()) t0 = time.time() for i in range(num_gen): randomize(self.human, 0.5, True, True, False, True) cfg = Mhx2Config() cfg.useTPose = False cfg.useBinary = True cfg.useExpressions = False cfg.usePoses = True cfg.feetOnGround = True cfg.scale, cfg.unit = 0.1, 'meter' cfg.setHuman(self.human) from . import mh2mhx2 mh2mhx2.exportMhx2('%s/%s.mhx2' % (self.path.getText(), i), cfg) eta = int( (num_gen - 1 - i) * ((time.time() - t0) / (i + 1)) / 60) gui3d.app.statusPersist('ETA: %s minutes' % eta)
def __init__(self, category): gui3d.TaskView.__init__(self, category, 'Detail modelling', label='Micro') self.tool = None self.sliders = [] self.modifiersBox = self.addLeftWidget(gui.GroupBox('Modifiers')) self.detailButtonGroup = [] self.tool = Detail3dTool(gui3d.app, True, 'translation') self.translationButton = self.modifiersBox.addWidget( gui.RadioButton(self.detailButtonGroup, 'Move', True)) self.scaleButton = self.modifiersBox.addWidget( gui.RadioButton(self.detailButtonGroup, label='Scale')) @self.translationButton.mhEvent def onClicked(event): self.tool = Detail3dTool(gui3d.app, True, 'translation') gui3d.app.tool = self.tool @self.scaleButton.mhEvent def onClicked(event): self.tool = Detail3dTool(gui3d.app, True, 'scale') gui3d.app.tool = self.tool #self.microButton = self.modifiersBox.addWidget(gui.ToggleButton('Micro')) """
def addSlider(self, sliderCategory, slider): # Get category groupbox categoryName = sliderCategory.capitalize() if categoryName not in [ unicode(g.title()) for g in self.groupBoxes.values() ]: # Create box box = self.groupBox.addWidget(gui.GroupBox(categoryName)) self.groupBoxes[categoryName] = box # Create radiobutton isFirstBox = len(self.radioButtons) == 0 self.categoryBox.addWidget( GroupBoxRadioButton(self, self.radioButtons, categoryName, box, selected=isFirstBox)) if isFirstBox: self.groupBox.showWidget(self.groupBoxes.values()[0]) else: box = self.groupBoxes[categoryName] # Add slider to groupbox self.modifiers[slider.modifier.name.replace( '|', '-' )] = slider.modifier # TODO this strange naming scheme is legacy for MHM compatibility box.addWidget(slider) self.sliders.append(slider) self.updateMacro()
def __init__(self, category, name, label=None, saveName=None, cameraView=None): if label is None: label = name.capitalize() if saveName is None: saveName = name # JH: Hack to get around issue #396 for 1.0.1 release. For 1.1 translation strings should be updated. if label == "Arms and legs": label = "Arms and Legs" super(ModifierTaskView, self).__init__(category, name, label=label) self.saveName = saveName self.cameraFunc = _getCamFunc(cameraView) self.groupBoxes = OrderedDict() self.radioButtons = [] self.sliders = [] self.modifiers = {} self.categoryBox = self.addRightWidget(gui.GroupBox('Category')) self.groupBox = self.addLeftWidget(gui.StackedBox()) self.showMacroStats = False
def __init__(self, category): gui3d.TaskView.__init__(self, category, 'Help') optionsBox = self.addLeftWidget(gui.GroupBox('Support options')) self.manualButton = optionsBox.addWidget(gui.Button("Manual")) self.reportBugButton = optionsBox.addWidget(gui.Button("Report bug")) self.requestFeatureButton = optionsBox.addWidget( gui.Button("Request feature")) self.donateButton = optionsBox.addWidget(gui.Button("Donate")) @self.manualButton.mhEvent def onClicked(event): webbrowser.open( 'http://download.tuxfamily.org/makehuman/makehuman_a_manual.pdf' ) @self.reportBugButton.mhEvent def onClicked(event): webbrowser.open('http://code.google.com/p/makehuman/issues/entry') @self.requestFeatureButton.mhEvent def onClicked(event): webbrowser.open( 'http://code.google.com/p/makehuman/issues/entry?template=Request%20feature' ) @self.donateButton.mhEvent def onClicked(event): webbrowser.open( 'https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=34KYQRLBE2K3N' )
def __init__(self, category): gui3d.TaskView.__init__(self, category, 'Mouse') row = [0] def add(widget, name, method): widget.addWidget(gui.TextView(name), row[0], 0) widget.addWidget(AppMouseActionEdit(method), row[0], 1) row[0] += 1 speedBox = self.addLeftWidget(gui.SliderBox('3D Viewport Speed')) self.normal = speedBox.addWidget(gui.Slider(gui3d.app.settings.get('lowspeed', 1), 1, 10, ["Normal speed",": %d"])) self.mouseBox = self.addLeftWidget(gui.GroupBox('Camera')) add(self.mouseBox, "Move", gui3d.app.mouseTranslate) add(self.mouseBox, "Rotate", gui3d.app.mouseRotate) add(self.mouseBox, "Zoom", gui3d.app.mouseZoom) self.invertMouseWheel = self.mouseBox.addWidget(gui.CheckBox("Invert wheel", gui3d.app.settings.get('invertMouseWheel', False))) @self.invertMouseWheel.mhEvent def onClicked(event): gui3d.app.settings['invertMouseWheel'] = self.invertMouseWheel.selected @self.normal.mhEvent def onChange(value): gui3d.app.settings['lowspeed'] = value
def __init__(self, category): gui3d.TaskView.__init__(self, category, 'Help') optionsBox = self.addLeftWidget(gui.GroupBox('Support options')) self.manualButton = optionsBox.addWidget(gui.Button("Manual")) self.reportBugButton = optionsBox.addWidget(gui.Button("Report bug")) self.requestFeatureButton = optionsBox.addWidget( gui.Button("Request feature")) self.forumButton = optionsBox.addWidget(gui.Button("Forum")) self.facebookButton = optionsBox.addWidget(gui.Button("FaceBook page")) @self.manualButton.mhEvent def onClicked(event): webbrowser.open('http://www.makehuman.org/documentation') @self.reportBugButton.mhEvent def onClicked(event): webbrowser.open('http://code.google.com/p/makehuman/issues/entry') @self.requestFeatureButton.mhEvent def onClicked(event): webbrowser.open( 'http://code.google.com/p/makehuman/issues/entry?template=Request%20feature' ) @self.forumButton.mhEvent def onClicked(event): webbrowser.open('http://www.makehuman.org/forum/') @self.facebookButton.mhEvent def onClicked(event): webbrowser.open('https://www.facebook.com/makehuman/')
def __init__(self, category): super(ViewerTaskView, self).__init__(category, 'Viewer') self.image = self.addTopWidget(gui.ZoomableImageView()) self.path = None tools = self.addLeftWidget(gui.GroupBox('Tools')) self.refrBtn = tools.addWidget(gui.Button('Refresh')) self.saveBtn = tools.addWidget(gui.Button('Save As...')) @self.saveBtn.mhEvent def onClicked(event): if not self.path: if not os.path.exists(mh.getPath('render')): os.makedirs(mh.getPath('render')) self.path = mh.getPath('render') filename = mh.getSaveFileName(os.path.splitext(self.path)[0], 'PNG Image (*.png);;JPEG Image (*.jpg);;All files (*.*)') if filename: self.path = os.path.dirname(filename) self.image.save(filename) @self.refrBtn.mhEvent def onClicked(event): if not self.path: return self.image.setImage(self.path)
def addSlider(self, sliderCategory, slider, enabledCondition=None): # Get category groupbox categoryName = sliderCategory.capitalize() if categoryName not in self.groupBoxes: # Create box box = self.groupBox.addWidget(gui.GroupBox(categoryName)) self.groupBoxes[categoryName] = box # Create radiobutton isFirstBox = len(self.radioButtons) == 0 self.categoryBox.addWidget( GroupBoxRadioButton(self, self.radioButtons, categoryName, box, selected=isFirstBox)) if isFirstBox: self.groupBox.showWidget(self.groupBoxes.values()[0]) else: box = self.groupBoxes[categoryName] # Add slider to groupbox self.modifiers[slider.modifier.fullName] = slider.modifier box.addWidget(slider) slider.enabledCondition = enabledCondition self.sliders.append(slider)
def __init__(self, category, name, label=None, saveName=None, cameraView=None): if label is None: label = name.capitalize() if saveName is None: saveName = name super(ModifierTaskView, self).__init__(category, name, label=label) self.saveName = saveName self.cameraFunc = _getCamFunc(cameraView) self.groupBoxes = OrderedDict() self.radioButtons = [] self.sliders = [] self.modifiers = {} self.categoryBox = self.addRightWidget(gui.GroupBox('Category')) self.groupBox = self.addLeftWidget(gui.StackedBox()) self.showMacroStats = False self.human = gui3d.app.selectedHuman
def __init__(self, category): gui3d.TaskView.__init__(self, category, 'Help') aboutBox = self.addLeftWidget(gui.GroupBox('About MakeHuman')) self.aboutButton = aboutBox.addWidget(gui.Button("About")) self.websiteButton = aboutBox.addWidget(gui.Button("Website")) self.facebookButton = aboutBox.addWidget(gui.Button("FaceBook page")) optionsBox = self.addLeftWidget(gui.GroupBox('Support')) self.forumButton = optionsBox.addWidget(gui.Button("Forum")) self.manualButton = optionsBox.addWidget(gui.Button("Wiki")) self.reportBugButton = optionsBox.addWidget(gui.Button("Report bug")) self.requestFeatureButton = optionsBox.addWidget( gui.Button("Request feature")) @self.aboutButton.mhEvent def onClicked(event): gui3d.app.about() @self.websiteButton.mhEvent def onClicked(event): webbrowser.open('http://www.makehuman.org') @self.manualButton.mhEvent def onClicked(event): webbrowser.open('http://www.makehumancommunity.org/wiki/Main_Page') @self.reportBugButton.mhEvent def onClicked(event): webbrowser.open( 'http://bugtracker.makehumancommunity.org/issues/new?project_id=makehuman' ) @self.requestFeatureButton.mhEvent def onClicked(event): webbrowser.open( 'http://bugtracker.makehumancommunity.org/issues/new?project_id=makehuman&issue[tracker_id]=2' ) @self.forumButton.mhEvent def onClicked(event): webbrowser.open('http://www.makehumancommunity.org/forum') @self.facebookButton.mhEvent def onClicked(event): webbrowser.open('https://www.facebook.com/makehuman/')
def __init__(self, category, appFacsAnim): gui3d.TaskView.__init__(self, category, 'FACSvatar') self.facs_human = appFacsAnim.selectedHuman self.app = appFacsAnim ########################################################################## # .json Au's list loading ########################################################################## self.facs_code_names_path = getpath.getDataPath('FACSHuman') self.facs_code_names_file = self.facs_code_names_path + '/au.json' self.facs_code_names = json.loads( open(self.facs_code_names_file).read()) box_facsvatar = self.addLeftWidget(gui.GroupBox('FACSvatar listener')) #Box Midi self.facsvatar_start_stop = box_facsvatar.addWidget( gui.CheckBox('Start FACSvatar')) self.facsvatar_label = box_facsvatar.addWidget( gui.TextView('Listening STOPPED')) #self.facsvatar_render = box_facsvatar.addWidget(gui.CheckBox('Render video')) self.facs_modifiers = [] self.facs_modifiers = G.app.selectedHuman.getModifiersByGroup( 'Upper Face AUs') self.facs_modifiers.extend( G.app.selectedHuman.getModifiersByGroup('Lower Face AUs')) self.facs_modifiers.extend( G.app.selectedHuman.getModifiersByGroup('Head Positions')) self.facs_modifiers.extend( G.app.selectedHuman.getModifiersByGroup('Eye Positions')) self.facs_modifiers.extend( G.app.selectedHuman.getModifiersByGroup( 'Lip Parting and Jaw Opening')) self.facs_modifiers.extend( G.app.selectedHuman.getModifiersByGroup('Miscellaneous AUs')) self.facs_modifiers.extend( G.app.selectedHuman.getModifiersByGroup('Emotions Blender')) self.modifiers_sliders = {} for mod in self.facs_modifiers: self.modifiers_sliders[mod.name] = modifierslider.ModifierSlider( modifier=mod, label=mod.name) #self.aus_list_items.addItem(self.facs_code_names[str(mod.name)], 'black', mod.name, False) # Midi Thread creation self.facsvatar_listener = FacsvatarThread(self.modifiers_sliders, self.renderFacsPicture) @self.facsvatar_start_stop.mhEvent def onClicked(event): if self.facsvatar_start_stop.selected: self.facsvatar_label.setText('START') #self.facsvatar_listener.slider_assign(self.animation_test) #self.facsvatar_listener.text_box_assign(self.midi_msg_received) self.facsvatar_listener.start() else: self.facsvatar_label.setText('STOP') self.facsvatar_listener.stopListening()
def createFileChooser(self): """ Overwrite to do custom initialization of filechooser widget. """ #self.filechooser = self.addTopWidget(fc.FileChooser(self.paths, 'mhclo', 'thumb', mh.getSysDataPath(proxyName+'/notfound.thumb'))) notfoundIcon = self.getNotFoundIcon() if not os.path.isfile(notfoundIcon): notfoundIcon = getpath.getSysDataPath('notfound.thumb') if self.multiProxy: clearIcon = None else: clearIcon = self.getClearIcon() if not os.path.isfile(clearIcon): clearIcon = getpath.getSysDataPath('clear.thumb') self.filechooser = fc.IconListFileChooser( self.paths, self.getFileExtension(), 'thumb', notfoundIcon, clearIcon, name=self.label, multiSelect=self.multiProxy, noneItem=not self.multiProxy, stickyTags=gui3d.app.getSetting('makehumanTags')) self.addRightWidget(self.filechooser) self.filechooser.setIconSize(50, 50) self.filechooser.enableAutoRefresh(False) if not isinstance(self.getFileExtension(), str) and \ len(self.getFileExtension()) > 1: self.filechooser.mutexExtensions = True #self.addLeftWidget(self.filechooser.createSortBox()) if self.tagFilter: self.filechooser.setFileLoadHandler(fc.TaggedFileLoader(self)) self.addLeftWidget(self.filechooser.createTagFilter()) if self.descriptionWidget: descBox = self.addLeftWidget(gui.GroupBox('Description')) self.descrLbl = descBox.addWidget(gui.TextView('')) self.descrLbl.setSizePolicy(gui.QtWidgets.QSizePolicy.Ignored, gui.QtWidgets.QSizePolicy.Preferred) self.descrLbl.setWordWrap(True) @self.filechooser.mhEvent def onFileSelected(filename): self.proxyFileSelected(filename) if self.multiProxy: @self.filechooser.mhEvent def onFileDeselected(filename): self.proxyFileDeselected(filename) @self.filechooser.mhEvent def onDeselectAll(value): self.deselectAllProxies()
def __init__(self, category): gui3d.TaskView.__init__(self, category, 'Shaders') shaderBox = self.addLeftWidget(gui.GroupBox('Shader')) self.shaderList = shaderBox.addWidget(gui.ListView()) self.shaderList.setSizePolicy(gui.SizePolicy.Ignored, gui.SizePolicy.Preferred) if not shader.Shader.supported(): log.notice('Shaders not supported') self.shaderList.setEnabled(False) self.paramBox = self.addRightWidget(gui.GroupBox('Parameters')) @self.shaderList.mhEvent def onActivate(item): self.setShader(item.getUserData())
def __init__(self, category): gui3d.TaskView.__init__(self, category, 'Standardize Models') buttonsBox = self.addLeftWidget(gui.GroupBox('Settings')) buttonsBox.addWidget(gui.TextView("Options")) self.geoBox = buttonsBox.addWidget(gui.CheckBox("Geometries")) self.shapeBox = buttonsBox.addWidget(gui.CheckBox("Shapes")) # self.AAbox.selected self.path_out = "" self.path_button_out = buttonsBox.addWidget(gui.BrowseButton('dir', "Select an output directory")) self.out_path_box = buttonsBox.addWidget(gui.TextEdit(self.path_out)) self.path_in = "" self.path_button_in = buttonsBox.addWidget(gui.BrowseButton('dir', "Select an input directory")) self.in_path_box = buttonsBox.addWidget(gui.TextEdit(self.path_in)) self.path_exemplar = "" self.path_button_exemplar = buttonsBox.addWidget(gui.BrowseButton('open', "Select the standard model")) self.exemplar_path_box = buttonsBox.addWidget(gui.TextEdit(self.path_exemplar)) @self.path_button_out.mhEvent def onClicked(path): self.path_out = path self.out_path_box.setText(self.path_out) @self.path_button_in.mhEvent def onClicked(path): self.path_in = path self.in_path_box.setText(self.path_in) @self.path_button_exemplar.mhEvent def onClicked(path): self.path_exemplar = path self.exemplar_path_box.setText(self.path_exemplar) buttonsBox.addWidget(gui.TextView("Features to standardize (comma+space separated regular expressions)")) self.standardShapeFeatures = buttonsBox.addWidget(gui.TextEdit("^head, neck, ear, proportions")) self.goButton = buttonsBox.addWidget(gui.Button('Go')) @self.goButton.mhEvent def onClicked(event): settings = {} settings['geometries'] = self.geoBox.selected settings['shapes'] = self.shapeBox.selected settings['standard_shapes'] = self.standardShapeFeatures.getText().split(", ") standard = Standardizer(settings['standard_shapes']) specific_model = self.exemplar_path_box.getText() if specific_model == "": specific_model = None standard.load_models(self.in_path_box.getText(), specific_model) if settings['geometries'] and settings['standard_shapes']: standard.standardize_all(self.out_path_box.getText()) elif settings['geometries']: standard.standardize_geometries(self.out_path_box.getText()) elif settings['standard_shapes']: standard.standardize_shape(self.out_path_box.getText())
def __init__(self, category, app): self.app = app gui3d.TaskView.__init__(self, category, 'Custom') self.targetsPath = getpath.getPath('data/custom') if not os.path.exists(self.targetsPath): os.makedirs(self.targetsPath) self.optionsBox = self.addRightWidget(gui.GroupBox('Options')) rescanButton = self.optionsBox.addWidget( gui.Button("Rescan targets' folder")) self.keepValues = self.optionsBox.addWidget( gui.CheckBox('Keep Values', app.getSetting('keepCustomValues'))) self.folderBox = self.addRightWidget(gui.GroupBox('Folders')) self.targetsBox = self.addLeftWidget(gui.StackedBox()) self.human = app.selectedHuman @rescanButton.mhEvent def onClicked(event): backUpModifiers = {} if self.keepValues.isChecked(): for name, modifier in self.modifiers.items(): if modifier.getValue() != 0: backUpModifiers[name] = modifier.getValue() self.searchTargets() if self.keepValues.isChecked(): for name, value in backUpModifiers.items(): modifier = self.modifiers.get(name) if modifier: modifier.setValue(value) self.syncSliders() self.human.applyAllTargets() backUpModifiers.clear() self.folders = [] self.sliders = [] self.modifiers = {} self.searchTargets()