Exemple #1
0
class SL_creator(Frame):
    def __init__(self, parent):
        Frame.__init__(self)
        self.parent = parent
        self.variable = StringVar(self)
        self.v = StringVar(self)
        self.level = StringVar(self)
        self.angle = StringVar(self)
        self.initUI()

    def initUI(self):
        self.parent.title("Social Link Creator")
        self.grid(row=0, column=0)

        Style().configure("TButton",
                          padding=(0, 5, 0, 5),
                          background='WhiteSmoke')

        list = json_reader.data_list("arcanas")
        self.variable.set("Select Arcana")
        w = OptionMenu(self, self.variable, *list, command=self.showText)
        w.grid(row=0, column=1)

        select = Button(self, text="Select", command=self.context)
        select.grid(row=1, column=1)

        back = Button(self, text="Back", command=self.back)
        back.grid(row=2, column=1)

        self.v.set("")
        self.text = Label(self, textvariable=self.v, wraplength=500)
        self.text.grid(row=0, column=0, rowspan=3)

    def context(self):
        if self.variable.get() == "Select Arcana":
            return
        levs = []
        for x in range(1, 11):
            levs.append("Level " + str(x))
        self.level.set(levs[0])
        self.levelOM = OptionMenu(self, self.level, *levs)
        self.levelOM.grid(row=1, column=2, columnspan=2)

        self.angs = []
        try:
            tempLink = json_reader.readLink(self.variable.get())
            print tempLink
            print self.variable.get()
            for decon in tempLink["cutscenes"]:
                self.angs.append("Angle " +
                                 str(decon)[str(decon).index("_") + 1:])
        except:
            pass
        if not self.angs:
            self.angs.append("No angles")
        self.angle.set(self.angs[0])
        self.angleOM = OptionMenu(self, self.angle, *self.angs)
        self.angleOM.grid(row=2, column=2, columnspan=2)

        self.addAngB = Button(self, text="Add Angle", command=self.addAngle)
        self.addAngB.grid(row=3, column=2)

        self.newAng = Text(self, height=1, width=5)
        self.newAng.grid(row=3, column=3)

        self.go = Button(self, text="Go", command=self.begin)
        self.go.grid(row=4, column=2, columnspan=2)

    def addAngle(self):
        try:
            (int)(self.newAng.get(1.0, END))
            if self.angs[0] == "No angles":
                self.angleOM["menu"].delete(0, "end")
            self.angleOM["menu"].add_command(
                label="Angle " + self.newAng.get(1.0, END),
                command=Tkinter._setit(
                    self.angle,
                    ("Angle " + self.newAng.get(1.0, END)).replace("\n", "")))
            self.angle.set(
                ("Angle " + self.newAng.get(1.0, END)).replace("\n", ""))
            self.newAng.delete(1.0, END)
        except:
            popup("The Angle must be an integer", "Critical")
            print "Angle must be an integer"

    def showText(self, somthing):
        self.v.set(json_reader.readArcDesc(self.variable.get()))
        self.destroyContext()

    def destroyContext(self):
        try:
            self.levelOM.destroy()
            self.angleOM.destroy()
            self.addAngB.destroy()
            self.newAng.destroy()
            self.go.destroy()
        except:
            pass

    def begin(self):
        if self.angle.get() == "No angles":
            popup(
                "An Angle must be selected.\nCreate angles by entering a number in the text box below and clicking \"Add Angle\"",
                "Critical")
            return
        enter_level = self.level.get()[self.level.get().index(" ") + 1:]
        print enter_level
        enter_angle = self.angle.get()[self.angle.get().index(" ") + 1:]
        print enter_angle
        print "Entered SL creation mode for arcana " + self.variable.get()
        self.parent.withdraw()
        self.destroyContext()
        sl = slgui.SLFrame(self.parent, self.variable.get(),
                           (int)(enter_level), (int)(enter_angle))

    def back(self):
        print "Returned to main screen"
        app = Base(self.parent)
        self.destroy()
