예제 #1
0
    def __init__(self, parent=getMayaWindow(), mode='choose', edit=0):

        QtGui.QMainWindow.__init__(self, parent)

        self.edit = edit

        self.currentFace = None

        #TODO this won't work with multiple faces

        for f in utils.getUType('faceModule'):

            print 'poseChooser_UI: Face initialized from:', f

            self.currentFace = face.FaceModule(faceNode=f)

        ### BUILD USER INTERFACE

        ##############################

        #create/set a central widget

        wid = QtGui.QWidget()

        self.setCentralWidget(wid)

        #setArt v2 stylesheet

        utils.setArtV2StyleSheet(wid, imageDirectory='/art2images')

        self.resize(400, 514)

        #top face module picker

        self.label = QtGui.QLabel(self)

        self.label.setText("FacialNode:")

        self.horizontalLayout = QtGui.QHBoxLayout()

        self.horizontalLayout.setSpacing(2)

        self.label.setMaximumSize(QtCore.QSize(78, 16777215))

        self.horizontalLayout.addWidget(self.label)

        self.currentFacialNodeCMB = QtGui.QComboBox(self)

        self.horizontalLayout.addWidget(self.currentFacialNodeCMB)

        #header and instruction

        self.h2 = QtGui.QHBoxLayout()

        self.attachJointLBL = QtGui.QLabel(self)

        if self.edit:

            self.attachJointLBL.setText("Edit Face Poses")

        else:

            self.attachJointLBL.setText("Available Face Poses")

        font = self.attachJointLBL.font()

        font.setBold(True)

        font.setPointSize(13)

        self.attachJointLBL.setFont(font)

        #options horizontal layout

        self.optionsLayout = QtGui.QHBoxLayout()

        if self.edit:

            #zero out button

            self.zeroBTN = QtGui.QPushButton(self)

            self.zeroBTN.setText('ZERO ALL')

            self.zeroBTN.setMaximumSize(QtCore.QSize(75, 50))

            #mirror edit out button

            self.mirrorPoseBTN = QtGui.QPushButton(self)

            self.mirrorPoseBTN.setText('MIRROR SELECTED POSE')

            #checkboxes

            self.moveMirrorsCHK = QtGui.QCheckBox(self)

            self.moveMirrorsCHK.setText('Sync Movement of Mirror Poses')

        self.info = QtGui.QLabel(self)

        if self.edit:

            self.info.setText(
                "Check and edit the facial poses to make them better match your character"
            )

        else:

            self.info.setText(
                "These poses are available for your character's facial rig, based on the Facial Joint Movers you have selected"
            )

        self.info.setWordWrap(1)

        self.h2.setSpacing(2)

        self.h2.addWidget(self.attachJointLBL)

        #main vertical layout

        self.verticalLayout = QtGui.QVBoxLayout(wid)

        self.verticalLayout.addLayout(self.horizontalLayout)

        self.verticalLayout.addLayout(self.h2)

        self.verticalLayout.addWidget(self.info)

        #pose list

        self.poseList = QtGui.QListWidget(self)

        self.verticalLayout.addWidget(self.poseList)

        QtCore.QMetaObject.connectSlotsByName(self)

        self.setWindowTitle("Available Facial Poses")

        if self.edit:

            #options area

            self.verticalLayout.addWidget(self.moveMirrorsCHK)

            self.verticalLayout.addLayout(self.optionsLayout)

            self.optionsLayout.addWidget(self.zeroBTN)

            self.optionsLayout.addWidget(self.mirrorPoseBTN)

        #continue button

        self.continueBTN = QtGui.QPushButton(self)

        self.continueBTN.setText('>> Continue >>')

        self.continueBTN.setObjectName("blueButton")

        font = self.continueBTN.font()

        font.setBold(True)

        font.setPointSize(12)

        self.continueBTN.setFont(font)

        #back button

        self.backBTN = QtGui.QPushButton(self)

        self.backBTN.setText('<< Back <<')

        self.backBTN.setObjectName("blueButton")

        font = self.backBTN.font()

        font.setBold(True)

        font.setPointSize(12)

        self.backBTN.setFont(font)

        #button layout on bottom

        self.h3 = QtGui.QHBoxLayout()

        self.verticalLayout.addLayout(self.h3)

        self.h3.setSpacing(2)

        self.h3.addWidget(self.backBTN)

        self.h3.addWidget(self.continueBTN)

        #self.verticalLayout.setContentsMargins(2,2,2,2)

        self.verticalLayout.setSpacing(3)

        #Make SDK transforms editable

        #hide facial mask controls and mask

        #show special eye and jaw movers

        #unhide jointMovers, make LRAs unselectable

        #connections

        self.currentFacialNodeCMB.currentIndexChanged.connect(
            self.faceChangedFn)

        #self.moverTree.itemClicked.connect(self.check_status)

        #self.continueBTN.pressed.connect(self.continueFn)

        #set the mask

        self.mask = face.FaceMask

        self.mask.active = True

        ### CONNECTS

        if self.edit:

            self.zeroBTN.pressed.connect(self.zeroAllFn)

        ### FILL UI

        ##############################

        self.refreshUI()
