def drawAA(): global MINAA, MAXAA, AASAMPLES global IMGFILTERW, IMGFILTERH, IMGFILTER global EXP_ANIM ## aa settings col = 10 line = 200 BGL.glRasterPos2i(col, line) Draw.Text("AA:") col = 100 MINAA = Draw.Number("Min AA ", 2, col, line, 120, 18, MINAA.val, -4, 5) col = 230 MAXAA = Draw.Number("Max AA ", 2, col, line, 120, 18, MAXAA.val, -4, 5) col = 360 AASAMPLES = Draw.Number("Samples", 2, col, line, 120, 18, AASAMPLES.val, 0, 32) col = 10 line = 175 BGL.glRasterPos2i(col, line) Draw.Text("Image Filter:") col = 100 line = 173 IMGFILTER = Draw.Menu( "%tImage Filter|box|gaussian|mitchell|triangle|catmull-rom|blackman-harris|sinc|lanczos", FILTER_EVENT, col, line, 120, 18, IMGFILTER.val) col = 10 line = 120 EXP_ANIM = Draw.Toggle("Export As Animation", 2, col, line, 140, 18, EXP_ANIM.val) drawButtons()
def gui_masse_volumique(): # Création d'Id pour les évènements nCpt_evt = 1 global EV_BT_OK EV_BT_OK = nCpt_evt; nCpt_evt += 1 global EV_BT_ANNULER EV_BT_ANNULER = nCpt_evt; nCpt_evt += 1 global EV_MASS_VOL EV_MASS_VOL = nCpt_evt; nCpt_evt += 1 pos_x = 5 pos_y = 100; pas_y = 36 BGL.glRasterPos2i( pos_x, pos_y ) Draw.Text("Choisissez la masse volumique du maillage (et validez par \"OK\") :") #[nom bouton] = Draw.Number("[nom]", [numéro d'événement], [position x], [position y], \ # [largeur], [hauteur], \ # [valeur initiale], [valeur minimale],[valeur maximale], "[astuce]") global bt_masse_volumique largeur_mv = 360 hauteur = 25 pos_y -= pas_y bt_masse_volumique = Draw.Number("Masse volumique :", EV_MASS_VOL, pos_x, pos_y, \ largeur_mv, hauteur, \ 1.0, 0.0, 100000.0, "saisissez la masse volumique") largeur_bt = 80 pos_y -= pas_y dx_espacement = int( ( largeur_mv - 2.0 * largeur_bt ) / 3.0 ) dx_espacement = int( dx_espacement + 0.5 ) pos_x_bt_OK = pos_x + dx_espacement pos_x_bt_Annuler = pos_x_bt_OK + largeur_bt + dx_espacement Draw.PushButton("OK", EV_BT_OK, pos_x_bt_OK, pos_y, largeur_bt, hauteur, "Valide") Draw.PushButton("Annuler", EV_BT_ANNULER, pos_x_bt_Annuler, pos_y, largeur_bt, hauteur, "Annule")
def import_gui(): global filename, fileinput, impstatus # Clear drawing area. BGL.glClearColor(0.9,0.9,0.9,1) BGL.glClear(BGL.GL_COLOR_BUFFER_BIT) # Status. BGL.glRasterPos2i(10,8) if impstatus == 0: BGL.glColor3f(0.0,0.0,0.0) Draw.Text('Importer ready.','tiny') elif impstatus == 1: BGL.glColor3f(0.0,0.75,0.0) Draw.Text('Importing...','tiny') elif impstatus == 2: BGL.glColor3f(0.75,0.0,0.0) Draw.Text('File not found!','tiny') # Filename input box. BGL.glRasterPos2i(10,20) w = Draw.Text('File to import:') Draw.Button(filename, 3, w+15, 15, 200,20) #fileinput = Draw.String('',3, w+15,15, 200,20, filename, 512, # 'Filename to import.') Draw.Button('Import', 1, w+15+210,15, 40,20) Draw.Button('Quit', 2, w+15+210+50,15, 40,20)
def doDraw(self): # this has black color... # Draw.Label(self.title, # self.pos_x, self.pos_y, self.width, self.height) BGL.glColor3f(*self.color) BGL.glRasterPos2i(self.pos_x, self.pos_y) Draw.Text(self.title + self.button.val)
def dotext(self): ## By default this function prints the desired text, in the desired colour centrally in the panel. ## Possibly there will be more options in a leter release. ## Find the vertical centreline of the panel. centreline=self.left+(self.width/2) ## Find the horizontal centreline of the panel and subtract about half the height of the font (roughly). textline=self.base+(self.height/2-5) ## Find the length of the string that was passed in. stringlength=Draw.GetStringWidth(self.text) ## Halve it. offset=stringlength/2 ## Calculate the start point for the text. titlestart=centreline-offset ## Change to the text colour. BGL.glColor3f(self.textcolour[0],self.textcolour[1],self.textcolour[2]) ## Position raster. BGL.glRasterPos2i(titlestart,textline) ## Print it. Draw.Text(self.text)
def draw(self): area = Window.GetAreaSize() w = area[0]; wPad = int(w*0.03) h = area[1]; hPad = int(h*0.03) BGL.glColor3f(0.3, 0.3, 0.3) BGL.glRectf(wPad-5, h-60, w-wPad+5, h-85) BGL.glColor3f(1.0,1.0,1.0) BGL.glRasterPos2i(wPad, h-75) Draw.Text('Chicken Configuration script', 'large') BGL.glRasterPos2i(wPad, h-100) Draw.Text('This script is launched the first time you run Chicken, or when a configuration error has been detected') BGL.glColor3f(0.5, 0.5, 0.5) BGL.glRectf(wPad, h-205, w-wPad, h-225) BGL.glColor3f(1.0,1.0,1.0) BGL.glRasterPos2i(wPad, h-220) Draw.Text('Binary Utilities - ') Draw.Text('if executables such as "pview" are on your PATH, you can leave this on Auto. Otherwise enter the folder manually') self.bBinPathAuto.update([wPad+5, h-250, w/2-wPad-5, 20]) self.bBinPathManual.update([w/2, h-250, w/2-wPad-5, 20]) if self.bBinPathManual.val: self.bBinPath.update([wPad+5, h-272, w-2*wPad-90, 20]) self.bBinPathSel.update([w-wPad-85, h-272, 80, 20]) self.bLaunch.update([wPad+5, h-330, 100, 20]) self.bCheck.update([w-wPad-85, h-330, 80, 20]) if self.error is not None: if self.error is True: BGL.glColor3f(1.0,0.0,0.0) BGL.glRasterPos2i(w-wPad-150, h-365) Draw.Text('Configuration error detected') else: BGL.glColor3f(0.0,0.0,0.0) BGL.glRasterPos2i(w-wPad-200, h-365) Draw.Text('Configuration checked and saved')
def drawCamera(): global DOF, DOFRADIUS, DOFDIST, SPHERICALCAMERA ## camera settings col=10; line=200; BGL.glRasterPos2i(col, line); Draw.Text("Camera:") col=100; line=195; DOF=Draw.Toggle("DOF", DOF_CAMERA, col, line, 120, 18, DOF.val) col=225; DOFDIST=Draw.Number("Distance", 2, col, line, 120, 18, DOFDIST.val, 0.0, 200.00) col=350; DOFRADIUS=Draw.Number("Radius", 2, col, line, 120, 18, DOFRADIUS.val, 0.0, 200.00) col=100; line=170; SPHERICALCAMERA=Draw.Toggle("Spherical", SPHER_CAMERA, col, line, 120, 18, SPHERICALCAMERA.val) drawButtons()
def gui(self,): quitbutton = Blender.Draw.Button("Exit", 1, 0, 0, 100, 20, "Close Window") y=35 for line in self.msg: BGL.glRasterPos2i(10,y) Blender.Draw.Text(line) y+=15
def drawLights(): global MESHLIGHTPOWER, DSAMPLES ## meshlight power slider col=10; line=200; BGL.glRasterPos2i(col, line); Draw.Text("Meshlight:") col=100; line=195; MESHLIGHTPOWER=Draw.Number("Power", 2, col, line, 120, 18, MESHLIGHTPOWER.val, 1, 15) ## lightserver settings col=10; line=150; BGL.glRasterPos2i(col, line); Draw.Text("Lightserver:") col=100; line=147; DSAMPLES=Draw.Number("Direct Samples ", 2, col, line, 250, 18, DSAMPLES.val, 0, 1024); drawButtons()
def drawAA(): global MINAA, MAXAA, AASAMPLES global IMGFILTERW, IMGFILTERH, IMGFILTER global EXP_ANIM ## aa settings col=10; line=200; BGL.glRasterPos2i(col, line); Draw.Text("AA:") col=100; MINAA=Draw.Number("Min AA ", 2, col, line, 120, 18, MINAA.val, -4, 5); col=230; MAXAA=Draw.Number("Max AA ", 2, col, line, 120, 18, MAXAA.val, -4, 5) col=360; AASAMPLES=Draw.Number("Samples", 2, col, line, 120, 18, AASAMPLES.val, 0, 32) col=10; line=175; BGL.glRasterPos2i(col, line); Draw.Text("Image Filter:") col=100; line=173; IMGFILTER=Draw.Menu("%tImage Filter|box|gaussian|mitchell|triangle|catmull-rom|blackman-harris|sinc|lanczos", FILTER_EVENT, col, line, 120, 18, IMGFILTER.val) col=10; line=120; EXP_ANIM=Draw.Toggle("Export As Animation", 2, col, line, 140, 18, EXP_ANIM.val) drawButtons()
def drawAO(): global OCCLUSSION, OCCBRIGHTR, OCCBRIGHTG, OCCBRIGHTB, OCCDARKR, OCCDARKG, OCCDARKB, OCCSAMPLES, OCCDIST col=10; line=200; BGL.glRasterPos2i(col, line); Draw.Text("Ambient Occlusion") col=10; line=175; OCCLUSSION=Draw.Toggle("Amb Occ", 2, col, line, 85, 18, OCCLUSSION.val) col=100; OCCBRIGHTR=Draw.Number("Bright (R)", 2, col, line, 125, 18, OCCBRIGHTR.val, 0.0, 1.0) col=230; OCCBRIGHTG=Draw.Number("Bright (G)", 2, col, line, 125, 18, OCCBRIGHTG.val, 0.0, 1.0) col=360; OCCBRIGHTB=Draw.Number("Bright (B)", 2, col, line, 125, 18, OCCBRIGHTB.val, 0.0, 1.0) col=100; line=150; OCCDARKR=Draw.Number("Dark (R)", 2, col, line, 125, 18, OCCDARKR.val, 0.00, 1.0) col=230; OCCDARKG=Draw.Number("Dark (G)", 2, col, line, 125, 18, OCCDARKG.val, 0.0, 1.0) col=360; OCCDARKB=Draw.Number("Dark (B)", 2, col, line, 125, 18, OCCDARKB.val, 0.0, 1.0) col=100; line=125; OCCSAMPLES=Draw.Number("Samples", 2, col, line, 125, 18, OCCSAMPLES.val, 0, 256) col=230; OCCDIST=Draw.Number("Distance", 2, col, line, 125, 18, OCCDIST.val, -1.0, 150.0) drawButtons()
def gui(self): # the function to draw the screen BGL.glClearColor(0, 0, 0.5, 1) BGL.glClear(BGL.GL_COLOR_BUFFER_BIT) BGL.glColor3f(1, 1, 1) BGL.glRasterPos2i(20, 200) Draw.Text("Select the object to export:", "normal") self.objMenu = Draw.Menu(self.sObjSelection, 1, 20, 170, 200, 20, self.objSel, "Select the animated object.") BGL.glRasterPos2i(20, 150) Draw.Text("Select the armature to export:", "normal") self.armMenu = Draw.Menu(self.sArmSelection, 2, 20, 120, 200, 20, self.armSel, "Select the matching armature.") BGL.glRasterPos2i(20, 100) Draw.Text("Select the root bone of the armature:", "normal") self.boneMenu = Draw.Menu(self.sBoneSelection, 3, 20, 70, 200, 20, self.boneSel, "Select the Root Bone of the armature.") Draw.PushButton("Export", 4, 250, 150, 50, 20, "Export File") Draw.PushButton("Cancel", 5, 250, 110, 50, 20, "Cancel") BGL.glRasterPos2i(72, 16) string = "Selections: " + ("%s" % self.objSel) + " / " + ( "%s" % self.armSel) + " / " + ("%s" % self.boneSel) Draw.Text(string, "small")
def Display_Output_Bar(Y_POS, CONTROL_HEIGHT, CONTROL_WIDTH): """ Create the Display output box.""" Create_Tab(3, Y_POS, CONTROL_WIDTH, Y_POS - CONTROL_HEIGHT, "Output setup", 0) Draw.PushButton('Select output location', OutputButton, 9, (Y_POS - 41), 130, 18, 'Select output location') BGL.glRasterPos2i(143, (Y_POS - 36)) if OUTPUTString: RIGHT_LIMIT = 144 tempString = OUTPUTString if (Draw.GetStringWidth('...' + tempString) > (CONTROL_WIDTH - RIGHT_LIMIT)): while Draw.GetStringWidth('...' + tempString) > (CONTROL_WIDTH - RIGHT_LIMIT): tempString = tempString[2:] Draw.Text('...' + tempString) else: Draw.Text(OUTPUTString) else: Draw.Text('Please select a folder...')
def Display_Camera_Bar(Y_POS, CONTROL_HEIGHT, CONTROL_WIDTH): """ Create the Camera setup box. """ Create_Tab(3, Y_POS, CONTROL_WIDTH, Y_POS - CONTROL_HEIGHT, "Camera setup", Camera_Setup_Selection) global select_all_cameras_button select_all_cameras_button = Draw.PushButton('Select all cameras', no_action, ((CONTROL_WIDTH / 2) + 3), (Y_POS - 22), (CONTROL_WIDTH / 2) - 9, 16, 'Selects all cameras in the scene', Select_All_Cameras) if Camera_Setup_Selection['Automatic setup'][0].val: global camera_number_button camera_number_button = Draw.Number("Number of cameras:", CameraNumberButton, 9, (Y_POS - 63), (CONTROL_WIDTH / 2) - 9, 18, camera_number_button_value, camera_number_button_minimum, camera_number_button_maximum, 'Number of cameras to be set up in the scene', camButtonClicked, camera_number_button_step) global camera_latitude_button camera_latitude_button = Draw.Number("Latitude:", CameraLatitudeButton, ((CONTROL_WIDTH / 2) + 3), (Y_POS - 63), (CONTROL_WIDTH / 2) - 9, 18, camera_latitude_button.val, 0, math.pi/2, 'General latitude of the cameras') global camera_ontop_button camera_ontop_button = Draw.Number("Ceiling cameras:", CameraOntopButton, 9, (Y_POS - 84), (CONTROL_WIDTH / 2) - 9, 18, camera_ontop_button.val, 0, 4, 'Number of cameras to be positioned in the ceiling', lambda x,y:None, 10) if camera_ontop_button.val: global camera_ontop_latitude_button camera_ontop_latitude_button = Draw.Number("Ceiling latitude:", CameraOntopLatitudeButton, ((CONTROL_WIDTH / 2) + 3), (Y_POS - 84), (CONTROL_WIDTH / 2) - 9, 18, camera_ontop_latitude_button.val, 0, math.pi/2, 'Latitude of the cameras in the ceiling') global camera_radius_button camera_radius_button = Draw.Number("Radius:", CameraRadiusButton, ((CONTROL_WIDTH / 2) + 3), (Y_POS - CONTROL_HEIGHT) + 6, (CONTROL_WIDTH / 2) - 9, 18, camera_radius_button.val, 1, 40, 'The radius of the circle the cameras are placed in, in meters', lambda x,y:None, 10) if Camera_Setup_Selection['Pre-saved setup'][0].val: global camera_import_button camera_import_button = Draw.PushButton('Select camera setup (.xml)', CameraImportButton, 9, (Y_POS - 63), (CONTROL_WIDTH / 2) - 9, 18, 'Select camera setup (.xml)') BGL.glRasterPos2i(11, (Y_POS - 80)) if CAMString: RIGHT_LIMIT = 6 tempString = CAMString if (Draw.GetStringWidth('...' + tempString) > (CONTROL_WIDTH - RIGHT_LIMIT)): while Draw.GetStringWidth('...' + tempString) > (CONTROL_WIDTH - RIGHT_LIMIT): tempString = tempString[2:] Draw.Text('...' + tempString) else: Draw.Text(CAMString) else: Draw.Text('Please select a file...') global camera_export_button camera_export_button = Draw.PushButton('Export current setup', CameraExportButton, 9, (Y_POS - CONTROL_HEIGHT) + 6, (CONTROL_WIDTH / 2) - 9, 18, 'Press this button to save your camera setup')
def draw(self): area = Window.GetAreaSize() w = area[0] wPad = int(w * 0.03) h = area[1] hPad = int(h * 0.03) BGL.glColor3f(0.3, 0.3, 0.3) BGL.glRectf(wPad - 5, h - 60, w - wPad + 5, h - 85) BGL.glColor3f(1.0, 1.0, 1.0) BGL.glRasterPos2i(wPad, h - 75) Draw.Text('Chicken Configuration script', 'large') BGL.glRasterPos2i(wPad, h - 100) Draw.Text( 'This script is launched the first time you run Chicken, or when a configuration error has been detected' ) BGL.glColor3f(0.5, 0.5, 0.5) BGL.glRectf(wPad, h - 205, w - wPad, h - 225) BGL.glColor3f(1.0, 1.0, 1.0) BGL.glRasterPos2i(wPad, h - 220) Draw.Text('Binary Utilities - ') Draw.Text( 'if executables such as "pview" are on your PATH, you can leave this on Auto. Otherwise enter the folder manually' ) self.bBinPathAuto.update([wPad + 5, h - 250, w / 2 - wPad - 5, 20]) self.bBinPathManual.update([w / 2, h - 250, w / 2 - wPad - 5, 20]) if self.bBinPathManual.val: self.bBinPath.update([wPad + 5, h - 272, w - 2 * wPad - 90, 20]) self.bBinPathSel.update([w - wPad - 85, h - 272, 80, 20]) self.bLaunch.update([wPad + 5, h - 330, 100, 20]) self.bCheck.update([w - wPad - 85, h - 330, 80, 20]) if self.error is not None: if self.error is True: BGL.glColor3f(1.0, 0.0, 0.0) BGL.glRasterPos2i(w - wPad - 150, h - 365) Draw.Text('Configuration error detected') else: BGL.glColor3f(0.0, 0.0, 0.0) BGL.glRasterPos2i(w - wPad - 200, h - 365) Draw.Text('Configuration checked and saved')
def drawLights(): global MESHLIGHTPOWER, DSAMPLES ## meshlight power slider col = 10 line = 200 BGL.glRasterPos2i(col, line) Draw.Text("Meshlight:") col = 100 line = 195 MESHLIGHTPOWER = Draw.Number("Power", 2, col, line, 120, 18, MESHLIGHTPOWER.val, 1, 15) ## lightserver settings col = 10 line = 150 BGL.glRasterPos2i(col, line) Draw.Text("Lightserver:") col = 100 line = 147 DSAMPLES = Draw.Number("Direct Samples ", 2, col, line, 250, 18, DSAMPLES.val, 0, 1024) drawButtons()
def drawCamera(): global DOF, DOFRADIUS, DOFDIST, SPHERICALCAMERA ## camera settings col = 10 line = 200 BGL.glRasterPos2i(col, line) Draw.Text("Camera:") col = 100 line = 195 DOF = Draw.Toggle("DOF", DOF_CAMERA, col, line, 120, 18, DOF.val) col = 225 DOFDIST = Draw.Number("Distance", 2, col, line, 120, 18, DOFDIST.val, 0.0, 200.00) col = 350 DOFRADIUS = Draw.Number("Radius", 2, col, line, 120, 18, DOFRADIUS.val, 0.0, 200.00) col = 100 line = 170 SPHERICALCAMERA = Draw.Toggle("Spherical", SPHER_CAMERA, col, line, 120, 18, SPHERICALCAMERA.val) drawButtons()
def draw(): # Define the draw function (which draws your GUI). global EVENT_Button global EVENT_Type global EVENT_shtoguntype global EVENT_String global EVENT_Bitmap global EVENT_WVTU_1 global Object_Button global Object_Type global Object_shtoguntype global Object_String global Object_Bitmap global Object_WVTU_1 BGL.glClearColor(0.244564, 0.244406, 0.244406, 0.0) BGL.glClear(GL_COLOR_BUFFER_BIT) BGL.glColor3f(1.000000, 1.000000, 1.000000) Object_Button = Draw.Button("Connect to Shotgun", EVENT_Button, 20, 8, 200, 20, "") BGL.glRasterPos2i(100, 108) Object_Type = Draw.Text("Type") Object_shtoguntype = Draw.Menu("Asset", EVENT_shtoguntype, 20, 100, 60, 20, Object_shtoguntype.val, "Type of Shotgun entry") Object_String = Draw.String("id : ", EVENT_String, 20, 60, 60, 20,Object_String.val, 399, "ID # for the Shotgun entry") BGL.glRasterPos2i(24, 210) BGL.glDrawPixels(0, 0, GL_RGB, GL_UNSIGNED_BYTE, Object_Bitmap) BGL.glRasterPos2i(24, 152) Object_WVTU_1 = Draw.Text("WVTU "+VERSION+"")
def drawAO(): global OCCLUSSION, OCCBRIGHTR, OCCBRIGHTG, OCCBRIGHTB, OCCDARKR, OCCDARKG, OCCDARKB, OCCSAMPLES, OCCDIST col = 10 line = 200 BGL.glRasterPos2i(col, line) Draw.Text("Ambient Occlusion") col = 10 line = 175 OCCLUSSION = Draw.Toggle("Amb Occ", 2, col, line, 85, 18, OCCLUSSION.val) col = 100 OCCBRIGHTR = Draw.Number("Bright (R)", 2, col, line, 125, 18, OCCBRIGHTR.val, 0.0, 1.0) col = 230 OCCBRIGHTG = Draw.Number("Bright (G)", 2, col, line, 125, 18, OCCBRIGHTG.val, 0.0, 1.0) col = 360 OCCBRIGHTB = Draw.Number("Bright (B)", 2, col, line, 125, 18, OCCBRIGHTB.val, 0.0, 1.0) col = 100 line = 150 OCCDARKR = Draw.Number("Dark (R)", 2, col, line, 125, 18, OCCDARKR.val, 0.00, 1.0) col = 230 OCCDARKG = Draw.Number("Dark (G)", 2, col, line, 125, 18, OCCDARKG.val, 0.0, 1.0) col = 360 OCCDARKB = Draw.Number("Dark (B)", 2, col, line, 125, 18, OCCDARKB.val, 0.0, 1.0) col = 100 line = 125 OCCSAMPLES = Draw.Number("Samples", 2, col, line, 125, 18, OCCSAMPLES.val, 0, 256) col = 230 OCCDIST = Draw.Number("Distance", 2, col, line, 125, 18, OCCDIST.val, -1.0, 150.0) drawButtons()
def gui(): # the function to draw the screen global mystring, mymsg, toggle if len(mystring) > 90: mystring = "" BGL.glClearColor(0,0,1,1) BGL.glClear(BGL.GL_COLOR_BUFFER_BIT) BGL.glColor3f(1,1,1) Draw.Toggle("Toggle", 1, 10, 10, 55, 20, toggle,"A toggle button") BGL.glRasterPos2i(72, 16) if toggle: toggle_state = "down" else: toggle_state = "up" Draw.Text("The toggle button is %s." % toggle_state, "small") BGL.glRasterPos2i(10, 230) Draw.Text("Type letters from a to z, ESC to leave.") BGL.glRasterPos2i(20, 200) Draw.Text(mystring) BGL.glColor3f(1,0.4,0.3) BGL.glRasterPos2i(340, 70) Draw.Text(mymsg, "tiny")
def gui(): global active_object, file_str, local_toggle, global_toggle, all_to_triangle my_export_button = Draw.PushButton("Export", 3, 100, 50, 70, 20, "Export active object to selected file.") # my_local_toggle = Draw.Toggle("local coordinates", 0, 100, 100, 150, 20, local_toggle, "When selected local mesh coordinates will be exported.") # my_global_toggle = Draw.Toggle("global coordinates", 1, 250, 100, 150, 20, global_toggle, "When selected global mesh coordinates will be exported.") # my_triangles_toggle = Draw.Toggle("Quads to Triangles", 5, 100, 75, 150, 20, all_to_triangle, "When selected all faces will be transformed to triangles.") # BGL.glRasterPos2i(255, 80) # Draw.Text("!! THIS WILL ALTER YOUR OBJECT !!", "normal") my_file_choose_btn = Draw.PushButton("Choose file", 2, 100, 150, 120, 20, "Click here to select a file to save to") my_exit_btn = Draw.PushButton("Exit", 4, 200, 50, 70, 20, "Click here to abort and exit.") BGL.glRasterPos2i(230, 155) Draw.Text(file_str, "normal") BGL.glRasterPos2i(100, 175) Draw.Text("Selected object:", "normal") BGL.glRasterPos2i(230, 175) Draw.Text(active_object.name, "normal")
def gui(self): # the function to draw the screen BGL.glClearColor(0,0,0.5,1) BGL.glClear(BGL.GL_COLOR_BUFFER_BIT) BGL.glColor3f(1,1,1) BGL.glRasterPos2i(20,200) Draw.Text("Select the object to export:", "normal") self.objMenu = Draw.Menu(self.sObjSelection, 1, 20, 170, 200, 20, self.objSel, "Select the animated object.") BGL.glRasterPos2i(20,150) Draw.Text("Select the armature to export:", "normal") self.armMenu = Draw.Menu(self.sArmSelection, 2, 20, 120, 200, 20, self.armSel, "Select the matching armature.") BGL.glRasterPos2i(20,100) Draw.Text("Select the root bone of the armature:", "normal") self.boneMenu = Draw.Menu(self.sBoneSelection, 3, 20, 70, 200, 20, self.boneSel, "Select the Root Bone of the armature.") Draw.PushButton("Export", 4, 250, 150, 50, 20, "Export File") Draw.PushButton("Cancel", 5, 250, 110, 50, 20, "Cancel") BGL.glRasterPos2i(72, 16) string = "Selections: " + ("%s" % self.objSel) + " / " + ("%s" % self.armSel) + " / " + ("%s" % self.boneSel) Draw.Text(string, "small")
def Display_File_Bar(Y_POS, CONTROL_HEIGHT, CONTROL_WIDTH): """ Create the File setup box.""" global num_motions_button Create_Tab(3, Y_POS, CONTROL_WIDTH, Y_POS - CONTROL_HEIGHT, "File setup", 0) RIGHT_LIMIT = 90 global ASF_button ASF_button = Draw.PushButton('ASF-file', ASFBUTTON, 9, (Y_POS - 41), 65, 18, 'ASF-file') BGL.glRasterPos2i(80, (Y_POS - 37)) if ASFString: tempString = ASFString if (Draw.GetStringWidth('...' + tempString) > (CONTROL_WIDTH - RIGHT_LIMIT)): while Draw.GetStringWidth('...' + tempString) > (CONTROL_WIDTH - RIGHT_LIMIT): tempString = tempString[2:] Draw.Text('...' + tempString) else: Draw.Text(ASFString) else: Draw.Text('Please select a file...') global AMC_button AMC_button = Draw.PushButton('AMC-file', AMCBUTTON, 9, (Y_POS - 63), 65, 18, 'AMC-file') BGL.glRasterPos2i(80, (Y_POS - 58)) if AMCString: tempString = AMCString if (Draw.GetStringWidth('...' + tempString) > (CONTROL_WIDTH - RIGHT_LIMIT)): while Draw.GetStringWidth('...' + tempString) > (CONTROL_WIDTH - RIGHT_LIMIT): tempString = tempString[2:] Draw.Text('...' + tempString) else: Draw.Text(AMCString) else: Draw.Text('Please select a file...') if num_motions_button.val > 1: global AMC2_button AMC2_button = Draw.PushButton('AMC2-file', AMC2BUTTON, 9, (Y_POS - 85), 65, 18, 'AMC-file') BGL.glRasterPos2i(80, (Y_POS - 80)) if stitch and AMC2String: tempString = AMC2String if (Draw.GetStringWidth('...' + tempString) > (CONTROL_WIDTH - RIGHT_LIMIT)): while Draw.GetStringWidth('...' + tempString) > (CONTROL_WIDTH - RIGHT_LIMIT): tempString = tempString[2:] Draw.Text('...' + tempString) else: Draw.Text(AMC2String) else: Draw.Text('Please select a file...') if num_motions_button.val > 2: global AMC3_button AMC3_button = Draw.PushButton('AMC3-file', AMC3BUTTON, 9, (Y_POS - 107), 65, 18, 'AMC-file') BGL.glRasterPos2i(80, (Y_POS - 101)) if AMC3String: tempString = AMC3String if (Draw.GetStringWidth('...' + tempString) > (CONTROL_WIDTH - RIGHT_LIMIT)): while Draw.GetStringWidth('...' + tempString) > (CONTROL_WIDTH - RIGHT_LIMIT): tempString = tempString[2:] Draw.Text('...' + tempString) else: Draw.Text(AMC3String) else: Draw.Text('Please select a file...') if num_motions_button.val > 3: global AMC4_button AMC4_button = Draw.PushButton('AMC4-file', AMC4BUTTON, 9, (Y_POS - 129), 65, 18, 'AMC-file') BGL.glRasterPos2i(80, (Y_POS - 123)) if AMC4String: tempString = AMC4String if (Draw.GetStringWidth('...' + tempString) > (CONTROL_WIDTH - RIGHT_LIMIT)): while Draw.GetStringWidth('...' + tempString) > (CONTROL_WIDTH - RIGHT_LIMIT): tempString = tempString[2:] Draw.Text('...' + tempString) else: Draw.Text(AMC4String) else: Draw.Text('Please select a file...') if num_motions_button.val > 4: global AMC5_button AMC5_button = Draw.PushButton('AMC5-file', AMC5BUTTON, 9, (Y_POS - 151), 65, 18, 'AMC-file') BGL.glRasterPos2i(80, (Y_POS - 145)) if AMC5String: tempString = AMC5String if (Draw.GetStringWidth('...' + tempString) > (CONTROL_WIDTH - RIGHT_LIMIT)): while Draw.GetStringWidth('...' + tempString) > (CONTROL_WIDTH - RIGHT_LIMIT): tempString = tempString[2:] Draw.Text('...' + tempString) else: Draw.Text(AMC5String) else: Draw.Text('Please select a file...') num_motions_button = Draw.Number("Number of motions:", STITCHBUTTON, 9, (Y_POS - 63 - (22*num_motions_button.val)), (CONTROL_WIDTH / 2) - 9, 18, num_motions_button.val, 1, 5, 'The number of motions to be imported') if num_motions_button.val > 1: global motion_transition_button motion_transition_button = Draw.Number("Transition time (frames):", no_action, ((CONTROL_WIDTH / 2) + 3), (Y_POS - 63 - (22*num_motions_button.val)), (CONTROL_WIDTH / 2) - 9, 18, motion_transition_button.val, 1, 1000, 'The number of frames between each motion')
def renderGUI(): """ Renders the GUI for the script. """ global G # find the selection set and update some selection # related flags haveEmpty = False haveCamera = False emptyName = "" G.selection = Object.GetSelected() G.curempty = None if G.selection is not None and len(G.selection) > 0: mso = G.selection[0] msotype = mso.getType() if msotype == 'Empty': haveEmpty = True G.curempty = mso emptyName = G.curempty.getName() elif msotype == 'Camera': haveCamera = True emptyHasCoords = G.coordmap.has_key(emptyName) removeUnknownsFromCoords() # clear any buttons that need to have set states G.buttons.add = G.buttons.delete = None # clear the window c = COLOR_BACKGROUND BGL.glClearColor(c[0], c[1], c[2], c[3]) BGL.glClear(BGL.GL_COLOR_BUFFER_BIT) # paint the image in the background if G.image is not None: #drawImage(G.image, G.imgpos, G.iw, G.ih, G.zoom) Draw.Image(G.image, G.imgpos[0], G.imgpos[1], G.zoom, G.zoom) # paint 2D vertices in the image BGL.glPushAttrib(BGL.GL_POINT_BIT | BGL.GL_CURRENT_BIT) BGL.glPointSize(POINT_SIZE) x0 = int(G.imgpos[0] / G.zoom) y0 = int(G.imgpos[1] / G.zoom) def drawvc(ec): emptyname, coord = ec if Object.Get(emptyname) in G.selection: c = COLOR_VERTSEL else: c = COLOR_VERTUNSEL BGL.glColor4f(c[0], c[1], c[2], c[3]) BGL.glVertex2f(G.zoom*(coord[0]+x0), G.zoom*(coord[1]+y0)) BGL.glBegin(BGL.GL_POINTS) map(drawvc, G.coordmap.items()) BGL.glEnd() BGL.glPopAttrib() # if we're in add mode then draw some extra stuff if G.mode == MODE_ADD: xm,ym = map(int, getWMCoords()) xm -= 10 ym += 10 (xw,yw,ww,hw) = getWinRect() # draw crosshairs c = COLOR_CROSSHAIRS BGL.glColor4f(c[0], c[1], c[2], c[3]) verts = [ (xm,0), (xm,hw), (0,ym), (ww,ym) ] BGL.glBegin(BGL.GL_LINES) map(lambda x: BGL.glVertex2d(x[0],x[1]), verts) BGL.glEnd() ############################################# # UNCOMMENT THIS SECTION FOR A COOL MINIMAP # EFFECT - NOT VERY USEFUL THOUGH # ## draw "minimap" background #c = COLOR_MINIMAP #BGL.glColor4f(c[0], c[1], c[2], c[3]) #verts = [ (119,10), (221,10), (221,111), (119,111) ] #BGL.glBegin(BGL.GL_QUADS) #map(lambda x: BGL.glVertex2i(x[0],x[1]), verts) #BGL.glEnd() # ## paint the image into the minimap #ix,iy = wc2ic((xm,ym)) #ix,iy = map(int, [ix, iy]) #drawImage(G.ibuf, (120,10), G.iw, G.ih, 10.0, (ix-5,iy-5,10,10)) # # END OF MINIMAP SECTION ############################################# # paint the current empty name if haveEmpty: c = COLOR_TEXT BGL.glColor4d(c[0], c[1], c[2], c[3]) BGL.glRasterPos2i(220, 10) Draw.Text(emptyName, 'small') # paint the normal GUI buttons G.buttons.quit = Draw.PushButton('Quit', BUTTON_QUIT, 5, 5, 100, 20, 'Exits the script.') G.buttons.load = Draw.PushButton('Load Image', BUTTON_LOAD, 5, 25, 100, 20, 'Loads an image.') G.buttons.zoom = Draw.Number('Zoom', BUTTON_ZOOM, 5, 45, 100, 20, G.zoom, ZOOM_MIN, ZOOM_MAX, 'Adjusts image zoom.') # paint camera-specific stuff if haveCamera: G.buttons.fullopt = Draw.Toggle('Full Optimization', BUTTON_FULLOPT, 110, 5, 120, 20, G.fullopt, 'Full or partial optimization.') G.buttons.coplanar = Draw.Toggle('Coplanar', BUTTON_COPLANAR, 110, 25, 120, 20, G.coplanar, 'Coplanar or non-coplanar target.') # Origin offset is not currently working in the Tsai module. # It should be brought back here when it is. #G.buttons.ofsz = Draw.Number('OfsZ', BUTTON_OFSZ, 110, 50, 100, 20, G.ofsz, OFS_MIN, OFS_MAX, 'Z origin offset.') #G.buttons.ofsy = Draw.Number('OfsY', BUTTON_OFSY, 110, 70, 100, 20, G.ofsy, OFS_MIN, OFS_MAX, 'Y origin offset.') #G.buttons.ofsx = Draw.Number('OfsX', BUTTON_OFSX, 110, 90, 100, 20, G.ofsx, OFS_MIN, OFS_MAX, 'X origin offset.') G.buttons.calibrate = Draw.PushButton('Calibrate', BUTTON_CALIBRATE, 235, 5, 100, 20, 'Calibrates the selected camera.') # paint empty-specific stuff elif haveEmpty and (G.mode == MODE_NORMAL): if emptyHasCoords: G.buttons.delete = Draw.PushButton('Delete', BUTTON_DELETE, 110, 5, 100, 20, 'Adds an image calibration coordinate.') else: G.buttons.add = Draw.PushButton('Add', BUTTON_ADD, 110, 5, 100, 20, 'Removes an image calibration coordinate.')
def draw(): global n2mat, bl_mats_menu, n2_shader_menu, shader_params_menu, texture_param_list win_size = Window.GetAreaSize() left = 0 top = win_size[1] button_width = 100 button_height = 17 pen_x = left + padding pen_y = win_size[1] - (button_height + padding) # TODO: get material for selected object if any if(n2mat): # Draw Label BGL.glColor3f(1.0, 1.0, 1.0) BGL.glRasterPos2i(pen_x, pen_y) text_width = Draw.Text('Blender Material') # Move Pen Point pen_x = pen_x + text_width + padding pen_y = pen_y - 5 # menu = buildMenu(bl_mats) bl_mats_menu = Draw.Menu(menu, BL_MAT_CHANGED, pen_x, pen_y, button_width, button_height, bl_mat_index, 'Blender Material') # Move Pen Point pen_x = pen_x + button_width + (padding * 2) pen_y = pen_y + 5 BGL.glRasterPos2i(pen_x, pen_y) # Draw Label text_width = Draw.Text('Nebula Shader') # Move Pen Point pen_x = pen_x + text_width + (padding) pen_y = pen_y - 5 button_width = 180 # menu = buildMenu(n2_shaders) n2_shader_menu = Draw.Menu(menu, NEBULA_SHADER_CHANGED, pen_x, pen_y, button_width, button_height, n2_shader_index, 'Nebula Shader') # Draw Params for current nebula shader shader = n2mat.GetShader() # Move Pen params_start_y = pen_y pen_x = left + padding params = shader.m_params label_width = 130 label_max_chars = 25 button_width_max = 80 name_max_chars = 10 column_size = label_width + (padding *2) + button_width_max # Get Mesh object holding the shaders name and params texture_param_list = [] button_width = 120 #params = [] for key in params: param = params[key] if(not n2exporter.texture_param_types.has_key(param.m_type)): if((pen_y - button_height - padding) < button_height): pen_x = pen_x + column_size#(win_size[0] / 2) pen_y = params_start_y pen_y = pen_y - button_height - padding BGL.glRasterPos2i(pen_x, pen_y) label = param.m_label name = param.m_name stored_value = n2mat.GetParamValue(param.m_name) if(len(label)>label_max_chars): label = label[0:label_max_chars] if(len(name)>name_max_chars): name = name[0:name_max_chars] Draw.Text(str(label)) if(param.m_type == "Int"): button_width = 50 pen_x = pen_x + label_width + padding pen_y = pen_y - 5 shader_params_menu[param.m_name] = Draw.Number("", SHADER_PARAM_CHANGED, pen_x, pen_y, button_width, button_height, int(stored_value), int(param.m_min), int(param.m_max), str(param.m_label)) pen_x = pen_x - label_width - padding pen_y = pen_y + 5 elif(param.m_type == "Bool"): button_width = 55 pen_x = pen_x + label_width + padding pen_y = pen_y - 5 menu = buildMenu(["False", "True"]) shader_params_menu[param.m_name] = Draw.Menu(menu, SHADER_PARAM_CHANGED, pen_x, pen_y, button_width, button_height, int(stored_value), str(param.m_label)) pen_x = pen_x - label_width - padding pen_y = pen_y + 5 elif(param.m_type == "Float"): button_width = 60 pen_x = pen_x + label_width + padding pen_y = pen_y - 5 shader_params_menu[param.m_name] = Draw.Number("", SHADER_PARAM_CHANGED, pen_x, pen_y, button_width, button_height, float(stored_value), float(param.m_min), float(param.m_max), str(param.m_label)) pen_x = pen_x - label_width - padding pen_y = pen_y + 5 elif(param.m_type == "Enum"): button_width = 80 pen_x = pen_x + label_width + padding pen_y = pen_y - 5 menu = buildMenu(param.m_enum, param.m_default_enum) shader_params_menu[param.m_name] = Draw.Menu(menu, SHADER_PARAM_CHANGED, pen_x, pen_y, button_width, button_height, int(stored_value), str(param.m_label)) pen_x = pen_x - label_width - padding pen_y = pen_y + 5 elif(param.m_type == "Vector"): button_width = 50 pen_y = pen_y - button_height - 5 v = n2exporter.StringToVector(stored_value) shader_params_menu[param.m_name + "_x"] = Draw.Number("", SHADER_PARAM_CHANGED, pen_x, pen_y, button_width, button_height, v.x, 0.0, 100.0, "x Component") pen_x = pen_x + button_width shader_params_menu[param.m_name + "_y"] = Draw.Number("", SHADER_PARAM_CHANGED, pen_x, pen_y, button_width, button_height, v.y, 0.0, 100.0, "y Component") pen_x = pen_x + button_width shader_params_menu[param.m_name + "_z"] = Draw.Number("", SHADER_PARAM_CHANGED, pen_x, pen_y, button_width, button_height, v.z, 0.0, 100.0, "z Component") pen_x = pen_x + button_width shader_params_menu[param.m_name + "_w"] = Draw.Number("", SHADER_PARAM_CHANGED, pen_x, pen_y, button_width, button_height, v.w, 0.0, 100.0, "w Component") pen_x = pen_x - ((button_width) * 3) elif(n2exporter.texture_param_types.has_key(param.m_type)): texture_param_list.append(param.m_name) # Build textures menu if(len(texture_param_list)>0): if((pen_y - button_height - padding) < button_height): pen_x = pen_x = pen_x + column_size pen_y = params_start_y button_width = 80 pen_y = pen_y - button_height - padding - 5 # texture_param_name = texture_param_list[texture_param_index] menu = buildMenu(texture_param_list) shader_params_menu["TextureParams"] = Draw.Menu(menu, TEXTURE_PARAM_CHANGED, pen_x, pen_y, button_width, button_height, texture_param_index, "Shader Textures") # Move Pen pen_x = pen_x + button_width + padding button_width = 160 default = n2mat.GetParamValue(texture_param_name) shader_params_menu[texture_param_name] = Draw.String("", TEXTURE_PARAM_CLICKED, pen_x, pen_y, button_width, button_height, default, 255, "Texture Params") #Draw Browse button pen_x = pen_x + button_width button_width = 20 Draw.PushButton("...", TEXTURE_SELECT_CLICKED, pen_x, pen_y, button_width, button_height, "Select Texture") else: Draw.PupMenu("Error%t|You must have a blender material in the scene") Draw.Exit() return
def draw(): win_size = Window.GetAreaSize() left = 0 top = win_size[1] button_width = 180 button_height = 20 label_width = 105 pen_x = left + padding pen_y = win_size[1] - (button_height + padding) # Draw Label BGL.glColor3f(1.0, 1.0, 1.0) BGL.glRasterPos2i(pen_x, pen_y) text_width = Draw.Text('Nebula Home Dir') # Move Pen Point pen_x = pen_x + text_width + padding pen_y = pen_y - 5 # Draw String Button home_dir_input = Draw.String("", HOME_DIR_CHANGED, pen_x, pen_y, button_width, button_height, config_data["home"], 255, "Nebula's Home Directory") pen_x = pen_x + button_width button_width = 20 Draw.PushButton("...", BROWSE_HOME_CLICKED, pen_x, pen_y, button_width, button_height, "Browse for Nebula Home Directory") # Move Pen Point pen_x = left + padding pen_y = pen_y - button_height - 5 button_width = 180 BGL.glColor3f(1.0, 1.0, 1.0) BGL.glRasterPos2i(pen_x, pen_y) Draw.Text('Project Dir') # Move Pen Point pen_x = pen_x + text_width + padding pen_y = pen_y - 5 # Draw String Button proj_dir_input = Draw.String("", PROJ_DIR_CHANGED, pen_x, pen_y, button_width, button_height, config_data["proj"], 255, "Projetct Directory") pen_x = pen_x + button_width button_width = 20 Draw.PushButton("...", BROWSE_PROJ_CLICKED, pen_x, pen_y, button_width, button_height, "Browse for Project Directory") # Move Pen Point pen_x = left + padding pen_y = pen_y - button_height - 5 button_width = 150 BGL.glColor3f(1.0, 1.0, 1.0) BGL.glRasterPos2i(pen_x, pen_y) Draw.Text('Export Dir') # Draw String Button pen_x = pen_x + label_width pen_y = pen_y - 5 dir_assigns["export"] = Draw.String("", ASSIGN_DIR_CHANGED, pen_x, pen_y, button_width, button_height, config_data["export"], 255, "Export Directory") pen_y = pen_y + 5 for data in config_data: if(data != "home" and data != "export" and data != "texture_dir" and data != "proj"): # Move Pen Point pen_x = left + padding pen_y = pen_y - button_height - 5 # Draw Label BGL.glColor3f(1.0, 1.0, 1.0) BGL.glRasterPos2i(pen_x, pen_y) text_width = Draw.Text(data) # Draw Button pen_x = pen_x + label_width pen_y = pen_y - 5 dir_assigns[data] = Draw.String("", ASSIGN_DIR_CHANGED, pen_x, pen_y, button_width, button_height, config_data[data], 255, "Assign") pen_y = pen_y + 5 # Draw OK Cancel Buttons button_width = 100 pen_x = left + padding pen_y = pen_y - button_height - 5 - padding Draw.PushButton("Cancel", CANCEL_CLICKED, pen_x, pen_y, button_width, button_height, "Cancel Configuration") pen_x = pen_x + button_width + padding Draw.PushButton("OK", OK_CLICKED, pen_x, pen_y, button_width, button_height, "Save Configuration")
def draw(): global n2mat, bl_mats_menu, n2_shader_menu, shader_params_menu, texture_param_list win_size = Window.GetAreaSize() left = 0 top = win_size[1] button_width = 100 button_height = 17 pen_x = left + padding pen_y = win_size[1] - (button_height + padding) # TODO: get material for selected object if any if (n2mat): # Draw Label BGL.glColor3f(1.0, 1.0, 1.0) BGL.glRasterPos2i(pen_x, pen_y) text_width = Draw.Text('Blender Material') # Move Pen Point pen_x = pen_x + text_width + padding pen_y = pen_y - 5 # menu = buildMenu(bl_mats) bl_mats_menu = Draw.Menu(menu, BL_MAT_CHANGED, pen_x, pen_y, button_width, button_height, bl_mat_index, 'Blender Material') # Move Pen Point pen_x = pen_x + button_width + (padding * 2) pen_y = pen_y + 5 BGL.glRasterPos2i(pen_x, pen_y) # Draw Label text_width = Draw.Text('Nebula Shader') # Move Pen Point pen_x = pen_x + text_width + (padding) pen_y = pen_y - 5 button_width = 180 # menu = buildMenu(n2_shaders) n2_shader_menu = Draw.Menu(menu, NEBULA_SHADER_CHANGED, pen_x, pen_y, button_width, button_height, n2_shader_index, 'Nebula Shader') # Draw Params for current nebula shader shader = n2mat.GetShader() # Move Pen params_start_y = pen_y pen_x = left + padding params = shader.m_params label_width = 130 label_max_chars = 25 button_width_max = 80 name_max_chars = 10 column_size = label_width + (padding * 2) + button_width_max # Get Mesh object holding the shaders name and params texture_param_list = [] button_width = 120 #params = [] for key in params: param = params[key] if (not n2exporter.texture_param_types.has_key(param.m_type)): if ((pen_y - button_height - padding) < button_height): pen_x = pen_x + column_size #(win_size[0] / 2) pen_y = params_start_y pen_y = pen_y - button_height - padding BGL.glRasterPos2i(pen_x, pen_y) label = param.m_label name = param.m_name stored_value = n2mat.GetParamValue(param.m_name) if (len(label) > label_max_chars): label = label[0:label_max_chars] if (len(name) > name_max_chars): name = name[0:name_max_chars] Draw.Text(str(label)) if (param.m_type == "Int"): button_width = 50 pen_x = pen_x + label_width + padding pen_y = pen_y - 5 shader_params_menu[param.m_name] = Draw.Number( "", SHADER_PARAM_CHANGED, pen_x, pen_y, button_width, button_height, int(stored_value), int(param.m_min), int(param.m_max), str(param.m_label)) pen_x = pen_x - label_width - padding pen_y = pen_y + 5 elif (param.m_type == "Bool"): button_width = 55 pen_x = pen_x + label_width + padding pen_y = pen_y - 5 menu = buildMenu(["False", "True"]) shader_params_menu[param.m_name] = Draw.Menu( menu, SHADER_PARAM_CHANGED, pen_x, pen_y, button_width, button_height, int(stored_value), str(param.m_label)) pen_x = pen_x - label_width - padding pen_y = pen_y + 5 elif (param.m_type == "Float"): button_width = 60 pen_x = pen_x + label_width + padding pen_y = pen_y - 5 shader_params_menu[param.m_name] = Draw.Number( "", SHADER_PARAM_CHANGED, pen_x, pen_y, button_width, button_height, float(stored_value), float(param.m_min), float(param.m_max), str(param.m_label)) pen_x = pen_x - label_width - padding pen_y = pen_y + 5 elif (param.m_type == "Enum"): button_width = 80 pen_x = pen_x + label_width + padding pen_y = pen_y - 5 menu = buildMenu(param.m_enum, param.m_default_enum) shader_params_menu[param.m_name] = Draw.Menu( menu, SHADER_PARAM_CHANGED, pen_x, pen_y, button_width, button_height, int(stored_value), str(param.m_label)) pen_x = pen_x - label_width - padding pen_y = pen_y + 5 elif (param.m_type == "Vector"): button_width = 50 pen_y = pen_y - button_height - 5 v = n2exporter.StringToVector(stored_value) shader_params_menu[param.m_name + "_x"] = Draw.Number( "", SHADER_PARAM_CHANGED, pen_x, pen_y, button_width, button_height, v.x, 0.0, 100.0, "x Component") pen_x = pen_x + button_width shader_params_menu[param.m_name + "_y"] = Draw.Number( "", SHADER_PARAM_CHANGED, pen_x, pen_y, button_width, button_height, v.y, 0.0, 100.0, "y Component") pen_x = pen_x + button_width shader_params_menu[param.m_name + "_z"] = Draw.Number( "", SHADER_PARAM_CHANGED, pen_x, pen_y, button_width, button_height, v.z, 0.0, 100.0, "z Component") pen_x = pen_x + button_width shader_params_menu[param.m_name + "_w"] = Draw.Number( "", SHADER_PARAM_CHANGED, pen_x, pen_y, button_width, button_height, v.w, 0.0, 100.0, "w Component") pen_x = pen_x - ((button_width) * 3) elif (n2exporter.texture_param_types.has_key(param.m_type)): texture_param_list.append(param.m_name) # Build textures menu if (len(texture_param_list) > 0): if ((pen_y - button_height - padding) < button_height): pen_x = pen_x = pen_x + column_size pen_y = params_start_y button_width = 80 pen_y = pen_y - button_height - padding - 5 # texture_param_name = texture_param_list[texture_param_index] menu = buildMenu(texture_param_list) shader_params_menu["TextureParams"] = Draw.Menu( menu, TEXTURE_PARAM_CHANGED, pen_x, pen_y, button_width, button_height, texture_param_index, "Shader Textures") # Move Pen pen_x = pen_x + button_width + padding button_width = 160 default = n2mat.GetParamValue(texture_param_name) shader_params_menu[texture_param_name] = Draw.String( "", TEXTURE_PARAM_CLICKED, pen_x, pen_y, button_width, button_height, default, 255, "Texture Params") #Draw Browse button pen_x = pen_x + button_width button_width = 20 Draw.PushButton("...", TEXTURE_SELECT_CLICKED, pen_x, pen_y, button_width, button_height, "Select Texture") else: Draw.PupMenu("Error%t|You must have a blender material in the scene") Draw.Exit() return
def renderGUI(): """ Renders the GUI for the script. """ global G # find the selection set and update some selection # related flags haveEmpty = False haveCamera = False emptyName = "" G.selection = Object.GetSelected() G.curempty = None if G.selection is not None and len(G.selection) > 0: mso = G.selection[0] msotype = mso.getType() if msotype == 'Empty': haveEmpty = True G.curempty = mso emptyName = G.curempty.getName() elif msotype == 'Camera': haveCamera = True emptyHasCoords = G.coordmap.has_key(emptyName) removeUnknownsFromCoords() # clear any buttons that need to have set states G.buttons.add = G.buttons.delete = None # clear the window c = COLOR_BACKGROUND BGL.glClearColor(c[0], c[1], c[2], c[3]) BGL.glClear(BGL.GL_COLOR_BUFFER_BIT) # paint the image in the background if G.image is not None: #drawImage(G.image, G.imgpos, G.iw, G.ih, G.zoom) Draw.Image(G.image, G.imgpos[0], G.imgpos[1], G.zoom, G.zoom) # paint 2D vertices in the image BGL.glPushAttrib(BGL.GL_POINT_BIT | BGL.GL_CURRENT_BIT) BGL.glPointSize(POINT_SIZE) x0 = int(G.imgpos[0] / G.zoom) y0 = int(G.imgpos[1] / G.zoom) def drawvc(ec): emptyname, coord = ec if Object.Get(emptyname) in G.selection: c = COLOR_VERTSEL else: c = COLOR_VERTUNSEL BGL.glColor4f(c[0], c[1], c[2], c[3]) BGL.glVertex2f(G.zoom * (coord[0] + x0), G.zoom * (coord[1] + y0)) BGL.glBegin(BGL.GL_POINTS) map(drawvc, G.coordmap.items()) BGL.glEnd() BGL.glPopAttrib() # if we're in add mode then draw some extra stuff if G.mode == MODE_ADD: xm, ym = map(int, getWMCoords()) xm -= 10 ym += 10 (xw, yw, ww, hw) = getWinRect() # draw crosshairs c = COLOR_CROSSHAIRS BGL.glColor4f(c[0], c[1], c[2], c[3]) verts = [(xm, 0), (xm, hw), (0, ym), (ww, ym)] BGL.glBegin(BGL.GL_LINES) map(lambda x: BGL.glVertex2d(x[0], x[1]), verts) BGL.glEnd() ############################################# # UNCOMMENT THIS SECTION FOR A COOL MINIMAP # EFFECT - NOT VERY USEFUL THOUGH # ## draw "minimap" background #c = COLOR_MINIMAP #BGL.glColor4f(c[0], c[1], c[2], c[3]) #verts = [ (119,10), (221,10), (221,111), (119,111) ] #BGL.glBegin(BGL.GL_QUADS) #map(lambda x: BGL.glVertex2i(x[0],x[1]), verts) #BGL.glEnd() # ## paint the image into the minimap #ix,iy = wc2ic((xm,ym)) #ix,iy = map(int, [ix, iy]) #drawImage(G.ibuf, (120,10), G.iw, G.ih, 10.0, (ix-5,iy-5,10,10)) # # END OF MINIMAP SECTION ############################################# # paint the current empty name if haveEmpty: c = COLOR_TEXT BGL.glColor4d(c[0], c[1], c[2], c[3]) BGL.glRasterPos2i(220, 10) Draw.Text(emptyName, 'small') # paint the normal GUI buttons G.buttons.quit = Draw.PushButton('Quit', BUTTON_QUIT, 5, 5, 100, 20, 'Exits the script.') G.buttons.load = Draw.PushButton('Load Image', BUTTON_LOAD, 5, 25, 100, 20, 'Loads an image.') G.buttons.zoom = Draw.Number('Zoom', BUTTON_ZOOM, 5, 45, 100, 20, G.zoom, ZOOM_MIN, ZOOM_MAX, 'Adjusts image zoom.') # paint camera-specific stuff if haveCamera: G.buttons.fullopt = Draw.Toggle('Full Optimization', BUTTON_FULLOPT, 110, 5, 120, 20, G.fullopt, 'Full or partial optimization.') G.buttons.coplanar = Draw.Toggle('Coplanar', BUTTON_COPLANAR, 110, 25, 120, 20, G.coplanar, 'Coplanar or non-coplanar target.') # Origin offset is not currently working in the Tsai module. # It should be brought back here when it is. #G.buttons.ofsz = Draw.Number('OfsZ', BUTTON_OFSZ, 110, 50, 100, 20, G.ofsz, OFS_MIN, OFS_MAX, 'Z origin offset.') #G.buttons.ofsy = Draw.Number('OfsY', BUTTON_OFSY, 110, 70, 100, 20, G.ofsy, OFS_MIN, OFS_MAX, 'Y origin offset.') #G.buttons.ofsx = Draw.Number('OfsX', BUTTON_OFSX, 110, 90, 100, 20, G.ofsx, OFS_MIN, OFS_MAX, 'X origin offset.') G.buttons.calibrate = Draw.PushButton( 'Calibrate', BUTTON_CALIBRATE, 235, 5, 100, 20, 'Calibrates the selected camera.') # paint empty-specific stuff elif haveEmpty and (G.mode == MODE_NORMAL): if emptyHasCoords: G.buttons.delete = Draw.PushButton( 'Delete', BUTTON_DELETE, 110, 5, 100, 20, 'Adds an image calibration coordinate.') else: G.buttons.add = Draw.PushButton( 'Add', BUTTON_ADD, 110, 5, 100, 20, 'Removes an image calibration coordinate.')
def OnDraw(): global Ticks, Tickctrl BGL.glClear(Blender.BGL.GL_COLOR_BUFFER_BIT) BGL.glColor3f(0.2, 0.3, 0.3) DrawBox(LEFT-10, TOP - 10, 300, 380) BGL.glColor3f(0.1, 0.1, 0.1) BGL.glRasterPos2i(LEFT, TOP) Draw.Text("DirectX Exporter", "large") BGL.glRasterPos2i(LEFT, TOP - 40) Draw.Text("Export", "large") Draw.Toggle("All", 0, LEFT, TOP - 80, 80, 20, ExportType == 0, "Export all static objects in the current scene.") Draw.Toggle("Selected", 1, LEFT + 100, TOP - 80, 80, 20, ExportType == 1, "Export all selected objects.") Draw.Toggle("Animated", 2, LEFT + 200, TOP - 80, 80, 20, ExportType == 2, "Export one mesh with one armature. Make sure that only the mesh and it's armature are selected.") BGL.glRasterPos2i(LEFT, EDATA) Draw.Text("Exported data", "large") Draw.Toggle("Normals", 3, LEFT, EDATA - 40, 80, 20, Normals, "Export vertex normals.") Draw.Toggle("Colors", 4, LEFT + 200, EDATA - 40, 80, 20, Colors, "Export vertex diffuse colors.") Draw.Toggle("Texcoords", 6, LEFT, EDATA - 70, 80, 20, TexCoords, "Export vertex texture coordinates.") Draw.Toggle("Materials", 7, LEFT + 100, EDATA - 40, 80, 20, Materials, "Export materials.") BGL.glRasterPos2i(LEFT, MISC) Draw.Text("Misc options", "large") Draw.Toggle("Swap y and z", 8, LEFT, MISC - 40, 80, 20, SwapYZ, "Right-handed to left-handed system.") Draw.Toggle("Apply world", 9, LEFT + 100, MISC - 40, 80, 20, UseWTrans, "Apply world transformation to exported vertices.") Tickctrl = Draw.Number("Speed", 10, LEFT + 200, MISC - 40, 80, 20, Ticks, 1, 100, "Animation ticks per second.") #Draw.Toggle("Compressed", 11, LEFT, MISC - 70, 80, 20, Compressed, "Compress the file.") Draw.Button("Export...", 100, LEFT + 40, DOIT, 80, 40, "Export data.") Draw.Button("Exit", 101, LEFT + 140, DOIT, 80, 40, "Exit the script.") BGL.glColor3f(0.3, 0.3, 0.3) BGL.glRasterPos2i(LEFT, 35) Draw.Text("(C) 2006 Heikki Salo", "small") BGL.glRasterPos2i(LEFT, 20) Draw.Text("http://directpython.sourceforge.net/exportx.html", "small")
def draw(): global mnu_persist_servers, mnu_mesh_formats, mnu_width, mnu_height, mnu_fullscreen, mnu_renderpath, mnu_group, mnu_filename, mnu_aa win_size = Window.GetAreaSize() left = 0 top = win_size[1] button_width = 130 button_height = 20 label_width = 105 pen_x = left + padding pen_y = win_size[1] - (button_height + padding) # Draw Label BGL.glColor3f(1.0, 1.0, 1.0) BGL.glRasterPos2i(pen_x, pen_y) text_width = Draw.Text('Persist Server') # Move Pen Point pen_x = pen_x + text_width + padding pen_y = pen_y - 5 # Draw Persist Server Menu mnu_persist_servers = Draw.Menu(buildMenu(persist_servers), PERSIST_SERVER_CHANGED, pen_x, pen_y, button_width, button_height, persist_server, "Persist Server to use") # Move Pen Point pen_x = left + padding pen_y = pen_y - button_height - 5 button_width = 180 BGL.glColor3f(1.0, 1.0, 1.0) BGL.glRasterPos2i(pen_x, pen_y) Draw.Text('Mesh Format') # Move Pen Point pen_x = pen_x + text_width + padding pen_y = pen_y - 5 button_width = 80 # Draw Mesh Format Menu mnu_mesh_formats = Draw.Menu(buildMenu(mesh_formats), MESH_FORMAT_CHANGED, pen_x, pen_y, button_width, button_height, mesh_format, "Mesh Format to use(ASCII/Binary)") # Move Pen Point pen_x = left + padding pen_y = pen_y - button_height - 5 button_width = 180 BGL.glColor3f(1.0, 1.0, 1.0) BGL.glRasterPos2i(pen_x, pen_y) text_width = Draw.Text('Preview Window') # Move Pen Point pen_x = pen_x + text_width + padding pen_y = pen_y - 5 button_width = 100 mnu_width = Draw.Number("Width", WIDTH_CHANGED, pen_x, pen_y, button_width, button_height, window_width, 32, 2048, "Preview Window Width") # Move Pen Point pen_x = pen_x + button_width + padding mnu_height = Draw.Number("Height", HEIGHT_CHANGED, pen_x, pen_y, button_width, button_height, window_height, 32, 2048, "Preview Window Height") # Move Pen Point pen_x = left + padding pen_y = pen_y - button_height - 5 BGL.glColor3f(1.0, 1.0, 1.0) BGL.glRasterPos2i(pen_x, pen_y) text_width = Draw.Text('Preview Fullscreen') button_width = 20 # Move Pen Point pen_x = pen_x + text_width + padding pen_y = pen_y - 5 mnu_fullscreen = Draw.Toggle("X", FULLSCREEN_CHANGED, pen_x, pen_y, button_width, button_height, fullscreen, "Preview Fullscreen") # Move Pen Point pen_x = pen_x + button_width + padding pen_y = pen_y + 5 button_width = 180 BGL.glColor3f(1.0, 1.0, 1.0) BGL.glRasterPos2i(pen_x, pen_y) Draw.Text('Antialias Samples') # Move Pen Point pen_x = pen_x + text_width + padding pen_y = pen_y - 5 button_width = 40 # Draw Mesh Format Menu mnu_aa = Draw.Menu(buildMenu(aasamples), AA_CHANGED, pen_x, pen_y, button_width, button_height, aa, "Antialias Samples") # Move Pen Point pen_x = left + padding pen_y = pen_y - button_height - 5 button_width = 180 BGL.glColor3f(1.0, 1.0, 1.0) BGL.glRasterPos2i(pen_x, pen_y) text_width = Draw.Text('Export Group / filename') # Move Pen Point pen_x = pen_x + text_width + padding pen_y = pen_y - 5 button_width = 80 mnu_group = Draw.String("", GROUP_CHANGED, pen_x, pen_y, button_width, button_height, group, 255, "Export Group") # Move Pen Point pen_x = pen_x + button_width + padding mnu_filename = Draw.String("", FILENAME_CHANGED, pen_x, pen_y, button_width, button_height, filename, 255, "Export Filename") # Move Pen Point pen_x = pen_x + text_width + padding pen_y = pen_y - 5 button_width = 100 # Move Pen Point pen_x = left + padding pen_y = pen_y - button_height - 5 BGL.glColor3f(1.0, 1.0, 1.0) BGL.glRasterPos2i(pen_x, pen_y) Draw.Text('Preview Renderpath') # Move Pen Point pen_x = pen_x + text_width + padding pen_y = pen_y - 5 button_width = 60 mnu_renderpath = Draw.Menu(buildMenu(renderpaths), RENDERPATH_CHANGED, pen_x, pen_y, button_width, button_height, renderpath, "Renderpath to use for preview") # Move Pen Point pen_x = left + padding pen_y = pen_y - button_height - 5 button_width = 80 Draw.PushButton("Close", CANCEL_CLICKED, pen_x, pen_y, button_width, button_height, "Close Exporter") pen_x = pen_x + button_width + padding Draw.PushButton("Export", OK_CLICKED, pen_x, pen_y, button_width, button_height, "Export Scene")
def gui(): # drawing the screen global SCREEN, START_SCREEN, CONFIG_SCREEN, KEYMENUS, LABELS global BEVT_KEYMENU, BUT_KEYMENU, CFGKEY global BUT_TYPES, SCROLL_DOWN, VARS_NUM WIDTH, HEIGHT = Window.GetAreaSize() theme = Theme.Get()[0] tui = theme.get('ui') ttxt = theme.get('text') COL_BG = float_colors(ttxt.back) COL_TXT = ttxt.text COL_TXTHI = ttxt.text_hi BGL.glClearColor(COL_BG[0], COL_BG[1], COL_BG[2], COL_BG[3]) BGL.glClear(BGL.GL_COLOR_BUFFER_BIT) BGL.glColor3ub(COL_TXT[0], COL_TXT[1], COL_TXT[2]) if SCREEN == START_SCREEN: x = 10 y = 10 h = 20 w = 90 BGL.glRasterPos2i(x, y) Draw.Text( 'Select a configuration key to access it. Press Q or ESC to leave.' ) km_len = len(KEYMENUS) km_columns = (WIDTH - x) / w if km_columns == 0: km_rows = km_len else: km_rows = km_len / km_columns if (km_len % km_columns): km_rows += 1 if km_rows == 0: km_rows = 1 ystart = y + 2 * h * km_rows if ystart > (HEIGHT - 70): ystart = HEIGHT - 70 y = ystart column = 1 for i, km in enumerate(KEYMENUS): column += 1 BGL.glRasterPos2i(x + 2, y + h + 5) Draw.Text(LABELS[i]) BUT_KEYMENU[i] = Draw.Menu( km, BEVT_KEYMENU[i], x, y, w - 10, h, 0, 'Choose a key to access its configuration data') if column > km_columns: column = 1 y -= 2 * h if y < 35: break x = 10 else: x += w x = 10 y = 50 + ystart BGL.glColor3ub(COL_TXTHI[0], COL_TXTHI[1], COL_TXTHI[2]) BGL.glRasterPos2i(x, y) Draw.Text('Scripts Configuration Editor') Draw.PushButton('help', BEVT_HELP, x, 22, 45, 16, 'View help information about this script (hotkey: H)') elif SCREEN == CONFIG_SCREEN: x = y = 10 h = 18 data = CFGKEY.sorteddata tips = CFGKEY.tips fromdisk = CFGKEY.fromdisk limits = CFGKEY.limits VARS_NUM = 0 for k in data.keys(): VARS_NUM += len(data[k]) lines = VARS_NUM + 5 # to account for header and footer y = lines * h if y > HEIGHT - 20: y = HEIGHT - 20 BGL.glColor3ub(COL_TXTHI[0], COL_TXTHI[1], COL_TXTHI[2]) BGL.glRasterPos2i(x, y) Draw.Text('Scripts Configuration Editor') y -= 20 BGL.glColor3ub(COL_TXT[0], COL_TXT[1], COL_TXT[2]) txtsize = 10 if HEIGHT < lines * h: BGL.glRasterPos2i(10, 5) txtsize += Draw.Text('Arrow keys or mouse wheel to scroll, ') BGL.glRasterPos2i(txtsize, 5) Draw.Text('Q or ESC to return.') BGL.glRasterPos2i(x, y) Draw.Text('Key: "%s"' % CFGKEY.name) bh = 16 bw = 45 by = 16 i = -1 if CFGKEY.scriptname: i = 0 Draw.PushButton( 'help', BEVT_HELP, x, by, bw, bh, 'Show documentation for the script that owns this key (hotkey: H)' ) Draw.PushButton('back', BEVT_BACK, x + (1 + i) * bw, by, bw, bh, 'Back to config keys selection screen (hotkey: ESC)') Draw.PushButton('exit', BEVT_EXIT, x + (2 + i) * bw, by, bw, bh, 'Exit from Scripts Config Editor (hotkey: Q)') Draw.PushButton('revert', BEVT_CANCEL, x + (3 + i) * bw, by, bw, bh, 'Revert data to original values (hotkey: U)') Draw.PushButton('apply', BEVT_APPLY, x + (4 + i) * bw, by, bw, bh, 'Apply changes, if any (hotkey: ENTER)') delmsg = 'Delete this data key from memory' if fromdisk: delmsg = "%s and from disk" % delmsg Draw.PushButton('delete', BEVT_DEL, x + (5 + i) * bw, by, bw, bh, '%s (hotkey: DELETE)' % delmsg) if fromdisk: Draw.Toggle( "file", BEVT_DISK, x + 3 + (6 + i) * bw, by, bw, bh, DISK_UPDATE, 'Update also the file where this config key is stored') i = -1 top = -1 y -= 20 yend = 30 if data.has_key(bool) and y > 0: lst = data[bool] for l in lst: top += 1 i += 1 if top < SCROLL_DOWN: continue y -= h if y < yend: break w = 20 tog = data[bool][i][1] if tips and tips.has_key(l[0]): tooltip = tips[l[0]] else: tooltip = "click to toggle" BUT_TYPES[bool][i] = Draw.Toggle("", BEVT_BOOL + i, x, y, w, h, tog, tooltip) BGL.glRasterPos2i(x + w + 3, y + 5) Draw.Text(l[0].lower().replace('_', ' ')) i = -1 y -= 5 if data.has_key(int) and y > 0: lst = data[int] for l in lst: w = 70 top += 1 i += 1 if top < SCROLL_DOWN: continue y -= h if y < yend: break val = data[int][i][1] if limits: min, max = limits[l[0]] else: min, max = 0, 10 if tips and tips.has_key(l[0]): tooltip = tips[l[0]] else: tooltip = "click / drag to change" BUT_TYPES[int][i] = Draw.Number("", BEVT_INT + i, x, y, w, h, val, min, max, tooltip) BGL.glRasterPos2i(x + w + 3, y + 3) Draw.Text(l[0].lower().replace('_', ' ')) i = -1 y -= 5 if data.has_key(float) and y > 0: lst = data[float] for l in lst: w = 70 top += 1 i += 1 if top < SCROLL_DOWN: continue y -= h if y < yend: break val = data[float][i][1] if limits: min, max = limits[l[0]] else: min, max = 0.0, 1.0 if tips and tips.has_key(l[0]): tooltip = tips[l[0]] else: tooltip = "click and drag to change" BUT_TYPES[float][i] = Draw.Number("", BEVT_FLOAT + i, x, y, w, h, val, min, max, tooltip) BGL.glRasterPos2i(x + w + 3, y + 3) Draw.Text(l[0].lower().replace('_', ' ')) i = -1 y -= 5 if data.has_key(str) and y > 0: lst = data[str] for l in lst: top += 1 i += 1 if top < SCROLL_DOWN: continue y -= h if y < yend: break name = l[0].lower() is_dir = is_file = False if name.find('_dir', -4) > 0: is_dir = True elif name.find('_file', -5) > 0: is_file = True w = WIDTH - 20 wbrowse = 50 if is_dir and w > wbrowse: w -= wbrowse if tips and tips.has_key(l[0]): tooltip = tips[l[0]] else: tooltip = "click to write a new string" name = name.replace('_', ' ') + ': ' if len(l[1]) > MAX_STR_LEN: l[1] = l[1][:MAX_STR_LEN] BUT_TYPES[str][i] = Draw.String(name, BEVT_STR + i, x, y, w, h, l[1], MAX_STR_LEN, tooltip) if is_dir: Draw.PushButton( 'browse', BEVT_BROWSEDIR + i, x + w + 1, y, wbrowse, h, 'click to open a file selector (pick any file in the desired dir)' ) elif is_file: Draw.PushButton('browse', BEVT_BROWSEFILE + i, x + w + 1, y, 50, h, 'click to open a file selector')
def gui(): # drawing the screen global SCREEN, START_SCREEN, CONFIG_SCREEN, KEYMENUS, LABELS global BEVT_KEYMENU, BUT_KEYMENU, CFGKEY global BUT_TYPES, SCROLL_DOWN, VARS_NUM WIDTH, HEIGHT = Window.GetAreaSize() theme = Theme.Get()[0] tui = theme.get('ui') ttxt = theme.get('text') COL_BG = float_colors(ttxt.back) COL_TXT = ttxt.text COL_TXTHI = ttxt.text_hi BGL.glClearColor(COL_BG[0],COL_BG[1],COL_BG[2],COL_BG[3]) BGL.glClear(BGL.GL_COLOR_BUFFER_BIT) BGL.glColor3ub(COL_TXT[0],COL_TXT[1], COL_TXT[2]) if SCREEN == START_SCREEN: x = 10 y = 10 h = 20 w = 90 BGL.glRasterPos2i(x, y) Draw.Text('Select a configuration key to access it. Press Q or ESC to leave.') km_len = len(KEYMENUS) km_columns = (WIDTH - x) / w if km_columns == 0: km_rows = km_len else: km_rows = km_len / km_columns if (km_len % km_columns): km_rows += 1 if km_rows == 0: km_rows = 1 ystart = y + 2*h*km_rows if ystart > (HEIGHT - 70): ystart = HEIGHT - 70 y = ystart column = 1 for i, km in enumerate(KEYMENUS): column += 1 BGL.glRasterPos2i(x + 2, y + h + 5) Draw.Text(LABELS[i]) BUT_KEYMENU[i] = Draw.Menu(km, BEVT_KEYMENU[i], x, y, w - 10, h, 0, 'Choose a key to access its configuration data') if column > km_columns: column = 1 y -= 2*h if y < 35: break x = 10 else: x += w x = 10 y = 50 + ystart BGL.glColor3ub(COL_TXTHI[0], COL_TXTHI[1], COL_TXTHI[2]) BGL.glRasterPos2i(x, y) Draw.Text('Scripts Configuration Editor') Draw.PushButton('help', BEVT_HELP, x, 22, 45, 16, 'View help information about this script (hotkey: H)') elif SCREEN == CONFIG_SCREEN: x = y = 10 h = 18 data = CFGKEY.sorteddata tips = CFGKEY.tips fromdisk = CFGKEY.fromdisk limits = CFGKEY.limits VARS_NUM = 0 for k in data.keys(): VARS_NUM += len(data[k]) lines = VARS_NUM + 5 # to account for header and footer y = lines*h if y > HEIGHT - 20: y = HEIGHT - 20 BGL.glColor3ub(COL_TXTHI[0],COL_TXTHI[1], COL_TXTHI[2]) BGL.glRasterPos2i(x, y) Draw.Text('Scripts Configuration Editor') y -= 20 BGL.glColor3ub(COL_TXT[0],COL_TXT[1], COL_TXT[2]) txtsize = 10 if HEIGHT < lines*h: BGL.glRasterPos2i(10, 5) txtsize += Draw.Text('Arrow keys or mouse wheel to scroll, ') BGL.glRasterPos2i(txtsize, 5) Draw.Text('Q or ESC to return.') BGL.glRasterPos2i(x, y) Draw.Text('Key: "%s"' % CFGKEY.name) bh = 16 bw = 45 by = 16 i = -1 if CFGKEY.scriptname: i = 0 Draw.PushButton('help', BEVT_HELP, x, by, bw, bh, 'Show documentation for the script that owns this key (hotkey: H)') Draw.PushButton('back', BEVT_BACK, x + (1+i)*bw, by, bw, bh, 'Back to config keys selection screen (hotkey: ESC)') Draw.PushButton('exit', BEVT_EXIT, x + (2+i)*bw, by, bw, bh, 'Exit from Scripts Config Editor (hotkey: Q)') Draw.PushButton('revert', BEVT_CANCEL, x + (3+i)*bw, by, bw, bh, 'Revert data to original values (hotkey: U)') Draw.PushButton('apply', BEVT_APPLY, x + (4+i)*bw, by, bw, bh, 'Apply changes, if any (hotkey: ENTER)') delmsg = 'Delete this data key from memory' if fromdisk: delmsg = "%s and from disk" % delmsg Draw.PushButton('delete', BEVT_DEL, x + (5+i)*bw, by, bw, bh, '%s (hotkey: DELETE)' % delmsg) if fromdisk: Draw.Toggle("file", BEVT_DISK, x + 3 + (6+i)*bw, by, bw, bh, DISK_UPDATE, 'Update also the file where this config key is stored') i = -1 top = -1 y -= 20 yend = 30 if data.has_key(bool) and y > 0: lst = data[bool] for l in lst: top += 1 i += 1 if top < SCROLL_DOWN: continue y -= h if y < yend: break w = 20 tog = data[bool][i][1] if tips and tips.has_key(l[0]): tooltip = tips[l[0]] else: tooltip = "click to toggle" BUT_TYPES[bool][i] = Draw.Toggle("", BEVT_BOOL + i, x, y, w, h, tog, tooltip) BGL.glRasterPos2i(x + w + 3, y + 5) Draw.Text(l[0].lower().replace('_', ' ')) i = -1 y -= 5 if data.has_key(int) and y > 0: lst = data[int] for l in lst: w = 70 top += 1 i += 1 if top < SCROLL_DOWN: continue y -= h if y < yend: break val = data[int][i][1] if limits: min, max = limits[l[0]] else: min, max = 0, 10 if tips and tips.has_key(l[0]): tooltip = tips[l[0]] else: tooltip = "click / drag to change" BUT_TYPES[int][i] = Draw.Number("", BEVT_INT + i, x, y, w, h, val, min, max, tooltip) BGL.glRasterPos2i(x + w + 3, y + 3) Draw.Text(l[0].lower().replace('_', ' ')) i = -1 y -= 5 if data.has_key(float) and y > 0: lst = data[float] for l in lst: w = 70 top += 1 i += 1 if top < SCROLL_DOWN: continue y -= h if y < yend: break val = data[float][i][1] if limits: min, max = limits[l[0]] else: min, max = 0.0, 1.0 if tips and tips.has_key(l[0]): tooltip = tips[l[0]] else: tooltip = "click and drag to change" BUT_TYPES[float][i] = Draw.Number("", BEVT_FLOAT + i, x, y, w, h, val, min, max, tooltip) BGL.glRasterPos2i(x + w + 3, y + 3) Draw.Text(l[0].lower().replace('_', ' ')) i = -1 y -= 5 if data.has_key(str) and y > 0: lst = data[str] for l in lst: top += 1 i += 1 if top < SCROLL_DOWN: continue y -= h if y < yend: break name = l[0].lower() is_dir = is_file = False if name.find('_dir', -4) > 0: is_dir = True elif name.find('_file', -5) > 0: is_file = True w = WIDTH - 20 wbrowse = 50 if is_dir and w > wbrowse: w -= wbrowse if tips and tips.has_key(l[0]): tooltip = tips[l[0]] else: tooltip = "click to write a new string" name = name.replace('_',' ') + ': ' if len(l[1]) > MAX_STR_LEN: l[1] = l[1][:MAX_STR_LEN] BUT_TYPES[str][i] = Draw.String(name, BEVT_STR + i, x, y, w, h, l[1], MAX_STR_LEN, tooltip) if is_dir: Draw.PushButton('browse', BEVT_BROWSEDIR + i, x+w+1, y, wbrowse, h, 'click to open a file selector (pick any file in the desired dir)') elif is_file: Draw.PushButton('browse', BEVT_BROWSEFILE + i, x + w + 1, y, 50, h, 'click to open a file selector')
def GUI(): global GUIPARAMS, PARAMS BGL.glClearColor(*(ScreenColor + [1.0])) BGL.glClear(BGL.GL_COLOR_BUFFER_BIT) minx = 5 maxx = 500 miny = 5 maxy = 450 lineheight = 24 buPad = 5 # Generic Button Padding, most buttons should have 24-19 (or 5) px space around them lP = 5 # Left Padding rP = 5 # Right Padding # Draw Background Box BGL.glColor3f(*BackgroundColor) BGL.glRecti(minx, miny, maxx, maxy) # Draw Title BGL.glColor3f(*TitleBG) BGL.glRecti(minx, maxy - (lineheight), maxx, maxy) BGL.glColor3f(*TitleCol) title = "2D Cutout Image Importer v" + VERSIONSTRING BGL.glRasterPos2i(minx + lP, maxy - 15) Draw.Text(title, 'large') Draw.PushButton('Exit', EXIT, maxx-50-rP, maxy - lineheight + 2, 50, 19, "Exit Script") # Path Buttons if GUIPARAMS['Path'].val == '': Draw.PushButton('Single Image', SINGLE_IMG, minx + lP, maxy - (2*lineheight), 150, 19, "Select a Single Image to Import") Draw.PushButton('Directory', DIRECTORY_IMG, minx + lP + 150, maxy - (2*lineheight), 150, 19, "Select a Directory of Images to Import") else: Draw.PushButton('Clear', CLR_PATH, minx+lP, maxy - (2*lineheight), 50, 19, "Clear Path and Change Import Options") GUIPARAMS['Path'] = Draw.String('Path: ', NO_EVT, minx + lP, maxy - (3*lineheight), (maxx-minx-lP-rP), 19, GUIPARAMS['Path'].val, 399, 'Path to Import From') if PARAMS['ImportType'] == DIR: GUIPARAMS['ImageExt'] = Draw.String('Image Ext: ', CHG_EXT, minx + lP, maxy - (4*lineheight), 110, 19, GUIPARAMS['ImageExt'].val, 6, 'Image extension for batch directory importing (case insensitive)') GUIPARAMS['PackImage'] = Draw.Toggle('Pack', NO_EVT, maxx - rP - 50, maxy - (4*lineheight), 50, 19, GUIPARAMS['PackImage'].val, 'Pack Image(s) into .Blend File') # Geometry and Viewport Options BGL.glColor3f(*TextCol) BGL.glRecti(minx+lP, maxy - (5*lineheight), maxx-rP, maxy - (5*lineheight) + 1) BGL.glRasterPos2i(minx + lP, maxy-(5*lineheight) + 3) Draw.Text('Geometry and Display Options', 'small') GUIPARAMS['PPU'] = Draw.Slider('Pixels Per Unit: ', NO_EVT, minx + lP, maxy - (6*lineheight), (maxx-minx)/2 - lP, 19, GUIPARAMS['PPU'].val, 1, 5000, 0, 'Set the Number of Pixels Per Blender Unit to preserve Image Size Relations') GUIPARAMS['VPTransp'] = Draw.Toggle('Viewport Transparency', NO_EVT, minx + lP, maxy - (8*lineheight), (maxx-minx)/2 - lP, 2*lineheight - buPad, GUIPARAMS['VPTransp'].val, 'Display Alpha Transparency in the Viewport') GUIPARAMS['XOff'] = Draw.Slider('Offs X: ', NO_EVT, minx + lP + (maxx-minx)/2, maxy - (6*lineheight), (maxx-minx)/2 - lP - rP, 19, GUIPARAMS['XOff'].val, 0, 5.0, 0, 'Amount to Offset Each Imported in the X-Direction if Importing Multiple Images') GUIPARAMS['YOff'] = Draw.Slider('Offs Y: ', NO_EVT, minx + lP + (maxx-minx)/2, maxy - (7*lineheight), (maxx-minx)/2 - lP - rP, 19, GUIPARAMS['YOff'].val, 0, 5.0, 0, 'Amount to Offset Each Imported in the Y-Direction if Importing Multiple Images') GUIPARAMS['ZOff'] = Draw.Slider('Offs Z: ', NO_EVT, minx + lP + (maxx-minx)/2, maxy - (8*lineheight), (maxx-minx)/2 - lP - rP, 19, GUIPARAMS['ZOff'].val, 0, 5.0, 0, 'Amount to Offset Each Imported in the Z-Direction if Importing Multiple Images') # Material and Texture Options BGL.glColor3f(*TextCol) BGL.glRecti(minx+lP, maxy - (9*lineheight), maxx-rP, maxy - (9*lineheight) + 1) BGL.glRasterPos2i(minx + lP, maxy-(9*lineheight) + 3) Draw.Text('Material and Texture Options', 'small') half = (maxx-minx-lP-rP)/2 GUIPARAMS['CopyMat'] = Draw.Toggle('Copy Existing Material', NO_EVT, minx + lP, maxy-(10*lineheight), half, 19, GUIPARAMS['CopyMat'].val, 'Copy an Existing Material') if GUIPARAMS['CopyMat'].val: menStr = compileMaterialList() GUIPARAMS['MatId'] = Draw.Menu(menStr, NO_EVT, minx + lP, maxy - (11*lineheight), half, 19, GUIPARAMS['MatId'].val, 'Material to Copy Settings From') else: GUIPARAMS['MatCol'] = Draw.ColorPicker(NO_EVT, minx+lP, maxy - (13*lineheight), 40, (3*lineheight) - buPad, GUIPARAMS['MatCol'].val, 'Color of Newly Created Material') GUIPARAMS['Ref'] = Draw.Slider('Ref: ', NO_EVT, minx +lP+45, maxy - (11*lineheight), half-45, 19, GUIPARAMS['Ref'].val, 0.0, 1.0, 0, 'Set the Ref Value for Created Materials') GUIPARAMS['Spec'] = Draw.Slider('Spec: ', NO_EVT, minx +lP+45, maxy - (12*lineheight), half-45, 19, GUIPARAMS['Spec'].val, 0.0, 2.0, 0, 'Set the Spec Value for Created Materials') GUIPARAMS['Hard'] = Draw.Slider('Hard: ', NO_EVT, minx +lP+45, maxy - (13*lineheight), half-45, 19, GUIPARAMS['Hard'].val, 1, 500, 0, 'Set the Hardness Value for Created Materials') GUIPARAMS['Alpha'] = Draw.Slider('A: ', NO_EVT, minx +lP, maxy - (14*lineheight), half, 19, GUIPARAMS['Alpha'].val, 0.0, 1.0, 0, 'Set the Alpha Value for Created Materials') GUIPARAMS['ZTransp'] = Draw.Toggle('ZTransparency', NO_EVT, minx + lP, maxy - (15*lineheight), half, 19, GUIPARAMS['ZTransp'].val, 'Enable ZTransparency') GUIPARAMS['Shadeless'] = Draw.Toggle('Shadeless', NO_EVT, minx + lP, maxy - (16*lineheight), half, 19, GUIPARAMS['Shadeless'].val, 'Enable Shadeless') GUIPARAMS['TexChan'] = Draw.Number('Texture Channel: ', NO_EVT, minx + lP+ half + buPad, maxy - (10*lineheight), half-rP, 19, GUIPARAMS['TexChan'].val, 1, 10, 'Texture Channel for Image Texture') GUIPARAMS['MPTCol'] = Draw.Toggle('Color', NO_EVT, minx + lP + half + buPad, maxy - (11*lineheight), half/2, 19, GUIPARAMS['MPTCol'].val, 'Map To Color Channel') GUIPARAMS['MPTAlpha'] = Draw.Toggle('Alpha', NO_EVT, minx + lP + int((1.5)*half) + buPad, maxy - (11*lineheight), half/2 - rP, 19, GUIPARAMS['MPTAlpha'].val, 'Map To Alpha Channel') third = int((maxx-minx-lP-rP)/6) GUIPARAMS['UseAlpha'] = Draw.Toggle('Use Alpha', NO_EVT, minx + lP + half + buPad, maxy - (12*lineheight), third, 19, GUIPARAMS['UseAlpha'].val, "Use the Images' Alpha Values") GUIPARAMS['CalcAlpha'] = Draw.Toggle('Calc Alpha', NO_EVT, minx + lP + half + third + buPad, maxy - (12*lineheight), third, 19, GUIPARAMS['CalcAlpha'].val, "Calculate Images' Alpha Values") GUIPARAMS['ExtendMode'] = Draw.Toggle('Extend', NO_EVT, minx+lP+half+third+third+buPad, maxy - (12*lineheight), third-3, 19, GUIPARAMS['ExtendMode'].val, "Use Extend texture mode. If deselected, Repeat is used") GUIPARAMS['Seq'] = Draw.Toggle('Sequence', NO_EVT, minx + lP + half + buPad, maxy - (13*lineheight), half-rP, 19, GUIPARAMS['Seq'].val, 'Set the Image(s) to use a Sequence instead of a Still') if GUIPARAMS['Seq'].val and not PARAMS['ImportType'] == DIR: GUIPARAMS['AutoRefresh'] = Draw.Toggle('Auto Refresh', NO_EVT, minx + lP + half + buPad, maxy - (14*lineheight), half/2, 19, GUIPARAMS['AutoRefresh'].val, 'Use Auto Refresh') GUIPARAMS['Cyclic'] = Draw.Toggle('Cyclic', NO_EVT, minx + lP + half + buPad + half/2, maxy - (14*lineheight), half/2 - rP, 19, GUIPARAMS['Cyclic'].val, 'Repeat Frames Cyclically`') GUIPARAMS['Frames'] = Draw.Number('Frames: ', NO_EVT, minx +lP + half + buPad, maxy - (15*lineheight), half - rP, 19, GUIPARAMS['Frames'].val, 1, 30000, 'Sets the Number of Images of a Movie to Use') GUIPARAMS['Offs'] = Draw.Number('Offs: ', NO_EVT, minx +lP + half + buPad, maxy - (16*lineheight), half/2, 19, GUIPARAMS['Offs'].val, -30000, 30000, 'Offsets the Number of the Frame to use in the Animation') GUIPARAMS['StartFr'] = Draw.Number('StartFr: ', NO_EVT, minx +lP + half + buPad + half/2, maxy - (16*lineheight), half/2 - rP, 19, GUIPARAMS['StartFr'].val, 1, 30000, 'Sets the Global Starting Frame of the Movie') elif GUIPARAMS['Seq'].val and PARAMS['ImportType'] == DIR: BGL.glColor3f(*ErrCol) BGL.glRasterPos2i(minx + lP + half + buPad + 7, maxy-(14 * lineheight) + 5) Draw.Text('Sequence only available for Single Image Import', 'small') # Import Options BGL.glColor3f(*TextCol) BGL.glRecti(minx+lP, maxy - (17*lineheight), maxx-rP, maxy - (17*lineheight) + 1) BGL.glRasterPos2i(minx + lP, maxy-(17*lineheight) + 3) Draw.Text('Import', 'small') if GUIPARAMS['Path'].val and GUIPARAMS['ImageExt'].val or GUIPARAMS['Path'].val and PARAMS['ImportType'] == SINGLE: Draw.PushButton('Import', DO_SCRIPT, minx + lP, maxy - (18*lineheight), 75, 19, "Import Image(s)") else: BGL.glColor3f(*ErrCol) BGL.glRasterPos2i(minx+lP, maxy - (18*lineheight) + 5) Draw.Text('A path and image type must be specified to import images') GUIPARAMS['RedrawImp'] = Draw.Toggle('Redraw During Import', NO_EVT, maxx - rP - 150, maxy - (18*lineheight), 150, 19, GUIPARAMS['RedrawImp'].val, 'Redraw the View as Images Import')
def gui(): # drawing the screen global SCREEN, START_SCREEN, SCRIPT_SCREEN global SCRIPT_INFO, AllGroups, GROUP_MENUS global BEVT_EMAIL, BEVT_LINK global BEVT_VIEWSOURCE, BEVT_EXIT, BEVT_BACK, BEVT_GMENU, BUT_GMENU, BEVT_EXEC global PADDING, WIN_W, WIN_H, SCROLL_DOWN, COLUMNS, FMODE theme = Theme.Get()[0] tui = theme.get('ui') ttxt = theme.get('text') COL_BG = float_colors(ttxt.back) COL_TXT = ttxt.text COL_TXTHI = ttxt.text_hi BGL.glClearColor(COL_BG[0],COL_BG[1],COL_BG[2],COL_BG[3]) BGL.glClear(BGL.GL_COLOR_BUFFER_BIT) BGL.glColor3ub(COL_TXT[0],COL_TXT[1], COL_TXT[2]) resize = screen_was_resized() if resize: fit_on_screen() if SCREEN == START_SCREEN: x = PADDING bw = 85 bh = 25 hincr = 50 butcolumns = (WIN_W - 2*x)/ bw if butcolumns < 2: butcolumns = 2 elif butcolumns > 7: butcolumns = 7 len_gm = len(GROUP_MENUS) butlines = len_gm / butcolumns if len_gm % butcolumns: butlines += 1 h = hincr * butlines + 20 y = h + bh BGL.glColor3ub(COL_TXTHI[0],COL_TXTHI[1], COL_TXTHI[2]) BGL.glRasterPos2i(x, y) Draw.Text('Scripts Help Browser') y -= bh BGL.glColor3ub(COL_TXT[0],COL_TXT[1], COL_TXT[2]) i = 0 j = 0 for group_menu in GROUP_MENUS: BGL.glRasterPos2i(x, y) Draw.Text(group_menu[0]+':') BUT_GMENU[j] = Draw.Menu(group_menu[1], BEVT_GMENU[j], x, y-bh-5, bw, bh, 0, 'Choose a script to read its help information') if i == butcolumns - 1: x = PADDING i = 0 y -= hincr else: i += 1 x += bw + 3 j += 1 x = PADDING y = 10 BGL.glRasterPos2i(x, y) Draw.Text('Select script for its help. Press Q or ESC to leave.') elif SCREEN == SCRIPT_SCREEN: if SCRIPT_INFO: if resize: SCRIPT_INFO.wrap_lines(1) SCROLL_DOWN = 0 h = 18 * SCRIPT_INFO.len_content + 12 * SCRIPT_INFO.spaces x = PADDING y = WIN_H bw = 38 bh = 16 BGL.glColor3ub(COL_TXTHI[0],COL_TXTHI[1], COL_TXTHI[2]) for line in SCRIPT_INFO.header: y -= 18 BGL.glRasterPos2i(x, y) size = Draw.Text(line) for line in text_wrap('Tooltip: %s' % SCRIPT_INFO.script.tip): y -= 18 BGL.glRasterPos2i(x, y) size = Draw.Text(line) i = 0 y -= 28 for data in SCRIPT_INFO.d['__url__']: Draw.PushButton('link %d' % (i + 1), BEVT_LINK[i], x + i*bw, y, bw, bh, data[0]) i += 1 y -= bh + 1 i = 0 for data in SCRIPT_INFO.d['__email__']: Draw.PushButton('email', BEVT_EMAIL[i], x + i*bw, y, bw, bh, data[0]) i += 1 y -= 18 y0 = y BGL.glColor3ub(COL_TXT[0],COL_TXT[1], COL_TXT[2]) for line in SCRIPT_INFO.content[SCROLL_DOWN:]: if line: line = line.replace('<br>', '') BGL.glRasterPos2i(x, y) Draw.Text(line) y -= 18 else: y -= 12 if y < PADDING + 20: # reached end, either stop or go to 2nd column if COLUMNS == 1: break elif x == PADDING: # make sure we're still in column 1 x = 6*TEXT_WRAP + PADDING / 2 y = y0 x = PADDING Draw.PushButton('source', BEVT_VIEWSOURCE, x, 17, 45, bh, 'View this script\'s source code in the Text Editor (hotkey: S)') Draw.PushButton('exit', BEVT_EXIT, x + 45, 17, 45, bh, 'Exit from Scripts Help Browser (hotkey: Q)') if not FMODE: Draw.PushButton('back', BEVT_BACK, x + 2*45, 17, 45, bh, 'Back to scripts selection screen (hotkey: ESC)') Draw.PushButton('run script', BEVT_EXEC, x + 3*45, 17, 60, bh, 'Run this script') BGL.glColor3ub(COL_TXTHI[0],COL_TXTHI[1], COL_TXTHI[2]) BGL.glRasterPos2i(x, 5) Draw.Text('use the arrow keys or the mouse wheel to scroll text', 'small')
def gui(): # drawing the screen global SCREEN, START_SCREEN, SCRIPT_SCREEN global SCRIPT_INFO, AllGroups, GROUP_MENUS global BEVT_EMAIL, BEVT_LINK global BEVT_VIEWSOURCE, BEVT_EXIT, BEVT_BACK, BEVT_GMENU, BUT_GMENU, BEVT_EXEC global PADDING, WIN_W, WIN_H, SCROLL_DOWN, COLUMNS, FMODE theme = Theme.Get()[0] tui = theme.get('ui') ttxt = theme.get('text') COL_BG = float_colors(ttxt.back) COL_TXT = ttxt.text COL_TXTHI = ttxt.text_hi BGL.glClearColor(COL_BG[0], COL_BG[1], COL_BG[2], COL_BG[3]) BGL.glClear(BGL.GL_COLOR_BUFFER_BIT) BGL.glColor3ub(COL_TXT[0], COL_TXT[1], COL_TXT[2]) resize = screen_was_resized() if resize: fit_on_screen() if SCREEN == START_SCREEN: x = PADDING bw = 85 bh = 25 hincr = 50 butcolumns = (WIN_W - 2 * x) / bw if butcolumns < 2: butcolumns = 2 elif butcolumns > 7: butcolumns = 7 len_gm = len(GROUP_MENUS) butlines = len_gm / butcolumns if len_gm % butcolumns: butlines += 1 h = hincr * butlines + 20 y = h + bh BGL.glColor3ub(COL_TXTHI[0], COL_TXTHI[1], COL_TXTHI[2]) BGL.glRasterPos2i(x, y) Draw.Text('Scripts Help Browser') y -= bh BGL.glColor3ub(COL_TXT[0], COL_TXT[1], COL_TXT[2]) i = 0 j = 0 for group_menu in GROUP_MENUS: BGL.glRasterPos2i(x, y) Draw.Text(group_menu[0] + ':') BUT_GMENU[j] = Draw.Menu( group_menu[1], BEVT_GMENU[j], x, y - bh - 5, bw, bh, 0, 'Choose a script to read its help information') if i == butcolumns - 1: x = PADDING i = 0 y -= hincr else: i += 1 x += bw + 3 j += 1 x = PADDING y = 10 BGL.glRasterPos2i(x, y) Draw.Text('Select script for its help. Press Q or ESC to leave.') elif SCREEN == SCRIPT_SCREEN: if SCRIPT_INFO: if resize: SCRIPT_INFO.wrap_lines(1) SCROLL_DOWN = 0 h = 18 * SCRIPT_INFO.len_content + 12 * SCRIPT_INFO.spaces x = PADDING y = WIN_H bw = 38 bh = 16 BGL.glColor3ub(COL_TXTHI[0], COL_TXTHI[1], COL_TXTHI[2]) for line in SCRIPT_INFO.header: y -= 18 BGL.glRasterPos2i(x, y) size = Draw.Text(line) for line in text_wrap('Tooltip: %s' % SCRIPT_INFO.script.tip): y -= 18 BGL.glRasterPos2i(x, y) size = Draw.Text(line) i = 0 y -= 28 for data in SCRIPT_INFO.d['__url__']: Draw.PushButton('link %d' % (i + 1), BEVT_LINK[i], x + i * bw, y, bw, bh, data[0]) i += 1 y -= bh + 1 i = 0 for data in SCRIPT_INFO.d['__email__']: Draw.PushButton('email', BEVT_EMAIL[i], x + i * bw, y, bw, bh, data[0]) i += 1 y -= 18 y0 = y BGL.glColor3ub(COL_TXT[0], COL_TXT[1], COL_TXT[2]) for line in SCRIPT_INFO.content[SCROLL_DOWN:]: if line: line = line.replace('<br>', '') BGL.glRasterPos2i(x, y) Draw.Text(line) y -= 18 else: y -= 12 if y < PADDING + 20: # reached end, either stop or go to 2nd column if COLUMNS == 1: break elif x == PADDING: # make sure we're still in column 1 x = 6 * TEXT_WRAP + PADDING / 2 y = y0 x = PADDING Draw.PushButton( 'source', BEVT_VIEWSOURCE, x, 17, 45, bh, 'View this script\'s source code in the Text Editor (hotkey: S)' ) Draw.PushButton('exit', BEVT_EXIT, x + 45, 17, 45, bh, 'Exit from Scripts Help Browser (hotkey: Q)') if not FMODE: Draw.PushButton( 'back', BEVT_BACK, x + 2 * 45, 17, 45, bh, 'Back to scripts selection screen (hotkey: ESC)') Draw.PushButton('run script', BEVT_EXEC, x + 3 * 45, 17, 60, bh, 'Run this script') BGL.glColor3ub(COL_TXTHI[0], COL_TXTHI[1], COL_TXTHI[2]) BGL.glRasterPos2i(x, 5) Draw.Text('use the arrow keys or the mouse wheel to scroll text', 'small')
def gui(): # function drawing in screen BGL.glRasterPos2i(10, 230) # установка позиции Draw.Text("coods"+" "+mystr)
def gui(): # function drawing in screen BGL.glRasterPos2i(10, 230) # установка позиции Draw.Text("Type letters from a to z, ESC to leave.") BGL.glRasterPos2i(20, 200) Draw.Text(mystring)
def draw(): win_size = Window.GetAreaSize() left = 0 top = win_size[1] button_width = 180 button_height = 20 label_width = 105 pen_x = left + padding pen_y = win_size[1] - (button_height + padding) # Draw Label BGL.glColor3f(1.0, 1.0, 1.0) BGL.glRasterPos2i(pen_x, pen_y) text_width = Draw.Text('Nebula Home Dir') # Move Pen Point pen_x = pen_x + text_width + padding pen_y = pen_y - 5 # Draw String Button home_dir_input = Draw.String("", HOME_DIR_CHANGED, pen_x, pen_y, button_width, button_height, config_data["home"], 255, "Nebula's Home Directory") pen_x = pen_x + button_width button_width = 20 Draw.PushButton("...", BROWSE_HOME_CLICKED, pen_x, pen_y, button_width, button_height, "Browse for Nebula Home Directory") # Move Pen Point pen_x = left + padding pen_y = pen_y - button_height - 5 button_width = 180 BGL.glColor3f(1.0, 1.0, 1.0) BGL.glRasterPos2i(pen_x, pen_y) Draw.Text('Project Dir') # Move Pen Point pen_x = pen_x + text_width + padding pen_y = pen_y - 5 # Draw String Button proj_dir_input = Draw.String("", PROJ_DIR_CHANGED, pen_x, pen_y, button_width, button_height, config_data["proj"], 255, "Projetct Directory") pen_x = pen_x + button_width button_width = 20 Draw.PushButton("...", BROWSE_PROJ_CLICKED, pen_x, pen_y, button_width, button_height, "Browse for Project Directory") # Move Pen Point pen_x = left + padding pen_y = pen_y - button_height - 5 button_width = 150 BGL.glColor3f(1.0, 1.0, 1.0) BGL.glRasterPos2i(pen_x, pen_y) Draw.Text('Export Dir') # Draw String Button pen_x = pen_x + label_width pen_y = pen_y - 5 dir_assigns["export"] = Draw.String("", ASSIGN_DIR_CHANGED, pen_x, pen_y, button_width, button_height, config_data["export"], 255, "Export Directory") pen_y = pen_y + 5 for data in config_data: if (data != "home" and data != "export" and data != "texture_dir" and data != "proj"): # Move Pen Point pen_x = left + padding pen_y = pen_y - button_height - 5 # Draw Label BGL.glColor3f(1.0, 1.0, 1.0) BGL.glRasterPos2i(pen_x, pen_y) text_width = Draw.Text(data) # Draw Button pen_x = pen_x + label_width pen_y = pen_y - 5 dir_assigns[data] = Draw.String("", ASSIGN_DIR_CHANGED, pen_x, pen_y, button_width, button_height, config_data[data], 255, "Assign") pen_y = pen_y + 5 # Draw OK Cancel Buttons button_width = 100 pen_x = left + padding pen_y = pen_y - button_height - 5 - padding Draw.PushButton("Cancel", CANCEL_CLICKED, pen_x, pen_y, button_width, button_height, "Cancel Configuration") pen_x = pen_x + button_width + padding Draw.PushButton("OK", OK_CLICKED, pen_x, pen_y, button_width, button_height, "Save Configuration")
def draw(): global EVENT_gui_exit global EVENT_gui_instruction global EVENT_gui_prepare global EVENT_gui_export global EVENT_gui_nexuizPath global EVENT_gui_fileName global EVENT_Text global EVENT_Text_0 global EVENT_gui_scale global EVENT_Text_1 global EVENT_gui_extrudeHeight global EVENT_Text_2 global EVENT_gui_extrudeDownwards global EVENT_Text_3 global EVENT_gui_echo global EVENT_Text_4 global EVENT_Text_5 global EVENT_Text_6 global EVENT_Text_7 global EVENT_Text_8 global EVENT_Text_9 global EVENT_Text_10 global EVENT_Text_11 global EVENT_Text_12 global EVENT_Text_13 global EVENT_Text_14 global EVENT_Text_15 global EVENT_gui_version global EVENT_Text_16 global EVENT_gui_exportSurf global EVENT_Text_17 global EVENT_gui_textureStri global EVENT_name_textureInd global EVENT_Text_18 global EVENT_gui_textureBtn global Object_gui_exit global Object_gui_instruction global Object_gui_prepare global Object_gui_export global Object_gui_nexuizPath global Object_gui_fileName global Object_Text global Object_Text_0 global Object_gui_scale global Object_Text_1 global Object_gui_extrudeHeight global Object_Text_2 global Object_gui_extrudeDownwards global Object_Text_3 global Object_gui_echo global Object_Text_4 global Object_Text_5 global Object_Text_6 global Object_Text_7 global Object_Text_8 global Object_Text_9 global Object_Text_10 global Object_Text_11 global Object_Text_12 global Object_Text_13 global Object_Text_14 global Object_Text_15 global Object_gui_version global Object_Text_16 global Object_gui_exportSurf global Object_Text_17 global Object_gui_textureStri global Object_name_textureInd global Object_Text_18 global Object_gui_textureBtn global nexify BGL.glClearColor(0.500000, 0.500000, 0.500000, 0.0) BGL.glClear(GL_COLOR_BUFFER_BIT) BGL.glColor3f(0.000000, 0.000000, 0.000000) Object_gui_exit = Draw.Button("Exit", EVENT_gui_exit, 8, 8, 76, 44, "Exit exporter") BGL.glRasterPos2i(64, 560) Object_gui_instruction = Draw.Text("Exporter to MAP format for Nexuiz community") Object_gui_prepare = Draw.Button("Prepare", EVENT_gui_prepare, 88, 8, 76, 44, "Prepares for export: checks is all meshes are convex") Object_gui_export = Draw.Button("Export", EVENT_gui_export, 168, 8, 76, 44, "Exports prepared scene to a MAP file") Object_gui_nexuizPath = Draw.String("", EVENT_gui_nexuizPath, 152, 320, 148, 20, Object_gui_nexuizPath.val, 399, "Nexuiz absolute path") Object_gui_fileName = Draw.String("", EVENT_gui_fileName, 152, 296, 148, 20, Object_gui_fileName.val, 399, "MAP file name") BGL.glRasterPos2i(16, 328) Object_Text = Draw.Text("Nexuiz absolute path") BGL.glRasterPos2i(16, 304) Object_Text_0 = Draw.Text("MAP file name") Object_gui_scale = Draw.Number("", EVENT_gui_scale, 152, 272, 76, 20, Object_gui_scale.val, 0.000000, 1024.000000, "") BGL.glRasterPos2i(16, 280) Object_Text_1 = Draw.Text("Scale factor") Object_gui_extrudeHeight = Draw.Number("", EVENT_gui_extrudeHeight, 152, 248, 76, 20, Object_gui_extrudeHeight.val, 0.000000, 1024.000000, "") BGL.glRasterPos2i(16, 256) Object_Text_2 = Draw.Text("Extrude height") Object_gui_extrudeDownwards = Draw.Toggle("downwards", EVENT_gui_extrudeDownwards, 152, 224, 76, 20, Object_gui_extrudeDownwards.val, "") BGL.glRasterPos2i(16, 232) Object_Text_3 = Draw.Text("Extrude downwards") Object_gui_echo = Draw.Toggle("echo", EVENT_gui_echo, 152, 200, 76, 20, Object_gui_echo.val, "") BGL.glRasterPos2i(16, 208) Object_Text_4 = Draw.Text("Console echo") BGL.glRasterPos2i(32, 536) Object_Text_5 = Draw.Text("Brief instruction:") BGL.glRasterPos2i(8, 504) Object_Text_6 = Draw.Text("Exporter currently work with meshes, lights and nurbs surfaces.") BGL.glRasterPos2i(368, 504) Object_Text_7 = Draw.Text("As far as meshes are converted into NetRadiant brushes they should be convex") BGL.glRasterPos2i(8, 480) Object_Text_8 = Draw.Text("Concave meshes are splitted into individual faces. Faces after that are extruded on \"Extrude height\" parameter (see below).") BGL.glRasterPos2i(8, 456) Object_Text_9 = Draw.Text("As far as objects in NetRadiant may have properties different then objects in Blender game logic properties are used to store such params.") BGL.glRasterPos2i(8, 432) Object_Text_10 = Draw.Text("Possible mesh params: ignore(BOOL), convex(BOOL)") BGL.glRasterPos2i(8, 408) Object_Text_11 = Draw.Text("Possible light params: sun(BOOL), has_target(BOOL), target_x, target_y, target_z(FLOAT), radius(float)") BGL.glRasterPos2i(8, 64) Object_Text_12 = Draw.Text("First press PREPARE, then press EXPORT.") BGL.glRasterPos2i(8, 384) Object_Text_13 = Draw.Text("Due to Blender doesn't understand Radiant shaders one may use texture[i](STRING) properties, to overwrite texture files with shaders(i = material index).") BGL.glRasterPos2i(8, 84) Object_Text_14 = Draw.Text("REMEMBER: textures are to be on \".../nexuiz/data/textures\" subpath!") BGL.glRasterPos2i(272, 24) Object_Text_15 = Draw.Text("Ver") BGL.glRasterPos2i(304, 24) Object_gui_version = Draw.Text( __version__ ) BGL.glRasterPos2i(16, 176) Object_Text_16 = Draw.Text("Focre selected surf") Object_gui_exportSurf = Draw.Button("Treat selected as surf when export", EVENT_gui_exportSurf, 152, 168, 212, 20, "") BGL.glRasterPos2i(16, 136) Object_Text_17 = Draw.Text("Overwrite texture") Object_gui_textureStri = Draw.String("", EVENT_gui_textureStri, 192, 132, 104, 20, Object_gui_textureStri.val, 399, "") Object_name_textureInd = Draw.Number("", EVENT_name_textureInd, 392, 132, 60, 20, Object_name_textureInd.val, 1.000000, 128.000000, "") BGL.glRasterPos2i(304, 140) Object_Text_18 = Draw.Text("material index") Object_gui_textureBtn = Draw.Button("over", EVENT_gui_textureBtn, 152, 132, 32, 20, "Overwrite selected object texture with the following.")