#coding:utf-8
#===============================================================================
# author: zhaozhongxiang
# department: OF3D gamesArtist technology department
# 2016-8-19 created by zhaozhongxiang
# name: zzx_checkPSD.py
# return Value:None
#===============================================================================
from __future__ import absolute_import, unicode_literals
from utils import decode_psd
from psd_tools.constants import BlendMode, ImageResourceID
from psd_tools import PSDImage
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )
from Tkinter import *
import ttk as ttk
import tkFileDialog
import os
import unicodedata
class CheckPSD():
"""docstring for CheckPSD"""
def __init__(self, master):
self.root=master
try:
self.otherWin.destroy()
except AttributeError:
pass
frm_L=Frame(self.root)
frm_L.pack(side=LEFT)
self._nameList=Text(frm_L, height=29, width=35)
#绑定事件
self._nameList.bind("<Control-Key-a>", self.selectNameList)
self._nameList.bind("<Control-Key-A>", self.selectNameList)
self._nameList.pack()
Button(frm_L,text='Load PSD Path And Check -->',command=self.openFrame, fg = "red").pack()
frm_R=Frame(self.root)
frm_R.pack(side=LEFT)
frm_R_01=Frame(frm_R)
frm_R_01.pack()
Label(frm_R_01, text=u"检查选项如下:\n------------------------------------------------", fg='blue', width=50).pack()
Label(frm_R_01, text=u"---- 基本参数 ----", width=15, fg='blue').pack()
frm_R_02=Frame(frm_R)
frm_R_02.pack()
Label(frm_R_02, text=u' 宽度(W) :').pack(side=LEFT)
self.widthPara=Entry(frm_R_02, width = 15)
self.widthPara.pack(side=RIGHT)
self.widthPara.insert(END,"256")
frm_R_03=Frame(frm_R)
frm_R_03.pack()
Label(frm_R_03, text=u' 高度(H) :').pack(side=LEFT)
self.heightPara=Entry(frm_R_03, width = 15)
self.heightPara.pack(side=RIGHT)
self.heightPara.insert(END,"256")
frm_R_04=Frame(frm_R)
frm_R_04.pack()
Label(frm_R_04, text=u' 分辨率(R) :').pack(side=LEFT)
self.resolutionPara=Entry(frm_R_04, width = 15)
self.resolutionPara.pack(side=RIGHT)
self.resolutionPara.insert(END,"300")
frm_R_05=Frame(frm_R)
frm_R_05.pack()
Label(frm_R_05, text=u"---- 阴影效果参数 ----", width=20, fg='blue').pack()
frm_R_06=Frame(frm_R)
frm_R_06.pack()
Label(frm_R_06, text=u' 混合模式(B):').pack(side=LEFT)
self.box_value = StringVar()
self.box = ttk.Combobox(frm_R_06, textvariable=self.box_value,state='readonly', width=13)
self.box.pack()
self.box['values'] = (u'正常', u'溶解',\
u'变暗', u'正片叠底', u'颜色加深', u'线性加深', u'深色',\
u'变亮', u'滤色', u'颜色减淡', u'线性减淡(添加)', u'浅色',\
u'叠加', u'柔光', u'强光', u'亮光', u'线性光', u'点光', u'实色混合',\
u'差值', u'排除', u'减去', u'划分',\
u'色相', u'饱和度', u'颜色', u'明度')
self.box.current(3)
frm_R_07=Frame(frm_R)
frm_R_07.pack()
Label(frm_R_07, text=u'不透明度(O):').pack(side=LEFT)
self.opacityPara=Entry(frm_R_07, width = 15)
self.opacityPara.pack(side=RIGHT)
self.opacityPara.insert(END,"50")
frm_R_08=Frame(frm_R)
frm_R_08.pack()
Label(frm_R_08, text=u' 角度(A):').pack(side=LEFT)
self.anglePara=Entry(frm_R_08, width = 15)
self.anglePara.pack(side=RIGHT)
self.anglePara.insert(END,"120")
frm_R_09=Frame(frm_R)
frm_R_09.pack()
Label(frm_R_09, text=u' 距离(D):').pack(side=LEFT)
self.distancePara=Entry(frm_R_09, width = 15)
self.distancePara.pack(side=RIGHT)
self.distancePara.insert(END,"10")
frm_R_10=Frame(frm_R)
frm_R_10.pack()
Label(frm_R_10, text=u' 扩展(R):').pack(side=LEFT)
self.rangePara=Entry(frm_R_10, width = 15)
self.rangePara.pack(side=RIGHT)
self.rangePara.insert(END,"0")
frm_R_11=Frame(frm_R)
frm_R_11.pack()
Label(frm_R_11, text=u' 大小(S):').pack(side=LEFT)
self.sizePara=Entry(frm_R_11, width = 15)
self.sizePara.pack(side=RIGHT)
self.sizePara.insert(END,"10")
def openFrame(self):
#-----------------------------
# value ...
self.widthValue=self.widthPara.get()
self.heightValue=self.heightPara.get()
self.resolutionValue=self.resolutionPara.get()
self.blendModeValue=int(self.box.current())
self.opacityValue=self.opacityPara.get()
self.angleValue=self.anglePara.get()
self.distanceValue=self.distancePara.get()
self.rangeValue=self.rangePara.get()
self.sizeValue=self.sizePara.get()
self.modeDict={'norm':u'正常','diss':u'溶解',\
'dark':u'变暗','mul ':u'正片叠底','idiv':u'颜色加深','lbrn':u'线性加深','dkCl':u'深色',\
'lite':u'变亮','scrn':u'滤色','div ':u'颜色减淡','lddg':u'线性减淡(添加)','lgCl':u'浅色',\
'over':u'叠加','sLit':u'柔光','hLit':u'强光','vLit':u'亮光','lLit':u'线性光','pLit':u'点光','hMix':u'实色混合',\
'diff':u'差值','smud':u'排除','fsub':u'减去','fdiv':u'划分',\
'hue ':u'色相','sat ':u'饱和度','colr':u'颜色','lum ':u'明度'}
self.modeGrp=['norm','diss',\
'dark','mul ','idiv','lbrn','dkCl',\
'lite','scrn','div ','lddg','lgCl',\
'over','sLit','hLit','vLit','lLit','pLit','hMix',\
'diff','smud','fsub','fdiv',\
'hue ','sat ','colr','lum ']
#-----------------------------
_objGrp=[]
_objGrp=self._nameList.get("1.0", "end").split('\n')[0:-2]
self.dirname = tkFileDialog.askdirectory(parent=self.root,initialdir="/",title='Please select a directory')
if len(self.dirname ) > 0:
self.hide()
self.otherWin = Toplevel()
self.otherWin.geometry("550x450")
self.otherWin.title("PSD Detail")
# self.dirname = r'F:\Import_Pay_Attention\zzx_checkPSD\psd_files'
frm_L=Frame(self.otherWin)
frm_L.pack(side=LEFT)
var = StringVar()
self.lb = Listbox(frm_L, height=25, width=25,selectmode=EXTENDED, listvariable = var)
self.lb.bind('<ButtonRelease-1>', self.print_item)
psdFileList=self.zzx_getAllPSDFile()
_beginText=u' || 下面这些文件还没有做 || \n----------------------------------------------------\n'
self.unCompleteFile=[]
self.getWrongPSDList=self.zzx_getWrongPSDList(_objGrp)
for item in _objGrp:
self.lb.insert(END, item)
if (item+'.psd') not in psdFileList:
self.lb.itemconfig(END, bg='red', fg='white')
_beginText+=item+'.psd'+'\n'
self.unCompleteFile.append(item)
else:
if item in self.getWrongPSDList:
self.lb.itemconfig(END, bg='yellow', fg='black')
else:
self.lb.itemconfig(END, bg='green', fg='black')
if _beginText==u' || 下面这些文件还没有做 || \n----------------------------------------------------\n':
_beginText+='OK !\n'
scrl = Scrollbar(frm_L)
scrl.pack(side=RIGHT, fill=Y)
self.lb.configure(yscrollcommand = scrl.set)
self.lb.pack(side=LEFT, fill=BOTH)
scrl['command'] = self.lb.yview
frm_R=Frame(self.otherWin)
frm_R.pack(side=LEFT)
self.lfc_field_1_t_sv = Scrollbar(frm_R, orient=VERTICAL) #文本框-竖向滚动条
self.lfc_field_1_t_sh = Scrollbar(frm_R, orient=HORIZONTAL) #文本框-横向滚动条
self.lfc_field_1_t = Text(frm_R, height=33,width=35, yscrollcommand=self.lfc_field_1_t_sv.set,
xscrollcommand=self.lfc_field_1_t_sh.set, wrap='none') #设置滚动条-不换行
self.lfc_field_1_t.insert(INSERT,_beginText)
#滚动事件
self.lfc_field_1_t_sv.config(command=self.lfc_field_1_t.yview)
self.lfc_field_1_t_sh.config(command=self.lfc_field_1_t.xview)
#布局
self.lfc_field_1_t_sv.pack(fill="y", expand=0, side=RIGHT, anchor=N)
self.lfc_field_1_t_sh.pack(fill="x", expand=0, side=BOTTOM, anchor=N)
self.lfc_field_1_t.pack(fill="x", expand=1, side=LEFT)
#绑定事件