Beispiel #1
0
    def __init__(self, parent, lineno):
        self.logger = Logger(self, Logger.INFO)
        self.logger.debug("constructor")
        tkinter.Frame.__init__(self, parent)

        self.data_store = DataStore.get_instance()
        self.index = lineno

        self.name = "Hole %d" % (lineno + 1)
        self.line_name = tkinter.Label(self, text=self.name, width=12)
        self.line_name.grid(row=lineno + 1, column=0, sticky=tkinter.W)

        self.inter_ctl = tkinter.Entry(self,
                                       width=5,
                                       validate="focusout",
                                       validatecommand=self.change_interval)
        self.inter_ctl.bind('<Return>', self.change_interval)
        self.inter_ctl.bind('<Tab>', self.change_interval)
        self.inter_ctl.grid(row=lineno + 1, column=1)

        self.note_ctl_txt = tkinter.StringVar()
        self.note_ctl = tkinter.Label(self,
                                      textvariable=self.note_ctl_txt,
                                      width=12)
        self.note_ctl.grid(row=lineno + 1, column=2)

        self.freq_ctl_txt = tkinter.StringVar()
        self.freq_ctl = tkinter.Label(self,
                                      textvariable=self.freq_ctl_txt,
                                      width=12)
        self.freq_ctl.grid(row=lineno + 1, column=3)

        self.hole_ctl = HoleSizeWidgit(self, lineno)
        self.hole_ctl.config(padx=25)
        self.hole_ctl.grid(row=lineno + 1, column=4)

        self.locat_ctl_txt = tkinter.StringVar()
        self.locat_ctl = tkinter.Label(self,
                                       textvariable=self.locat_ctl_txt,
                                       width=12)
        self.locat_ctl.grid(row=lineno + 1, column=5)

        self.diff_ctl_txt = tkinter.StringVar()
        self.diff_ctl = tkinter.Label(self,
                                      textvariable=self.diff_ctl_txt,
                                      width=12)
        self.diff_ctl.grid(row=lineno + 1, column=6)

        self.cutoff_ctl_txt = tkinter.StringVar()
        self.cutoff_ctl = tkinter.Label(self,
                                        textvariable=self.cutoff_ctl_txt,
                                        width=12)
        self.cutoff_ctl.grid(row=lineno + 1, column=7)

        self.set_state()

        self.logger.debug("end constructor")
Beispiel #2
0
def mm_to_in(val, round=False):
    '''
    Simply convert the value given from MM to inches and round to the increment
    '''
    logger.debug(sys._getframe().f_code.co_name)
    from data_store import DataStore as ds  # avoid a circular dependency
    data = ds.get_instance()
    if round:
        return rnd(val / 25.4, data.internal_data['hole_in_inc'])
    else:
        return val / 25.4
    def __init__(self, master=None):
        self.logger = Logger(self, Logger.INFO)
        self.logger.debug(sys._getframe().f_code.co_name)

        tkinter.Frame.__init__(self, master)
        self.master = master
        self.master.protocol("WM_DELETE_WINDOW", self.close_window)

        self.general_params = tkinter.LabelFrame(self.master, text="General Parameters")
        self.general_params.pack()
        self.output_params = tkinter.LabelFrame(self.master, text="Output Parameters")
        self.output_params.pack(fill="both", expand="yes")

        # set up some default values
        #self.current_file_name = os.path.join(os.getcwd(), "untitled.wis")

        self.data = DataStore.get_instance()
        self.logger.debug("data store: %s"%(str(self.data)))

        self.calc = Calculator()
        self.upper_frame = UpperFrame(self.general_params)
        self.lower_frame = LowerFrame(self.output_params)

        menu = tkinter.Menu(self.master, tearoff=0)
        self.master.config(menu=menu)
        #self.master.geometry("750x450")

        fileMenu = tkinter.Menu(menu, tearoff=0)
        fileMenu.add_command(label="Load", command=self.loadCommand)
        fileMenu.add_command(label="Save", command=self.saveCommand)
        fileMenu.add_command(label="Save As", command=self.saveasCommand)
        fileMenu.add_command(label="Export", command=self.exportCommand)
        fileMenu.add_separator()
        fileMenu.add_command(label="Quit", command=self.close_window)
        menu.add_cascade(label="File", menu=fileMenu)

        settingsMenu = tkinter.Menu(menu, tearoff=0)
        settingsMenu.add_command(label="Constants", command=self.constCommand)
        settingsMenu.add_command(label="Embouchure", command=self.emboCommand)
        settingsMenu.add_command(label="Notes", command=self.notesCommand)
        menu.add_cascade(label="Settings", menu=settingsMenu)

        editMenu = tkinter.Menu(menu, tearoff=0)
        editMenu.add_command(label="Help", command=self.helpCommand)
        editMenu.add_command(label="About", command=self.aboutCommand)
        editMenu.add_command(label="Dump", command=self.dumpInternalData)
        menu.add_cascade(label="Help", menu=editMenu)

        tkinter.Label(self.master, text="Tilbury Woodwinds Whistle Calculator",
                    font=("Helvetica", 14)).pack()

        self.upper_frame.create_frame()
        self.lower_frame.update_frame()