Exemple #2
0
        class A_DWI:
            def __init__(self, container, frame, label='', text='', row=0, column=0):
                self.container = container
                self.is_b0 = BooleanVar(container.parent)
                self.is_dw = BooleanVar(container.parent)
                self.column = column
                self.direction = StringVar(container.parent)

                self.label_from = Label(frame, text='from')
                self.text_from = Entry(frame)
                self.text_from.insert(0, text)
                self.button_file_from = Button(frame, text='...', command=lambda:filenameDialog_text(self.text_from))
                self.button_rm = Button(frame, text='remove', command=self.click_remove)
                self.radio_ap = Radiobutton(frame, text='AP', variable=self.direction, value='AP', command=self.set_direction)
                self.radio_pa = Radiobutton(frame, text='PA', variable=self.direction, value='PA', command=self.set_direction)

                self.label_to = Label(frame, text='to')
                self.text_to = Entry(frame)
                #self.text_to.insert(0, text)
                self.button_file_to = Button(frame, text='Gen', command=self.set_filename_to)
                self.check_b0 = Checkbutton(frame, text='B0',   variable=self.is_b0)
                self.check_dw = Checkbutton(frame, text='DWI',  variable=self.is_dw)

                self.button_up = Button(frame, text='up', width=3, command=self.click_up)
                self.button_dn = Button(frame, text='down', width=3, command=self.click_dn)

                self.row = -1
                self.change_row(row)
                if text != '':
                    self.set_appa()
                    self.set_filename_to()

            def prefix(self):
                return self.container.parent.prefix()

            def set_direction(self):
                pass

            def get_dwi_filenames(self):
                '''
                :return: [('from', 'to'), ('from', 'to')]
                '''
                filename_from = self.text_from.get()
                filename_to = self.text_to.get()
                if self.is_dw.get():
                    rtn = [ [filename_from, filename_to] ]
                    filename_b_from = filename_wo_ext(filename_from)
                    filename_b_to = filename_wo_ext(filename_to)
                    rtn.append( [filename_b_from+'.bval', filename_b_to+'.bval'] )
                    rtn.append( [filename_b_from+'.bvec', filename_b_to+'.bvec'] )
                    return rtn
                return []

            def get_b0_filename(self):
                '''
                :return: [('from', 'to')]
                '''
                filename_from = self.text_from.get()
                filename_to = self.text_to.get()
                ext = extname(filename_to)
                if self.is_b0.get():
                    if self.is_dw.get():
                        filename_to = '%s_B0%s' % (filename_wo_ext(filename_to), ext)
                    return [ [filename_from, filename_to] ]
                return []

            def set_appa(self):
                filename_from = self.text_from.get()
                basename_from = os.path.basename(filename_from)
                basename_b_from = filename_wo_ext(basename_from)
                if 'pa' in basename_b_from.lower():
                    self.direction.set('PA')
                elif 'ap' in basename_b_from.lower():
                    self.direction.set('AP')
                else:
                    pass

            def set_filename_to(self, middle=None):
                filename_from = self.text_from.get()
                basename_from = os.path.basename(filename_from)
                number = os.path.dirname(filename_from).split('/')[-1].split('_')[0]
                if number == '':
                    number = str(self.row)
                else:
                    try:
                        int(number)
                    except:
                        number = str(self.row)


                ext = extname(basename_from)
                intermediate = self.direction.get()
                if intermediate == '':
                    intermediate = 'DWI'

                if self.is_b0.get() and not self.is_dw.get():
                    intermediate += '_B0'

                self.text_to.delete(0, len(self.text_to.get()))
                self.text_to.insert(0, '%s%s_%s%s' % (self.prefix(), number, intermediate, ext))

            def change_row(self, row):
                if self.row == row:
                    return
                self.row = row
                i = 2*row
                j = self.column
                j += 0; self.button_up.grid(row=i, column=j)
                j += 1; self.label_from.grid(row=i, column=j)
                j += 1; self.text_from.grid(row=i, column=j, sticky=EW)
                j += 1; self.button_file_from.grid(row=i, column=j)
                j += 1; self.button_rm.grid(row=i, column=j)
                j += 1; self.radio_ap.grid(row=i, column=j)
                j += 1; self.radio_pa.grid(row=i, column=j)
                i += 1
                j = 0
                j += 0; self.button_dn.grid(row=i, column=j)
                j += 1; self.label_to.grid(row=i, column=j)
                j += 1; self.text_to.grid(row=i, column=j, sticky=EW)
                j += 1; self.button_file_to.grid(row=i, column=j)
                j += 1
                j += 1; self.check_b0.grid(row=i, column=j)
                j += 1; self.check_dw.grid(row=i, column=j)

            def click_remove(self):
                self.container.remove(self.row)

                self.button_up.destroy()
                self.label_from.destroy()
                self.text_from.destroy()
                self.button_file_from.destroy()
                self.button_rm.destroy()
                self.radio_ap.destroy()
                self.radio_pa.destroy()
                self.button_dn.destroy()
                self.label_to.destroy()
                self.text_to.destroy()
                self.button_file_to.destroy()
                self.check_b0.destroy()
                self.check_dw.destroy()

            def click_up(self):
                self.container.up(self.row)
            def click_dn(self):
                self.container.dn(self.row)