Esempio n. 1
0
    def setupUI(self):
        self.statusbar = NSStatusBar.systemStatusBar()
        self.statusitem = self.statusbar.statusItemWithLength_(NSVariableStatusItemLength) #NSSquareStatusItemLength #NSVariableStatusItemLength

        # Set initial image icon
        icon_path = os.path.join(current_path, "../trayicon.ico")
        image = NSImage.alloc().initByReferencingFile_(icon_path)
        image.setScalesWhenResized_(True)
        image.setSize_((20, 20))
        self.statusitem.setImage_(image)

        # Let it highlight upon clicking
        self.statusitem.setHighlightMode_(1)
        self.statusitem.setToolTip_("ZeroNet")

        # Build a very simple menu
        self.menu = NSMenu.alloc().init()
        self.menu.setAutoenablesItems_(False)

        #self.create_menu_item( 'ip_external', 'IP: %s' % INFO['ip_external'],  'info:')
        self.menu.addItem_( NSMenuItem.separatorItem() )

        # Links
        self.create_menu_item( 'open_zeronet', 'Open ZeroNet',  'open:')
        self.create_menu_item( 'open_reddit', 'Zeronet Reddit Community', 'openreddit:')
        self.create_menu_item( 'open_gh', 'Report issues/feature requests', 'opengithub:')

        self.menu.addItem_( NSMenuItem.separatorItem() )

        self.create_menu_item( 'quit_zeronet', 'Quit ZeroNet', 'windowWillClose:' )

        # Bind it to the status item and hide dock icon
        self.statusitem.setMenu_(self.menu)
        NSApp.setActivationPolicy_(NSApplicationActivationPolicyProhibited)
Esempio n. 2
0
    def applicationDidFinishLaunching_(self, notification):
        # load icon files
        self.active_image = NSImage.imageNamed_("active")
        self.inactive_image = NSImage.imageNamed_("inactive")

        # make status bar item
        self.statusitem = NSStatusBar.systemStatusBar().statusItemWithLength_(
            NSVariableStatusItemLength)
        self.statusitem.retain()
        self.statusitem.setHighlightMode_(False)
        self.statusitem.setEnabled_(True)

        # insert a menu into the status bar item
        self.menu = NSMenu.alloc().init()
        self.statusitem.setMenu_(self.menu)

        # open connection to the dynamic (configuration) store
        self.store = SCDynamicStoreCreate(None, "name.klep.toggleproxy",
                                          self.dynamicStoreCallback, None)

        proxyRef = SCNetworkServiceCopyProtocol(self.service,
                                                kSCNetworkProtocolTypeProxies)
        prefDict = SCNetworkProtocolGetConfiguration(proxyRef)

        hasProxies = False

        # For each of the proxies we are concerned with, check to see if any
        # are configured. If so (even if not enabled), create a menuitem for
        # that proxy type.

        for proxy in self.proxies.values():
            enabled = CFDictionaryGetValue(prefDict, proxy['pref'])
            if enabled is not None:
                proxy[
                    'menuitem'] = self.menu.addItemWithTitle_action_keyEquivalent_(
                        proxy['title'], proxy['action'],
                        proxy['keyEquivalent'])
                hasProxies = True
            else:
                proxy['menuitem'] = None

        if hasProxies:
            self.menu.addItem_(NSMenuItem.separatorItem())
            self.enableallmi = self.menu.addItemWithTitle_action_keyEquivalent_(
                'Enable All', 'enableall', '')
            self.disableallmi = self.menu.addItemWithTitle_action_keyEquivalent_(
                'Disable All', 'disableall', '')
            self.menu.addItem_(NSMenuItem.separatorItem())

        # Need a way to quit
        self.menu.addItemWithTitle_action_keyEquivalent_(
            "Quit", "quitApp:", "")

        # Start working
        # self.loadNetworkServices()
        self.watchForProxyChanges()
        self.updateProxyStatus()
Esempio n. 3
0
    def setupStatusBar(self):
        statusbar = NSStatusBar.systemStatusBar()
        statusitem = statusbar.statusItemWithLength_(20).retain()

        icon = NSImage.imageNamed_('status')
        icon.setSize_((20, 20))
        statusitem.setImage_(icon)

        iconHighlight = NSImage.imageNamed_('status-hi')
        iconHighlight.setSize_((20, 20))
        statusitem.setAlternateImage_(iconHighlight)

        statusitem.setHighlightMode_(1)

        # TODO: Put this whole menu creation stuff into interface builder!
        menu = NSMenu.alloc().init()

        linkMenu = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
            'Post a Link', 'doLink:', '')
        linkMenu.setTarget_(self)
        # Make it possible to invoke the link menu via a keyboard shortcut.
        linkMenu.setKeyEquivalentModifierMask_(NSShiftKeyMask
                                               | NSCommandKeyMask)
        linkMenu.setKeyEquivalent_('l')
        menu.addItem_(linkMenu)

        menu.addItem_(NSMenuItem.separatorItem())

        previewMenu = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
            'Update Preview', 'doPreview:', '')
        previewMenu.setTarget_(self)
        menu.addItem_(previewMenu)

        publishMenuItem = NSMenuItem.alloc(
        ).initWithTitle_action_keyEquivalent_('Publish', None, '')
        publishMenu = NSMenu.alloc().init()
        s3MenuItem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
            'S3', 'doPublish:', '')
        s3MenuItem.setTarget_(self)
        publishMenu.addItem_(s3MenuItem)
        publishMenuItem.setSubmenu_(publishMenu)
        menu.addItem_(publishMenuItem)

        menu.addItem_(NSMenuItem.separatorItem())

        quitMenu = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
            'Quit', 'terminate:', '')
        menu.addItem_(quitMenu)

        statusitem.setMenu_(menu)
        menu.release()
