Exemple #1
0
def draw():
    global as_package_name
    global fileButton, expFileName
    global engine_menu, engine_name
    global EVENT_NOEVENT, EVENT_DRAW, EVENT_EXIT, EVENT_EXPORT
    global export_all
    expFileName = ""
    ########## Titles
    glClear(GL_COLOR_BUFFER_BIT)
    glRasterPos2i(40, 240)

    logoImage = Image.Load(Get('scriptsdir') + sys.sep + 'AS3Export.png')
    Draw.Image(logoImage, 40, 155)

    as_package_name = Draw.String("Package name: ", EVENT_NOEVENT, 40, 130,
                                  250, 20, as_package_name.val, 300)
    engine_name = "Away3D%x1|Away3D 2.1.0%x5|Away3D 2.2.0%x6|Papervision3D%x2|Papervision3D 2.0%x3|Sandy 3.0%x4"
    engine_menu = Draw.Menu(engine_name, EVENT_NOEVENT, 40, 100, 200, 20,
                            engine_menu.val, "Choose your engine")

    fileButton = Draw.String('File location: ', EVENT_NOEVENT, 40, 70, 250, 20,
                             fileButton.val, 255)
    Draw.PushButton('...', EVENT_BROWSEFILE, 300, 70, 30, 20, 'browse file')
    export_all = Draw.Toggle('Export ALL scene objects', EVENT_NOEVENT, 40, 45,
                             200, 20, 0)
    ######### Draw and Exit Buttons
    Draw.Button("Export", EVENT_EXPORT, 40, 20, 80, 18)
    Draw.Button("Exit", EVENT_EXIT, 140, 20, 80, 18)
def drawmanipulator(manipulators, indices, eventbase, boneno, x, y):

    # See Blender Python Docs
    # http://www.blender.org/documentation/248PythonDoc/Draw-module.html

    manipulator = manipulators[boneno]
    cursor = cursors[boneno]
    valid = True

    Draw.Menu('|'.join(manipulatorList), DONTCARE + eventbase, x + 4, y,
              CONTROLSIZE, CONTROLSIZE, -1, 'Pick the manipulator from a list',
              manipulatormenucallback)
    Draw.String('', DATAREF_B + eventbase, x + 4 + CONTROLSIZE, y,
                PANELWIDTH - 2 * PANELINDENT - CONTROLSIZE, CONTROLSIZE,
                manipulator, 100,
                'Full name of the manipulator used to control this animation')
    y -= 30
    event_id = 1000
    sub_dict = sorted(manipulator_dict[manipulator].keys())

    for field_id in sub_dict:
        field_name = field_id.split('@')[1]
        field_val = manipulator_dict[manipulator][field_id]

        if field_name == 'cursor':
            Draw.Label("Cursor Type:", x, y, 100, CONTROLSIZE)
            Draw.Menu('|'.join(cursorList), DONTCARE + eventbase, x + 4, y,
                      CONTROLSIZE, CONTROLSIZE, -1,
                      'Pick the cursor type from a list', cursormenucallback)
            Draw.String(
                '', DATAREF_B + eventbase, x + 4 + CONTROLSIZE, y,
                PANELWIDTH - 2 * PANELINDENT - CONTROLSIZE, CONTROLSIZE,
                cursor, 100,
                'Full name of the manipulator used to control this animation')
            y -= 30
            event_id += 1
        elif field_name != 'NULL':
            Draw.Label(field_name + ':', x, y, 120, CONTROLSIZE)

            if type(field_val).__name__ == 'str':
                Draw.String('', event_id, x + 100, y, 180, CONTROLSIZE,
                            field_val, 100, '', manipulatordatacallback)

            if type(field_val).__name__ == 'float':
                Draw.Number('', event_id, x + 100, y, 80, CONTROLSIZE,
                            field_val, -50000.0, 50000.0, '',
                            manipulatordatacallback)

            if type(field_val).__name__ == 'int':
                Draw.Number('', event_id, x + 100, y, 80, CONTROLSIZE,
                            int(field_val), -50000, 50000, '',
                            manipulatordatacallback)

            y -= 20
            event_id += 1

    return valid
