def __init__(self, master, param, editor, range_ = 1000, degree = 2, clip = None): super(ReciprocalSlider, self).__init__(param, editor, master) r = (1.0/range_,range_) self.degree = degree self.inv_degree = 1.0/degree self.range_ = r if clip: self._clip = clip else: self._clip = self.range_ self.var_aspect = tk.StringVar() self.var_sign = tk.IntVar() self.var_invert = tk.IntVar() self.var_aspect.set(self._clip[0]) self.var_sign.set(0) self.var_invert.set(0) s = factory.scale(master, from_ = 1, to=0, resolution = 0.005, command= self.callback, var = self.var_aspect) cb_sign = factory.checkbutton(master, "-", self.var_sign, command = self.callback) cb_invert = factory.checkbutton(master, "1/n", self.var_invert, command = self.callback) self._widgets["slider"] = s self._widgets["checkbutton-sign"] = cb_sign self._widgets["checkbutton-invert"] = cb_invert self._editor = editor self._param = param s.bind("<Enter>", self.enter_callback)
def _layout_common_widgets(self): lab_head = factory.label(self.canvas,"Porgram Mutation") lab_head.grid(row=0, column=0, columnspan=4, pady=16, padx=16) lab_help = factory.label(self.canvas,"P = Probability of change, R = Maximum change.") lab_help.grid(row=0,column=4,columnspan=4, sticky='w', padx=16) frame = factory.frame(self.canvas) frame.grid(row=1,column=0,rowspan=15, columnspan=4,pady=16) b_mutate = factory.button(frame,"Mutate",command=self.mutate) lab_slot = factory.label(frame,"Slot") sb_slot = factory.int_spinbox(frame,self._var_fill_start,from_=0,to=127) sb_slot.config(width=4) sb_slot.config(command=self._link_slots) b_reset = factory.button(frame,"Reset",command=self.reset) b_zero = factory.button(frame,"Zero",command=self.zero) b_max = factory.button(frame,"Max",command=self.max_change) b_mutate.grid(row=1,column=0, columnspan=3,sticky="ew", padx=4, pady=6) lab_slot.grid(row=2,column=0,sticky="w", padx=4) sb_slot.grid(row=2,column=2,sticky="e", padx=4, pady=6) # Fill controls lab_fill = factory.label(frame,"Fill to:") sb_end = factory.int_spinbox(frame,self._var_fill_end,from_=0,to=127) sb_end.config(width=4) cb_progressive = factory.checkbutton(frame,"+", var=self._var_progressive_fill) lab_fill.grid(row=5,column=0,sticky="e",padx=4,pady=6) cb_progressive.grid(row=6,column=0,sticky="w") sb_end.grid(row=6,column=2,sticky='e') pad1 = factory.padding_label(frame) pad1.grid(row=7,column=0,pady=64) b_reset.grid(row=8,column=0,columnspan=3,sticky="ew", padx=4) b_zero.grid(row=9,column=0,columnspan=3,sticky="ew",padx=4,pady=4) b_max.grid(row=10,column=0,columnspan=3,sticky="ew",padx=4) pad2 = factory.padding_label(frame)
def __init__(self, master, param, editor, text="", values=(0,1), ttip=""): self._var = tk.BooleanVar() self._cb = factory.checkbutton(master, text, self._var, command=self.callback, ttip=ttip) self._values = values super(ControlCheckbutton, self).__init__(param, editor, self._cb)
def __init__(self, master, param, editor): """ Create new OscFrequencyControl object. Widgets are not automatically added to the Tk master. Call the layout method to place widgets using a default layout. ARGS: param - String, SC synth parameter. editor - An instance of TkSubEditor master - Tk container. """ print("DEPRECIATION WARNING: OscFrequencyControl") super(OscFrequencyControl, self).__init__(param, editor, master) octaves = [(3, "+3"),(2, "+2"),(1, "+1"),(0, " 0"), (-1,"-1"),(-2,"-2"),(-3,"-3")] self.var_octave = tk.StringVar() # Octave number -3 ... +3 self.var_transpose = tk.IntVar() # Transpose steps, 0 ... 11 self.var_detune = tk.IntVar() # Detune in cents 0 ... 99 self.var_zero = tk.IntVar() # 0 -> osc != 0, 1 -> osc freq = 0 self.var_octave.set(0) self.var_transpose.set(0) self.var_detune.set(0) self.var_zero.set(0) self._radio_buttons = [] for value, text in octaves: rb = factory.radio(master, text, self.var_octave, value, command = self.callback, ttip = "%s octave" % param) widget_key = "radio-octave-%d" % value self._widgets[widget_key] = rb self._radio_buttons.append(rb) rb.bind("<Enter>", self.enter_callback) s_step = factory.scale(master, from_=11, to=0, var = self.var_transpose, command = self.callback, ttip = "%s transpose (steps)" % param) s_detune = factory.scale(master, from_=99, to=0, var = self.var_detune, command=self.callback, ttip = "%s detune (cents)" % param) cb_zero = factory.checkbutton(master, "Off") cb_zero.config(command=self.callback,var = self.var_zero) ## Labels lab_transpose = factory.label(master, "00") lab_detune = factory.label(master, "000") lab_value = factory.label(master, "1.0000") self._widgets["scale-transpose"] = s_step self._widgets["scale-detune"] = s_detune self._widgets["checkbutton-zero"] = cb_zero self._widgets["label-transpose"] = lab_transpose self._widgets["label-detune"] = lab_detune self._widgets["label-value"] = lab_value self._editor = editor self._param = param s_step.bind("<Enter>", self.enter_callback) s_detune.bind("<Enter>", self.enter_callback)
def __init__(self, master, param, editor, range_=1000, degree=2, clip=None, ttip=""): """ Construct new ExpSlider object. ARGS: master - The parent Tk container. param - String, synth parameter. editor - An instance of TkSubEditor range_ - Float or Int, the maximum value magnitude. The minimum magnitude is always 0. degree - Positive Int of Float, The exponential degree. ttip - String, tool tip text. """ super(ExpSlider, self).__init__(param, editor, master) self.degree = degree self.inv_degree = 1.0 / degree if clip: self._clip = clip else: self._clip = (0, range_) self.var_aspect = tk.StringVar() self.var_sign = tk.IntVar() self.var_aspect.set(0.0) self.var_sign.set(0) self.range_ = [0, range_] ttip = ttip or "%s" % param s = factory.scale(master, from_=1.0, to=0.0, resolution=0.005, command=self.callback, var=self.var_aspect, ttip=ttip) cb = factory.checkbutton(master, "Inv", self.var_sign, command=self.callback) self._widgets["slider"] = s self._widgets["checkbutton-sign"] = cb self._editor = editor self._param = param s.bind("<Enter>", self.enter_callback)
def __init__(self, master, param, editor, text="", values=(0,1), ttip=""): """ Constructs ControlCheckbutton master - Tk container param - string, synth parameter editor - TkSubEditor text - label text values - tuple (a,b), defaults (0,1) ttip -tool tip text, DEPRECIATED """ self._var = tk.BooleanVar() self._cb = factory.checkbutton(master, text, self._var, command=self.callback, ttip=ttip) self._values = values super(ControlCheckbutton, self).__init__(param, editor, self._cb)
def __init__(self, master, param, editor, range_ = 1000, degree = 2, clip=None, ttip=""): """ Construct new ExpSlider object. ARGS: master - The parent Tk container. param - String, synth parameter. editor - An instance of TkSubEditor range_ - Float or Int, the maximum value magnitude. The minimum magnitude is always 0. degree - Positive Int of Float, The exponential degree. ttip - String, tool tip text. """ super(ExpSlider, self).__init__(param, editor, master) self.degree = degree self.inv_degree = 1.0/degree if clip: self._clip = clip else: self._clip = (0, range_) self.var_aspect = tk.StringVar() self.var_sign = tk.IntVar() self.var_aspect.set(0.0) self.var_sign.set(0) self.range_ = [0,range_] ttip = ttip or "%s" % param s = factory.scale(master, from_ = 1.0, to=0.0, resolution = 0.005, command = self.callback, var=self.var_aspect, ttip=ttip) cb = factory.checkbutton(master, "Inv", self.var_sign, command = self.callback) self._widgets["slider"] = s self._widgets["checkbutton-sign"] = cb self._editor = editor self._param = param s.bind("<Enter>", self.enter_callback)
def _init_south_toolbar(self): frame = factory.label_frame(self, "Program") b_store = factory.button(frame, "Store", command=self._store_program, ttip = "Store current program") b_random = factory.button(frame, "RND", command=self._random_program, ttip = "Generate random program (if defined)") b_init = factory.button(frame, "Init", command=self._init_program, ttip = "Initialize program") b_copy = factory.button(frame, "Copy", command=self._copy_program, ttip="Copy current prgoram to clipbaord") b_paste = factory.button(frame, "Paste", command=self._paste_program, ttip="Paste clipboard to current program") cb_lock = factory.checkbutton(frame,"Lock",self._var_lock_current, command = self.lock_current_program) b_store.grid(row=0, column=0, sticky="ew") b_random.grid(row=0, column=1, sticky="ew") b_init.grid(row=0, column=2, sticky="ew") b_copy.grid(row=1, column=0, sticky="ew") b_paste.grid(row=1, column=1, sticky="ew") cb_lock.grid(row=1, column=2, sticky="ew") return frame
def _init_list_frame(self): frame = factory.frame(self) lbx = factory.listbox(frame) sbar = factory.scrollbar(frame, orientation="vertical") # lbx.pack(side="left", expand=True, fill="both") # sbar.pack(after=lbx, side="right", expand=True, fill="y") lbx.config(yscrollcommand=sbar.set) lbx.bind("<<ListboxSelect>>", self._select_slot) lbx.bind("<Up>", self._decrement_selection) lbx.bind("<Down>", self._increment_selection) sbar.config(command = lbx.yview) self.listbox = lbx self.cbExtend = factory.checkbutton(frame,"Extend",self._var_extend_enable, command = self._cbextended_callback) self.sbExtend = factory.int_spinbox(frame,self._var_extend_count, from_=0,to=self.synth.voice_count, command = self._sbextended_callback) self.sbExtend.config(width=2) lbx.grid(row=0,column=0,rowspan=3,columnspan=2,sticky="ewns") sbar.grid(row=0,column=2,rowspan=3,columnspan=1,sticky="ns") if self.synth.keymode in constants.SUPPORTS_EXTENDED_PROGRAMS: self.cbExtend.grid(row=3,column=0,stick="w",pady=4,padx=4) self.sbExtend.grid(row=3,column=1,sticky='w') return frame
def __init__(self, master, synth, src, app): Toplevel.__init__(self, master) self.src = src self.synth = synth self.app = app self.var_all = StringVar() self.var_all.set(0) frame = factory.frame(self, modal=True) frame.pack(expand=True, fill="both") lab_title = factory.label(frame, "Remove MIDI Source Map", modal=True) lab_title.grid(row=0, column=0, columnspan=3, padx=4, pady=8) if src == "cc": lab_src = factory.label(frame, "Controller", modal=True) self.combo_source = factory.controller_combobox(frame, app) lab_src.grid(row=1, column=0, padx=4, sticky='w') self.combo_source.grid(row=1, column=1, columnspan=2, sticky="ew") else: lab_src = factory.label(frame, "Source: %s" % src, modal=True) self.combo_source = factory.combobox(None, [src]) lab_src.grid(row=1, column=0, columnspan=3, padx=4, sticky='w') lab_param = factory.label(frame, "Param", modal=True) self.cb_all = factory.checkbutton(frame, "All", var = self.var_all, modal=True) params = sorted(synth.bank().template.keys()) self.combo_params = factory.combobox(frame, params, "Synth Parameters") lab_param.grid(row=2, column=0, padx=4, pady=4, sticky='w') self.cb_all.grid(row=2, column=1, padx=4) self.combo_params.grid(row=2, column=2) def disable_param_callback(): val = int(self.var_all.get()) if val == 0: self.combo_params.config(state="normal") else: self.combo_params.config(state="disabled") def accept_callback(): shelper = self.app.ls_parser.synthhelper if self.src == "cc": src = self.combo_source.get()[1:4] else: src = self.src src = src.lower() if int(self.var_all.get()) == 0: param = self.combo_params.get() else: param = "ALL" shelper.remove_parameter_map(src, param, self.synth.sid) msg = "Removed MIDI source map" self.status(msg) self.destroy() self.synth.synth_editor.sync() def cancel_callback(): msg = "Delete source map canceld" self.status(msg) self.destroy() toolbar = factory.frame(frame, modal=True) b_accept = factory.accept_button(toolbar, command=accept_callback) b_cancel = factory.cancel_button(toolbar, command=cancel_callback) toolbar.grid(row=3, column=0, columnspan=3, padx=4, pady=8, sticky="ew") b_accept.grid(row=0, column=0, sticky="ew") b_cancel.grid(row=0, column=1, sticky="ew") self.cb_all.config(command=disable_param_callback) try: # ISSUE BUG 0004 self.grab_set() except TclError as err: print("-" * 60) print("BUG 0004 trapped. TkDeleteSourceMapDialog.__init__") print(err.message) print("Unable to open dialog as modal") self.mainloop()
def __init__(self, master, param, editor): """ Create new OscFrequencyControl object. Widgets are not automatically added to the Tk master. Call the layout method to place widgets using a default layout. ARGS: param - String, SC synth parameter. editor - An instance of TkSubEditor master - Tk container. """ print("DEPRECIATION WARNING: OscFrequencyControl") super(OscFrequencyControl, self).__init__(param, editor, master) octaves = [(3, "+3"), (2, "+2"), (1, "+1"), (0, " 0"), (-1, "-1"), (-2, "-2"), (-3, "-3")] self.var_octave = tk.StringVar() # Octave number -3 ... +3 self.var_transpose = tk.IntVar() # Transpose steps, 0 ... 11 self.var_detune = tk.IntVar() # Detune in cents 0 ... 99 self.var_zero = tk.IntVar() # 0 -> osc != 0, 1 -> osc freq = 0 self.var_octave.set(0) self.var_transpose.set(0) self.var_detune.set(0) self.var_zero.set(0) self._radio_buttons = [] for value, text in octaves: rb = factory.radio(master, text, self.var_octave, value, command=self.callback, ttip="%s octave" % param) widget_key = "radio-octave-%d" % value self._widgets[widget_key] = rb self._radio_buttons.append(rb) rb.bind("<Enter>", self.enter_callback) s_step = factory.scale(master, from_=11, to=0, var=self.var_transpose, command=self.callback, ttip="%s transpose (steps)" % param) s_detune = factory.scale(master, from_=99, to=0, var=self.var_detune, command=self.callback, ttip="%s detune (cents)" % param) cb_zero = factory.checkbutton(master, "Off") cb_zero.config(command=self.callback, var=self.var_zero) ## Labels lab_transpose = factory.label(master, "00") lab_detune = factory.label(master, "000") lab_value = factory.label(master, "1.0000") self._widgets["scale-transpose"] = s_step self._widgets["scale-detune"] = s_detune self._widgets["checkbutton-zero"] = cb_zero self._widgets["label-transpose"] = lab_transpose self._widgets["label-detune"] = lab_detune self._widgets["label-value"] = lab_value self._editor = editor self._param = param s_step.bind("<Enter>", self.enter_callback) s_detune.bind("<Enter>", self.enter_callback)