Example #1
0
    def __init__(self, gen, config, preset_dir):
        # These will be set later (might consider removing them?)
        self.deviceIP = ""
        self.devicePort = 0
        self.applicationPort = 0
        self.config = config
        self.preset_dir = preset_dir

        self.generator = gen
        try:
            self.__root = Tk()
            screen_w = self.__root.winfo_screenwidth()
            screen_h = self.__root.winfo_screenheight()
            window_w = self.config["window_width"]
            window_h = self.config["window_height"]
            off_w = (screen_w - window_w) / 2
            off_h = (screen_h - window_h) / 4
            # use 4 instead of 2
            self.__root.geometry("%dx%d+%d+%d" % (window_w, window_h, off_w, off_h))

            # Delete Window callback
            self.__root.protocol("WM_DELETE_WINDOW", self.exitCallback)
            self.__window = self.__root
            self.__root.wm_title("iPhoneComposer")
            self.__root.option_add("*tearOff", FALSE)

            # Create menu
            menubar = Menu(self.__root)
            preset_handlers = self.makeShowPresetHandlers()
            self.__root.config(menu=menubar)
            optionsMenu = Menu(menubar)
            menubar.add_cascade(label="Options", menu=optionsMenu)
            optionsMenu.add_command(label="Show internal state", command=self.showInternalState)
            presetMenu = Menu(menubar)
            menubar.add_cascade(label="Presets", menu=presetMenu)
            for i in xrange(12):
                presetMenu.add_command(label="Show preset %d state" % (i + 1), command=preset_handlers[i])

            # Add an output list that may be accessed publicly
            mainframe = Frame(self.__window, bd=2, relief=SUNKEN, width=500, height=400)

            # Output frame
            outputframe = Frame(mainframe, relief=SUNKEN, width=500, height=200)
            self.outputscrollbar = Scrollbar(outputframe)
            self.outputscrollbar.pack(side=RIGHT, fill=Y)
            Label(outputframe, text="Output").pack(side=TOP)
            self.output = Text(outputframe, bd=0, yscrollcommand=self.outputscrollbar.set)
            self.output.pack(pady=(10, 10), padx=(10, 10))
            self.output.configure(yscrollcommand=self.outputscrollbar.set)
            self.outputscrollbar.configure(command=self.output.yview)
            outputframe.pack_propagate(0)
            outputframe.pack(fill=None, expand=False)

            # OSC frame
            oscframe = Frame(mainframe, relief=SUNKEN, width=500, height=200)
            self.oscScrollbar = Scrollbar(oscframe)
            self.oscScrollbar.pack(side=RIGHT, fill=Y)
            Label(oscframe, text="OSC").pack(side=TOP)
            self.osc = Text(oscframe, bd=0, yscrollcommand=self.oscScrollbar.set)
            self.osc.pack(pady=(10, 10), padx=(10, 10))
            self.osc.configure(yscrollcommand=self.oscScrollbar.set)
            self.oscScrollbar.configure(command=self.osc.yview)
            oscframe.pack_propagate(0)
            oscframe.pack(fill=None, expand=False)

            mainframe.pack_propagate(0)
            mainframe.grid(row=1, column=0)

            # Create the buttons
            buttonPane = PanedWindow(self.__window, orient=VERTICAL)
            buttonPane.grid(row=2, column=0)
            self.__createButtons(buttonPane)
            buttonPane.pack_propagate(0)

            # Create the connection fields
            connectPane = PanedWindow(self.__window, orient=VERTICAL)
            connectPane.grid(row=3, column=0)
            self.__createConnect(connectPane)

        except:
            t, v, tb = sys.exc_info()
            traceback.print_exception(t, v, tb)
            self.__root.quit()
            quit()