Beispiel #4
0
    def __init__(self):
        # constant data
        self.logger = Logger(self, Logger.INFO)
        self.logger.debug("enter constructor")
        #self.configuration = Configuration.get_instance()
        self.data = DataStore.get_instance()
        self.logger.debug("end constructor")
        register_event("CALCULATE_EVENT", self.do_calc)

        # self.isound = self.data.get_vsound_in()
        # self.msound = self.data.get_vsound_mm()

        self.max_loop = 12
        self.max_delta = 0.0001
    def __init__(self, master):
        self.logger = Logger(self, Logger.INFO)
        self.logger.debug("constructor")

        self.data_store = DataStore.get_instance()
        self.master = master
        #self.line_data = []
        self.line_widgits = []
        register_event('UPDATE_LOWER_FRAME_EVENT', self.update_frame)
        register_event('UPDATE_LINES_EVENT', self.set_state)
        register_event('UPDATE_NOTES_EVENT', self.update_notes)
        register_event('CHANGE_UNITS_EVENT', self.change_units)

        tkinter.Label(self.master, width=12,
                      text="Hole").grid(row=0, column=0, sticky=tkinter.W)
        tkinter.Label(self.master, width=5,
                      text="Interval").grid(row=0, column=1, sticky=tkinter.W)
        tkinter.Label(self.master, width=10,
                      text="Note").grid(row=0, column=2, sticky=tkinter.W)
        tkinter.Label(self.master, width=10,
                      text="Frequency").grid(row=0, column=3, sticky=tkinter.W)
        tkinter.Label(self.master, width=18,
                      text="Hole Size").grid(row=0, column=4, sticky=tkinter.W)
        tkinter.Label(self.master, width=11,
                      text="Hole Location").grid(row=0,
                                                 column=5,
                                                 sticky=tkinter.W)
        tkinter.Label(self.master, width=12,
                      text="Hole Diff").grid(row=0, column=6, sticky=tkinter.W)
        tkinter.Label(self.master, width=12,
                      text="Cutoff Freq").grid(row=0,
                                               column=7,
                                               sticky=tkinter.W)

        # create all of the lines
        for n in range(12):
            lw = LineWidgit(self.master, n)
            self.line_widgits.append(lw)

        for idx in range(self.data_store.get_number_holes()):
            self.line_widgits[idx].grid(row=idx + 1,
                                        column=0,
                                        columnspan=8,
                                        sticky=tkinter.W)
            self.line_widgits[idx].set_state()

        self.logger.debug("end constructor")
    def __init__(self, parent, line):
        '''
        This is a specialized widget to track the hole diameter. It displays 
        the value according to the state. It has up and down buttons used to
        increment or decrement the value. 
        '''
        self.logger = Logger(self, Logger.INFO)
        self.logger.debug("constructor")
        self.index = line

        tkinter.Frame.__init__(self, parent)
        self.data_store = DataStore.get_instance()

        BITMAP_UP = """
            #define up_width 9
            #define up_height 5
            static unsigned char up_bits[] = {
                0x10, 0x00, 0x38, 0x00, 0x7c, 0x00, 0xfe, 0x00, 0xff, 0x01 };
            """

        BITMAP_DOWN = """
            #define down_width 9
            #define down_height 5
            static unsigned char down_bits[] = {
                0xff, 0x01, 0xfe, 0x00, 0x7c, 0x00, 0x38, 0x00, 0x10, 0x00 };
        """

        self.entry = tkinter.Entry(self, width=25-18)
        self.entry.grid(row=0, column=1, rowspan=2)

        self.bitmap_up = tkinter.BitmapImage(data=BITMAP_UP)
        self.b1 = tkinter.Button(self, text="up", image=self.bitmap_up, command=self.incr_command)
        self.b1.grid(row=0, column=2)
        self.b1.config(width=9, height=5)

        self.bitmap_down = tkinter.BitmapImage(data=BITMAP_DOWN)
        self.b2 = tkinter.Button(self, image=self.bitmap_down, command=self.decr_command)
        self.b2.grid(row=1, column=2)
        self.b2.config(width=9, height=5)
        
        register_event("UPDATE_HOLE_EVENT", self.update_val)
        self.set_state()

        self.logger.debug("constructor return")
 def __init__(self, master):
     self.logger = Logger(self, Logger.INFO)
     self.logger.debug("constructor")
     self.master = master
     self.data_store = DataStore.get_instance()
     register_event("UPDATE_UPPER_EVENT", self.set_state)