def drawdataref(datarefs, indices, eventbase, boneno, x, y):

    dataref = datarefs[boneno]
    valid = True

    mbutton = Draw.Menu('sim/%t|' + '/...|'.join(firstlevel) + '/...',
                        DONTCARE + eventbase, x + 4, y, CONTROLSIZE,
                        CONTROLSIZE, -1, 'Pick the dataref from a list',
                        datarefmenucallback)
    bbutton = Draw.String(
        '', DATAREF_B + eventbase, x + 4 + CONTROLSIZE, y,
        PANELWIDTH - 2 * PANELINDENT - CONTROLSIZE, CONTROLSIZE, dataref, 100,
        'Full name of the dataref used to animate this object')

    ibutton = None
    tbutton = None
    ref = dataref.split('/')
    if len(ref) <= 1 or ref[0] == 'sim':
        if len(ref) == 1 and ref[0] in lookup and not lookup[ref[0]]:
            BGL.glRasterPos2d(x + 4, y - 21)
            Draw.Text('This dataref name is ambiguous')
            valid = False
        else:
            try:
                thing = hierarchy
                for i in range(len(ref)):
                    thing = thing[ref[i]]
                n = thing + 0  # check is a leaf - ie numeric
                if not n:
                    BGL.glRasterPos2d(x + 4, y - 21)
                    Draw.Text("This dataref can't be used for animation")
                    valid = False
                elif n == 1:
                    indices[boneno] = None
                else:
                    if indices[boneno] == None or indices[boneno] >= n:
                        indices[boneno] = 0
                    Draw.Label("Part number:", x, y - 26, 120, CONTROLSIZE)
                    ibutton = Draw.Number('', INDICES_B + eventbase, x + 108,
                                          y - 26, 50, CONTROLSIZE,
                                          indices[boneno], 0, n - 1,
                                          'The part number / array index')
            except:
                BGL.glRasterPos2d(x + 4, y - 21)
                Draw.Text("This is not a valid dataref")
                valid = False
    else:
        if indices[boneno] != None:
            val = 1
        else:
            val = 0
        tbutton = Draw.Toggle('Part number', INDICES_T + eventbase, x + 4,
                              y - 26, 104, CONTROLSIZE, val,
                              'Whether this is an array dataref')
        if val:
            ibutton = Draw.Number('', INDICES_B + eventbase, x + 108, y - 26,
                                  50, CONTROLSIZE, indices[boneno], 0, 729,
                                  'The part number / array index')

    return (valid, mbutton, bbutton, ibutton, tbutton)
Exemple #4
0
def terain_clamp_ui():

    # Only to center the UI
    x, y = GLOBALS['MOUSE']
    x -= 40
    y -= 70

    Draw.Label('Drop Axis', x - 70, y + 120, 60, 20)
    Draw.BeginAlign()
    GLOBALS['DROP_AXIS'][0] = Draw.Toggle('Z', EVENT_REDRAW, x + 20, y + 120,
                                          30, 20, GLOBALS['DROP_AXIS'][0].val,
                                          'Drop down on the global Z axis',
                                          do_axis_z)
    GLOBALS['DROP_AXIS'][1] = Draw.Toggle('View Z', EVENT_REDRAW, x + 50,
                                          y + 120, 70, 20,
                                          GLOBALS['DROP_AXIS'][1].val,
                                          'Drop allong the view vector',
                                          do_axis_view)
    Draw.EndAlign()

    # Source
    Draw.Label('Drop on to...', x - 70, y + 90, 120, 20)
    Draw.BeginAlign()
    GLOBALS['GROUND_SOURCE'][0] = Draw.Toggle('Active Object', EVENT_REDRAW,
                                              x - 70, y + 70, 110, 20,
                                              GLOBALS['GROUND_SOURCE'][0].val,
                                              '', do_ground_source_act)
    GLOBALS['GROUND_SOURCE'][1] = Draw.Toggle('Group', EVENT_REDRAW, x + 40,
                                              y + 70, 80, 20,
                                              GLOBALS['GROUND_SOURCE'][1].val,
                                              '', do_ground_source_group)
    if GLOBALS['GROUND_SOURCE'][1].val:
        GLOBALS['GROUND_GROUP_NAME'] = Draw.String(
            'GR:', EVENT_REDRAW + 1001, x - 70, y + 50, 190, 20,
            GLOBALS['GROUND_GROUP_NAME'].val, 21, '', do_ground_group_name)
    Draw.EndAlign()

    GLOBALS['DROP_OVERLAP_CHECK'] = Draw.Toggle(
        'Overlapping Terrain', EVENT_NONE, x - 70, y + 20, 190, 20,
        GLOBALS['DROP_OVERLAP_CHECK'].val,
        "Check all terrain triangles and use the top most (slow)")

    Draw.BeginAlign()
    GLOBALS['DROP_ORIENT'] = Draw.Toggle('Orient Normal', EVENT_REDRAW, x - 70,
                                         y - 10, 110, 20,
                                         GLOBALS['DROP_ORIENT'].val,
                                         "Rotate objects to the face normal",
                                         do_dummy)
    if GLOBALS['DROP_ORIENT'].val:
        GLOBALS['DROP_ORIENT_VALUE'] = Draw.Number(
            '', EVENT_NONE, x + 40, y - 10, 80, 20,
            GLOBALS['DROP_ORIENT_VALUE'].val, 0.0, 100.0,
            "Percentage to orient 0.0 - 100.0")
    Draw.EndAlign()

    Draw.PushButton('Drop Objects', EVENT_EXIT, x + 20, y - 40, 100, 20,
                    'Drop the selected objects', terrain_clamp)

    # So moving the mouse outside the popup exits the while loop
    GLOBALS['EVENT'] = EVENT_EXIT
