mirror of https://github.com/axmolengine/axmol.git
140 lines
3.5 KiB
Python
140 lines
3.5 KiB
Python
import sys, string, os
|
|
from Tkinter import *
|
|
import steps
|
|
|
|
Plugins = sys.argv[1]
|
|
|
|
print Plugins
|
|
|
|
pluginList = Plugins.split(':')
|
|
maxStep = 2
|
|
curStep = 1
|
|
|
|
stepList = []
|
|
|
|
# functions
|
|
# show step on the num index
|
|
def showStep(num):
|
|
global stepList
|
|
stepNum = len(stepList)
|
|
if num >= stepNum or num <= 0 :
|
|
pass
|
|
|
|
i = 0
|
|
while i < stepNum:
|
|
if i == num:
|
|
stepList[i].stepFrame.pack(fill=BOTH, anchor='nw')
|
|
else:
|
|
stepList[i].stepFrame.pack_forget()
|
|
i += 1
|
|
|
|
# update the pre & next buttons status
|
|
def updateBtnState():
|
|
global curStep
|
|
global btnNextStep
|
|
global btnPreStep
|
|
if curStep == 1:
|
|
btnPreStep['state'] = DISABLED
|
|
btnNextStep['state'] = NORMAL
|
|
btnNextStep['text'] = 'Next'
|
|
elif curStep == maxStep:
|
|
btnPreStep['state'] = NORMAL
|
|
btnNextStep['state'] = NORMAL
|
|
btnNextStep['text'] = 'Finish'
|
|
else:
|
|
btnPreStep['state'] = NORMAL
|
|
btnNextStep['state'] = NORMAL
|
|
btnNextStep['text'] = 'Next'
|
|
|
|
# next button clicked
|
|
def nextStep():
|
|
if btnNextStep['text'] == 'close':
|
|
root.quit()
|
|
return
|
|
|
|
global curStep
|
|
nowStepObj = stepList[curStep - 1]
|
|
bRet = nowStepObj.checkStep()
|
|
if bRet != None:
|
|
stepError['text'] = bRet
|
|
return
|
|
else:
|
|
stepError['text'] = ''
|
|
|
|
if curStep < maxStep:
|
|
curStep += 1
|
|
showStep(curStep - 1)
|
|
updateBtnState()
|
|
elif curStep == maxStep:
|
|
# disable buttons when process
|
|
btnPreStep['state'] = DISABLED
|
|
btnNextStep['state'] = DISABLED
|
|
|
|
# get user input arguments
|
|
projPath = stepList[0].getPath()
|
|
plugins = stepList[1].getSelectedPlugins()
|
|
strPlugins = ''
|
|
i = 0
|
|
while i < len(plugins):
|
|
strPlugins += "plugins/"
|
|
strPlugins += plugins[i]
|
|
if i != (len(plugins) - 1):
|
|
strPlugins += ':'
|
|
i += 1
|
|
|
|
# process shell script to modify the game project
|
|
ret = os.system('bash ./toolsForGame/addPluginForGame.sh ' + projPath + ' ' + strPlugins)
|
|
|
|
if ret != 0:
|
|
# enable buttons after process
|
|
btnPreStep['state'] = NORMAL
|
|
btnNextStep['state'] = NORMAL
|
|
stepError['text'] = 'Error during process'
|
|
else:
|
|
# enable next button & change text to close
|
|
btnNextStep['state'] = NORMAL
|
|
btnNextStep['text'] = 'close'
|
|
stepError['text'] = 'Process Successful!'
|
|
|
|
# pre button clicked
|
|
def preStep():
|
|
global curStep
|
|
global stepError
|
|
stepError['text'] = ''
|
|
if curStep > 1:
|
|
curStep -= 1
|
|
showStep(curStep - 1)
|
|
|
|
updateBtnState()
|
|
|
|
# init root view
|
|
root = Tk()
|
|
root.title('Plugin-x Integration Guide')
|
|
root.geometry("600x400")
|
|
rootFrame = Frame(root)
|
|
rootFrame.pack(fill=BOTH)
|
|
|
|
# steps view
|
|
MyStep1 = steps.step1()
|
|
MyStep1.initStep(rootFrame)
|
|
MyStep2 = steps.step2()
|
|
MyStep2.initStep(rootFrame, pluginList)
|
|
stepList.append(MyStep1)
|
|
stepList.append(MyStep2)
|
|
|
|
MyStep1.stepFrame.pack(fill=BOTH, anchor='nw')
|
|
|
|
# add step error message
|
|
controlFrame = Frame(root)
|
|
controlFrame.pack(side=BOTTOM, fill=X, anchor='s')
|
|
stepError = Label(controlFrame)
|
|
stepError.pack(side=LEFT, padx=30)
|
|
|
|
# add step button
|
|
btnNextStep = Button(controlFrame, text='Next', command=nextStep)
|
|
btnPreStep = Button(controlFrame, text='Back', command=preStep, state=DISABLED)
|
|
btnNextStep.pack(side=RIGHT, padx=30)
|
|
btnPreStep.pack(side=RIGHT)
|
|
|
|
root.mainloop()
|