Page MenuHome

quickPrefs.py

File Metadata

Author
Sean Olson (liquidape)
Created
Nov 13 2013, 3:25 PM

quickPrefs.py

# ##### BEGIN GPL LICENSE BLOCK #####
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# ##### END GPL LICENSE BLOCK #####
bl_info = {
"name": "QuickPrefs",
"author": "Sean Olson",
"version": (2,1),
"blender": (2, 6, 4),
"api": 50515,
"location": "3DView->Properties Panel (N-Key)",
"description": "Add often changed User Preference options to Properties panel.",
"warning": "",
"wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/3D_interaction/QuickPrefs",
"tracker_url": "http://projects.blender.org/tracker/index.php?func=detail&aid=27822&group_id=153&atid=467",
"category": "3D View"}
import os
import bpy
from bpy.types import Menu, Panel
from rna_prop_ui import PropertyPanel
from bpy.app.handlers import persistent
import bpy_extras
#Global Variables
recursive = False
renaming = True
lastindex = 0
lastname = ""
debug = 0
defaultfilepath=os.path.join(bpy.utils.script_paths(subdir="addons")[0], "quickprefpresets")
##########################################
####### Import/Export Functions ##########
##########################################
#import all grabs all files in the given directory and imports them
@persistent
def gllightpreset_importall():
path = bpy.context.scene.gllightpreset_importdirectory
directorylisting = os.listdir(path)
for infile in directorylisting:
if not os.path.isdir(infile): #check if the file is a directory
if '.preset' in infile: #check that this is a .preset file
thefile=os.path.join(path, infile) #join the filename with the path
gllightpreset_importsingle(thefile) #import it!
#import single takes a given filename and imports it
def gllightpreset_importsingle(filename):
if not os.path.isdir(filename): #check if the file is a directory
if '.preset' in filename: #check to make sure this is a preset file
readfile=open(filename, 'r')
name=readfile.readline()
name=name[:-1]
illuminationString0=readfile.readline()
illuminationString0=illuminationString0[:-1]
if illuminationString0=="True":
illumination0=True
else:
illumination0=False
illuminationString1=readfile.readline()
illuminationString1=illuminationString1[:-1]
if illuminationString1=="True":
illumination1=True
else:
illumination1=False
illuminationString2=readfile.readline()
illuminationString2=illuminationString2[:-1]
if illuminationString2=="True":
illumination2=True
else:
illumination2=False
#convert strings to booleans
str=readfile.readline()
strArray=str.split()
direction0x=strArray[0]
direction0y=strArray[1]
direction0z=strArray[2]
str=readfile.readline()
strArray=str.split()
direction1x=strArray[0]
direction1y=strArray[1]
direction1z=strArray[2]
str=readfile.readline()
strArray=str.split()
direction2x=strArray[0]
direction2y=strArray[1]
direction2z=strArray[2]
str=readfile.readline()
strArray=str.split()
diffuse0r=strArray[0]
diffuse0g=strArray[1]
diffuse0b=strArray[2]
str=readfile.readline()
strArray=str.split()
diffuse1r=strArray[0]
diffuse1g=strArray[1]
diffuse1b=strArray[2]
str=readfile.readline()
strArray=str.split()
diffuse2r=strArray[0]
diffuse2g=strArray[1]
diffuse2b=strArray[2]
str=readfile.readline()
strArray=str.split()
spec0r=strArray[0]
spec0g=strArray[1]
spec0b=strArray[2]
str=readfile.readline()
strArray=str.split()
spec1r=strArray[0]
spec1g=strArray[1]
spec1b=strArray[2]
str=readfile.readline()
strArray=str.split()
spec2r=strArray[0]
spec2g=strArray[1]
spec2b=strArray[2]
#set the variables
system=bpy.context.user_preferences.system
system.solid_lights[0].use=illumination0
system.solid_lights[1].use=illumination1
system.solid_lights[2].use=illumination2
system.solid_lights[0].direction = (float(direction0x), float(direction0y), float(direction0z))
system.solid_lights[1].direction = (float(direction1x), float(direction1y), float(direction1z))
system.solid_lights[2].direction = (float(direction2x), float(direction2y), float(direction2z))
system.solid_lights[0].diffuse_color=(float(diffuse0r), float(diffuse0g), float(diffuse0b))
system.solid_lights[1].diffuse_color=(float(diffuse1r), float(diffuse1g), float(diffuse1b))
system.solid_lights[2].diffuse_color=(float(diffuse2r), float(diffuse2g), float(diffuse2b))
system.solid_lights[0].specular_color=(float(spec0r), float(spec0g), float(spec0b))
system.solid_lights[1].specular_color=(float(spec1r), float(spec1g), float(spec1b))
system.solid_lights[2].specular_color=(float(spec2r), float(spec2g), float(spec2b))
gllightpreset_add(name)
gllightpreset_save()
#Export all exports the entire contents of your presets list to the given file
@persistent
def gllightpreset_exportall(context):
for i in range(len(bpy.context.scene.gllightpreset)):
gllightpreset_exportsingle(i, True)
def gllightpreset_exportsingle(index, multiimport):
scn=bpy.context.scene
name=scn.gllightpreset[index].name
illuminatedBool0=scn.gllightpreset[index].illuminated0
illuminatedBool1=scn.gllightpreset[index].illuminated1
illuminatedBool2=scn.gllightpreset[index].illuminated2
#illuminations
if illuminatedBool0==True:
illuminated0="True"
else:
illuminated0="False"
if illuminatedBool1==True:
illuminated1="True"
else:
illuminated1="False"
if illuminatedBool2==True:
illuminated2="True"
else:
illuminated2="False"
#direction light0
dirx=str(scn.gllightpreset[index].direction0[0])
diry=str(scn.gllightpreset[index].direction0[1])
dirz=str(scn.gllightpreset[index].direction0[2])
direction0=dirx + " " + diry + " " + dirz + " "
#direction light1
dirx=str(scn.gllightpreset[index].direction1[0])
diry=str(scn.gllightpreset[index].direction1[1])
dirz=str(scn.gllightpreset[index].direction1[2])
direction1=dirx + " " + diry + " " + dirz + " "
#direction light2
dirx=str(scn.gllightpreset[index].direction2[0])
diry=str(scn.gllightpreset[index].direction2[1])
dirz=str(scn.gllightpreset[index].direction2[2])
direction2=dirx + " " + diry + " " + dirz + " "
#diffuse light0
difr=str(scn.gllightpreset[index].diffuse0[0])
difg=str(scn.gllightpreset[index].diffuse0[1])
difb=str(scn.gllightpreset[index].diffuse0[2])
diffuse0=difr + " " + difg + " " + difb + " "
#diffuse light1
difr=str(scn.gllightpreset[index].diffuse1[0])
difg=str(scn.gllightpreset[index].diffuse1[1])
difb=str(scn.gllightpreset[index].diffuse1[2])
diffuse1=difr + " " + difg + " " + difb + " "
#diffuse light2
difr=str(scn.gllightpreset[index].diffuse2[0])
difg=str(scn.gllightpreset[index].diffuse2[1])
difb=str(scn.gllightpreset[index].diffuse2[2])
diffuse2=difr + " " + difg + " " + difb + " "
#specular light 0
specr=str(scn.gllightpreset[index].specular0[0])
specg=str(scn.gllightpreset[index].specular0[1])
specb=str(scn.gllightpreset[index].specular0[2])
specular0=specr + " " + specg + " " + specb + " "
#specular light 1
specr=str(scn.gllightpreset[index].specular1[0])
specg=str(scn.gllightpreset[index].specular1[1])
specb=str(scn.gllightpreset[index].specular1[2])
specular1=specr + " " + specg + " " + specb + " "
#specular light 2
specr=str(scn.gllightpreset[index].specular2[0])
specg=str(scn.gllightpreset[index].specular2[1])
specb=str(scn.gllightpreset[index].specular2[2])
specular2=specr + " " + specg + " " + specb + " "
printstring=name+"\n"
printstring+=illuminated0 +"\n"+ illuminated1 +"\n"+ illuminated2+"\n"
printstring+=direction0 +"\n"+ direction1 +"\n"+ direction2 +"\n"
printstring+=diffuse0+"\n"+diffuse1 +"\n"+ diffuse2 +"\n"
printstring+=specular0+"\n"+specular1+"\n"+specular2+"\n"
if multiimport==True:
filepath = scn.gllightpreset_exportdirectory
else:
filepath = scn.gllightpreset_exportfile
if not os.path.exists(filepath):
os.mkdir(filepath)
filepath=os.path.join(filepath, (name+".preset"))
writefile = open(filepath, 'w')
writefile.write(printstring)
##########################################
####### General Presets Functions #######
##########################################
def gllightpreset_addPresets():
system=bpy.context.user_preferences.system
system.solid_lights[0].use=True
system.solid_lights[1].use=True
system.solid_lights[2].use=True
system.solid_lights[0].direction = (-0.8920, 0.3000, 0.8999)
system.solid_lights[1].direction = (0.5880, 0.4600, 0.2480)
system.solid_lights[2].direction = (0.2159, -0.3920, -0.2159)
system.solid_lights[0].diffuse_color=(0.8000, 0.8000, 0.8000)
system.solid_lights[1].diffuse_color=(0.4980, 0.5000, 0.6000)
system.solid_lights[2].diffuse_color=(0.7980, 0.8379, 1.0)
system.solid_lights[0].specular_color=(0.5, 0.5, 0.5)
system.solid_lights[1].specular_color=(0.2000, 0.2, 0.2)
system.solid_lights[2].specular_color=(0.0659, 0.0, 0.0)
gllightpreset_add("(Default)")
gllightpreset_save()
system.solid_lights[0].use=True
system.solid_lights[1].use=True
system.solid_lights[2].use=True
system.solid_lights[0].direction = (-0.3207, 0.4245, 0.8466)
system.solid_lights[1].direction = (0.4259, -0.0555, 0.9030)
system.solid_lights[2].direction = (-0.4485, 0.2400, -0.8609)
system.solid_lights[0].diffuse_color=(0.4292, 0.0457, 0.0457)
system.solid_lights[1].diffuse_color=(0.7873, 0.4424, 0.2893)
system.solid_lights[2].diffuse_color=(0.7483, 0.7168, 0.6764)
system.solid_lights[0].specular_color=(0.2000, 0.2000, 0.2000)
system.solid_lights[1].specular_color=(0.0, 0.0, 0.0)
system.solid_lights[2].specular_color=(0.0, 0.0, 0.0)
gllightpreset_add("Orange Clay")
gllightpreset_save()
system.solid_lights[0].use=True
system.solid_lights[1].use=True
system.solid_lights[2].use=True
system.solid_lights[0].direction=(-0.06666, 0.8222, 0.5652)
system.solid_lights[1].direction=(-0.8555, 0.1111, 0.5056)
system.solid_lights[2].direction=(0.9000, 0.1555, 0.4071)
system.solid_lights[0].diffuse_color=(0.1000, 0.1000, 0.1000)
system.solid_lights[1].diffuse_color=(1.0, 0.9734, 0.8713)
system.solid_lights[2].diffuse_color=(0.7835, 0.9215, 1.0)
system.solid_lights[0].specular_color=(0.0, 0.0, 0.0)
system.solid_lights[1].specular_color=(0.0, 0.0, 0.0)
system.solid_lights[2].specular_color=(0.0, 0.0, 0.0)
gllightpreset_add("Softblend")
gllightpreset_save()
system.solid_lights[0].use = True
system.solid_lights[1].use = True
system.solid_lights[2].use = True
system.solid_lights[0].direction = (0.3666, 0.2888, 0.8843)
system.solid_lights[1].direction = (0.1111, 0.0888, 0.9898)
system.solid_lights[2].direction = (-0.5142, 0.5142, -0.6864)
system.solid_lights[0].diffuse_color = (0.6618, 0.5481, 0.5054)
system.solid_lights[1].diffuse_color = (0.3672, 0.2371, 0.1752)
system.solid_lights[2].diffuse_color = (1.0, 0.9574, 0.9058)
system.solid_lights[0].specular_color = (0.4969, 0.4886, 0.4820)
system.solid_lights[1].specular_color = (0.0, 0.0, 0.0)
system.solid_lights[2].specular_color = (1.0, 1.0, 1.0)
gllightpreset_add("Skin")
gllightpreset_save()
system.solid_lights[0].use = True
system.solid_lights[1].use = False
system.solid_lights[2].use = False
system.solid_lights[0].direction = (0.0111, 0.4000, 0.9164)
system.solid_lights[1].direction = (0.1111, 0.0888, 0.9898)
system.solid_lights[2].direction = (-0.5142, 0.5142, -0.6864)
system.solid_lights[0].diffuse_color = (1.0, 0.5912, 0.4148)
system.solid_lights[1].diffuse_color = (0.4962, 0.4962, 0.4962)
system.solid_lights[2].diffuse_color = (1.0, 0.9574, 0.9058)
system.solid_lights[0].specular_color = (0.2036, 0.4206, 0.7873)
system.solid_lights[1].specular_color = (0.0, 0.0, 0.0)
system.solid_lights[2].specular_color = (1.0, 1.0, 1.0)
gllightpreset_add("Candy")
gllightpreset_save();
system.solid_lights[0].use = True
system.solid_lights[1].use = True
system.solid_lights[2].use = True
system.solid_lights[0].direction = (-0.6124, 0.6046, 0.5092)
system.solid_lights[1].direction = (0.1627, 0.5271, 0.8340)
system.solid_lights[2].direction = (-0.5858, 0.7811, -0.2160)
system.solid_lights[0].diffuse_color = (0.0, 0.3564, 0.4292)
system.solid_lights[1].diffuse_color = (0.7873, 0.0038, 0.7197)
system.solid_lights[2].diffuse_color = (0.1994, 0.2014, 0.2330)
system.solid_lights[0].specular_color = (0.0946, 0.0946, 0.0946)
system.solid_lights[1].specular_color = (0.0, 0.0, 0.0)
system.solid_lights[2].specular_color = (0.0, 0.0, 0.0)
gllightpreset_add("Purpleboogers.com")
gllightpreset_save();
system.solid_lights[0].use = True
system.solid_lights[1].use = False
system.solid_lights[2].use = False
system.solid_lights[0].direction = (0.0111, 0.4000, 0.9164)
system.solid_lights[1].direction = (0.1111, 0.0888, 0.9898)
system.solid_lights[2].direction = (-0.5142, 0.5142, -0.6864)
system.solid_lights[0].diffuse_color = (0.8000, 0.8000, 0.8000)
system.solid_lights[1].diffuse_color = (0.4962, 0.4962, 0.4962)
system.solid_lights[2].diffuse_color = (1.0, 0.9574, 0.9058)
system.solid_lights[0].specular_color = (0.4540, 0.4540, 0.4540)
system.solid_lights[1].specular_color = (0.0, 0.0, 0.0)
system.solid_lights[2].specular_color = (1.0, 1.0, 1.0)
gllightpreset_add("Dark Gray")
gllightpreset_save()
system.solid_lights[0].use = True
system.solid_lights[1].use = False
system.solid_lights[2].use = False
system.solid_lights[0].direction = (0.0333, 0.2444, 0.9690)
system.solid_lights[1].direction = (0.1111, 0.08888, 0.9898)
system.solid_lights[2].direction = (-0.5142, 0.5142, -0.6864)
system.solid_lights[0].diffuse_color = (0.8000, 0.6670, 0.6020)
system.solid_lights[1].diffuse_color = (0.4962, 0.4962, 0.4962)
system.solid_lights[2].diffuse_color = (1.0, 0.9574, 0.9058)
system.solid_lights[0].specular_color = (0.3281, 0.3281, 0.3281)
system.solid_lights[1].specular_color = (0.0, 0.0, 0.0)
system.solid_lights[2].specular_color = (1.0, 1.0, 1.0)
gllightpreset_add("Turntable")
gllightpreset_save()
system.solid_lights[0].use = True
system.solid_lights[1].use = True
system.solid_lights[2].use = True
system.solid_lights[0].direction = (-0.2555, 0.5444, 0.7989)
system.solid_lights[1].direction = (0.5666, -0.7333, 0.3756)
system.solid_lights[2].direction = (-0.5142, 0.5142, -0.6864)
system.solid_lights[0].diffuse_color = (1.0, 0.9475, 0.3194)
system.solid_lights[1].diffuse_color = (0.3851, 0.2978, 0.1612)
system.solid_lights[2].diffuse_color = (1.0, 1.0, 1.0)
system.solid_lights[0].specular_color = (0.2740, 0.2740, 0.2740)
system.solid_lights[1].specular_color = (0.0, 0.0, 0.0)
system.solid_lights[2].specular_color = (0.0, 0.0, 0.0)
gllightpreset_add("Yellow Clay")
gllightpreset_save()
##########################################
####### LightPreset Functions #######
##########################################
def gllightpreset_name(self, context):
global recursive
global renaming
global lastname
if recursive==True: return
recursive=True
tmp=self.name
self.name=self.name+"@temporaryname"
self.name=gllightpreset_checkname(tmp)
tmp=self.name
if renaming==True: gllightpreset_rename(lastname, tmp)
#gllightpreset_sort()
recursive=False
def gllightpreset_checkname(name):
collection=bpy.context.scene.gllightpreset
if name=="": name="Preset"
if not name in collection:
return name
pos = name.rfind(".")
if pos==-1:
name=name+".001"
pos=len(name)-4
for i in range(1, 1000):
nr="00"+str(i)
tmp=name[:pos+1]+nr[len(nr)-3:]
if not tmp in collection:
return tmp
return "Preset.???"
def gllightpreset_rename(old, new):
for o in bpy.context.scene.objects:
if o.get("gllightpreset", "Default")==old:
o.gllightpreset=new
@persistent
def gllightpreset_index(self, context):
global recursive
if recursive==True: return
recursive=True
scene=bpy.context.scene
if scene.gllightpreset_index > len(scene.gllightpreset)-1:
scene.gllightpreset_index = len(scene.gllightpreset)-1
recursive=False
def gllightpreset_add(name=""):
global renaming
renaming=False
entry=bpy.context.scene.gllightpreset.add()
bpy.context.scene['gllightpreset_index']=len(bpy.context.scene.gllightpreset)-1
entry.name=gllightpreset_checkname(name)
renaming=True
gllightpreset_save()
def gllightpreset_delete():
index=bpy.context.scene.gllightpreset_index
name=bpy.context.scene.gllightpreset[index].name
for o in bpy.context.scene.objects:
if o.get("gllightpreset", "Default")==name:
o.gllightpreset="Default"
bpy.context.scene.gllightpreset.remove(index)
def gllightpreset_save():
index=bpy.context.scene.gllightpreset_index
name=bpy.context.scene.gllightpreset[index].name
bpy.context.scene.gllightpreset[index].illuminated0 = bpy.context.user_preferences.system.solid_lights[0].use
bpy.context.scene.gllightpreset[index].illuminated1 = bpy.context.user_preferences.system.solid_lights[1].use
bpy.context.scene.gllightpreset[index].illuminated2 = bpy.context.user_preferences.system.solid_lights[2].use
bpy.context.scene.gllightpreset[index].direction0 = bpy.context.user_preferences.system.solid_lights[0].direction
bpy.context.scene.gllightpreset[index].direction1 = bpy.context.user_preferences.system.solid_lights[1].direction
bpy.context.scene.gllightpreset[index].direction2 = bpy.context.user_preferences.system.solid_lights[2].direction
bpy.context.scene.gllightpreset[index].diffuse0 = bpy.context.user_preferences.system.solid_lights[0].diffuse_color
bpy.context.scene.gllightpreset[index].diffuse1 = bpy.context.user_preferences.system.solid_lights[1].diffuse_color
bpy.context.scene.gllightpreset[index].diffuse2 = bpy.context.user_preferences.system.solid_lights[2].diffuse_color
bpy.context.scene.gllightpreset[index].specular0 = bpy.context.user_preferences.system.solid_lights[0].specular_color
bpy.context.scene.gllightpreset[index].specular1 = bpy.context.user_preferences.system.solid_lights[1].specular_color
bpy.context.scene.gllightpreset[index].specular2 = bpy.context.user_preferences.system.solid_lights[2].specular_color
#select the current light
def gllightpreset_select():
index=bpy.context.scene.gllightpreset_index
name=bpy.context.scene.gllightpreset[index].name
bpy.context.user_preferences.system.solid_lights[0].use=bpy.context.scene.gllightpreset[index].illuminated0
bpy.context.user_preferences.system.solid_lights[1].use=bpy.context.scene.gllightpreset[index].illuminated1
bpy.context.user_preferences.system.solid_lights[2].use=bpy.context.scene.gllightpreset[index].illuminated2
bpy.context.user_preferences.system.solid_lights[0].direction=bpy.context.scene.gllightpreset[index].direction0
bpy.context.user_preferences.system.solid_lights[1].direction=bpy.context.scene.gllightpreset[index].direction1
bpy.context.user_preferences.system.solid_lights[2].direction=bpy.context.scene.gllightpreset[index].direction2
bpy.context.user_preferences.system.solid_lights[0].diffuse_color=bpy.context.scene.gllightpreset[index].diffuse0
bpy.context.user_preferences.system.solid_lights[1].diffuse_color=bpy.context.scene.gllightpreset[index].diffuse1
bpy.context.user_preferences.system.solid_lights[2].diffuse_color=bpy.context.scene.gllightpreset[index].diffuse2
bpy.context.user_preferences.system.solid_lights[0].specular_color=bpy.context.scene.gllightpreset[index].specular0
bpy.context.user_preferences.system.solid_lights[1].specular_color=bpy.context.scene.gllightpreset[index].specular1
bpy.context.user_preferences.system.solid_lights[2].specular_color=bpy.context.scene.gllightpreset[index].specular2
#sort alphabetically
def gllightpreset_sort():
collection=bpy.context.scene.gllightpreset
count=len(collection)
for i in range(0, count):
for j in range(i+1, count):
if collection[i].name > collection[j].name:
collection.move(j, i)
#Add default setting
def gllightpreset_addDefault():
gllightpreset_addPresets()
gllightpreset_sort();
bpy.context.scene['gllightpreset_index']=0
gllightpreset_select()
##########################################
####### Persistant functions##############
##########################################
#This function decides where to load presets from - The order goes: BPY>File>Defaults
@persistent
def gllightpreset_chooseLoadLocation(context):
filepath=bpy.context.scene.gllightpreset_importdirectory
if len(bpy.context.scene.gllightpreset)==0: #is it in bpy?
if not os.path.exists(filepath): #is it in the folder?
gllightpreset_addDefault() #it's not, add the default
else: #the folder exists
directorylisting = os.listdir(filepath)
if len(directorylisting)==0: #is the folder empty?
gllightpreset_addDefault() #the folder is empty, add default
else: #the folder is not empty
gllightpreset_loadpresets(1) #go ahead and load it
#This function scans for changes of the index of the selected preset and updates the selection if needed
@persistent
def gllightpreset_scan(context):
global lastindex
if debug==0:
if lastindex!=bpy.context.scene['gllightpreset_index']:
lastindex=bpy.context.scene['gllightpreset_index']
gllightpreset_select()
#This function loads all the presets from a given folder (stored in bpy)
@persistent
def gllightpreset_loadpresets(context):
gllightpreset_importall()
bpy.context.scene['gllightpreset_index']=0
gllightpreset_select()
##########################################
####### GUI ##############################
##########################################
#This function defines the layout of the openGL lamps
def opengl_lamp_buttons(column, lamp):
split = column.split(percentage=0.1)
split.prop(lamp, "use", text="", icon='OUTLINER_OB_LAMP' if lamp.use else 'LAMP_DATA')
col = split.column()
col.active = lamp.use
row = col.row()
row.label(text="Diffuse:")
row.prop(lamp, "diffuse_color", text="")
row = col.row()
row.label(text="Specular:")
row.prop(lamp, "specular_color", text="")
col = split.column()
col.active = lamp.use
col.prop(lamp, "direction", text="")
class gllightpreset(bpy.types.PropertyGroup):
props=bpy.props
name = props.StringProperty(update=gllightpreset_name)
illuminated0 = props.BoolProperty(default = True)
illuminated1 = props.BoolProperty(default = True)
illuminated2 = props.BoolProperty(default = True)
direction0 = props.FloatVectorProperty(name="", default=(-0.8920, 0.3000, 0.8999))
direction1 = props.FloatVectorProperty(name="", default=(0.5880, 0.4600, 0.2480))
direction2 = props.FloatVectorProperty(name="", default=(0.2159, -0.3920, -0.2159))
diffuse0 = props.FloatVectorProperty(name="", default=(0.8000, 0.8000, 0.8000))
diffuse1 = props.FloatVectorProperty(name="", default=(0.4980, 0.5000, 0.6000))
diffuse2 = props.FloatVectorProperty(name="", default=(0.7980, 0.8379, 1.0))
specular0 = props.FloatVectorProperty(name="", default=(0.5, 0.5, 0.5))
specular1 = props.FloatVectorProperty(name="", default=(0.2000, 0.2000, 0.2000))
specular2 = props.FloatVectorProperty(name="", default=(0.0659, 0.0, 0.0))
count = props.IntProperty(name="", default=0)
count2 = props.IntProperty(name="", default=0)
class SCENE_OT_gllightpreset(bpy.types.Operator):
bl_label ="Preset Action"
bl_idname="gllightpreset.action"
#alias
button=bpy.props.StringProperty(default="")
def execute(self, context):
scn=bpy.context.scene
button=self.button
if button=="add":
gllightpreset_add()
elif button=="delete":
if len(scn.gllightpreset)>1:
gllightpreset_delete()
else:
self.report({'INFO'}, "Must have at least 1 Preset")
elif button=="save":
gllightpreset_save()
self.report({'INFO'}, "Saved Preset to Blend File.")
elif button=="sort": gllightpreset_sort()
elif button=="select": gllightpreset_select()
elif button=="export":
gllightpreset_exportsingle(scn.gllightpreset_index, False)
self.report({'INFO'}, "Exported Preset to: "+scn.gllightpreset_exportfile)
elif button=="exportall":
gllightpreset_exportall(1)
self.report({'INFO'}, "Exported Presets to: "+scn.gllightpreset_exportdirectory)
elif button=="import":
if not os.path.isdir(scn.gllightpreset_importfile):
if not scn.gllightpreset_importdirectory=="":
gllightpreset_importsingle(scn.gllightpreset_importfile)
else:
self.report({'INFO'}, "Please choose a valid preset file")
else:
self.report({'INFO'}, "Please choose a valid preset file")
elif button=="importall":
gllightpreset_importall()
self.report({'INFO'}, "Imported Presets from: "+scn.gllightpreset_importdirectory)
elif button=="defaults":
gllightpreset_addDefault()
if scn.gllightpreset_index > len(scn.gllightpreset)-1:
scn.gllightpreset_index = len(scn.gllightpreset)-1
return {"FINISHED"}
#Panel for tools
class PANEL(bpy.types.Panel):
bl_label = 'Quick Preferences'
bl_space_type = 'VIEW_3D'
bl_context = "render"
bl_region_type = 'UI'
def draw(self, context):
global lastname
#aliases
scn = bpy.context.scene
system = context.user_preferences.system
inputs = context.user_preferences.inputs
edit = context.user_preferences.edit
layout = self.layout
split = layout.split()
#Setup the OpenGL lights box
#Draw the Lights
box = layout.box().column(align=False)
box.prop(scn,'lights')
if scn.lights:
split = box.split(percentage=0.1)
split.label()
split.label(text="Colors:")
split.label(text="Direction:")
lamp = system.solid_lights[0]
opengl_lamp_buttons(box, lamp)
lamp = system.solid_lights[1]
opengl_lamp_buttons(box, lamp)
lamp = system.solid_lights[2]
opengl_lamp_buttons(box, lamp)
box.separator()
#Draw the selection box
split = box.split(percentage=0.7)
col = split.row()
col.template_list(scn, "gllightpreset", scn, "gllightpreset_index", rows=5, maxrows=5)
#Draw the buttons
split = split.split()
col = split.column()
col.operator("gllightpreset.action", icon="ZOOMIN", text="Add").button="add"
col.operator("gllightpreset.action", icon="ZOOMOUT", text="Delete").button="delete"
col.operator("gllightpreset.action", icon="FILE_TICK", text="Save to Blend").button="save"
col.operator("gllightpreset.action", icon="SORTALPHA", text="Sort").button="sort"
col.operator("gllightpreset.action", icon="SHORTDISPLAY", text="Add Defaults").button="defaults"
col=box.row()
col=col.column()
#Draw the text box
count=len(scn.gllightpreset)
if count>0:
entry=scn.gllightpreset[scn.gllightpreset_index]
lastname=entry.name
if entry.count==0:
col.prop(entry, "name", text="")
if entry.count> 0:
col.prop(entry, "name", text="")
if scn.objects.active != None:
name=scn.objects.active.get("gllightpreset", "Default")
#Draw the import/export part of the box
col.prop(scn,'importexport')
if scn.importexport:
split = box.split(percentage=0.5)
col = split.column()
col.label("Import Directory or File")
col.prop(scn, 'gllightpreset_importfile')
col.prop(scn, 'gllightpreset_importdirectory')
col.label("Export Directory or File")
col.prop(scn, 'gllightpreset_exportfile')
col.prop(scn, 'gllightpreset_exportdirectory')
split = split.split()
col = split.column()
col.label("")
col.operator("gllightpreset.action", icon="IMPORT", text="Import File").button="import"
col.operator("gllightpreset.action", icon="IMPORT", text="Import All").button="importall"
col.label("")
col.operator("gllightpreset.action", icon="EXPORT", text="Export Selection").button="export"
col.operator("gllightpreset.action", icon="EXPORT", text="Export All").button="exportall"
#The second box containing interface options is here
#interface options
box = layout.box().column(align=True)
box.prop(scn,'interface')
if scn.interface:
#Select with
boxrow=box.row()
boxrow.label(text="Select With:")
boxrow=box.row()
boxrow.prop(inputs, "select_mouse", expand=True)
#Orbit
boxrow=box.row()
boxrow.label(text="Orbit Style:")
boxrow=box.row()
boxrow.prop(inputs, "view_rotate_method", expand=True)
#continuous grab
boxrow=box.row()
boxrow.prop(inputs, "use_mouse_continuous")
#Color Picker
boxrow=box.row()
boxrow.label(text="Color Picker Type")
boxrow=box.row()
boxrow.row().prop(system, "color_picker_type", text="")
#Align To
boxrow=box.row()
boxrow.label(text="Align New Objects To:")
boxrow=box.row()
boxrow.prop(edit, "object_align", text="")
##########################################
####### Registration Functions ############
##########################################
def register():
#aliases
scn=bpy.types.Scene
handler=bpy.app.handlers
#register classes
bpy.utils.register_class(PANEL)
bpy.utils.register_class(gllightpreset)
bpy.utils.register_class(SCENE_OT_gllightpreset)
#strings for file IO
scn.gllightpreset_importfile = bpy.props.StringProperty(name = "", subtype='FILE_PATH', default=defaultfilepath)
scn.gllightpreset_importdirectory = bpy.props.StringProperty(name = "", subtype='DIR_PATH', default=defaultfilepath)
scn.gllightpreset_exportfile = bpy.props.StringProperty(name = "", subtype='FILE_PATH', default=defaultfilepath)
scn.gllightpreset_exportdirectory = bpy.props.StringProperty(name = "", subtype='DIR_PATH', default=defaultfilepath)
#Set up values for UI stuff
scn.lights = bpy.props.BoolProperty(name='Lights', default=True)
scn.lightPresets = bpy.props.BoolProperty(name='Light Presets', default=False)
scn.interface = bpy.props.BoolProperty(name='Interface', default=False)
scn.importexport = bpy.props.BoolProperty(name='Show Import/Export Options', default=False)
bpy.types.Object.gllightpreset = bpy.props.StringProperty()
#important storage of stuff
scn.gllightpreset = bpy.props.CollectionProperty(type=gllightpreset)
scn.gllightpreset_index = bpy.props.IntProperty(min=0, default=0, update=gllightpreset_index)
#handlers
handler.load_post.append(gllightpreset_chooseLoadLocation)
handler.scene_update_pre.append(gllightpreset_scan)
#let the fun begin!
gllightpreset_chooseLoadLocation(1)
# unregistering and removing menus
def unregister():
bpy.utils.unregister_class(PANEL)
bpy.utils.unregister_class(gllightpreset)
bpy.utils.unregister_class(SCENE_OT_gllightpreset)
if __name__ == "__main__":
register()

Event Timeline