def draw_gui():
        global host,port,Shapepreset,Geompreset,mesh,molname,stringName
	mols=self.Mols.full_name().split(',')
	tmp="Mols %t|"
	for i in range(len(mols)) :
		tmp+=mols[i]+'%x'+str(i)+'|'
	name = tmp[:-1]
	#print name
	#Draw.Toggle("Armature", EV_TG_ARMATURE, 5, line[1], 60, 25,ARMATURE, "Armature")
	BGL.glRasterPos2i(5,line[8])
	Draw.Text("Options:")
	Draw.Toggle("Join geometry", EV_TG_JOIN, 5, line[7], 60, 25,JOIN, "Join")

	Draw.PushButton("Delete Mol", EV_TG_DEL, 5, line[6], 90, 25, "DeleteMol")
	Shapepreset=Draw.Menu(name,EV_ME_MOL, 100, line[6], 90, 25, Shapepreset.val,'ON')

	Draw.PushButton("Add Armature", EV_TG_ARMATURE, 5, line[5], 90, 25, "Armature")
	Shapepreset=Draw.Menu(name,EV_ME_MOL, 100, line[5], 90, 25, Shapepreset.val,'ON')

	#gname = "Geoms %t|none %x1|MSMS-MOL %x2	|cpk %x3|sticks %x4|secstruc %x5|coarseSurf %x6"
	#Geompreset=Draw.Menu(gname,EV_ME_GEO, 195, line[5], 90, 25, Geompreset.val,'ON')

	stringName = Draw.String("sel:", EV_ST_PDBNAME, 220, line[5], 235, 25,stringName.val, 100,"selection level")

	BGL.glRasterPos2i(5,line[4])
	Draw.Text("Send Mesh to Server:")
	mesh = Draw.String("Mesh: ", EV_TX_SEND1, 5, line[3], 90, 25,mesh.val, 32, "Mesh")
	#molname= Draw.String("Mol: ", EV_TX_SEND2, 100, line[3], 90, 25,molname.val, 32, "Mol")
	Shapepreset=Draw.Menu(name,EV_ME_MOL, 100, line[3], 90, 25, Shapepreset.val,'ON')
	Draw.PushButton("SendToServer", EV_BT_SEND, 195, line[3], 90, 25, "SendGeom")

	BGL.glRasterPos2i(5,line[2])
	Draw.Text("Server:")
	host = Draw.String("Host: ", EV_BT_HOST1, 5, line[1], 90, 25,host.val, 32, "Name")
	port = Draw.String("Port: ", EV_BT_HOST2, 100, line[1], 90, 25,port.val, 32, "Portid")

	Draw.PushButton("StartCom", EV_BT_OK, 5, line[0], 90, 25, "StartThread")
	Draw.PushButton("StopCom", EV_BT_CANCEL, 100, line[0], 90, 25, "StopThread")
	Draw.PushButton("Refresh", EV_BT_REFRESH, 195, line[0], 90, 25, "Refresh")