Esempio n. 4
0
    def finishLaunching(self):
        # Get current track info
        curr_track = get_current_track()

        self.lyrics = get_lyrics(curr_track['curr_artist'],
                                 curr_track['curr_song']).split('<br>')

        # Remove empty lines
        self.lyrics = [x for x in self.lyrics if x]

        # Cache current track to avoid unnecessary requests
        self.curr_track_hash = abs(hash(curr_track['curr_track_full'])) % (10**
                                                                           8)

        # Create the status & menu bar
        statusBar = NSStatusBar.systemStatusBar()
        self.statusItem = statusBar.statusItemWithLength_(-1)
        self.statusItem.setTitle_(curr_track['curr_track_full'])

        self.menuBar = NSMenu.alloc().init()

        # Lyrics block
        for i, row in enumerate(self.lyrics):
            row = re.sub('<[^<]+?>', '', row).strip()
            setattr(
                self, 'row_{}'.format(i),
                NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
                    row, 'doNothing:', ''))
            self.menuBar.addItem_(getattr(self, 'row_{}'.format(i)))

        self.SEPERATOR = NSMenuItem.separatorItem()
        self.menuBar.addItem_(self.SEPERATOR)

        # Quit option
        self.QUIT = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
            'Quit', 'terminate:', '')
        self.SEPERATOR = NSMenuItem.separatorItem()
        self.menuBar.addItem_(self.SEPERATOR)
        self.menuBar.addItem_(self.QUIT)

        # Add menu to status bar
        self.statusItem.setMenu_(self.menuBar)

        # Create our timer for song title updates
        self.timer = NSTimer.scheduledTimerWithTimeInterval_target_selector_userInfo_repeats_(
            1, self, 'update:', '', True)

        # Add our timer to the runloop
        NSRunLoop.currentRunLoop().addTimer_forMode_(
            self.timer, NSEventTrackingRunLoopMode)
Esempio n. 5
0
def assemble_menu(parent_menu, menu_spec: dict, top_menu: bool = False):
    if not menu_spec:
        if not top_menu:
            parent_menu.addItem_(NSMenuItem.separatorItem())
        else:
            raise AssertionError('Cannot put separator into top menu')
    elif 'children' in menu_spec:
        menu_item = NSMenuItem.alloc().init()
        if not top_menu:
            menu_item.setTitle_(menu_spec['title'])
        parent_menu.addItem_(menu_item)
        menu = NSMenu.alloc().init()
        if top_menu:
            menu.setTitle_(menu_spec['title'])
        for child in menu_spec['children']:
            assemble_menu(menu, child)
        menu_item.setSubmenu_(menu)
    else:
        menu_item = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
            menu_spec['title'], None,
            menu_spec.get('key', '') if not top_menu else '')
        parent_menu.addItem_(menu_item)
        if top_menu:
            # workaround:
            # I cannot get Mac to play the action on a top menu if it is a menu item
            # Mac does not display top menu item without submenu...
            menu = NSMenu.alloc().init()
            menu.setTitle_(menu_spec['title'])
            assemble_menu(menu, menu_spec)
            menu_item.setSubmenu_(menu)
        if 'action' in menu_spec:
            set_action(menu_item, menu_spec['action'])
Esempio n. 6
0
    def refreshDropboxMenu_(self, items):
        try:
            self.removeAllItems()
        except:
            for i in reversed(xrange(self.numberOfItems())):
                self.removeItemAtIndex_(i)

        for text, func in items:
            if text is None:
                menuitem = NSMenuItem.separatorItem()
            elif type(func) in (list, tuple):
                text = unicode(text)
                menuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(text, None, '')
                submenu = DropboxNSMenu.menuWithDropboxMenuDescriptor_(func)
                menuitem.setSubmenu_(submenu)
            else:
                text = unicode(text)
                menuitem = DropboxNSMenuItem.alloc().initWithTitle_action_keyEquivalent_(text, None, '')
                if hasattr(func, '__call__'):
                    menuitem.dropboxFunc = func
                    menuitem.setTarget_(self)
                    menuitem.setAction_('menuAction:')
                else:
                    menuitem.setEnabled_(False)
            self.addItem_(menuitem)

        return self
Esempio n. 7
0
    def inject(self):
        try:
            # necessary because of the menu callbacks
            self.retain()

            # get application menu instance
            appmenu = NSApplication.sharedApplication().mainMenu().itemAtIndex_(0).submenu()

            # make a new menu item
            self.item = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
                "MailTrack",
                "toggleState:",
                "")
            self.item.setToolTip_(self.get_string("MAILTRACK_TOOLTIP", ""))
            self.set_state_and_title(self.item)
            self.item.setTarget_(self)

            # add separator and new item
            appmenu.insertItem_atIndex_(NSMenuItem.separatorItem(), 1)
            appmenu.insertItem_atIndex_(self.item, 2)

            # observe changes for active state
            NSUserDefaultsController.sharedUserDefaultsController().addObserver_forKeyPath_options_context_(
                self,
                "values.MailTrackDisabled",
                NSKeyValueObservingOptionNew,
                None
            )

        except Exception, e:
            raise e
Esempio n. 8
0
    def inject(self):
        try:
            # necessary because of the menu callbacks
            self.retain()

            # get application menu instance
            appmenu = NSApplication.sharedApplication().mainMenu().itemAtIndex_(0).submenu()

            # make a new menu item
            self.item = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
                "QuoteFix",
                "toggleState:",
                "")
            self.item.setToolTip_(self.get_string("QUOTEFIX_TOOLTIP", ""))
            self.set_state_and_title(self.item)
            self.item.setTarget_(self)

            # add separator and new item
            appmenu.insertItem_atIndex_(NSMenuItem.separatorItem(), 1)
            appmenu.insertItem_atIndex_(self.item, 2)

            # observe changes for active state
            NSUserDefaultsController.sharedUserDefaultsController().addObserver_forKeyPath_options_context_(
                self,
                "values.QuoteFixDisabled",
                NSKeyValueObservingOptionNew,
                None
            )

        except Exception, e:
            raise e
