def event(evt, val): # input events global SCREEN, START_SCREEN, SCRIPT_SCREEN global SCROLL_DOWN, FMODE if not val: return if evt == Draw.ESCKEY: if SCREEN == START_SCREEN or FMODE: Draw.Exit() else: SCREEN = START_SCREEN SCROLL_DOWN = 0 Draw.Redraw() return elif evt == Draw.QKEY: Draw.Exit() return elif evt in [Draw.DOWNARROWKEY, Draw.WHEELDOWNMOUSE ] and SCREEN == SCRIPT_SCREEN: SCROLL_DOWN += 1 fit_scroll() Draw.Redraw() return elif evt in [Draw.UPARROWKEY, Draw.WHEELUPMOUSE ] and SCREEN == SCRIPT_SCREEN: SCROLL_DOWN -= 1 fit_scroll() Draw.Redraw() return elif evt == Draw.SKEY: if SCREEN == SCRIPT_SCREEN and SCRIPT_INFO: load_script_text(SCRIPT_INFO.script) return
def bevent(evt): global EVENT_NOEVENT, EVENT_DRAW, EVENT_EXIT if (evt == EVENT_EXIT): Draw.Exit() elif (evt == EVENT_DRAW): Draw.Redraw() elif (evt == EVENT_EXPORT): sce = bpy.data.scenes.active if (export_all == 1): print "oh ja" # get a list of mesh objects obs = [ob for ob in sce.objects if ob.type == 'Mesh'] # export all object names for ob in obs: me = Mesh.New() me.getFromObject(ob, 0) print(me.name) export_to_as(ob) Draw.PupMenu("Export Successful") else: export_to_as(sce.objects.active) Draw.PupMenu("Export Successful") elif (evt == EVENT_BROWSEFILE): Window.FileSelector(FileSelected, "Export .as", expFileName) Draw.Redraw(1)
def event(evt, val): global vertical, mousex, mousey, anchor, offset if evt == Draw.ESCKEY and not val: if anchor: anchor = None else: Draw.Exit() # exit when user releases ESC elif evt == Draw.MOUSEX: mousex = val if anchor: offset = (max(0, anchor[0] - mousex), offset[1]) Draw.Redraw() elif evt == Draw.MOUSEY: mousey = val if anchor: offset = (offset[0], min(0, anchor[1] - mousey)) Draw.Redraw() elif evt == Draw.MIDDLEMOUSE and val: anchor = (mousex + offset[0], mousey + offset[1]) elif evt == Draw.MIDDLEMOUSE and not val: anchor = None elif anchor: pass # suppress other activity while panning elif evt == Draw.RIGHTMOUSE and val: r = Draw.PupMenu('Panel Alignment%t|Horizontal|Vertical') if r == 1: vertical = False elif r == 2: vertical = True else: return Draw.Redraw()
def button_event(evt): # gui button events global SCREEN, START_SCREEN, SCRIPT_SCREEN global BEVT_LINK, BEVT_EMAIL, BEVT_GMENU, BUT_GMENU, SCRIPT_INFO global SCROLL_DOWN, FMODE if evt >= 100: # group menus for i in range(len(BUT_GMENU)): if evt == BEVT_GMENU[i]: group = AllGroups[i] index = BUT_GMENU[i].val - 1 if index < 0: return # user didn't pick a menu entry script = group.get_scripts()[BUT_GMENU[i].val - 1] if parse_help_info(script): SCREEN = SCRIPT_SCREEN BEVT_LINK = range(20, len(SCRIPT_INFO.d['__url__']) + 20) BEVT_EMAIL = range(50, len(SCRIPT_INFO.d['__email__']) + 50) Draw.Redraw() else: res = Draw.PupMenu( "No help available%t|View Source|Cancel") if res == 1: load_script_text(script) elif evt >= 20: if not WEBBROWSER: Draw.PupMenu( 'Missing standard Python module%t|You need module "webbrowser" to access the web' ) return if evt >= 50: # script screen email buttons email = SCRIPT_INFO.d['__email__'][evt - 50][1] webbrowser.open("mailto:%s" % email) else: # >= 20: script screen link buttons link = SCRIPT_INFO.d['__url__'][evt - 20][1] webbrowser.open(link) elif evt == BEVT_VIEWSOURCE: if SCREEN == SCRIPT_SCREEN: load_script_text(SCRIPT_INFO.script) elif evt == BEVT_EXIT: Draw.Exit() return elif evt == BEVT_BACK: if SCREEN == SCRIPT_SCREEN and not FMODE: SCREEN = START_SCREEN SCRIPT_INFO = None SCROLL_DOWN = 0 Draw.Redraw() elif evt == BEVT_EXEC: # Execute script exec_line = '' if SCRIPT_INFO.script.userdir: exec_line = bsys.join(Blender.Get('uscriptsdir'), SCRIPT_INFO.script.fname) else: exec_line = bsys.join(Blender.Get('scriptsdir'), SCRIPT_INFO.script.fname) Blender.Run(exec_line)
def event(evt, val): # input events global SCREEN, START_SCREEN, CONFIG_SCREEN global SCROLL_DOWN, CFGKEY if not val: return if evt == Draw.ESCKEY: if SCREEN == START_SCREEN: Draw.Exit() else: if CFGKEY.needs_update(): if Draw.PupMenu('UPDATE?%t|Data was changed') == 1: CFGKEY.update() SCREEN = START_SCREEN SCROLL_DOWN = 0 Draw.Redraw() return elif evt == Draw.QKEY: if SCREEN == CONFIG_SCREEN and CFGKEY.needs_update(): if Draw.PupMenu('UPDATE?%t|Data was changed') == 1: CFGKEY.update() Draw.Exit() return elif evt == Draw.HKEY: if SCREEN == START_SCREEN: show_help() elif CFGKEY.scriptname: show_help(CFGKEY.scriptname) return elif SCREEN == CONFIG_SCREEN: if evt in [Draw.DOWNARROWKEY, Draw.WHEELDOWNMOUSE]: SCROLL_DOWN += 1 fit_scroll() elif evt in [Draw.UPARROWKEY, Draw.WHEELUPMOUSE]: SCROLL_DOWN -= 1 fit_scroll() elif evt == Draw.UKEY: if CFGKEY.needs_update(): CFGKEY.revert() elif evt == Draw.RETKEY or evt == Draw.PADENTER: if CFGKEY.needs_update(): CFGKEY.update() elif evt == Draw.DELKEY: if CFGKEY.delete(): reset() init_data() SCREEN = START_SCREEN SCROLL_DOWN = 0 else: return Draw.Redraw()
def changeA(): global a a += .2 # print 'step',a if a > 6: Draw.Exit() time.sleep(0.1) Draw.Redraw(1)
def changeA(): global a global d a +=10 d+=4 time.sleep(0.1) Draw.Redraw(1)
def button_event(evt): global persist_server, mesh_format, window_width, window_height, fullscreen, renderpath, filename, group, aa if (evt == CANCEL_CLICKED): SavePrefs() Draw.Exit() return if (evt == PERSIST_SERVER_CHANGED): persist_server = mnu_persist_servers.val if (evt == MESH_FORMAT_CHANGED): mesh_format = mnu_mesh_formats.val if (evt == WIDTH_CHANGED): window_width = mnu_width.val if (evt == HEIGHT_CHANGED): window_height = mnu_height.val if (evt == FULLSCREEN_CHANGED): fullscreen = 1 - fullscreen if (evt == AA_CHANGED): aa = mnu_aa.val if (evt == FILENAME_CHANGED): filename = mnu_filename.val if (evt == GROUP_CHANGED): file2 = n2.lookup("/sys/servers/file2") path = "" is_valid = True if (mnu_group.val): path = file2.manglepath("gfxlib:") + "/" + mnu_group.val else: path = file2.manglepath("gfxlib:") if (not Blender.sys.exists(path)): is_valid = False path = "" if (mnu_group.val): path = file2.manglepath("meshes:") + "/" + mnu_group.val else: path = file2.manglepath("meshes:") if (not Blender.sys.exists(path)): is_valid = False if (is_valid): group = mnu_group.val else: err = "The directory ' %s ' must exist in both gfxlib and meshes folders" % mnu_group.val Draw.PupMenu("Invalid Group%t|" + err) Draw.Redraw(1) if (evt == RENDERPATH_CHANGED): renderpath = mnu_renderpath.val if (evt == OK_CLICKED): SavePrefs() DoExport()
def changeA(): global a a[0] += 2 a[1] += 1 # print 'step',a if a[1] > 100: Draw.Exit() time.sleep(0.1) Draw.Redraw(1)
def pmv_show(pose, self): from Pmv.moleculeViewer import EditAtomsEvent global pmv_state import time #if not with_pmv: return model = self.getMolFromName("test") model.allAtoms.setConformation(1) coord = {} print pose.n_residue(), len(model.chains.residues) for resi in range(1, pose.n_residue() + 1): res = pose.residue(resi) resn = pose.pdb_info().number(resi) #print resi,res.natoms(),len(model.chains.residues[resi-1].atoms) k = 0 for atomi in range(1, res.natoms() + 1): name = res.atom_name(atomi).strip() if name != 'NV': a = model.chains.residues[resi - 1].atoms[k] pmv_name = a.name k = k + 1 if name != pmv_name: if name[1:] != pmv_name[:-1]: print name, pmv_name else: coord[(resn, pmv_name)] = res.atom(atomi).xyz() cood = res.atom(atomi).xyz() a._coords[1] = [cood.x, cood.y, cood.z] else: coord[(resn, name)] = res.atom(atomi).xyz() cood = res.atom(atomi).xyz() a._coords[1] = [cood.x, cood.y, cood.z] #return coord event = EditAtomsEvent('coords', model.allAtoms) self.dispatchEvent(event) #modEvent = ModificationEvent('edit','coords', mol.allAtoms) #mol.geomContainer.updateGeoms(modEvent) #PMV #self.GUI.VIEWER.Redraw() #time.sleep(.1) #Blender epmv.insertKeys(model.geomContainer.geoms['cpk'], 1) epmv.getCurrentScene().update() Draw.Redraw() Draw.Redraw(1) Blender.Redraw()
def changeA(): global a, ac, i a +=.2 ac+=.2 if ac > 6: i += 1 ac = 0 time.sleep(0.1) Draw.Redraw(1)
def buttonEventHandler(button): """ Event handler for button presses. @param button: Button ID. """ global G G.havebupclik = False if button == BUTTON_QUIT: removeCustomScriptLink() writeDataToRegistry() Draw.Exit() Window.RedrawAll() elif button == BUTTON_LOAD: G.havebupclik = True Window.ImageSelector(loadImage) elif button == BUTTON_ZOOM: x, y, w, h = getWinRect() setZoom((w / 2, h / 2), G.buttons.zoom.val) elif button == BUTTON_FULLOPT: G.fullopt = G.buttons.fullopt.val elif button == BUTTON_COPLANAR: G.coplanar = G.buttons.coplanar.val elif button == BUTTON_OFSX: G.ofsx = G.buttons.ofsx.val elif button == BUTTON_OFSY: G.ofsy = G.buttons.ofsy.val elif button == BUTTON_OFSZ: G.ofsz = G.buttons.ofsz.val elif button == BUTTON_ADD: G.mode = MODE_ADD Draw.Redraw(1) elif button == BUTTON_DELETE: def delmap(x): del G.coordmap[x.getName()] x.select(False) map(delmap, G.selection) Window.RedrawAll() elif button == BUTTON_CALIBRATE: Window.WaitCursor(True) G.last_camera = G.selection[0] calibrate()
def event(evt, val): # эта функция обрабатывает прерывания от клавиатуры и мыши global mystr if evt == Draw.ESCKEY: Draw.Exit() # выход из скрипта return if val==0 and evt ==Draw.LEFTMOUSE: coor=Blender.Window.GetMouseCoords() print coor mystr =str(coor[0])+" "+str(coor[1]) Draw.Redraw(1)
def changeA(): global a global vect global t a +=1 vect = (1-t)*Vector(6,8,2)+t*Vector(-4,6,1) t+=0.001 if a>1000: Draw.Exit() time.sleep(0.001) Draw.Redraw(1)
def event(evt, val): # эта функция обрабатывает прерывания от клавиатуры и мыши if evt == Draw.ESCKEY: Draw.Exit() # выход из скрипта return global mystring#, mymsg if Draw.AKEY <= evt <= Draw.ZKEY: if val==0: #чтобы буква не печаталась два раза mystring += chr(evt) # это срабатывает при нажатие на символьную клавишу. chr(evt) преобразует символ клавиши в соответствующий символ Draw.Redraw(1)
def event(evt, val): # the function to handle input events global mystring, mymsg if not val: # val = 0: it's a key/mbutton release if evt in [Draw.LEFTMOUSE, Draw.MIDDLEMOUSE, Draw.RIGHTMOUSE]: mymsg = "You released a mouse button." Draw.Redraw(1) return if evt == Draw.ESCKEY: Draw.Exit() # exit when user presses ESC return elif Draw.AKEY <= evt <= Draw.ZKEY: mystring += chr(evt) elif evt == Draw.SPACEKEY: mystring += ' ' elif evt == Draw.BACKSPACEKEY and len(mystring): mystring = mystring[:-1] else: return # no need to redraw if nothing changed Draw.Redraw(1)
def changeA(): global a,s,check s += .3 a +=- .3 if s >= 1.5: s = 0 check += 1 #if a< -6: Draw.Exit() #1.5 eto 90 gradusov time.sleep(0.1) Draw.Redraw(1)
def setZoom(p, zoom): """ Sets the zoom factor, G.zoom. This method maintains the centre of zoom (p) at the same location before and after the zoom. @param p: Centre of the zoom (xw,yw), in window coordinates. @param zoom: New zoom factor. """ # bounds-check the zoom factor if zoom < ZOOM_MIN: zoom = ZOOM_MIN if zoom > ZOOM_MAX: zoom = ZOOM_MAX # if we have no image then just set the zoom global G if G.image is None: G.zoom = zoom Draw.Redraw(1) return # find centre of zoom in image coordinates xi = (p[0] - G.imgpos[0]) / G.zoom yi = (p[1] - G.imgpos[1]) / G.zoom # set the new zoom G.zoom = zoom # find the new centre of zoom xinew = (p[0] - G.imgpos[0]) / G.zoom yinew = (p[1] - G.imgpos[1]) / G.zoom # find the offset for the origin xofs, yofs = int(xinew - xi), int(yinew - yi) # change the origin G.imgpos[0] += xofs * G.zoom G.imgpos[1] += yofs * G.zoom # queue a redraw Draw.Redraw(1)
def button_event(evt) : global name,SURF,VDW,BKBONE,ARMATURE,CAT,TUBE,BSTICK,SS,COLOR1,COLOR2,JOIN if evt==EV_BT_OK: self.hostApp.setServer(host.val,eval(port.val)) self.hostApp.start() elif evt==EV_BT_HOST1 or evt==EV_BT_HOST2: self.hostApp.setServer(host.val,eval(port.val)) elif evt==EV_BT_CANCEL: self.hostApp.stop() elif evt==EV_TG_ARMATURE: #ARMATURE = 1 - ARMATURE applyArmature() elif evt==EV_BT_REFRESH: name = getName() self.runServerCommands() #print name update_Registry() Draw.Redraw() Draw.Redraw(1) elif evt==EV_TG_JOIN: JOIN = 1 - JOIN self.hostApp.driver.SetJoins(JOIN) elif evt==EV_TG_DEL: molList=self.Mols.full_name().split(',') print molList[Shapepreset.val-1] molName=molList[Shapepreset.val-1] mol=self.getMolFromName(molName) #self.deleteMol(mol,log=1) elif evt==EV_BT_SEND: molList=self.Mols.full_name().split(',') print molList[Shapepreset.val-1] molName=molList[Shapepreset.val-1] me=Blender.Mesh.Get(mesh.val) print me #if molName != '' : # print molName # msg=prepareMesh2Pmv(me,molname=molName) #else : msg=prepareMesh2Pmv(me) msg=prepareMesh2Pmv(me) self.socketComm.sendToClients(msg)
def saveCameraSetup(filename): """ Save all the cameras currently in the scene to an XML file given by filename. """ global CAMString, Camera_Setup_Selection CAMString = filename Camera_Setup_Selection['Automatic setup'][0].val = 0 Camera_Setup_Selection['Pre-saved setup'][0].val = 1 Draw.Redraw(1) cam_export.write(filename)
def changeXY1(): global shag global xy1 n = 1000 shag += 1 newVect = (point1 - point0) / 100 xy1 = xy1 + newVect time.sleep(0.1) if shag > n: Draw.Exit() Draw.Redraw(1)
def import_gui_buttonevent(evt): global filename, fileinput if evt == 1: # Import print "Importing %s..." % filename file=open(filename) filedict={'newmodel': loadmodel} linereader(file, filedict) Draw.Redraw(1) return elif evt == 2: # Exit Draw.Exit() return elif evt == 3: # Edited text. # Err, clicked on the file selector button. Window.FileSelector(import_gui_filenamechosen, "Choose model to import") Draw.Redraw(1) #filename = eval(str(fileinput)) #Draw.Redraw(1) return else: # I have no clue *when* to call this thing (aside of launch). # I know it needs to be restarted, sorta like signal() in sysvile/posix. # Let's just be anal, even if it shall, yes shall, blow up. - W4 start_import_gui()
def loadCameraSetup(filename): """ Load and setup cameras from the given XML file. """ global CAMString CAMString = filename clearCameras() cam_import.read(filename) for cam in [obj for obj in scene.objects if obj.type == 'Camera']: cam.setSize(camera_scale, camera_scale, camera_scale) Blender.Redraw() Draw.Redraw(1)
def button_event(self, evt): # the function to handle Draw Button events if evt == 1: self.objSel = self.objMenu.val Draw.Redraw(1) if evt == 2: self.armSel = self.armMenu.val self.boneSel = 1 self.CalculateRootBones(self.armSel) Draw.Redraw(1) if evt == 3: self.boneSel = self.boneMenu.val Draw.Redraw(1) if evt == 4: if self.objSel == 0 or self.armSel == 0 or self.boneSel == 0: Draw.PupMenu( "Error: You have to select an object,armature and root bone!" ) else: exportFile(self.meshObjects[self.objSel - 1].name, self.armatureObjects[self.armSel - 1], self.rootBones[self.boneSel - 1].name) Draw.Exit() if evt == 5: Draw.Exit() # exit when user presses Cancel
def bevent(evt): global GUIPARAMS, PARAMS if evt == NO_EVT: Draw.Redraw() elif evt == SINGLE_IMG: Window.FileSelector(setSinglePath, 'Image', Blender.sys.expandpath('//')) Draw.Redraw() PARAMS['ImportType'] = SINGLE elif evt == DIRECTORY_IMG: Window.FileSelector(setDirPath, 'Directory', Blender.sys.expandpath('//')) Draw.Redraw() PARAMS['ImportType'] = DIR elif evt == CLR_PATH: GUIPARAMS['Path'].val = '' PARAMS['ImagePaths'] = [] GUIPARAMS['ImageExt'].val = '' Draw.Redraw() elif evt == CHG_EXT: changeExtension() Draw.Redraw() elif evt == EXIT: Draw.Exit() elif evt == DO_SCRIPT: doScript() else: print "ERROR: UNEXPECTED BUTTON EVENT" return
def button_event(evt): # Вызывает функции для формирования таблицы и ввода global allPoints if evt == 1: # 1 – идентификатор кнопки вызова x = Draw.Create(0) y = Draw.Create(0) # Создание кнопок с начальными данными block = [] # Данные для формирования таблицы block.append( ("X= ", x, 0, 400)) #Ввод с ограничением границ и типа данных block.append(("Y= ", y, 0, 600)) retVal = Draw.PupBlock("Line coords", block) # Создание таблицы allPoints.append(x.val) allPoints.append(y.val) # Извлечение данных print "data", allPoints Draw.Redraw(1) return
def setUpCameras(numCams): """ Set up numCams cameras around the origo/animation center, evenly placed along a given latitude. """ global CAMString CAMString = "" clearCameras() # Reuses already unlinked cameras because Blender never deletes objects from memory, # thereby avoiding memory leakage (which isnt really leakage, just works the same way). unlinkedCameras = [cam for cam in Blender.Object.Get() if cam not in scene.objects and cam.type == 'Camera'] for cam in unlinkedCameras: cam.loc = [0.,0.,0.] cam.rot = [0.,0.,0.] numUnlinkedCameras = len(unlinkedCameras) - 1 for i in range(cameras_on_top): camLongitude = (camera_longitude) * (i+1)/cameras_on_top if numUnlinkedCameras >= 0: camObj = unlinkedCameras[numUnlinkedCameras] scene.link(camObj) addCamera(camObj, camLongitude, True) numUnlinkedCameras -= 1 else: cam = Camera.New('persp') camObj = scene.objects.new(cam) addCamera(camObj, camLongitude, True) for i in range(int(numCams) - cameras_on_top): camLongitude = camera_longitude * (i+1)/(numCams - cameras_on_top) if numUnlinkedCameras >= 0: camObj = unlinkedCameras[numUnlinkedCameras] scene.link(camObj) addCamera(camObj, camLongitude) numUnlinkedCameras -= 1 else: cam = Camera.New('persp') camObj = scene.objects.new(cam) addCamera(camObj, camLongitude) Select_All_Cameras() Draw.Redraw(1) Blender.Redraw()
def button_event(evt): global x2, y2, r1 if evt == 1: x = Draw.Create(x2) y = Draw.Create(y2) r = Draw.Create(r1) block = [] block.append(("X= ", x, 0, 400)) block.append(("Y= ", y, 0, 600)) block.append(("R= ", r, 0, 600)) retVal = Draw.PupBlock("Line coords and radius", block) x2 = x.val y2 = y.val r1 = r.val Draw.Redraw(1) return
def change(): global buff, lst, ang time.sleep(0.01) i = 0 while i < 16: j = 0 while j < 2: x = (random.randint(0, 10) - 5) * 0.05 print x lst[i][j] += x j += 1 i += 1 buff = Buffer(GL_FLOAT, [16, 3], lst) ang += 1 Draw.Redraw(1)
def but_event(evt): global xrefprefix global xrefstack global vofsstack global vquatstack global prop_w global prop_h global evcode state = update_state() #do Xref buttons if evt == evcode["XREF_PREFIX"]: xrefprefix = XREF_PREFIX.val if evt == evcode["XREF_EDIT"]: xref_edit() if evt == evcode["XREF_SELECT"]: xref_select() if evt == evcode["XREF_MAKE"]: xref_create() #do scene buttons if evt == evcode["SCENE_UPDATE"]: update_all() #do face buttons if evt == evcode["FACE_MAKESUB"]: subface_make() if evt== evcode["FACE_KILLSUB"]: subface_kill() if evt== evcode["FACE_SELSUB"]: subface_select() #common buttons if evt == evcode["IDPROP_KILL"]: if state["activeObject"]: idprops_kill(state["activeObject"]) if evt == evcode["IDPROP_COPY"]: if state["activeObject"]: idprops_copy(state["activeObject"]) if evt == evcode["XREF_POP"]: xref_finish() if evt == evcode["CLIGHT_MAKE"]: clight_make() if evt == evcode["DFROMACT"]: dfromact() if evt == evcode["FIXCOL"]: fix_colors() Draw.Redraw(1) Blender.Window.RedrawAll()