def gui():
    global evtExport, evtPathChanged, evtBrows
    global exportPath
    global guiExport, guiBrows, guiExportSelection, guiExportNormals, guiExportTriangulated, guiAddObjExtension, guiAddMatExtension, guiLogo

    guiAddObjExtension = Draw.PushButton(
        "add obj script link", evtAddObjExtension, 10, 155, 150, 25,
        "add a text file for more i3d object properties and link it to the active object via script links"
    )
    guiAddMatExtension = Draw.PushButton(
        "add mat script link", evtAddMatExtension, 175, 155, 155, 25,
        "add a text file for more i3d material properties and link it to the active material via script links"
    )
    guiExportSelection = Draw.Toggle("only selected", evtExportSelection, 10,
                                     120, 100, 25, exportSelection,
                                     "only export selected objects")
    guiExportTriangulated = Draw.Toggle(
        "triangulate", evtExportTriangulated, 120, 120, 100, 25,
        exportTriangulated, "convert quads to triangles (shortest edge)")
    guiExportNormals = Draw.Toggle("normals", evtExportNormals, 230, 120, 100,
                                   25, exportNormals, "export vertex normals")
    exportPath = Draw.String("export to: ", evtPathChanged, 10, 85, 260, 25,
                             exportPath.val, 256,
                             "export to %s" % exportPath.val)
    guiBrows = Draw.PushButton("Brows", evtBrows, 280, 85, 50, 25,
                               "open file browser to chose export location")
    if exportSelection:
        guiExport = Draw.PushButton("Export Selection", evtExport, 70, 10, 260,
                                    50, "write i3d to selected file")
    else:
        guiExport = Draw.PushButton("Export Scene", evtExport, 70, 10, 260, 50,
                                    "write i3d to selected file")
    if logo:
        BGL.glEnable(
            BGL.GL_BLEND
        )  # Only needed for alpha blending images with background.
        BGL.glBlendFunc(BGL.GL_SRC_ALPHA, BGL.GL_ONE_MINUS_SRC_ALPHA)
        guiLogo = Draw.Image(logo, 12, 13)
        BGL.glDisable(BGL.GL_BLEND)
Exemple #7
0
 def render(self):
     Draw.String(self.name + ': ', self.event, self.x, self.y, self.width,
                 self.height, self.value, self.max_input_length,
                 self.tooltip, self.update_value)
Exemple #8
0
def edl_draw():

    MARGIN = 4
    rect = BPyWindow.spaceRect()
    but_width = int((rect[2] - MARGIN * 2) / 4.0)  # 72
    # Clamp
    if but_width > 100: but_width = 100
    but_height = 17

    x = MARGIN
    y = rect[3] - but_height - MARGIN
    xtmp = x

    # ---------- ---------- ---------- ----------
    Blender.Draw.BeginAlign()
    PREF['filename'] = Draw.String('edl path: ', B_EVENT_RELOAD, xtmp, y,
                                   (but_width * 3) - 20, but_height,
                                   PREF['filename'].val, 256, 'EDL Path')
    xtmp += (but_width * 3) - 20
    Draw.PushButton('..', B_EVENT_FILESEL_EDL, xtmp, y, 20, but_height,
                    'Select an EDL file')
    xtmp += 20
    Blender.Draw.EndAlign()

    Draw.PushButton(
        'Reload', B_EVENT_RELOAD, xtmp + MARGIN, y, but_width - MARGIN,
        but_height,
        'Read the ID Property settings from the active curve object')
    xtmp += but_width
    y -= but_height + MARGIN
    xtmp = x
    # ---------- ---------- ---------- ----------

    reel_keys = edl_reel_keys()

    if reel_keys: text = 'Reel file list...'
    elif PREF['filename'].val == '': text = 'No EDL loaded.'
    else: text = 'No reels found!'

    Draw.Label(text, xtmp + MARGIN, y, but_width * 4, but_height)
    xtmp += but_width * 4

    y -= but_height + MARGIN
    xtmp = x

    # ---------- ---------- ---------- ----------

    for i, reel_key in enumerate(reel_keys):
        reel_item = REEL_UI[reel_key]

        Blender.Draw.BeginAlign()
        REEL_UI[reel_key].filename_but = Draw.String(
            reel_item.ui_text, B_EVENT_NOP, xtmp, y, (but_width * 3) - 20,
            but_height, REEL_UI[reel_key].filename_but.val, 256,
            'Select the reel path')
        xtmp += (but_width * 3) - 20
        Draw.PushButton('..', B_EVENT_FILESEL + i, xtmp, y, 20, but_height,
                        'Media path to use for this reel')
        xtmp += 20
        Blender.Draw.EndAlign()

        reel_item.offset_but = Draw.Number(
            'ofs:', B_EVENT_NOP, xtmp + MARGIN, y, but_width - MARGIN,
            but_height, reel_item.offset_but.val, -100000, 100000,
            'Start offset in frames when applying timecode')
        xtmp += but_width - MARGIN

        y -= but_height + MARGIN
        xtmp = x

    # ---------- ---------- ---------- ----------

    Draw.PushButton('Import CMX-EDL Sequencer Strips', B_EVENT_IMPORT,
                    xtmp + MARGIN, MARGIN, but_width * 4 - MARGIN, but_height,
                    'Load the EDL file into the sequencer')
    xtmp += but_width * 4
    y -= but_height + MARGIN
    xtmp = x