Esempio n. 9
0
    def initialize(cls):
        # Register ourselves as a Mail.app plugin and add an entry for our
        # 'Fill Text' and Wrap Text' actions to the Edit menu.

        application = NSApplication.sharedApplication()
        bundle = NSBundle.bundleWithIdentifier_('uk.me.cdw.MailWrap')
        cls.registerBundle()

        editmenu = application.mainMenu().itemAtIndex_(2).submenu()
        editmenu.addItem_(NSMenuItem.separatorItem())

        mask = NSCommandKeyMask | NSAlternateKeyMask
        editmenu.addItemWithTitle_action_keyEquivalent_('Fill Text',
            'fillText', '\\').setKeyEquivalentModifierMask_(mask)

        mask = NSCommandKeyMask
        editmenu.addItemWithTitle_action_keyEquivalent_('Wrap Text',
            'wrapText', "\\").setKeyEquivalentModifierMask_(mask)

        # Read our configuration settings if present. Otherwise, set the
        # correct default values.

        defaults = NSUserDefaults.standardUserDefaults()
        defaults = defaults.dictionaryForKey_('MailWrap') or {}
        ComposeViewController._fixAttribution = defaults.get('FixAttribution', False)
        EditingMessageWebView._bulletLists = defaults.get('BulletLists', True)
        EditingMessageWebView._indentWidth = int(defaults.get('IndentWidth', 2))
        EditingMessageWebView._wrapWidth = int(defaults.get('WrapWidth', 72))

        # Report the plugin name and version to the com.apple.mail log.

        version = bundle.objectForInfoDictionaryKey_('CFBundleVersion')
        NSLog('Loaded MailWrap %s' % version)
Esempio n. 10
0
  def applicationDidFinishLaunching_(self, notification):
    self.noDevice = None

    #Create menu
    self.menu = NSMenu.alloc().init()

    self.barItem = dict()

    # Load images
    self.noDeviceImage = NSImage.alloc().initByReferencingFile_('icons/no_device.png')
    self.barImage = dict(kb = NSImage.alloc().initByReferencingFile_('icons/kb.png'),
			 magicMouse = NSImage.alloc().initByReferencingFile_('icons/magic_mouse.png'),
			 mightyMouse = NSImage.alloc().initByReferencingFile_('icons/mighty_mouse.png'),
			 magicTrackpad = NSImage.alloc().initByReferencingFile_('icons/TrackpadIcon.png'))

    #Define menu items
    self.statusbar = NSStatusBar.systemStatusBar()
    self.menuAbout = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_('About BtBatStat', 'about:', '')
    self.separator_menu_item = NSMenuItem.separatorItem()
    self.menuQuit = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_('Quit', 'terminate:', '')

    # Get the timer going
    self.timer = NSTimer.alloc().initWithFireDate_interval_target_selector_userInfo_repeats_(start_time, 10.0, self, 'tick:', None, True)
    NSRunLoop.currentRunLoop().addTimer_forMode_(self.timer, NSDefaultRunLoopMode)
    self.timer.fire()

    #Add menu items
    self.menu.addItem_(self.menuAbout)
    self.menu.addItem_(self.separator_menu_item)
    self.menu.addItem_(self.menuQuit)

    #Check for updates
    checkForUpdates()
Esempio n. 11
0
    def constructMenu(self):
        self.menu.removeAllItems()

        separator_required = False
        if self.is_ip_assigned:
            # For each of the proxyTypes we are concerned with, check to see if any
            # are configured. If so (even if not enabled), create a menuitem for
            # that proxy type.
            for proxy in self.proxyTypes.values():
                enabled = CFDictionaryGetValue(self.prefDict, proxy['prefEnable'])
                if enabled is not None:
                    proxy['menuitem'] = self.menu.addItemWithTitle_action_keyEquivalent_(
                        proxy['title'],
                        proxy['action'],
                        proxy['keyEquivalent']
                    )
                    separator_required = True
                else:
                    proxy['menuitem'] = None
        else:
            self.menu.addItemWithTitle_action_keyEquivalent_("No connection - Please connect to any network before using this tool", None, "")

        if separator_required:
            self.menu.addItem_(NSMenuItem.separatorItem())

         # Need a way to quit
        self.menu.addItemWithTitle_action_keyEquivalent_("Quit", "quitApp:", "q")
Esempio n. 12
0
    def initialize(cls):
        # Register ourselves as a Mail.app plugin and add an entry for our
        # 'Fill Text' and Wrap Text' actions to the Edit menu.

        application = NSApplication.sharedApplication()
        bundle = NSBundle.bundleWithIdentifier_('uk.me.cdw.MailWrap')
        cls.registerBundle()

        editmenu = application.mainMenu().itemAtIndex_(2).submenu()
        editmenu.addItem_(NSMenuItem.separatorItem())

        mask = NSCommandKeyMask
        editmenu.addItemWithTitle_action_keyEquivalent_(
            'Fill Text', 'fillText', '\\').setKeyEquivalentModifierMask_(mask)

        mask = NSCommandKeyMask | NSAlternateKeyMask
        editmenu.addItemWithTitle_action_keyEquivalent_(
            'Wrap Text', 'wrapText', '\\').setKeyEquivalentModifierMask_(mask)

        # Read our configuration settings if present. Otherwise, set the
        # correct default values.

        defaults = NSUserDefaults.standardUserDefaults()
        defaults = defaults.dictionaryForKey_('MailWrap') or {}
        ComposeViewController._fixAttribution = defaults.get(
            'FixAttribution', True)
        EditingMessageWebView._bulletLists = defaults.get('BulletLists', True)
        EditingMessageWebView._indentWidth = int(defaults.get(
            'IndentWidth', 2))
        EditingMessageWebView._wrapWidth = int(defaults.get('WrapWidth', 76))

        # Report the plugin name and version to the com.apple.mail log.

        version = bundle.objectForInfoDictionaryKey_('CFBundleVersion')
        NSLog('Loaded MailWrap %s' % version)