예제 #2
0
    def __init__(self, parent=getMayaWindow(), debug=0):

        QtGui.QMainWindow.__init__(self, parent)

        self.currentFace = None

        #facial folder

        facialDir = os.path.dirname(__file__)

        for f in utils.getUType('faceModule'):

            print 'jointMover_UI: Face initialized from:', f

            self.currentFace = face.FaceModule(faceNode=f)

        ### BUILD USER INTERFACE

        ##############################

        #create/set a central widget

        wid = QtGui.QWidget()

        self.setCentralWidget(wid)

        #setArt v2 stylesheet

        utils.setArtV2StyleSheet(wid, imageDirectory='/art2images')

        self.resize(315, 514)

        #top face module picker

        self.label = QtGui.QLabel(self)

        self.label.setText("FacialNode:")

        self.horizontalLayout = QtGui.QHBoxLayout()

        self.horizontalLayout.setSpacing(2)

        self.label.setMaximumSize(QtCore.QSize(78, 16777215))

        self.horizontalLayout.addWidget(self.label)

        self.currentFacialNodeCMB = QtGui.QComboBox(self)

        self.horizontalLayout.addWidget(self.currentFacialNodeCMB)

        #attachment joint

        self.h2 = QtGui.QHBoxLayout()

        self.attachJointLBL = QtGui.QLabel(self)

        self.attachJointLBL.setText("Face Attachment Joint:")

        self.h2.setSpacing(2)

        self.h2.addWidget(self.attachJointLBL)

        self.attachJointLINE = QtGui.QLineEdit(self)

        self.h2.addWidget(self.attachJointLINE)

        #main vertical layout

        self.verticalLayout = QtGui.QVBoxLayout(wid)

        self.verticalLayout.addLayout(self.horizontalLayout)

        self.verticalLayout.addLayout(self.h2)

        #joint mover tree

        self.moverTree = QtGui.QTreeWidget(self)

        self.moverTree.setObjectName("treeWidget")

        self.moverTree.headerItem().setText(0, "1")

        self.verticalLayout.addWidget(self.moverTree)

        self.moverTree.setHeaderHidden(True)

        QtCore.QMetaObject.connectSlotsByName(self)

        self.setWindowTitle("Select Joint Movers")

        #snap button

        self.continueBTN = QtGui.QPushButton(self)

        self.continueBTN.setText('>> Continue >>')

        self.continueBTN.setObjectName("blueButton")

        font = self.continueBTN.font()

        font.setBold(True)

        font.setPointSize(12)

        self.continueBTN.setFont(font)

        #load button

        self.loadBTN = QtGui.QPushButton(self)

        self.loadBTN.setText('Template...')

        font = self.loadBTN.font()

        font.setBold(True)

        font.setPointSize(12)

        self.loadBTN.setFont(font)

        self.loadBTN.setMaximumSize(QtCore.QSize(75, 16777215))

        #button layout on bottom

        self.h3 = QtGui.QHBoxLayout()

        self.verticalLayout.addLayout(self.h3)

        self.h3.setSpacing(2)

        self.h3.addWidget(self.loadBTN)

        self.h3.addWidget(self.continueBTN)

        #connections

        self.moverTree.itemClicked.connect(self.check_status)

        self.continueBTN.pressed.connect(self.continueFn)

        #set the mask

        self.mask = self.currentFace.faceMask

        self.mask.active = True

        cmds.showHidden(self.currentFace.sdks)

        ### FILL UI

        ##############################

        self.attachJointLINE.setText('head')

        self.refreshUI()
    def __init__(self, parent=getMayaWindow(), debug=0):
        QtGui.QMainWindow.__init__(self, parent)

        #facial folder
        #facialDir = os.path.dirname(__file__)

        ### BUILD USER INTERFACE
        ##############################

        #create/set a central widget
        wid = QtGui.QWidget()
        self.setCentralWidget(wid)

        #setArt v2 stylesheet
        utils.setArtV2StyleSheet(wid, imageDirectory='/art2images')
        
        self.verticalLayout = QtGui.QVBoxLayout(wid)
        self.verticalLayout.setSpacing(2)
        
        #top face module picker
        self.label = QtGui.QLabel(self)
        self.label.setText("FacialNode:")
        self.horizontalLayout = QtGui.QHBoxLayout()
        self.horizontalLayout.addWidget(self.label)
        self.currentFacialNodeCMB = QtGui.QComboBox(self)
        self.horizontalLayout.addWidget(self.currentFacialNodeCMB)
        
        self.resize(530, 390)

        self.verticalLayout.addLayout(self.horizontalLayout)
        
        self.page1 = QtGui.QFrame()
        self.page1.setMinimumSize(QtCore.QSize( 530, 380 ))
        self.page1.setMaximumSize(QtCore.QSize( 530, 380 ))
        
        self.page2 = QtGui.QFrame()
        self.page2.setMinimumSize(QtCore.QSize( 530, 380 ))
        self.page2.setMaximumSize(QtCore.QSize( 530, 380 ))

        self.page3 = QtGui.QFrame()
        self.page3.setMinimumSize(QtCore.QSize( 530, 380 ))
        self.page3.setMaximumSize(QtCore.QSize( 530, 380 ))

        self.page4 = QtGui.QFrame()
        self.page4.setMinimumSize(QtCore.QSize( 530, 380 ))
        self.page4.setMaximumSize(QtCore.QSize( 530, 380 ))
        
        self.stackedWidget = QtGui.QStackedWidget()
        self.stackedWidget.addWidget(self.page1)
        self.stackedWidget.addWidget(self.page2)
        self.stackedWidget.addWidget(self.page3)
        self.stackedWidget.addWidget(self.page4)
        self.verticalLayout.addWidget(self.stackedWidget)
        
        #set the image backdrops
        image = (os.path.dirname(__file__) + '\\process_splash_align_mask.png').replace('\\','/')
        self.page1.setStyleSheet("background-image: url(" + image + ");")
        
        image = (os.path.dirname(__file__) + '\\process_splash_align_eyes.png').replace('\\','/')
        self.page2.setStyleSheet("background-image: url(" + image + ");")

        image = (os.path.dirname(__file__) + '\\process_splash_snap.png').replace('\\','/')
        self.page3.setStyleSheet("background-image: url(" + image + ");")

        image = (os.path.dirname(__file__) + '\\process_splash_goodbye.png').replace('\\','/')
        self.page4.setStyleSheet("background-image: url(" + image + ");")

        #Add next button
        self.nextBTN = QtGui.QPushButton(self)
        self.nextBTN.setText('NEXT')
        font = QtGui.QFont()
        font.setPointSize(12)
        font.setBold(True)
        self.nextBTN.setFont(font)
        self.nextBTN.setGeometry(420, 300, 90, 25)
        
        #Add back button
        self.backBTN = QtGui.QPushButton(self)
        self.backBTN.setText('BACK')
        font = QtGui.QFont()
        font.setPointSize(12)
        font.setBold(True)
        self.backBTN.setFont(font)
        self.backBTN.setGeometry(420, 330, 90, 25)
        self.backBTN.setHidden(True)
        
        self.stackedWidget.setCurrentIndex(0)

        #build and hide the 'mesh chooser'
        self.meshBTN = QtGui.QPushButton(self)
        self.meshBTN.setText('<<')
        font = QtGui.QFont()
        font.setPointSize(12)
        font.setBold(True)
        self.meshBTN.setFont(font)
        self.meshBTN.setGeometry(0, 0, 25, 25)

        #build and hide the 'mesh chooser'
        self.snapBTN = QtGui.QPushButton(self)
        self.snapBTN.setText('SNAP')
        font = QtGui.QFont()
        font.setPointSize(12)
        font.setBold(True)
        self.snapBTN.setFont(font)
        self.snapBTN.setGeometry(300, 330, 90, 25)

        self.meshLBL = QtGui.QLabel(self)
        self.meshLBL.setText("Facial Mesh:")
        self.meshEdit = QtGui.QLineEdit(self)
        self.hMeshLayout = QtGui.QHBoxLayout()
        self.hMeshLayout.addWidget(self.meshLBL)
        self.hMeshLayout.addWidget(self.meshEdit)
        self.hMeshLayout.addWidget(self.meshBTN)
        self.hMeshLayout.setGeometry(QtCore.QRect(100, 300, 300, 25))

        #close button
        self.closeBTN = QtGui.QPushButton(self)
        self.closeBTN.setText('Thank you Masky,\nI will alsways remember you..')
        font = QtGui.QFont()
        font.setPointSize(16)
        font.setBold(True)
        self.closeBTN.setFont(font)
        self.closeBTN.setGeometry(25, 250, 500, 70)
        self.closeBTN.setHidden(True)

        #button connects
        self.nextBTN.clicked.connect(self.nextFn)
        self.backBTN.clicked.connect(self.backFn)
        self.meshBTN.clicked.connect(self.meshFn)
        self.snapBTN.clicked.connect(self.snapFn)
        self.closeBTN.clicked.connect(self.close)

        self.snapVis(hide=True)

        self.refreshUI()

        #show joint movers and sdks
        cmds.showHidden(self.currentFace.jointMovers)
        cmds.showHidden(self.currentFace.sdks)
    def __init__(self, parent=getMayaWindow(), mode='choose', edit=0):
        QtGui.QMainWindow.__init__(self, parent)

        self.edit = edit
        self.currentFace = None

        #TODO this won't work with multiple faces
        for f in utils.getUType('faceModule'):
            print 'poseChooser_UI: Face initialized from:', f
            self.currentFace = face.FaceModule(faceNode=f)

        ### BUILD USER INTERFACE
        ##############################

        #create/set a central widget
        wid = QtGui.QWidget()
        self.setCentralWidget(wid)

        #setArt v2 stylesheet
        utils.setArtV2StyleSheet(wid, imageDirectory='/art2images')

        self.resize(400, 514)

        #top face module picker
        self.label = QtGui.QLabel(self)
        self.label.setText("FacialNode:")
        self.horizontalLayout = QtGui.QHBoxLayout()
        self.horizontalLayout.setSpacing(2)
        self.label.setMaximumSize(QtCore.QSize(78, 16777215))
        self.horizontalLayout.addWidget(self.label)
        self.currentFacialNodeCMB = QtGui.QComboBox(self)
        self.horizontalLayout.addWidget(self.currentFacialNodeCMB)

        #header and instruction
        self.h2 = QtGui.QHBoxLayout()
        self.attachJointLBL = QtGui.QLabel(self)

        if self.edit:
            self.attachJointLBL.setText("Edit Face Poses")
        else:
            self.attachJointLBL.setText("Available Face Poses")

        font = self.attachJointLBL.font()
        font.setBold(True)
        font.setPointSize(13)
        self.attachJointLBL.setFont(font)

        #options horizontal layout
        self.optionsLayout = QtGui.QHBoxLayout()

        if self.edit:
            #zero out button
            self.zeroBTN = QtGui.QPushButton(self)
            self.zeroBTN.setText('ZERO ALL')
            self.zeroBTN.setMaximumSize(QtCore.QSize(75, 50))

            #mirror edit out button
            self.mirrorPoseBTN = QtGui.QPushButton(self)
            self.mirrorPoseBTN.setText('MIRROR SELECTED POSE')

            #checkboxes
            self.moveMirrorsCHK = QtGui.QCheckBox(self)
            self.moveMirrorsCHK.setText('Sync Movement of Mirror Poses')

        self.info = QtGui.QLabel(self)
        if self.edit:
            self.info.setText("Check and edit the facial poses to make them better match your character")
        else:
            self.info.setText("These poses are available for your character's facial rig, based on the Facial Joint Movers you have selected")
        self.info.setWordWrap(1)

        self.h2.setSpacing(2)
        self.h2.addWidget(self.attachJointLBL)


        #main vertical layout
        self.verticalLayout = QtGui.QVBoxLayout(wid)
        self.verticalLayout.addLayout(self.horizontalLayout)
        self.verticalLayout.addLayout(self.h2)
        self.verticalLayout.addWidget(self.info)

        #pose list
        self.poseList = QtGui.QListWidget(self)
        self.verticalLayout.addWidget(self.poseList)

        QtCore.QMetaObject.connectSlotsByName(self)

        self.setWindowTitle("Available Facial Poses")

        if self.edit:
            #options area
            self.verticalLayout.addWidget(self.moveMirrorsCHK)
            self.verticalLayout.addLayout(self.optionsLayout)
            self.optionsLayout.addWidget(self.zeroBTN)
            self.optionsLayout.addWidget(self.mirrorPoseBTN)


        #continue button
        self.continueBTN = QtGui.QPushButton(self)
        self.continueBTN.setText('>> Continue >>')
        self.continueBTN.setObjectName("blueButton")
        font = self.continueBTN.font()
        font.setBold(True)
        font.setPointSize(12)
        self.continueBTN.setFont(font)

        #back button
        self.backBTN = QtGui.QPushButton(self)
        self.backBTN.setText('<< Back <<')
        self.backBTN.setObjectName("blueButton")
        font = self.backBTN.font()
        font.setBold(True)
        font.setPointSize(12)
        self.backBTN.setFont(font)

        #button layout on bottom
        self.h3 = QtGui.QHBoxLayout()
        self.verticalLayout.addLayout(self.h3)
        self.h3.setSpacing(2)
        self.h3.addWidget(self.backBTN)
        self.h3.addWidget(self.continueBTN)

        #self.verticalLayout.setContentsMargins(2,2,2,2)
        self.verticalLayout.setSpacing(3)

        #Make SDK transforms editable
        #hide facial mask controls and mask

        #show special eye and jaw movers

        #unhide jointMovers, make LRAs unselectable

        #connections
        self.currentFacialNodeCMB.currentIndexChanged.connect(self.faceChangedFn)
        #self.moverTree.itemClicked.connect(self.check_status)
        #self.continueBTN.pressed.connect(self.continueFn)

        #set the mask
        self.mask = face.FaceMask
        self.mask.active = True

        ### CONNECTS
        if self.edit:
            self.zeroBTN.pressed.connect(self.zeroAllFn)

        ### FILL UI
        ##############################

        self.refreshUI()
    def __init__(self, parent=getMayaWindow(), debug=0):
        QtGui.QMainWindow.__init__(self, parent)
        
        self.currentFace = None
        
        #facial folder
        facialDir = os.path.dirname(__file__)

        for f in utils.getUType('faceModule'):
            print 'jointMover_UI: Face initialized from:', f
            self.currentFace = face.FaceModule(faceNode=f)
        
        ### BUILD USER INTERFACE
        ##############################
        
        #create/set a central widget
        wid = QtGui.QWidget()
        self.setCentralWidget(wid)
        
        #setArt v2 stylesheet
        utils.setArtV2StyleSheet(wid, imageDirectory='/art2images')
        
        self.resize(315, 514)
        
        #top face module picker
        self.label = QtGui.QLabel(self)
        self.label.setText("FacialNode:")
        self.horizontalLayout = QtGui.QHBoxLayout()
        self.horizontalLayout.setSpacing(2)
        self.label.setMaximumSize(QtCore.QSize(78, 16777215))
        self.horizontalLayout.addWidget(self.label)
        self.currentFacialNodeCMB = QtGui.QComboBox(self)
        self.horizontalLayout.addWidget(self.currentFacialNodeCMB)
        
        #attachment joint
        self.h2 = QtGui.QHBoxLayout()
        self.attachJointLBL = QtGui.QLabel(self)
        self.attachJointLBL.setText("Face Attachment Joint:")
        self.h2.setSpacing(2)
        self.h2.addWidget(self.attachJointLBL)
        self.attachJointLINE = QtGui.QLineEdit(self)
        self.h2.addWidget(self.attachJointLINE)
        
        #main vertical layout
        self.verticalLayout = QtGui.QVBoxLayout(wid)
        self.verticalLayout.addLayout(self.horizontalLayout)
        self.verticalLayout.addLayout(self.h2)
        
        #joint mover tree
        self.moverTree = QtGui.QTreeWidget(self)
        self.moverTree.setObjectName("treeWidget")
        self.moverTree.headerItem().setText(0, "1")
        self.verticalLayout.addWidget(self.moverTree)
        self.moverTree.setHeaderHidden(True)
        
        QtCore.QMetaObject.connectSlotsByName(self)
        
        self.setWindowTitle("Select Joint Movers")

        
        #snap button
        self.continueBTN = QtGui.QPushButton(self)
        self.continueBTN.setText('>> Continue >>')
        self.continueBTN.setObjectName("blueButton")
        font = self.continueBTN.font()
        font.setBold(True)
        font.setPointSize(12)
        self.continueBTN.setFont(font)
        
        #load button
        self.loadBTN = QtGui.QPushButton(self)
        self.loadBTN.setText('Template...')
        font = self.loadBTN.font()
        font.setBold(True)
        font.setPointSize(12)
        self.loadBTN.setFont(font)
        self.loadBTN.setMaximumSize(QtCore.QSize(75, 16777215))
        
        #button layout on bottom
        self.h3 = QtGui.QHBoxLayout()
        self.verticalLayout.addLayout(self.h3)
        self.h3.setSpacing(2)
        self.h3.addWidget(self.loadBTN)
        self.h3.addWidget(self.continueBTN)
        
        #connections
        self.moverTree.itemClicked.connect(self.check_status)
        self.continueBTN.pressed.connect(self.continueFn)
        
        #set the mask
        self.mask = self.currentFace.faceMask
        self.mask.active = True
        cmds.showHidden(self.currentFace.sdks)
        
        ### FILL UI
        ##############################
        
        self.attachJointLINE.setText('head')
        self.refreshUI()