Exemple #9
0
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')
Exemple #10
0
def draw():
    """
    This function draws the morph target on the screen and adds buttons to
    enable utility functions to be called to process the target.

    **Parameters:** This method has no parameters.

    """
    global message, regulFactor
    global targetPath, morphFactor, rotVal, rotSum, currentTarget, selAxis, rotationMode
    global saveOnlySelectedVerts, loadedTraslTarget, loadedRotTarget, loadedPoseTarget
    global fitVert1, fitVert2, fitVert3

    if GUIswitch == 1:

        glClearColor(0.5, 0.5, 0.5, 0.0)
        glClear(GL_COLOR_BUFFER_BIT)

        glColor3f(0.0, 0.0, 0.0)
        glRasterPos2i(10, 300)
        Draw.Text("MakeTargets v3.2")

        glColor3f(0.5, 0.0, 0.0)
        glRasterPos2i(10, 250)
        Draw.Text("Msg: %s" % (message))

        glColor3f(0.0, 0.0, 0.0)
        glRasterPos2i(10, 230)

        fileText = ""
        if loadedTraslTarget:
            fileText = os.path.basename(loadedTraslTarget)
        elif loadedRotTarget:
            fileText = os.path.basename(loadedRotTarget)
        elif loadedPoseTarget:
            fileText = os.path.basename(loadedPoseTarget)
        Draw.Text("Target: %s" % (fileText))

        Draw.Button("Load", 1, 10, 200, 50, 20, "Load target")
        Draw.Button("Morph", 2, 60, 200, 50, 20, "Morph ")
        Draw.Button("<=", 3, 110, 200, 30, 20,
                    "Make left side symetrical to right side")
        Draw.Button("Reset", 4, 140, 200, 40, 20,
                    "Return base object to its original state")
        Draw.Button("=>", 5, 180, 200, 30, 20,
                    "Make right side symetrical to left side")
        morphFactor = Draw.Number("Value: ", 0, 10, 180, 100, 20,
                                  morphFactor.val, -2, 2,
                                  "Insert the value to apply the target")
        Draw.Button("Save", 6, 110, 180, 100, 20, "Save target")
        saveOnlySelectedVerts = Draw.Toggle(
            "Save only selected verts", 0, 10, 160, 200, 20,
            saveOnlySelectedVerts.val,
            "The target will affect only the selected verts")
        rotationMode = Draw.Toggle("Rotations", 0, 10, 140, 200, 20,
                                   rotationMode.val,
                                   "Work with rotation targets")

    if GUIswitch == 2:

        glClearColor(0.5, 0.5, 0.5, 0.0)
        glClear(GL_COLOR_BUFFER_BIT)

        glColor3f(0.0, 0.0, 0.0)
        glRasterPos2i(10, 300)
        Draw.Text("ScanToMH vers. 1")

        glColor3f(0.5, 0.0, 0.0)
        glRasterPos2i(10, 250)
        Draw.Text("Msg: %s" % (message))

        glColor3f(0.0, 0.0, 0.0)
        glRasterPos2i(10, 230)

        Draw.Button("Load ob", 30, 10, 200, 80, 20, "Load wavefront obj")
        Draw.Button("Fit", 32, 90, 200, 80, 20, "Morph ")
        Draw.Button("Build", 31, 170, 200, 80, 20, "Build targets db")
        Draw.Button("Save verts", 33, 10, 180, 80, 20, "Save selected verts")
        regulFactor = Draw.Number("Regul: ", 0, 90, 180, 100, 20,
                                  regulFactor.val, 0, 1,
                                  "0 mean fine fitting, but less constrain")
        fitVert1 = Draw.String("verts to compute: ", 34, 10, 150, 240, 20,
                               fitVert1.val, 300, "None")
        fitVert2 = Draw.String("verts to fit: ", 35, 10, 130, 240, 20,
                               fitVert2.val, 300, "None")

    if GUIswitch == 3:

        glClearColor(0.5, 0.5, 0.5, 0.0)
        glClear(GL_COLOR_BUFFER_BIT)

        glColor3f(0.0, 0.0, 0.0)
        glRasterPos2i(10, 300)
        Draw.Text("Regulariser vers. 1")

        glColor3f(0.5, 0.0, 0.0)
        glRasterPos2i(10, 250)
        Draw.Text("Msg: %s" % (message))

        glColor3f(0.0, 0.0, 0.0)
        glRasterPos2i(10, 230)

        Draw.Button("Load db data", 40, 10, 200, 80, 20, "Load targets db")
        Draw.Button("Regularise", 41, 90, 200, 80, 20, "Regularise the mesh ")
        Draw.Button("Build", 42, 170, 200, 80, 20, "Build targets db")
        fitVert3 = Draw.String("verts to fit: ", 35, 10, 130, 240, 20,
                               fitVert3.val, 300, "None")