Esempio n. 13
0
    def setupStatusBar(self):
        statusbar = NSStatusBar.systemStatusBar()
        statusitem = statusbar.statusItemWithLength_(20).retain()
        
        icon = NSImage.imageNamed_('status')
        icon.setSize_((20, 20))
        statusitem.setImage_(icon)
        
        iconHighlight = NSImage.imageNamed_('status-hi')
        iconHighlight.setSize_((20, 20))
        statusitem.setAlternateImage_(iconHighlight)
        
        statusitem.setHighlightMode_(1)
        
        # TODO: Put this whole menu creation stuff into interface builder!
        menu = NSMenu.alloc().init()
        
        linkMenu = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_('Post a Link', 'doLink:', '')
        linkMenu.setTarget_(self);
        # Make it possible to invoke the link menu via a keyboard shortcut.
        linkMenu.setKeyEquivalentModifierMask_(NSShiftKeyMask | NSCommandKeyMask)
        linkMenu.setKeyEquivalent_('l')
        menu.addItem_(linkMenu)
        
        
        menu.addItem_(NSMenuItem.separatorItem())
        
        previewMenu = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_('Update Preview', 'doPreview:', '')
        previewMenu.setTarget_(self);
        menu.addItem_(previewMenu)
        
        publishMenuItem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_('Publish', None, '')
        publishMenu = NSMenu.alloc().init();
        s3MenuItem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_('S3', 'doPublish:', '')
        s3MenuItem.setTarget_(self);
        publishMenu.addItem_(s3MenuItem)
        publishMenuItem.setSubmenu_(publishMenu)
        menu.addItem_(publishMenuItem)
        
        menu.addItem_(NSMenuItem.separatorItem())

        quitMenu = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_('Quit', 'terminate:', '')
        menu.addItem_(quitMenu)
        
        statusitem.setMenu_(menu)
        menu.release();
Esempio n. 14
0
    def initialize_menu(self):
        self.menubarMenu = NSMenu.alloc().init()
        self.menubarMenu.addItem_(NSMenuItem.separatorItem())

        self.quit = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
            'Quit', 'terminate:', '')
        self.menubarMenu.addItem_(self.quit)

        self.statusitem.setMenu_(self.menubarMenu)
        self.statusitem.setToolTip_('Project Cron')
Esempio n. 15
0
    def update_(self, timer):
        curr_track = get_current_track()
        self.statusItem.setTitle_(curr_track['curr_track_full'])
        self.next_track_hash = abs(hash(curr_track['curr_track_full'])) % (10**
                                                                           8)

        if self.curr_track_hash != self.next_track_hash:
            self.lyrics = get_lyrics(curr_track['curr_artist'],
                                     curr_track['curr_song']).split('<br>')

            # Remove empty lines
            self.lyrics = [x for x in self.lyrics if x]
            self.curr_track_hash = abs(hash(
                curr_track['curr_track_full'])) % (10**8)

            # Create the status & menu bar
            statusBar = NSStatusBar.systemStatusBar()
            self.statusItem = statusBar.statusItemWithLength_(-1)
            self.statusItem.setTitle_(curr_track['curr_track_full'])

            self.menuBar = NSMenu.alloc().init()

            # Lyrics block
            for i, row in enumerate(self.lyrics):
                row = re.sub('<[^<]+?>', '', row).strip()
                setattr(
                    self, 'row_{}'.format(i),
                    NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
                        row, 'doNothing:', ''))
                self.menuBar.addItem_(getattr(self, 'row_{}'.format(i)))

            self.SEPERATOR = NSMenuItem.separatorItem()
            self.menuBar.addItem_(self.SEPERATOR)

            # Quit option
            self.QUIT = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
                'Quit', 'terminate:', '')
            self.SEPERATOR = NSMenuItem.separatorItem()
            self.menuBar.addItem_(self.SEPERATOR)
            self.menuBar.addItem_(self.QUIT)

            # Add menu to status bar
            self.statusItem.setMenu_(self.menuBar)
Esempio n. 16
0
 def refreshOptions(self):  # refresh option items
     try:
         favNameList = self.favNameList()
         self.w.tabs[0].options.setItems(tab0options + favNameList)
         menu = self.w.tabs[0].options._nsObject.menu()
         menu.itemAtIndex_(0).setEnabled_(False)
         divider0 = NSMenuItem.separatorItem()
         menu.insertItem_atIndex_(divider0, 6)
         menu.itemAtIndex_(7).setEnabled_(False)
     except Exception as e:
         Glyphs.showMacroWindow()
         print("BubbleKern Error (refreshOptions): %s" % e)
