def build_menu(self): """ define menu, buttons, sliders """ # menu items self.start_button = rumps.MenuItem( # Start Osc title="Start Oscillator") self.stop_button = rumps.MenuItem( # Stop Osc title="Stop Oscillator") self.amp_title = rumps.MenuItem( # Volume title title=amp_title_format(self.amplitude), callback=None) self.amp_slider = rumps.SliderMenuItem( # Volume slider value=self.amplitude, min_value=0.0, max_value=1.0, callback=self.adj_amp, dimensions=(200, 20)) self.sine_wave_button = rumps.MenuItem( # Sine Wave title="Sine Wave", callback=self.set_sine_wave) self.square_wave_button = rumps.MenuItem( # Square Wave title="Square Wave", callback=self.set_square_wave) self.white_noise_button = rumps.MenuItem( # White Noise title="White Noise", callback=self.set_white_noise) self.pink_noise_button = rumps.MenuItem( # Pink Noise title="Pink Noise", callback=self.set_pink_noise) self.freq_title = rumps.MenuItem( # Frequency: title title=freq_title_format(self.frequency), callback=None) self.freq_slider = rumps.SliderMenuItem( # Frequency slider value=freq_to_slider(self.frequency), min_value=freq_to_slider(20), # 20Hz - 20kHz max_value=freq_to_slider(20000), callback=self.adj_freq, dimensions=(200, 20)) self.octave_button = rumps.MenuItem( # Octave Walk title="Octave Walk", callback=lambda sender, timer=self.oct_timer: self. begin_octave_walk(sender, timer)) self.octave_thirds_button = rumps.MenuItem( # Octave Walk 1/3 title="Octave Walk â…“", callback=lambda sender, timer=self.oct_thirds_timer: self. begin_octave_walk(sender, timer)) #populate menu self.app.menu = [ self.start_button, self.stop_button, None, self.amp_title, self.amp_slider, None, self.sine_wave_button, self.square_wave_button, self.white_noise_button, self.pink_noise_button, None, self.freq_title, self.freq_slider, None, self.octave_button, self.octave_thirds_button, None ]
def __init__(self): super().__init__(name="AutoClicker", icon="mouselogo.icns") default_value = 0.0 self.cps_value = AutoClicker.map_slider_to_cps(default_value) self.click_timer = rumps.Timer( lambda _: self.mouse.click(mouse.Button.left), 1 / self.cps_value) def timer_start(_): #print(rumps.timers()) self.click_timer.start() self.menu = [ rumps.MenuItem("Start", timer_start), None, "Stop key: esc", "Start key: \\", None, "cps_value", rumps.SliderMenuItem(dimensions=(180, 15), callback=self.change_cps, min_value=-1, max_value=5, value=default_value), None ] self.menu["cps_value"].title = f"CPS: {self.cps_value}" self.mouse = mouse.Controller() self.check_keys()
def setMenu(self, connected=True): self.prevItem = rumps.MenuItem( "Previous", callback=lambda _: self.device.previous()) self.playPauseItem = rumps.MenuItem( "Play", callback=lambda _: self.__onPlayPauseClicked()) self.nextItem = rumps.MenuItem("Next", callback=lambda _: self.device.next()) self.volumeDescItem = rumps.MenuItem( "Volume", callback=lambda _: self.__onMuteClicked()) self.volumeItem = rumps.SliderMenuItem( value=0, min_value=0, max_value=100, callback=lambda item: self.__onVolumeChanged(item.value)) self.preferencesItem = rumps.MenuItem("Preferences") self.deviceSelectedItem = rumps.MenuItem(f"Device: {self.deviceName}") self.textShownItem = rumps.MenuItem( "Show Artist > Title in Menu Bar", callback=lambda _: self.__onTextShownChanged()) self.textShownItem.state = int(self.config["TEXT_SHOWN"]) # self.deviceSelectedItem = rumps.MenuItem(f"Device: {self.deviceName}", callback=lambda _ : self.__onDeviceSelectedClicked()) for cc in self.chromecasts: name = cc.device.friendly_name self.deviceSelectedItem.add( rumps.MenuItem(name, callback=self.__onDeviceSelected)) self.preferencesItem.add(self.deviceSelectedItem) self.preferencesItem.add(self.textShownItem) self.preferencesItem.add(None) for key in [ "PREV_KEY", "PLAY_KEY", "NEXT_KEY", "MUTE_KEY", "VOLD_KEY", "VOLU_KEY" ]: self.preferencesItem.add( rumps.MenuItem(f"{KEY_NAMES[key]}: {self.config[key]}", callback=self.__onKeyClicked)) self.preferencesItem.add(None) self.reattachKeysItem = rumps.MenuItem( "Reload conf", callback=lambda _: self.__init__()) self.preferencesItem.add(self.reattachKeysItem) self.aboutItem = rumps.MenuItem( "About", callback=lambda item: os.system( "open \"\" https://pierrejacquier.com/castmenu")) self.quitItem = rumps.MenuItem( "Quit", callback=lambda item: rumps.quit_application()) self.menu.clear() self.menu = [ self.prevItem, self.playPauseItem, self.nextItem, None, self.volumeDescItem, self.volumeItem, None, self.preferencesItem, self.aboutItem, self.quitItem ]
def __init__(self): global USER_SETTINGS self.app = rumps.App("Casita", "🏡") # Reusable, generic items self.quit_btn = rumps.MenuItem(title="Quit", callback=rumps.quit_application) self.separator = None # Items to display when no device is connected self.no_device_item = rumps.MenuItem(title="No Device Connected") self.cast_devices_parent = rumps.MenuItem(title="Cast Devices") self.not_connected_menu_items = [self.no_device_item, self.separator] # Items to display in menu while connecting to Cast device self.connecting_item = rumps.MenuItem(title="Connecting...") self.connecting_menu_items = [self.connecting_item, self.quit_btn] # Items to display in menu while media is playing on a Cast device self.track_title_item = rumps.MenuItem(title="No Song Playing") self.track_album_artist_item = rumps.MenuItem(title="") self.pauseplay_btn = rumps.MenuItem(title="Pause", callback=self.pause_play) self.skip_btn = rumps.MenuItem(title="Skip", callback=self.skip) self.rewind_btn = rumps.MenuItem(title="Rewind", callback=self.rewind) self.volume_slider = rumps.SliderMenuItem(value=0, min_value=0, max_value=100, dimensions=(150, 30), callback=self.change_volume) self.playing_menu_items = [ self.track_title_item, self.track_album_artist_item, self.separator, self.volume_slider, self.pauseplay_btn, self.skip_btn, self.rewind_btn, self.separator, self.cast_devices_parent ] # Items to display in menu while connected, but no media is playing self.no_song_item = rumps.MenuItem(title="No Song Playing") self.idle_menu_items = [ self.no_song_item, self.separator, self.volume_slider, self.separator, self.cast_devices_parent ] # If there is a default device assigned in the user settings, show the 'connecting' menu. Otherwise, show the 'not connected' menu if USER_SETTINGS["default_device"] != "": # Show the connecting menu items self.app.menu = self.connecting_menu_items else: self.app.menu = self.not_connected_menu_items # After initializing the menu UI, start the backend's thread self.start_thread(USER_SETTINGS["default_device"])
def __init__(self): super(MenuPlaythroughApp, self).__init__('Menu Playthrough') try: self.dark = NSUserDefaults.standardUserDefaults()\ .persistentDomainForName_('NSGlobalDomain')['AppleInterfaceStyle'] == 'Dark' except KeyError: self.dark = False self.devices = [None, None] try: with self.open('settings.json') as f: settings = json.loads(f.read()) self.devices[0] = settings['in'] self.devices[1] = settings['out'] try: sd.default.device[0] = sd.query_devices().index(sd.query_devices(settings['in'])) except ValueError: self.devices[0] = sd.query_devices()[sd.default.device[0]]['name'] try: sd.default.device[1] = sd.query_devices().index(sd.query_devices(settings['out'])) except ValueError: self.devices[1] = sd.query_devices()[sd.default.device[1]]['name'] self.volume = settings['volume'] self.started = settings['started'] self.render_icon = settings['render_icon'] except FileNotFoundError: self.devices[0] = sd.query_devices()[sd.default.device[0]]['name'] self.devices[1] = sd.query_devices()[sd.default.device[1]]['name'] self.volume = 1 self.started = False self.render_icon = False self.run_show = rumps.MenuItem('Running' if self.started else 'Stopped') self.run_show.state = self.started self.run_toggle = rumps.MenuItem(' ' + ('Stop' if self.started else 'Start')) self.run_toggle.set_callback(self.onoff) self.volume_slider = rumps.SliderMenuItem(value=self.volume, max_value=1, dimensions=(150, 22)) self.volume_slider.set_callback(self.slider) self.current_passthrough_volume = [0] self.input_devices = rumps.MenuItem('Input') self.output_devices = rumps.MenuItem('Output') self.refresh_devices() self.icon_toggle = rumps.MenuItem('Show Activity') self.icon_toggle.set_callback(self.toggle_icon) self.icon_toggle.state = self.render_icon if self.render_icon: self.icon_setter() else: if getattr(sys, 'frozen', False): # noinspection PyUnresolvedReferences self.icon = sys._MEIPASS[:len(sys._MEIPASS)-5] + 'Resources/icon.png' else: self.icon = 'imgs/icon.png' self.license_button = rumps.MenuItem('Show License') self.license_button.set_callback(self.open_license) self.quit_button = None self.quit = rumps.MenuItem('Quit') self.quit.set_callback(self.exit) self.menu = [self.run_show, self.run_toggle, None, 'Volume', self.volume_slider, None, self.input_devices, self.output_devices, None, self.icon_toggle, self.license_button, self.quit] self.stream = sd.Stream(callback=self.stream_callback) sd.set_device_changed_callback(self.full_refresh_devices) self.title = None if self.started: self.started = not self.started self.onoff()