Exemple #11
0
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')
Exemple #12
0
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")
Exemple #13
0
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")
Exemple #14
0
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
Exemple #15
0
def draw_gui():

	global str_gmdc_filename, str_cres_filename, str_resource_name, btn_name_suffix, \
		btn_export_tangents, btn_export_rigging, btn_export_bmesh, btn_save_log, \
		menu_export_morphs, btn_use_obj_props, str_bmesh_name

	pos_y = 340 ; MAX_PATH = 200

	# frame

	Blender.BGL.glColor3f(0.75, 0.75, 0.75)
	Blender.BGL.glRecti(10, 10, 430, pos_y)

	pos_y-= 30

	# plugin's header

	s = "GMDC Exporter (TS2)"
	Blender.BGL.glColor3f(0.8, 0.8, 0.8)
	Blender.BGL.glRecti(10, pos_y, 430, pos_y+30)
	Draw.Label(s, 20, pos_y, 400, 30)

	pos_y-= 30

	# GMDC file selector

	Draw.Label("GMDC file (output)", 20, pos_y, 200, 20)
	pos_y-= 20
	Draw.BeginAlign()
	str_gmdc_filename = Draw.String("", 0x10, 20, pos_y, 300, 20, str_gmdc_filename.val, MAX_PATH, "Path to GMDC file")
	Draw.PushButton("Select file", 0x11, 320, pos_y, 100, 20, "Open file browser")
	Draw.EndAlign()

	pos_y-= 35

	# geometry name

	Blender.BGL.glColor3f(0.7, 0.7, 0.7)
	Blender.BGL.glRecti(20, pos_y-60, 420, pos_y+20)

	Draw.Label("SGResource name (optional)", 25, pos_y, 400, 20) ; pos_y-= 20
	Draw.Label("If not provided then GMDC filename is used", 25, pos_y, 400, 20) ; pos_y-= 30
	Draw.BeginAlign()
	str_resource_name = Draw.String("", 0x50, 70, pos_y, 180, 20, str_resource_name.val, 50, "SGResource name of this geometry")
	btn_name_suffix = Draw.Toggle("_tslocator_gmdc", 0x51, 250, pos_y, 120, 20, btn_name_suffix.val, "Add default suffix")
	Draw.EndAlign()

	pos_y-= 45

	# options

	Draw.BeginAlign()
	btn_export_rigging = Draw.Toggle("Rigging", 0x31, 20, pos_y, 100, 20, btn_export_rigging.val, "Export rigging data (bone indices, weights)")
	btn_export_tangents = Draw.Toggle("Tangents", 0x32, 120, pos_y, 100, 20, btn_export_tangents.val, "Export tangents (required for bump mapping)")
	btn_export_bmesh = Draw.Toggle("Bound. mesh", 0x33, 220, pos_y, 100, 20, btn_export_bmesh.val, "Export bounding geometry")
	btn_save_log = Draw.Toggle("Save log", 0x34, 320, pos_y, 100, 20, btn_save_log.val, "Write script's log data into file *.export_log.txt")
	Draw.EndAlign()

	pos_y-= 30

	Draw.BeginAlign()
	menu_export_morphs = Draw.Menu("Export morphs %t|Do not export morphs %x0|Diff. in v.coords only %x1|Diff. in v.coords and normals %x2", 0x35, 20, pos_y, 200, 20, menu_export_morphs.val)
	btn_use_obj_props = Draw.Toggle("Use object properties", 0x36, 220, pos_y, 200, 20, btn_use_obj_props.val, "Properties can be assigned in logic panel")
	Draw.EndAlign()

	pos_y-= 30

	# bounding mesh name

	Draw.Label("Bounding mesh:", 20, pos_y, 100, 20)
	str_bmesh_name = Draw.String("", 0x40, 120, pos_y, 200, 20, str_bmesh_name.val, 50, "Name of mesh object that will be exported as bounding mesh")

	pos_y-= 50

	# buttons

	Draw.BeginAlign()
	Draw.PushButton("Export", 1, 120, pos_y, 100, 30, "Export geometry (Ctrl + Enter)")
	Draw.PushButton("Exit", 0, 220, pos_y, 100, 30, "Terminate the script (Esc)")
	Draw.EndAlign()