Esempio n. 17
0
    def setupUI(self):
        self.statusbar = NSStatusBar.systemStatusBar()
        self.statusitem = self.statusbar.statusItemWithLength_(
            NSVariableStatusItemLength
        )  #NSSquareStatusItemLength #NSVariableStatusItemLength

        # Set initial image icon
        icon_path = os.path.join(current_path, "../trayicon.ico")
        image = NSImage.alloc().initByReferencingFile_(icon_path)
        image.setScalesWhenResized_(True)
        image.setSize_((20, 20))
        self.statusitem.setImage_(image)

        # Let it highlight upon clicking
        self.statusitem.setHighlightMode_(1)
        self.statusitem.setToolTip_("ZeroNet")

        # Build a very simple menu
        self.menu = NSMenu.alloc().init()
        self.menu.setAutoenablesItems_(False)

        #self.create_menu_item( 'ip_external', 'IP: %s' % INFO['ip_external'],  'info:')
        self.menu.addItem_(NSMenuItem.separatorItem())

        # Links
        self.create_menu_item('open_zeronet', 'Open ZeroNet', 'open:')
        self.create_menu_item('open_reddit', 'Zeronet Reddit Community',
                              'openreddit:')
        self.create_menu_item('open_gh', 'Report issues/feature requests',
                              'opengithub:')

        self.menu.addItem_(NSMenuItem.separatorItem())

        self.create_menu_item('quit_zeronet', 'Quit ZeroNet',
                              'windowWillClose:')

        # Bind it to the status item and hide dock icon
        self.statusitem.setMenu_(self.menu)
        NSApp.setActivationPolicy_(NSApplicationActivationPolicyProhibited)
Esempio n. 18
0
    def _initialize_menu(self):
        self.menubarMenu = NSMenu.alloc().init()
        for schedule in self._schedules:
            menu_item = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(schedule.name, 'execute:', '')
            self._menu_items.append(menu_item)
            self.menubarMenu.addItem_(menu_item)

        menu_item = NSMenuItem.separatorItem()
        self.menubarMenu.addItem_(menu_item)

        self.quit = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_('Quit', 'terminate:', '')
        self.menubarMenu.addItem_(self.quit)

        self.statusitem.setMenu_(self.menubarMenu)
        self.statusitem.setToolTip_('Crow')
Esempio n. 19
0
	def addMenuItemsForEvent_toMenu_(self, theEvent, theMenu):
		"""
		Adds menu items to default context menu.
		Remove this method if you do not want any extra context menu items.
		"""
		try:
			
			if hasattr(self, 'conditionalContextMenus'):
				contextMenus = self.conditionalContextMenus()
			
				if contextMenus:
					# Todo: Make sure that the index is 0 for all items,
					# i.e., add at top rather than at bottom of menu:
					newSeparator = NSMenuItem.separatorItem()
					theMenu.addItem_(newSeparator)
					setUpMenuHelper(theMenu, contextMenus, self)
					
		except:
			self.logError(traceback.format_exc())
Esempio n. 20
0
	def addMenuItemsForEvent_toMenu_(self, theEvent, theMenu):
		"""
		Adds menu items to default context menu.
		Remove this method if you do not want any extra context menu items.
		"""
		try:

			if hasattr(self, 'conditionalContextMenus'):
				contextMenus = self.conditionalContextMenus()

				if contextMenus:
					# Todo: Make sure that the index is 0 for all items,
					# i.e., add at top rather than at bottom of menu:
					newSeparator = NSMenuItem.separatorItem()
					theMenu.addItem_(newSeparator)
					setUpMenuHelper(theMenu, contextMenus, self)

		except:
			self.logError(traceback.format_exc())
Esempio n. 21
0
	def defaultContextMenu(self):
		"""
		Sets the default content of the context menu and returns the menu.
		Add menu items that do not depend on the context,
		e.g., actions that affect the whole layer, no matter what is selected.
		Remove this method if you do not want any extra context menu items.
		"""
		try:
			# Get the current default context menu:
			theMenu = objc.super(SelectTool, self).defaultContextMenu()

			# Add separator at the bottom:
			newSeparator = NSMenuItem.separatorItem()
			theMenu.addItem_(newSeparator)

			# Add menu items at the bottom:
			setUpMenuHelper(theMenu, self.generalContextMenus, self)

			return theMenu
		except:
			self.logError(traceback.format_exc())
Esempio n. 22
0
	def defaultContextMenu(self):
		"""
		Sets the default content of the context menu and returns the menu.
		Add menu items that do not depend on the context,
		e.g., actions that affect the whole layer, no matter what is selected.
		Remove this method if you do not want any extra context menu items.
		"""
		try:
			# Get the current default context menu:
			theMenu = objc.super(SelectTool, self).defaultContextMenu()
			
			# Add separator at the bottom:
			newSeparator = NSMenuItem.separatorItem()
			theMenu.addItem_(newSeparator)
			
			# Add menu items at the bottom:
			setUpMenuHelper(theMenu, self.generalContextMenus, self)
			
			return theMenu
		except:
			self.logError(traceback.format_exc())
    def createMainMenu(self):
        mainMenu = NSMenu.alloc().init()  # menu bar
        mainMenuItem = NSMenuItem.alloc().init()
        mainMenu.addItem_(mainMenuItem)

        # NOTE: The title of the first menu will automatically refer to CFBundleName.
        appMenu = NSMenu.alloc().init()

        appMenu.addItemWithTitle_action_keyEquivalent_(
            "About",
            "orderFrontStandardAboutPanel:",
            "",
        )
        appMenu.addItem_(NSMenuItem.separatorItem())
        appMenu.addItemWithTitle_action_keyEquivalent_(
            "Quit",
            "terminate:",
            "q",
        )

        mainMenuItem.setSubmenu_(appMenu)

        return mainMenu
Esempio n. 24
0
 def _buildMenu(self, items, menu):
     for item in items:
         if isinstance(item, NSMenuItem):
             menu.addItem_(item)
         elif item == "----":
             item = NSMenuItem.separatorItem()
             menu.addItem_(item)
         else:
             title = item["title"]
             callback = item.get("callback")
             subItems = item.get("items")
             
             menuItem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(title, "", "")
             if callback:
                 wrapper = VanillaCallbackWrapper(callback)
                 self._callbackWrappers.append(wrapper)
                 menuItem.setTarget_(wrapper)
                 menuItem.setAction_("action:")
             if subItems:
                 subMenu = NSMenu.alloc().init()
                 self._buildMenu(subItems, subMenu)
                 menuItem.setSubmenu_(subMenu)
             menu.addItem_(menuItem)