예제 #6
0
    def __init__(self, parent=getMayaWindow(), debug=0):

        QtGui.QMainWindow.__init__(self, parent)

        #facial folder

        #facialDir = os.path.dirname(__file__)

        ### BUILD USER INTERFACE

        ##############################

        #create/set a central widget

        wid = QtGui.QWidget()

        self.setCentralWidget(wid)

        #setArt v2 stylesheet

        utils.setArtV2StyleSheet(wid, imageDirectory='/art2images')

        self.verticalLayout = QtGui.QVBoxLayout(wid)

        self.verticalLayout.setSpacing(2)

        #top face module picker

        self.label = QtGui.QLabel(self)

        self.label.setText("FacialNode:")

        self.horizontalLayout = QtGui.QHBoxLayout()

        self.horizontalLayout.addWidget(self.label)

        self.currentFacialNodeCMB = QtGui.QComboBox(self)

        self.horizontalLayout.addWidget(self.currentFacialNodeCMB)

        self.resize(530, 390)

        self.verticalLayout.addLayout(self.horizontalLayout)

        self.page1 = QtGui.QFrame()

        self.page1.setMinimumSize(QtCore.QSize(530, 380))

        self.page1.setMaximumSize(QtCore.QSize(530, 380))

        self.page2 = QtGui.QFrame()

        self.page2.setMinimumSize(QtCore.QSize(530, 380))

        self.page2.setMaximumSize(QtCore.QSize(530, 380))

        self.page3 = QtGui.QFrame()

        self.page3.setMinimumSize(QtCore.QSize(530, 380))

        self.page3.setMaximumSize(QtCore.QSize(530, 380))

        self.page4 = QtGui.QFrame()

        self.page4.setMinimumSize(QtCore.QSize(530, 380))

        self.page4.setMaximumSize(QtCore.QSize(530, 380))

        self.stackedWidget = QtGui.QStackedWidget()

        self.stackedWidget.addWidget(self.page1)

        self.stackedWidget.addWidget(self.page2)

        self.stackedWidget.addWidget(self.page3)

        self.stackedWidget.addWidget(self.page4)

        self.verticalLayout.addWidget(self.stackedWidget)

        #set the image backdrops

        image = (os.path.dirname(__file__) +
                 '\\process_splash_align_mask.png').replace('\\', '/')

        self.page1.setStyleSheet("background-image: url(" + image + ");")

        image = (os.path.dirname(__file__) +
                 '\\process_splash_align_eyes.png').replace('\\', '/')

        self.page2.setStyleSheet("background-image: url(" + image + ");")

        image = (os.path.dirname(__file__) +
                 '\\process_splash_snap.png').replace('\\', '/')

        self.page3.setStyleSheet("background-image: url(" + image + ");")

        image = (os.path.dirname(__file__) +
                 '\\process_splash_goodbye.png').replace('\\', '/')

        self.page4.setStyleSheet("background-image: url(" + image + ");")

        #Add next button

        self.nextBTN = QtGui.QPushButton(self)

        self.nextBTN.setText('NEXT')

        font = QtGui.QFont()

        font.setPointSize(12)

        font.setBold(True)

        self.nextBTN.setFont(font)

        self.nextBTN.setGeometry(420, 300, 90, 25)

        #Add back button

        self.backBTN = QtGui.QPushButton(self)

        self.backBTN.setText('BACK')

        font = QtGui.QFont()

        font.setPointSize(12)

        font.setBold(True)

        self.backBTN.setFont(font)

        self.backBTN.setGeometry(420, 330, 90, 25)

        self.backBTN.setHidden(True)

        self.stackedWidget.setCurrentIndex(0)

        #build and hide the 'mesh chooser'

        self.meshBTN = QtGui.QPushButton(self)

        self.meshBTN.setText('<<')

        font = QtGui.QFont()

        font.setPointSize(12)

        font.setBold(True)

        self.meshBTN.setFont(font)

        self.meshBTN.setGeometry(0, 0, 25, 25)

        #build and hide the 'mesh chooser'

        self.snapBTN = QtGui.QPushButton(self)

        self.snapBTN.setText('SNAP')

        font = QtGui.QFont()

        font.setPointSize(12)

        font.setBold(True)

        self.snapBTN.setFont(font)

        self.snapBTN.setGeometry(300, 330, 90, 25)

        self.meshLBL = QtGui.QLabel(self)

        self.meshLBL.setText("Facial Mesh:")

        self.meshEdit = QtGui.QLineEdit(self)

        self.hMeshLayout = QtGui.QHBoxLayout()

        self.hMeshLayout.addWidget(self.meshLBL)

        self.hMeshLayout.addWidget(self.meshEdit)

        self.hMeshLayout.addWidget(self.meshBTN)

        self.hMeshLayout.setGeometry(QtCore.QRect(100, 300, 300, 25))

        #close button

        self.closeBTN = QtGui.QPushButton(self)

        self.closeBTN.setText(
            'Thank you Masky,\nI will alsways remember you..')

        font = QtGui.QFont()

        font.setPointSize(16)

        font.setBold(True)

        self.closeBTN.setFont(font)

        self.closeBTN.setGeometry(25, 250, 500, 70)

        self.closeBTN.setHidden(True)

        #button connects

        self.nextBTN.clicked.connect(self.nextFn)

        self.backBTN.clicked.connect(self.backFn)

        self.meshBTN.clicked.connect(self.meshFn)

        self.snapBTN.clicked.connect(self.snapFn)

        self.closeBTN.clicked.connect(self.close)

        self.snapVis(hide=True)

        self.refreshUI()

        #show joint movers and sdks

        cmds.showHidden(self.currentFace.jointMovers)

        cmds.showHidden(self.currentFace.sdks)