Exemple #16
0
def draw_gui():

    global str_gmdc_filename, str_cres_filename, btn_import_bmesh, btn_all_bones, btn_remove_doubles, btn_save_log

    pos_y = 230
    MAX_PATH = 200

    # frame

    Blender.BGL.glColor3f(0.75, 0.75, 0.75)
    Blender.BGL.glRecti(10, 10, 430, pos_y)

    pos_y -= 30

    # plugin's header

    s = "GMDC Importer (TS2)"
    Blender.BGL.glColor3f(0.8, 0.8, 0.8)
    Blender.BGL.glRecti(10, pos_y, 430, pos_y + 30)
    Draw.Label(s, 20, pos_y, 400, 30)

    pos_y -= 30

    # GMDC file selector

    Draw.Label("GMDC file", 20, pos_y, 200, 20)
    pos_y -= 20
    Draw.BeginAlign()
    str_gmdc_filename = Draw.String("", 0x10, 20, pos_y, 300, 20,
                                    str_gmdc_filename.val, MAX_PATH,
                                    "Path to GMDC file")
    Draw.PushButton("Select file", 0x11, 320, pos_y, 100, 20,
                    "Open file browser")
    Draw.EndAlign()

    pos_y -= 30

    # resource node file selector

    Draw.Label("Resource node file (optional)", 20, pos_y, 200, 20)
    pos_y -= 20
    Draw.BeginAlign()
    str_cres_filename = Draw.String(
        "", 0x20, 20, pos_y, 300, 20, str_cres_filename.val, MAX_PATH,
        "Path to resource node file (CRES; optional, but recommended)")
    Draw.PushButton("Select file", 0x21, 320, pos_y, 100, 20,
                    "Open file browser")
    Draw.EndAlign()

    pos_y -= 35

    # options

    Draw.BeginAlign()
    btn_import_bmesh = Draw.Toggle("Bound. mesh", 0x31, 20, pos_y, 100, 20,
                                   btn_import_bmesh.val,
                                   "Import bounding geometry")
    btn_remove_doubles = Draw.Toggle(
        "Rm. doubles", 0x32, 120, pos_y, 100, 20, btn_remove_doubles.val,
        "If some vertices differ only in texture coordinates, then they are merged together (removes seams)"
    )
    btn_all_bones = Draw.Toggle(
        "All bones", 0x33, 220, pos_y, 100, 20, btn_all_bones.val,
        "Import all bones/transforms; otherwise, used bones only")
    btn_save_log = Draw.Toggle(
        "Save log", 0x34, 320, pos_y, 100, 20, btn_save_log.val,
        "Write script's log data into file *.import_log.txt")
    Draw.EndAlign()

    pos_y -= 45

    # buttons

    Draw.BeginAlign()
    Draw.PushButton("Import", 1, 120, pos_y, 100, 30,
                    "Import geometry (Ctrl + Enter)")
    Draw.PushButton("Exit", 0, 220, pos_y, 100, 30,
                    "Terminate the script (Esc)")
    Draw.EndAlign()