Esempio n. 25
0
 def __init__(self):
     self._menuitem = NSMenuItem.separatorItem()
Esempio n. 26
0
 def _populatePlacard(self):
     if not hasattr(self, "placard"):
         return
     options = self._placardOptions = [
         (None, None, None),  # Display...
         ("Fill", "showGlyphFill", None),
         ("Stroke", "showGlyphStroke", None),
         #("Image", "showGlyphImage", None),
         ("Metrics", "showGlyphMargins", None),
         ("On Curve Points", "showGlyphOnCurvePoints", None),
         ("Off Curve Points", "showGlyphOffCurvePoints", None),
         #("Point Coordinates", "showGlyphPointCoordinates", None),
         ("Anchors", "showGlyphAnchors", None),
         ("Blues", "showFontPostscriptBlues", None),
         ("Family Blues", "showFontPostscriptFamilyBlues", None),
         (None, None, None),  # layer divider
     ]
     if not hasattr(self, "_placardLayerOptions"):
         self._placardLayerOptions = {}
     # title
     item = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
         "Display...", None, "")
     item.setHidden_(True)
     items = [item]
     # main layer
     for title, drawingAttribute, layerName in options:
         if title is None:
             continue
         state = self.getDrawingAttribute(drawingAttribute)
         item = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
             title, None, "")
         item.setState_(state)
         items.append(item)
     # sub layers
     glyph = self._glyphView.getGlyph()
     if glyph is not None:
         layerSet = glyph.layerSet
         if layerSet is not None:
             if len(layerSet.layerOrder) > 1:
                 items.append(NSMenuItem.separatorItem())
                 # prep the state dictionary
                 for layerName in list(self._placardLayerOptions.keys()):
                     if layerName not in layerSet:
                         del self._placardLayerOptions[layerName]
                 for layerName in layerSet.layerOrder:
                     if layerName not in self._placardLayerOptions:
                         self._placardLayerOptions[layerName] = False
                 for layerName in layerSet.layerOrder:
                     state = self._placardLayerOptions[layerName]
                     enabled = True
                     if layerName == glyph.layer.name:
                         state = True
                         enabled = False
                     self._placardOptions.append((None, None, layerName))
                     title = "Layer: %s" % layerName
                     item = NSMenuItem.alloc(
                     ).initWithTitle_action_keyEquivalent_(title, None, "")
                     item.setState_(state)
                     item.setEnabled_(enabled)
                     items.append(item)
     # set the items
     self.placard.optionsButton.setItems(items)
     button = self.placard.optionsButton.getNSPopUpButton()
     button.setTitle_("Display...")
     # update the layer options
     self._updateLayerDrawingAttributes()
Esempio n. 27
0
 def _add_separator_to_platform_menu(self):
     ns_item = NSMenuItem.separatorItem()
     self._ns_menu.addItem_(ns_item)
Esempio n. 28
0
    def instances_(self, _n):
        self.loop_func = sys._getframe(0).f_code.co_name
        try:
            x = subprocess.check_output(["/usr/local/bin/docker", "ps", "--format", "{{.Names}}"])
        except subprocess.CalledProcessError as e:
            #print(e)
            self.statusitem.setImage_(self.image)
            # Keep looping, but don't do anything
            NSRunLoop.currentRunLoop().addTimer_forMode_(self.timer, NSDefaultRunLoopMode)
            return

        containers = x.splitlines()

        self.statusitem.setTitle_(str(len(containers)))

        new_menu = NSMenu.alloc().init()
        shellmenu = NSMenu.alloc().init()
        logmenu = NSMenu.alloc().init()

        i = NSMenuItem.alloc().init()
        i.setTitle_("Shell")
        i.setSubmenu_(shellmenu)
        new_menu.addItem_(i)

        i = NSMenuItem.alloc().init()
        i.setTitle_("Logs")
        i.setSubmenu_(logmenu)
        new_menu.addItem_(i)

        new_menu.addItem_(NSMenuItem.separatorItem())

        for container in containers:
            shellmenuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(container, 'shellinto:', '')
            shellmenu.addItem_(shellmenuitem)
            logmenuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(container, 'loginto:', '')
            logmenu.addItem_(logmenuitem)
            menuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(container, 'killinstance:', '')
            menuitem.setImage_(self.toggle_images['kill' if self.kill else 'refresh'])
            # pprint(dir(menuitem))
            new_menu.addItem_(menuitem)

        new_menu.addItem_(NSMenuItem.separatorItem())

        i = NSMenuItem.alloc().init()
        configmenu = NSMenu.alloc().init()
        i.setTitle_("Settings")
        i.setSubmenu_(configmenu)
        new_menu.addItem_(i)


        menuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_('Kill', 'killornot:', '')
        menuitem.setState_(NSOnState if self.kill else NSOffState)
        configmenu.addItem_(menuitem)
        menuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_('Restart', 'killornot:', '')
        menuitem.setState_(NSOnState if not self.kill else NSOffState)
        configmenu.addItem_(menuitem)
        configmenu.addItem_(NSMenuItem.separatorItem())
        menuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_('iTerm', 'itermtoggle:', '')
        menuitem.setState_(NSOnState if self.which_terminal == 'iTerm' else NSOffState)
        configmenu.addItem_(menuitem)
        menuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_('Terminal', 'itermtoggle:', '')
        menuitem.setState_(NSOnState if not self.which_terminal == 'iTerm' else NSOffState)
        configmenu.addItem_(menuitem)

        menuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_('Quit', 'terminate:', '')
        new_menu.addItem_(menuitem)

        self.menu = new_menu
        self.statusitem.setMenu_(self.menu)

        if self.state == 'setup':
            self.state = 'running'
        if self.state == 'running':
            NSRunLoop.currentRunLoop().addTimer_forMode_(self.timer, NSDefaultRunLoopMode)
Esempio n. 29
0
 def _add_separator_to_platform_menu(self):
     ns_item = NSMenuItem.separatorItem()
     self._ns_menu.addItem_(ns_item)
Esempio n. 30
0
    def finishLaunching(self):

        # Note: variable names here are camelCased to stay consistent with
        # pyobjc (except menubar items).

        # Create the status & menu bar
        statusBar = NSStatusBar.systemStatusBar()
        self.statusItem = statusBar.statusItemWithLength_(-1)
        self.statusItem.setTitle_('Simon')
        self.menuBar = NSMenu.alloc().init()

        # System
        self.SYSTEM = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
            'System', 'doNothing:', '')
        self.CPU_USAGE = self._create_empty_menu_item()
        self.RAM_USAGE = self._create_empty_menu_item()
        self.RAM_AVAILABLE = self._create_empty_menu_item()

        self.menuBar.addItem_(self.SYSTEM)
        self.menuBar.addItem_(self.CPU_USAGE)
        self.menuBar.addItem_(self.RAM_USAGE)
        self.menuBar.addItem_(self.RAM_AVAILABLE)

        # Disk I/O
        self.DISKIO = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
            'Disk I/O', 'doNothing:', '')
        self.DATA_READ = self._create_empty_menu_item()
        self.DATA_WRITTEN = self._create_empty_menu_item()

        self.menuBar.addItem_(self.DISKIO)
        self.menuBar.addItem_(self.DATA_READ)
        self.menuBar.addItem_(self.DATA_WRITTEN)

        # Network
        self.NETWORK = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
            'Network', 'doNothing:', '')
        self.NETWORK_RECV = self._create_empty_menu_item()
        self.NETWORK_SENT = self._create_empty_menu_item()

        self.menuBar.addItem_(self.NETWORK)
        self.menuBar.addItem_(self.NETWORK_RECV)
        self.menuBar.addItem_(self.NETWORK_SENT)

        # Quit
        self.QUIT = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
            'Quit', 'terminate:', '')
        self.SEPERATOR = NSMenuItem.separatorItem()
        self.menuBar.addItem_(self.SEPERATOR)
        self.menuBar.addItem_(self.QUIT)

        # Add menu to status bar
        self.statusItem.setMenu_(self.menuBar)

        # Create our timer
        self.timer = \
            NSTimer \
            .scheduledTimerWithTimeInterval_target_selector_userInfo_repeats_(
                1, self, 'update:', '', True
            )

        # Add our timer to the runloop
        NSRunLoop.currentRunLoop().addTimer_forMode_(
            self.timer, NSEventTrackingRunLoopMode)

        print('Simon is now running.')
        print('CTRL+C does not work here.')
        print('You can quit through the menubar.')
Esempio n. 31
0
    def _setup_menuBar(self):
        statusBar = NSStatusBar.systemStatusBar()
        self.statusItem = statusBar.statusItemWithLength_(-1)
        self.menuBar = NSMenu.alloc().init()

        self.statusItem.setTitle_('Simon')

        # Labels/buttons
        self.SYSTEM = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
            'System', 'doNothing:', '')
        self.DISKIO = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
            'Disk I/O', 'doNothing:', '')
        self.NETWORK = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
            'Network', 'doNothing:', '')
        self.QUIT = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
            'Quit', 'terminate:', '')

        # System
        self.CPU_USAGE = self._create_empty_menu_item()
        self.RAM_USAGE = self._create_empty_menu_item()
        self.RAM_AVAILABLE = self._create_empty_menu_item()

        # Disk I/O
        self.DATA_READ = self._create_empty_menu_item()
        self.DATA_WRITTEN = self._create_empty_menu_item()

        # Network
        self.NETWORK_RECV = self._create_empty_menu_item()
        self.NETWORK_SENT = self._create_empty_menu_item()
        '''
        Add our items to the menuBar - yields the following output:

        Simon
            System
                CPU Usage
                RAM Usage
                Available Memory
            Disk I/O
                Read
                Written
            Network
                Received
                Sent
            -----------------------
            Quit
        '''
        self.menuBar.addItem_(self.SYSTEM)  # system label
        self.menuBar.addItem_(self.CPU_USAGE)
        self.menuBar.addItem_(self.RAM_USAGE)
        self.menuBar.addItem_(self.RAM_AVAILABLE)

        self.menuBar.addItem_(self.DISKIO)  # disk I/O label
        self.menuBar.addItem_(self.DATA_READ)
        self.menuBar.addItem_(self.DATA_WRITTEN)

        self.menuBar.addItem_(self.NETWORK)  # network label
        self.menuBar.addItem_(self.NETWORK_RECV)
        self.menuBar.addItem_(self.NETWORK_SENT)

        self.menuBar.addItem_(NSMenuItem.separatorItem())  # seperator
        self.menuBar.addItem_(self.QUIT)  # quit button

        # Add menu to status bar
        self.statusItem.setMenu_(self.menuBar)
Esempio n. 32
0
 def _populatePlacard(self):
     if not hasattr(self, "placard"):
         return
     options = self._placardOptions = [
         (None, None, None),  # Display...
         ("Fill", "showGlyphFill", None),
         ("Stroke", "showGlyphStroke", None),
         ("Image", "showGlyphImage", None),
         ("Metrics", "showGlyphMargins", None),
         ("On Curve Points", "showGlyphOnCurvePoints", None),
         ("Off Curve Points", "showGlyphOffCurvePoints", None),
         ("Point Coordinates", "showGlyphPointCoordinates", None),
         ("Anchors", "showGlyphAnchors", None),
         ("Blues", "showFontPostscriptBlues", None),
         ("Family Blues", "showFontPostscriptFamilyBlues", None),
         (None, None, None),  # layer divider
     ]
     if not hasattr(self, "_placardLayerOptions"):
         self._placardLayerOptions = {}
     # title
     item = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_("Display...", None, "")
     item.setHidden_(True)
     items = [item]
     # main layer
     for title, drawingAttribute, layerName in options:
         if title is None:
             continue
         state = self.getDrawingAttribute(drawingAttribute)
         item = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(title, None, "")
         item.setState_(state)
         items.append(item)
     # sub layers
     glyph = self._glyphView.getGlyph()
     if glyph is not None:
         layerSet = glyph.layerSet
         if layerSet is not None:
             if len(layerSet.layerOrder) > 1:
                 items.append(NSMenuItem.separatorItem())
                 # prep the state dictionary
                 for layerName in list(self._placardLayerOptions.keys()):
                     if layerName not in layerSet:
                         del self._placardLayerOptions[layerName]
                 for layerName in layerSet.layerOrder:
                     if layerName not in self._placardLayerOptions:
                         self._placardLayerOptions[layerName] = False
                 for layerName in layerSet.layerOrder:
                     state = self._placardLayerOptions[layerName]
                     enabled = True
                     if layerName == glyph.layer.name:
                         state = True
                         enabled = False
                     self._placardOptions.append((None, None, layerName))
                     title = "Layer: %s" % layerName
                     item = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(title, None, "")
                     item.setState_(state)
                     item.setEnabled_(enabled)
                     items.append(item)
     # set the items
     self.placard.optionsButton.setItems(items)
     button = self.placard.optionsButton.getNSPopUpButton()
     button.setTitle_("Display...")
     # update the layer options
     self._updateLayerDrawingAttributes()
Esempio n. 33
0
 def __init__(self):
     self._menuitem = NSMenuItem.separatorItem()
 def setFont(self, font):
     # script list
     if font is None:
         scriptList = []
     else:
         scriptList = ["DFLT"] + font.getScriptList()
     unsupportedScripts = [i for i in scriptTags if i not in scriptList]
     if unsupportedScripts:
         scriptList.append(NSMenuItem.separatorItem())
         scriptList += unsupportedScripts
     self._controlGroup.scriptPopUpButton.setItems(scriptList)
     # language list
     if font is None:
         languageList = []
     else:
         languageList = ["Default"] + font.getLanguageList()
     unsupportedLanguages = [i for i in languageTags if i not in languageList]
     if unsupportedLanguages:
         languageList.append(NSMenuItem.separatorItem())
         languageList += unsupportedLanguages
     self._controlGroup.languagePopUpButton.setItems(languageList)
     # teardown existing controls
     for attr in self._gsubAttributes:
         delattr(self._controlGroup, attr)
     for attr in self._gposAttributes:
         delattr(self._controlGroup, attr)
     for attr in self._featureNames:
         delattr(self._controlGroup, attr)
     if hasattr(self._controlGroup, "gposTitle"):
         del self._controlGroup.gposTitle
     if hasattr(self._controlGroup, "gsubTitle"):
         del self._controlGroup.gsubTitle
     # stylistic set names
     if hasattr(font, "stylisticSetNames"):
         stylisticSetNames = font.stylisticSetNames
     else:
         stylisticSetNames = {}
     # GSUB
     top = self._dynamicTop
     if font is None:
         gsub = None
     else:
         gsub = font.gsub
     if gsub is None:
         gsubFeatureList = []
     else:
         gsubFeatureList = gsub.getFeatureList()
     self._gsubAttributes = {}
     self._featureNames = {}
     if gsubFeatureList:
         self._controlGroup.gsubTitle = vanilla.TextBox((10, top, -10, 14),
             NSAttributedString.alloc().initWithString_attributes_("GSUB", titleControlAttributes), sizeStyle="small")
         top += 20
         for tag in gsubFeatureList:
             state = font.gsub.getFeatureState(tag)
             attr = "gsubCheckBox_%s" % tag
             obj = vanilla.CheckBox((10, top, -10, 22), tag, value=state, callback=self._controlEditCallback)
             setattr(self._controlGroup, attr, obj)
             self._gsubAttributes[attr] = tag
             top += 20
             # stylistic set name
             if tag in stylisticSetNames:
                 attr = "ssName_%s" % tag
                 setName = stylisticSetNames[tag]
                 if hasattr(self._controlGroup, attr):
                     obj = getattr(self._controlGroup, attr)
                     obj.set(setName)
                 else:
                     obj = vanilla.TextBox((26, top, -10, 13), setName, sizeStyle="mini")
                     setattr(self._controlGroup, attr, obj)
                 self._featureNames[attr] = setName
                 top += 13
         top += 10
     # GPOS
     if font is None:
         gpos = None
     else:
         gpos = font.gpos
     if gpos is None:
         gposFeatureList = []
     else:
         gposFeatureList = gpos.getFeatureList()
     self._gposAttributes = {}
     if gposFeatureList:
         self._controlGroup.gposTitle = vanilla.TextBox((10, top, -10, 14),
             NSAttributedString.alloc().initWithString_attributes_("GPOS", titleControlAttributes), sizeStyle="small")
         top += 20
         for tag in gposFeatureList:
             state = font.gpos.getFeatureState(tag)
             attr = "gposCheckBox_%s" % tag
             obj = vanilla.CheckBox((10, top, -10, 22), tag, value=state, callback=self._controlEditCallback)
             setattr(self._controlGroup, attr, obj)
             self._gposAttributes[attr] = tag
             top += 20
         top += 10
     # set the view size
     (x, y), (w, h) = self._nsObject.documentView().frame()
     self._nsObject.documentView().setFrame_(((x, y), (w, top)))
     x, y, w, h = self._controlGroup.getPosSize()
     self._controlGroup.setPosSize((x, y, w, top))