Пример #1
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()
Пример #2
0
    def applicationDidFinishLaunching_(self, notification):
        self.statusbar = NSStatusBar.systemStatusBar()
        # Create the statusbar item
        self.statusitem = self.statusbar.statusItemWithLength_(NSVariableStatusItemLength)
        # Set initial image
        raw_data = base64.b64decode(''.join(GOAGENT_ICON_DATA.strip().splitlines()))
        self.image_data = NSData.dataWithBytes_length_(raw_data, len(raw_data))
        self.image = NSImage.alloc().initWithData_(self.image_data)
        self.statusitem.setImage_(self.image)
        # Let it highlight upon clicking
        self.statusitem.setHighlightMode_(1)
        # Set a tooltip
        self.statusitem.setToolTip_('GoAgent OSX')

        # Build a very simple menu
        self.menu = NSMenu.alloc().init()
        # Show Menu Item
        menuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_('Show', 'show:', '')
        self.menu.addItem_(menuitem)
        # Hide Menu Item
        menuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_('Hide', 'hide:', '')
        self.menu.addItem_(menuitem)
        # Rest Menu Item
        menuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_('Reset', 'reset:', '')
        self.menu.addItem_(menuitem)
        # Default event
        menuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_('Quit', 'terminate:', '')
        self.menu.addItem_(menuitem)
        # Bind it to the status item
        self.statusitem.setMenu_(self.menu)
Пример #3
0
    def _create_menu(self):
        self.menu = NSMenu.alloc().init()
        self.menu.setAutoenablesItems_(False)
        self.trayicon.setMenu_(self.menu)

        menuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
            'Status: loading', '', '')
        menuitem.setEnabled_(False)
        self._menu_items['status'] = menuitem
        self.menu.addItem_(menuitem)

        menuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
            'Sync now', 'sync:', '')
        menuitem.setEnabled_(False)
        self._menu_items['sync'] = menuitem
        self.menu.addItem_(menuitem)

        menuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
            'Resolve conflicts', 'resolve:', '')
        menuitem.setEnabled_(False)
        self._menu_items['resolve'] = menuitem
        self.menu.addItem_(menuitem)

        menuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
            app.get().status == interfaces.STATUS_DISABLED \
                and 'Enable' or 'Disable',
            'enabledisable:', '')
        self._menu_items['enable_disable'] = menuitem
        self.menu.addItem_(menuitem)

        menuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
            'Quit', 'terminate:', '')
        self._menu_items['quit'] = menuitem
        self.menu.addItem_(menuitem)
Пример #4
0
def setupWindowMenu():
		windowMenu = NSMenu.alloc().initWithTitle_('Window')
		menuItem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_('Minimize', 'performMiniaturize:', 'm')
		windowMenu.addItem_(menuItem)
		del menuItem
		windowMenuItem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_('Window', None, '')
		windowMenuItem.setSubmenu_(windowMenu)
		NSApp().mainMenu().addItem_(windowMenuItem)
		NSApp().setWindowsMenu_(windowMenu)
Пример #5
0
    def setupUI(self):
        self.statusbar = NSStatusBar.systemStatusBar()
        # Create the statusbar item
        self.statusitem = self.statusbar.statusItemWithLength_(NSVariableStatusItemLength)
        # Set initial image
        raw_data = base64.b64decode(''.join(GOAGENT_ICON_DATA.strip().splitlines()))
        self.image_data = NSData.dataWithBytes_length_(raw_data, len(raw_data))
        self.image = NSImage.alloc().initWithData_(self.image_data)
        self.statusitem.setImage_(self.image)
        # Let it highlight upon clicking
        self.statusitem.setHighlightMode_(1)
        # Set a tooltip
        self.statusitem.setToolTip_(GOAGENT_TITLE)

        # Build a very simple menu
        self.menu = NSMenu.alloc().init()
        # Show Menu Item
        menuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_('Show', 'show:', '')
        self.menu.addItem_(menuitem)
        # Hide Menu Item
        menuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_('Hide', 'hide2:', '')
        self.menu.addItem_(menuitem)
        # Rest Menu Item
        menuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_('Reload', 'reset:', '')
        self.menu.addItem_(menuitem)
        # Default event
        menuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_('Quit', 'exit:', '')
        self.menu.addItem_(menuitem)
        # Bind it to the status item
        self.statusitem.setMenu_(self.menu)

        # Console window
        frame = NSMakeRect(0,0,550,350)
        self.console_window = NSWindow.alloc().initWithContentRect_styleMask_backing_defer_(frame, NSClosableWindowMask|NSTitledWindowMask, NSBackingStoreBuffered, False)
        self.console_window.setTitle_(GOAGENT_TITLE)
        self.console_window.setDelegate_(self)

        # Console view inside a scrollview
        self.scroll_view = NSScrollView.alloc().initWithFrame_(frame)
        self.scroll_view.setBorderType_(NSNoBorder)
        self.scroll_view.setHasVerticalScroller_(True)
        self.scroll_view.setHasHorizontalScroller_(False)
        self.scroll_view.setAutoresizingMask_(NSViewWidthSizable|NSViewHeightSizable)

        self.console_view = NSTextView.alloc().initWithFrame_(frame)
        self.console_view.setVerticallyResizable_(True)
        self.console_view.setHorizontallyResizable_(True)
        self.console_view.setAutoresizingMask_(NSViewWidthSizable)

        self.scroll_view.setDocumentView_(self.console_view)

        contentView = self.console_window.contentView()
        contentView.addSubview_(self.scroll_view)

        # Hide dock icon
        NSApp.setActivationPolicy_(NSApplicationActivationPolicyProhibited)
Пример #6
0
    def finishLaunching(self):
        # Make statusbar item
        statusbar = NSStatusBar.systemStatusBar()
        self.statusitem = statusbar.statusItemWithLength_(
            NSVariableStatusItemLength)
        # Thanks Matthias Kretschmann
        # at http://kremalicious.com/coffee-cup-icon/
        icon_path = NSBundle.mainBundle()\
                            .pathForResource_ofType_(
                                ICON_BASE, ICON_EXT)
        if not icon_path:
            icon_path = ICON_FILE
        self.icon = NSImage.alloc()\
                           .initByReferencingFile_(icon_path)
        self.icon.setScalesWhenResized_(True)
        self.icon.setSize_((20, 20))
        self.statusitem.setImage_(self.icon)

        # Make the menu
        self.menubarMenu = NSMenu.alloc().init()

        self.menuItem = NSMenuItem.alloc()\
                                  .initWithTitle_action_keyEquivalent_(
                                      'Connect', 'connectAndCloseCNA:', '')
        self.menubarMenu.addItem_(self.menuItem)

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

        # Add menu to statusitem
        self.statusitem.setMenu_(self.menubarMenu)
        self.statusitem.setToolTip_('Cartel')
        self.statusitem.setHighlightMode_(True)

        # Get the default notification center.
        self.workspace = NSWorkspace.sharedWorkspace()
        self.default_center = NSNotificationCenter.defaultCenter()

        # Create the handler
        self.rhandler = ReachabilityHandler.new()
        self.rhandler.app = self

        self.default_center.addObserver_selector_name_object_(
            self.rhandler,
            "handleChange:",
            kReachabilityChangedNotification,
            None)

        # Create the reachability object and start notifactions.
        self.reachability = Reachability()
        self.reachability.startNotifier()
Пример #7
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')
def addToolbarItem(aController, anIdentifier, aLabel, aPaletteLabel, aToolTip,
                   aTarget, anAction, anItemContent, aMenu):
    """
    Add a toolbar button of some kind.
    """
    toolbarItem = NSToolbarItem.alloc().initWithItemIdentifier_(anIdentifier)

    toolbarItem.setLabel_(aLabel)
    toolbarItem.setPaletteLabel_(aPaletteLabel)
    toolbarItem.setToolTip_(aToolTip)
    toolbarItem.setTarget_(aTarget)
    if anAction:
        toolbarItem.setAction_(anAction)

    if type(anItemContent) == NSImage:
        toolbarItem.setImage_(anItemContent)
    else:
        toolbarItem.setView_(anItemContent)
        bounds = anItemContent.bounds()
        minSize = (bounds[1][0], bounds[1][1])
        maxSize = (bounds[1][0], bounds[1][1])
        toolbarItem.setMinSize_(minSize)
        toolbarItem.setMaxSize_(maxSize)

    if aMenu:
        menuItem = NSMenuItem.alloc().init()
        menuItem.setSubmenu_(aMenu)
        menuItem.setTitle_(aMenu.title())
        toolbarItem.setMenuFormRepresentation_(menuItem)

    aController._toolbarItems[anIdentifier] = toolbarItem
Пример #9
0
 def __init__(self, title, callback=None, key='', icon=None, dimensions=None):
     self._menuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(str(title), None, '')
     if callable(callback):
         self.set_callback(callback, key)
     self._submenu = self._icon = None
     self.set_icon(icon, dimensions)
     super(MenuItem, self).__init__()
Пример #10
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
Пример #11
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
Пример #12
0
def addToolbarItem(aController, anIdentifier, aLabel, aPaletteLabel,
                   aToolTip, aTarget, anAction, anItemContent, aMenu):
    """
    Add a toolbar button of some kind.
    """
    toolbarItem = NSToolbarItem.alloc().initWithItemIdentifier_(anIdentifier)

    toolbarItem.setLabel_(aLabel)
    toolbarItem.setPaletteLabel_(aPaletteLabel)
    toolbarItem.setToolTip_(aToolTip)
    toolbarItem.setTarget_(aTarget)
    if anAction:
        toolbarItem.setAction_(anAction)

    if type(anItemContent) == NSImage:
        toolbarItem.setImage_(anItemContent)
    else:
        toolbarItem.setView_(anItemContent)
        bounds = anItemContent.bounds()
        minSize = (bounds[1][0], bounds[1][1])
        maxSize = (bounds[1][0], bounds[1][1])
        toolbarItem.setMinSize_(minSize)
        toolbarItem.setMaxSize_(maxSize)

    if aMenu:
        menuItem = NSMenuItem.alloc().init()
        menuItem.setSubmenu_(aMenu)
        menuItem.setTitle_(aMenu.title())
        toolbarItem.setMenuFormRepresentation_(menuItem)

    aController._toolbarItems[anIdentifier] = toolbarItem
Пример #13
0
    def initializeStatusBar(self):
        _log(self)
        self.nsstatusitem = NSStatusBar.systemStatusBar(
        ).statusItemWithLength_(-1)  # variable dimensions
        self.nsstatusitem.setHighlightMode_(True)
        self.mainmenu = NSMenu.alloc().init()
        self.nsstatusitem.setMenu_(
            self.mainmenu)  # mainmenu of our status bar spot
        self.quit = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
            'Quit', 'terminate:', '')

        _log(self.mainmenu)

        if self._app['_icon'] is not None:
            self.setStatusBarIcon()
            _log('creating icon')
            if self._app['_title'] is not None:
                self.setStatusBarTitle()
        else:
            self.setStatusBarTitle()

        if self._app['_menu'] is not None:
            for item in self._app['_menu'].itervalues():
                self.mainmenu.addItem_(
                    item()
                )  # calling works for separators and getting NSMenuItem from MenuItem objs
        self.mainmenu.addItem_(self.quit)
Пример #14
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();
Пример #15
0
    def loadPlugin(self):
        mainMenu = NSApplication.sharedApplication().mainMenu()
        s = objc.selector(self.showWindow, signature='v@:')
        newMenuItem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
            self.title(), s, "")
        newMenuItem.setTarget_(self)

        mainMenu.itemAtIndex_(2).submenu().addItem_(newMenuItem)
 def makeDisplaySettingsMenuItems(self):
     displaySettingsMenuItems = [
         NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
             self.displaySettingsRecord[key][0], None, '')
         for key in sorted(self.displaySettingsRecord.keys())
     ]
     displaySettingsMenuItems.insert(0, 'Settings')
     return displaySettingsMenuItems
Пример #17
0
def setupAppleMenu():
		appleMenuController = objc.lookUpClass('NSAppleMenuController').alloc().init()
		appleMenu = NSMenu.alloc().initWithTitle_('')
		appleMenuItem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_('', None, '')
		appleMenuItem.setSubmenu_(appleMenu)
		NSApp().mainMenu().addItem_(appleMenuItem)
		appleMenuController.controlMenu_(appleMenu)
		NSApp().mainMenu().removeItem_(appleMenuItem)
Пример #18
0
            def _init_menu(self):
                menu = NSMenu.alloc().init()

                # App name menu
                appname_menuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(  # noqa
                    u'{} {}'.format(unicode(sc.name), sc.version), None, ''
                )
                menu.addItem_(appname_menuitem)

                # Quit menu
                # action `xxx:` will bind to `xxx_` method of delegate
                quit_menuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(  # noqa
                    unicode('Quit'), 'quit:', 'q'
                )
                quit_menuitem.setTarget_(sc)
                menu.addItem_(quit_menuitem)

                self.nsstatusitem.setMenu_(menu)
Пример #19
0
 def __init__(self, title, callback=None, key='', icon=None, dimensions=None):
     if isinstance(title, MenuItem):  # don't initialize already existing instances
         return
     self._menuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(str(title), None, '')
     if callable(callback):
         self.set_callback(callback, key)
     self._menu = self._icon = None
     self.set_icon(icon, dimensions)
     super(MenuItem, self).__init__()
Пример #20
0
 def __init__(self, title, callback=None, key='', icon=None, dimensions=None):
     if isinstance(title, MenuItem):  # don't initialize already existing instances
         return
     self._menuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(str(title), None, '')
     if callable(callback):
         self.set_callback(callback, key)
     self._menu = self._icon = None
     self.set_icon(icon, dimensions)
     super(MenuItem, self).__init__()
Пример #21
0
            def _init_menu(self):
                menu = NSMenu.alloc().init()

                # App name menu
                appname_menuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(  # noqa
                    u'{} {}'.format(unicode(sc.name), sc.version), None, ''
                )
                menu.addItem_(appname_menuitem)

                # Quit menu
                # action `xxx:` will bind to `xxx_` method of delegate
                quit_menuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(  # noqa
                    unicode('Quit'), 'quit:', 'q'
                )
                quit_menuitem.setTarget_(sc)
                menu.addItem_(quit_menuitem)

                self.nsstatusitem.setMenu_(menu)
Пример #22
0
 def _getGlyphMenuItem(self, glyph):
     name = glyph.name
     menuItem = NSMenuItem.alloc().init()
     image = glyph.getRepresentation("defconAppKit.MenuImage")
     menuItem.setImage_(image)
     menuItem.setTitle_(name)
     menuItem.setTarget_(self)
     menuItem.setAction_("_dummyAction:")
     return menuItem
Пример #23
0
 def _getGlyphMenuItem(self, glyph):
     name = glyph.name
     menuItem = NSMenuItem.alloc().init()
     image = glyph.getRepresentation("defconAppKit.MenuImage")
     menuItem.setImage_(image)
     menuItem.setTitle_(name)
     menuItem.setTarget_(self)
     menuItem.setAction_("_dummyAction:")
     return menuItem
Пример #24
0
 def __init__(self, title, callback=None, key=None, icon=None, dimensions=None, state=False):
     if isinstance(title, MenuItem):  # don't initialize already existing instances
         return
     self._menuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(unicode(title), None, '')
     self._menuitem.setTarget_(NSApp)
     self._menu = self._icon = None
     self.set_callback(callback, key)
     self.set_icon(icon, dimensions)
     self.state = state
     super(MenuItem, self).__init__()
Пример #25
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)
Пример #26
0
 def __init__(self, title, callback=None, key=None, icon=None, dimensions=None, template=None):
     if isinstance(title, MenuItem):  # don't initialize already existing instances
         return
     self._menuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(text_type(title), None, '')
     self._menuitem.setTarget_(NSApp)
     self._menu = self._icon = None
     self.set_callback(callback, key)
     self._template = template
     self.set_icon(icon, dimensions, template)
     super(MenuItem, self).__init__()
Пример #27
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')
Пример #28
0
def executeVanillaTest(cls, nibPath=None, calls=None, **kwargs):
    """
    Execute a Vanilla UI class in a mini application.
    """
    app = NSApplication.sharedApplication()
    delegate = _VanillaMiniAppDelegate.alloc().init()
    app.setDelegate_(delegate)

    if nibPath:
        NSBundle.loadNibFile_externalNameTable_withZone_(nibPath, {}, None)
    else:
        mainMenu = NSMenu.alloc().initWithTitle_("Vanilla Test")

        fileMenuItem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
            "File", None, "")
        fileMenu = NSMenu.alloc().initWithTitle_("File")
        fileMenuItem.setSubmenu_(fileMenu)
        mainMenu.addItem_(fileMenuItem)

        editMenuItem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
            "Edit", None, "")
        editMenu = NSMenu.alloc().initWithTitle_("Edit")
        editMenuItem.setSubmenu_(editMenu)
        mainMenu.addItem_(editMenuItem)

        helpMenuItem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
            "Help", None, "")
        helpMenu = NSMenu.alloc().initWithTitle_("Help")
        helpMenuItem.setSubmenu_(helpMenu)
        mainMenu.addItem_(helpMenuItem)

        app.setMainMenu_(mainMenu)

    if cls is not None:
        cls(**kwargs)

    if calls is not None:
        for call, kwargs in calls:
            call(**kwargs)

    app.activateIgnoringOtherApps_(True)
    AppHelper.runEventLoop()
Пример #29
0
 def addMenuItem(self):
     mainMenu = NSApplication.sharedApplication().mainMenu()
     s = objc.selector(self.selectGlyphsWithErrors, signature='v@:')
     newMenuItem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
         Glyphs.localize({
             'en': u"Select Glyphs With Outline Errors",
             'de': u'Glyphen mit Outlinefehlern auswählen',
             'ko': u"윤곽선 오류가 있는 글리프 선택"
         }), s, "")
     newMenuItem.setTarget_(self)
     mainMenu.itemAtIndex_(2).submenu().insertItem_atIndex_(newMenuItem, 11)
Пример #30
0
    def create_ui(self):
        icon = NSImage.alloc().initByReferencingFile_('main.icns')
        icon.setScalesWhenResized_(True)
        icon.setSize_((20, 20))
        self.menu = NSMenu.alloc().init()

        configureMenuItem = NSMenuItem.alloc(
        ).initWithTitle_action_keyEquivalent_('Configure', 'clickedConfigure:',
                                              '')
        self.menu.addItem_(configureMenuItem)

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

        self.nsstatusitem = NSStatusBar.systemStatusBar(
        ).statusItemWithLength_(NSVariableStatusItemLength)
        self.nsstatusitem.setImage_(icon)
        self.nsstatusitem.setHighlightMode_(True)
        self.nsstatusitem.setMenu_(self.menu)
Пример #31
0
 def getFirstItem(self):
     actionImage = NSImage.imageNamed_(NSImageNameActionTemplate).copy()
     sizeStyle = _reverseSizeStyleMap[self._nsObject.cell().controlSize()]
     if sizeStyle == "small":
         actionImage.setSize_((10, 10))
     elif sizeStyle == "mini":
         actionImage.setSize_((10, 10))
     firstActionItem = NSMenuItem.alloc().init()
     firstActionItem.setImage_(actionImage)
     firstActionItem.setTitle_("")
     return firstActionItem
Пример #32
0
 def __init__(self, value=50, min_value=0, max_value=100, callback=None, dimensions=(180, 15)):
     self._slider = NSSlider.alloc().init()
     self._slider.setMinValue_(min_value)
     self._slider.setMaxValue_(max_value)
     self._slider.setDoubleValue_(value)
     self._slider.setFrameSize_(NSSize(*dimensions))
     self._slider.setTarget_(NSApp)
     self._menuitem = NSMenuItem.alloc().init()
     self._menuitem.setTarget_(NSApp)
     self._menuitem.setView_(self._slider)
     self.set_callback(callback)
Пример #33
0
 def getFirstItem(self):
     actionImage = NSImage.imageNamed_(NSImageNameActionTemplate).copy()
     sizeStyle = _reverseSizeStyleMap[self._nsObject.cell().controlSize()]
     if sizeStyle == "small":
         actionImage.setSize_((10, 10))
     elif sizeStyle == "mini":
         actionImage.setSize_((10, 10))
     firstActionItem = NSMenuItem.alloc().init()
     firstActionItem.setImage_(actionImage)
     firstActionItem.setTitle_("")
     return firstActionItem
Пример #34
0
 def start(self):
     mainMenu = NSApplication.sharedApplication().mainMenu()
     s = objc.selector(self.editMasterGrid, signature=b'v@:@')
     newMenuItem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
         Glyphs.localize({
             'en': "Master Grid…",
             'de': 'Master-Raster…'
         }), s, "")
     newMenuItem.setTarget_(self)
     submenu = mainMenu.itemAtIndex_(2).submenu()
     submenu.insertItem_atIndex_(newMenuItem, 12)
Пример #35
0
    def _finishLoadingEditor(self, old):
        result = old(self)
        if self.messageType() not in [1, 2, 3, 8]:
            return result

        view = self.composeWebView()
        document = view.mainFrame().DOMDocument()
        view.contentElement().removeStrayLinefeeds()
        blockquotes = document.getElementsByTagName_('BLOCKQUOTE')
        for index in xrange(blockquotes.length()):
            if blockquotes.item_(index):
                blockquotes.item_(index).removeStrayLinefeeds()

        if self.messageType() in [1, 2, 8]:
            view.moveToBeginningOfDocument_(None)
            view.moveToEndOfParagraphAndModifySelection_(None)
            view.moveForwardAndModifySelection_(None)
            item = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
                'Decrease', 'changeQuoteLevel:', '')
            item.setTag_(-1)
            view.changeQuoteLevel_(item)

            attribution = view.selectedDOMRange().stringValue()
            attribution = attribution.split(u',', 2)[-1].lstrip()
            if view.isAutomaticTextReplacementEnabled():
                view.setAutomaticTextReplacementEnabled_(False)
                view.insertText_(attribution)
                view.setAutomaticTextReplacementEnabled_(True)
            else:
                view.insertText_(attribution)

            signature = document.getElementById_('AppleMailSignature')
            if signature:
                range = document.createRange()
                range.selectNode_(signature)
                view.setSelectedDOMRange_affinity_(range, 0)
                view.moveUp_(None)
            else:
                view.moveToEndOfDocument_(None)
                view.insertParagraphSeparator_(None)

        if self.messageType() == 3:
            for index in xrange(blockquotes.length()):
                blockquote = blockquotes.item_(index)
                if blockquote.quoteLevel() == 1:
                    blockquote.parentNode().insertBefore__(
                        document.createElement_('BR'), blockquote)

        view.insertParagraphSeparator_(None)
        view.undoManager().removeAllActions()
        self.setHasUserMadeChanges_(False)
        self.backEnd().setHasChanges_(False)
        return result
Пример #36
0
    def _finishLoadingEditor(self, old):
        result = old(self)
        if self.messageType() not in [1, 2, 3, 8]:
            return result

        view = self.composeWebView()
        document = view.mainFrame().DOMDocument()
        view.contentElement().removeStrayLinefeeds()
        blockquotes = document.getElementsByTagName_('BLOCKQUOTE')
        for index in xrange(blockquotes.length()):
            if blockquotes.item_(index):
                blockquotes.item_(index).removeStrayLinefeeds()

        if self.messageType() in [1, 2, 8]:
            view.moveToBeginningOfDocument_(None)
            view.moveToEndOfParagraphAndModifySelection_(None)
            view.moveForwardAndModifySelection_(None)
            item = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
                'Decrease', 'changeQuoteLevel:', '')
            item.setTag_(-1)
            view.changeQuoteLevel_(item)

            attribution = view.selectedDOMRange().stringValue()
            attribution = attribution.rsplit(u',', 1)[-1].lstrip()
            if view.isAutomaticTextReplacementEnabled():
                view.setAutomaticTextReplacementEnabled_(False)
                view.insertText_(attribution)
                view.setAutomaticTextReplacementEnabled_(True)
            else:
                view.insertText_(attribution)

            signature = document.getElementById_('AppleMailSignature')
            if signature:
                range = document.createRange()
                range.selectNode_(signature)
                view.setSelectedDOMRange_affinity_(range, 0)
                view.moveUp_(None)
            else:
                view.moveToEndOfDocument_(None)
                view.insertParagraphSeparator_(None)

        if self.messageType() == 3:
            for index in xrange(blockquotes.length()):
                blockquote = blockquotes.item_(index)
                if blockquote.quoteLevel() == 1:
                    blockquote.parentNode().insertBefore__(
                        document.createElement_('BR'), blockquote)

        view.insertParagraphSeparator_(None)
        view.undoManager().removeAllActions()
        self.setHasUserMadeChanges_(False)
        self.backEnd().setHasChanges_(False)
        return result
Пример #37
0
    def finishLaunching(self):
        # Make statusbar item
        statusbar = NSStatusBar.systemStatusBar()
        self.statusitem = statusbar.statusItemWithLength_(NSVariableStatusItemLength)
        self.icon = NSImage.alloc().initByReferencingFile_('icon.png')
        self.icon.setScalesWhenResized_(True)
        self.icon.setSize_((20, 20))
        self.statusitem.setImage_(self.icon)

        #make the menu
        self.menubarMenu = NSMenu.alloc().init()

        self.menuItem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_('Click Me', 'clicked:', '')
        self.menubarMenu.addItem_(self.menuItem)

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

        #add menu to statusitem
        self.statusitem.setMenu_(self.menubarMenu)
        self.statusitem.setToolTip_('My App')
Пример #38
0
def executeVanillaTest(cls, nibPath=None, calls=None, **kwargs):
    """
    Execute a Vanilla UI class in a mini application.
    """
    app = NSApplication.sharedApplication()
    delegate = _VanillaMiniAppDelegate.alloc().init()
    app.setDelegate_(delegate)

    if nibPath:
        NSBundle.loadNibFile_externalNameTable_withZone_(nibPath, {}, None)
    else:
        mainMenu = NSMenu.alloc().initWithTitle_("Vanilla Test")

        fileMenuItem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_("File", None, "")
        fileMenu = NSMenu.alloc().initWithTitle_("File")
        fileMenuItem.setSubmenu_(fileMenu)
        mainMenu.addItem_(fileMenuItem)

        editMenuItem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_("Edit", None, "")
        editMenu = NSMenu.alloc().initWithTitle_("Edit")
        editMenuItem.setSubmenu_(editMenu)
        mainMenu.addItem_(editMenuItem)

        helpMenuItem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_("Help", None, "")
        helpMenu = NSMenu.alloc().initWithTitle_("Help")
        helpMenuItem.setSubmenu_(helpMenu)
        mainMenu.addItem_(helpMenuItem)

        app.setMainMenu_(mainMenu)

    if cls is not None:
        cls(**kwargs)

    if calls is not None:
        for call, kwargs in calls:
            call(**kwargs)

    app.activateIgnoringOtherApps_(True)
    AppHelper.runEventLoop()
    def menuForEvent_(self, event):
        _point = self.convertPoint_fromView_(event.locationInWindow(), None)
        _index = self.rowAtPoint_(_point)
        if -1 == _index:
            return None

        if not self.isRowSelected_(_index):
            self.selectRow_byExtendingSelection_(_index, False)

        _item = self.itemAtRow_(_index)
        _layer = Globals.unwrap(_item)
        if not isinstance(_layer, PythonCAD.Generic.layer.Layer):
            raise TypeError, "Invalid Layer: " + `_layer`
        
        _menu = NSMenu.alloc().initWithTitle_("Context")
        _menuItem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_("Rename", "EditLayerName:", "")
        _menu.addItem_(_menuItem)
        if _layer.isVisible():
            _menuItem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_("Hide", "HideLayer:", "")
        else:
            _menuItem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_("Show", "ShowLayer:", "")            
        _menuItem.setRepresentedObject_(_item)
        _menu.addItem_(_menuItem)
        _menuItem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_("Add Child Layer", "AddChildLayer:", "")
        _menuItem.setRepresentedObject_(_item)
        _menu.addItem_(_menuItem)
        _menuItem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_("Clear", "ClearLayer:", "")
        _menuItem.setRepresentedObject_(_item)
        _menu.addItem_(_menuItem)
        if _layer.hasChildren():
            _menuItem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_("Hide Children", "HideChildLayers:", "")
            _menuItem.setRepresentedObject_(_item)
            _menu.insertItem_atIndex_(_menuItem, 3)
            _menuItem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_("Show Children", "ShowChildLayers:", "")
            _menuItem.setRepresentedObject_(_item)
            _menu.insertItem_atIndex_(_menuItem, 4)
        elif _layer.getParentLayer() is not None:
            _menuItem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_("Delete", "DeleteLayer:", "")
            _menuItem.setRepresentedObject_(_item)
            _menu.addItem_(_menuItem)
        return _menu
            
        
        


        
            
            
Пример #40
0
    def finishLaunching(self):
        # Make statusbar item
        statusbar = NSStatusBar.systemStatusBar()
        self.statusitem = statusbar.statusItemWithLength_(NSVariableStatusItemLength)
        self.icon = NSImage.alloc().initByReferencingFile_("icon.png")
        self.icon.setScalesWhenResized_(True)
        self.icon.setSize_((20, 20))
        self.statusitem.setImage_(self.icon)

        # make the menu
        self.menubarMenu = NSMenu.alloc().init()

        self.menuItem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_("Test Notification", "clicked:", "")
        self.menubarMenu.addItem_(self.menuItem)

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

        # add menu to statusitem
        self.statusitem.setMenu_(self.menubarMenu)
        self.statusitem.setToolTip_("My App")
        self._notify_obj = Notification.alloc().init()
Пример #41
0
 def __init__(self,
              title,
              callback=None,
              key='',
              icon=None,
              dimensions=None):
     self._menuitem = NSMenuItem.alloc(
     ).initWithTitle_action_keyEquivalent_(str(title), None, '')
     if callable(callback):
         self.set_callback(callback, key)
     self._submenu = self._icon = None
     self.set_icon(icon, dimensions)
     super(MenuItem, self).__init__()
Пример #42
0
    def applicationDidFinishLaunching_(self, notification):
        self.native.activateIgnoringOtherApps(True)
        self.statusItem = NSStatusBar.systemStatusBar().statusItemWithLength_(NSVariableStatusItemLength)
        self.statusItem.setHighlightMode_(True)
        self.statusItem.setEnabled_(True)

        self.icon = NSImage.alloc().initByReferencingFile_("resources/app.icns")
        self.icon.setSize_((20,20))
        self.statusItem.setImage_(self.icon)

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

        item = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_("Check For Updates", "update:", "")
        self.menu.addItem_(item)
        item = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_("Open Website", "website:", "")
        self.menu.addItem_(item)
        item = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_("About", "about:", "")
        self.menu.addItem_(item)
        item = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_("Quit", "quit:", "")
        self.menu.addItem_(item)

        self.statusItem.setMenu_(self.menu)
Пример #43
0
	def addMenuItem(self):
		mainMenu = NSApplication.sharedApplication().mainMenu()
		s = objc.selector(self.selectGlyphsWithErrors,signature='v@:')
		newMenuItem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
			Glyphs.localize({
				'en': u"Select Glyphs With Outline Errors",
				'de': u'Glyphen mit Outlinefehlern auswählen',
				'ko': u"윤곽선 오류가 있는 글리프 선택"
			}),
			s,
			""
		)
		newMenuItem.setTarget_(self)
		mainMenu.itemAtIndex_(2).submenu().insertItem_atIndex_(newMenuItem, 11)
Пример #44
0
 def addMenuItem(self):
     mainMenu = NSApplication.sharedApplication().mainMenu()
     s = objc.selector(self.selectGlyphsWithErrors, signature=b"v@:@")
     newMenuItem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
         Glyphs.localize({
             "en": "Select Glyphs With Outline Errors",
             "de": "Glyphen mit Outlinefehlern auswählen",
             "ko": "윤곽선 오류가 있는 글리프 선택",
         }),
         s,
         "",
     )
     newMenuItem.setTarget_(self)
     mainMenu.itemAtIndex_(2).submenu().insertItem_atIndex_(newMenuItem, 12)
Пример #45
0
def build_menu(labels):
    menu = NSMenu.alloc().init()
    menu.setAutoenablesItems_(True)
    for label in labels:
        item = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
            localize._X(label), label.lower().replace(" ", "").split(" ")[0]+":", "")
            
        iconpath = os.path.join(settings.menuiconfolder, label.lower() + ".icns")
        if os.path.exists(iconpath):
            img = NSImage.alloc().initByReferencingFile_(iconpath)
            img.setSize_(NSSize(16, 16))
            item.setImage_(img)
        menu.addItem_(item)
    return menu
Пример #46
0
def setUpMenuHelper(Menu, Items, defaultTarget):
	if type(Items) == list:
		for entry in Items:
			
			if "index" in entry:
				index = int(entry["index"])
			else:
				index = -1

			# Use supplied NSMenuItem 
			if "menu" in entry:
				newMenuItem = entry["menu"]

			# Create menu item
			else:


				if "view" in entry and not "name" in entry:
					entry["name"] = ""
				if "view" in entry and not "action" in entry:
					entry["action"] = None
				
				
				newMenuItem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(entry["name"], entry["action"], "")
				
				if "view" in entry:
					try:
						view = entry["view"]
						if isinstance(view, NSView):
							newMenuItem.setView_(view)
					except:
						LogToConsole(traceback.format_exc(), "setUpMenuHelper") # from GlyhsApp.py
				if "state" in entry:
					state = entry["state"]
					if state == ONSTATE or state == OFFSTATE or state == MIXEDSTATE:
						newMenuItem.setState_(entry["state"])
					else:
						LogToConsole("illegal state for menu item '%s'" % entry["name"], "setUpMenuHelper")


			if "target" in entry:
				newMenuItem.setTarget_(entry["target"])
			else:
				newMenuItem.setTarget_(defaultTarget)

			if index >= 0:
				Menu.insertItem_atIndex_(newMenuItem, index)
			else:
				Menu.addItem_(newMenuItem)
Пример #47
0
def start_taskbar():
    t = NSStatusBar.systemStatusBar()
    icon = t.statusItemWithLength_(NSVariableStatusItemLength)
    icon.setHighlightMode_(1)
    menuitems = []
    labels = ["Open", "Logout", "Quit"]
    if patch.current.current == "DEV" or patch.config.branch == "master":
        labels = ["Open", "Logout", "Restart", "Test", "Quit"]
    for label in labels:
        item = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
            localize._X(label),
            label.lower().replace(" ", "").split(" ")[0] + ":", "")

        iconpath = os.path.join(settings.menuiconfolder,
                                label.lower() + ".icns")
        if os.path.exists(iconpath):
            img = NSImage.alloc().initByReferencingFile_(iconpath)
            img.setSize_(NSSize(16, 16))
            item.setImage_(img)
        menuitems.append(item)

    menu = NSMenu.alloc().init()
    menu.setAutoenablesItems_(True)
    icon.setMenu_(menu)
    for m in menuitems:
        menu.addItem_(m)

    def set_image(path):
        taskbarimg = NSImage.alloc().initByReferencingFile_(path)
        taskbarimg.setSize_(NSSize(18, 18))
        icon.setImage_(taskbarimg)

    # taskbar icon switching
    @event.register("api:connected")
    def set_active(*_):
        set_image(settings.taskbaricon)

    @event.register("api:disconnected")
    @event.register("api:connection_error")
    def set_inactive(*_):
        set_image(settings.taskbaricon_inactive)

    set_image(settings.taskbaricon_inactive)
    icon.setEnabled_(True)

    @login.config.register('username')
    def _():
        item = menu.itemAtIndex_(0)
        item.setTitle_(login.config.username or "Open")
Пример #48
0
def setUpMenuHelper(Menu, Items, defaultTarget):
	if type(Items) == list:
		for entry in Items:

			if "index" in entry:
				index = int(entry["index"])
			else:
				index = -1

			# Use supplied NSMenuItem
			if "menu" in entry:
				newMenuItem = entry["menu"]

			# Create menu item
			else:


				if "view" in entry and "name" not in entry:
					entry["name"] = ""
				if "view" in entry and "action" not in entry:
					entry["action"] = None


				newMenuItem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(entry["name"], entry["action"], "")

				if "view" in entry:
					try:
						view = entry["view"]
						if isinstance(view, NSView):
							newMenuItem.setView_(view)
					except:
						LogToConsole(traceback.format_exc(), "setUpMenuHelper")  # from GlyhsApp.py
				if "state" in entry:
					state = entry["state"]
					if state == ONSTATE or state == OFFSTATE or state == MIXEDSTATE:
						newMenuItem.setState_(entry["state"])
					else:
						LogToConsole("illegal state for menu item '%s'" % entry["name"], "setUpMenuHelper")


			if "target" in entry:
				newMenuItem.setTarget_(entry["target"])
			else:
				newMenuItem.setTarget_(defaultTarget)

			if index >= 0:
				Menu.insertItem_atIndex_(newMenuItem, index)
			else:
				Menu.addItem_(newMenuItem)
Пример #49
0
    def applicationDidFinishLaunching_(self, notification):
        self.statusbar = NSStatusBar.systemStatusBar()
        # Create the statusbar item
        self.statusitem = self.statusbar.statusItemWithLength_(
            NSVariableStatusItemLength)
        # Set initial image
        raw_data = base64.b64decode(''.join(
            GOAGENT_ICON_DATA.strip().splitlines()))
        self.image_data = NSData.dataWithBytes_length_(raw_data, len(raw_data))
        self.image = NSImage.alloc().initWithData_(self.image_data)
        self.statusitem.setImage_(self.image)
        # Let it highlight upon clicking
        self.statusitem.setHighlightMode_(1)
        # Set a tooltip
        self.statusitem.setToolTip_('GoAgent OSX')

        # Build a very simple menu
        self.menu = NSMenu.alloc().init()
        # Show Menu Item
        menuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
            'Show', 'show:', '')
        self.menu.addItem_(menuitem)
        # Hide Menu Item
        menuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
            'Hide', 'hide:', '')
        self.menu.addItem_(menuitem)
        # Rest Menu Item
        menuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
            'Reset', 'reset:', '')
        self.menu.addItem_(menuitem)
        # Default event
        menuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
            'Quit', 'terminate:', '')
        self.menu.addItem_(menuitem)
        # Bind it to the status item
        self.statusitem.setMenu_(self.menu)
Пример #50
0
def build_menu(labels):
    menu = NSMenu.alloc().init()
    menu.setAutoenablesItems_(True)
    for label in labels:
        item = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
            localize._X(label),
            label.lower().replace(" ", "").split(" ")[0] + ":", "")

        iconpath = os.path.join(settings.menuiconfolder,
                                label.lower() + ".icns")
        if os.path.exists(iconpath):
            img = NSImage.alloc().initByReferencingFile_(iconpath)
            img.setSize_(NSSize(16, 16))
            item.setImage_(img)
        menu.addItem_(item)
    return menu
Пример #51
0
def start_taskbar():
    t = NSStatusBar.systemStatusBar()
    icon = t.statusItemWithLength_(NSVariableStatusItemLength)
    icon.setHighlightMode_(1)
    menuitems = []
    labels = ["Open", "Logout", "Quit"]
    if patch.current.current == "DEV" or patch.config.branch == "master":
        labels = ["Open", "Logout", "Restart", "Test", "Quit"]
    for label in labels:
        item = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
            localize._X(label), label.lower().replace(" ", "").split(" ")[0]+":", "")
            
        iconpath = os.path.join(settings.menuiconfolder, label.lower() + ".icns")
        if os.path.exists(iconpath):
            img = NSImage.alloc().initByReferencingFile_(iconpath)
            img.setSize_(NSSize(16, 16))
            item.setImage_(img)
        menuitems.append(item)
    
    menu = NSMenu.alloc().init()
    menu.setAutoenablesItems_(True)
    icon.setMenu_(menu)
    for m in menuitems:
        menu.addItem_(m)
        
    def set_image(path):
        taskbarimg = NSImage.alloc().initByReferencingFile_(path)
        taskbarimg.setSize_(NSSize(18, 18))
        icon.setImage_(taskbarimg)
        
    # taskbar icon switching
    @event.register("api:connected")
    def set_active(*_):
        set_image(settings.taskbaricon)

    @event.register("api:disconnected")
    @event.register("api:connection_error")
    def set_inactive(*_):
        set_image(settings.taskbaricon_inactive)
    
    set_image(settings.taskbaricon_inactive)
    icon.setEnabled_(True)
    
    @login.config.register('username')
    def _():
        item = menu.itemAtIndex_(0)
        item.setTitle_(login.config.username or "Open")
Пример #52
0
    def _setup_menu_bar(self):
        """Setup the menu bar of the app."""
        self.main_menu = NSStatusBar.systemStatusBar().statusItemWithLength_(-1)
        self.menuBar = NSMenu.alloc().init()

        # [f for f in dir(NSButton) if 'Title' in f]
        self.button = self.main_menu.button
        self.update_(None)

        # Menu items
        quit_menu = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_("Quit", "terminate:", "")

        # Add items to the menuBar
        self.menuBar.addItem_(quit_menu)

        # Add menu to status bar
        self.main_menu.setMenu_(self.menuBar)
Пример #53
0
 def __init__(self):
 	""" Add the "Change Suffixes" menu item to the Font menu. """
     title = "Change Suffixes..."
     fontMenu = NSApp().mainMenu().itemWithTitle_("Font")
     if not fontMenu:
         print "Suffixer: Error, aborting"
         return
     fontMenu = fontMenu.submenu()
     if fontMenu.itemWithTitle_(title):
         return
         
     index = fontMenu.indexOfItemWithTitle_("Add Glyphs")
     self.target = CallbackWrapper(self.openWindow)
     newItem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(title, "action:", "S")
     newItem.setKeyEquivalentModifierMask_(NSAlternateKeyMask | NSCommandKeyMask);
     newItem.setTarget_(self.target)
     fontMenu.insertItem_atIndex_(newItem, index+1)
Пример #54
0
  def tick_(self, notification):
    self.devicesFound = 0

    if options.debug:
	start = time.time()

    deviceCmd = dict( mightyMouse = self.ioreg("AppleBluetoothHIDMouse","-rc"),
	 	      magicMouse = self.ioreg("BNBMouseDevice","-rc"),
	 	      magicTrackpad = self.ioreg("BNBTrackpadDevice","-rc"))
    deviceCmd['kb'] = self.ioreg("AppleBluetoothHIDKeyboard","-rc")
    if not deviceCmd['kb']:
        deviceCmd['kb'] = self.ioreg("IOAppleBluetoothHIDDriver","-n")

    for device,Output in deviceCmd.items():
	Percentage = 0
	if Output:
	    Percentage = re.search('BatteryPercent" = (\d{1,2}0?)', Output)
	    if Percentage:
		self.hit = True
		if options.debug:
		    print "Found " + device
		self.devicesFound += 1
		if self.noDevice is not None:
		    self.statusbar.removeStatusItem_(self.noDevice)
        	    self.menu.removeItem_(self.menuNotice)
		    self.noDevice = None
		if not device in self.barItem:
		    self.barItem[device] = self.createBarItem(self.barImage[device])
		self.barItem[device].setTitle_(Percentage.group(1) + '%')

	if device in self.barItem and not Percentage:
	    	self.statusbar.removeStatusItem_(self.barItem[device])
		del self.barItem[device]
    
    if options.debug:
	print "Found", self.devicesFound, "Devices."

    if self.devicesFound == 0 and self.noDevice == None:
        self.menuNotice = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_('BtBatStat: No devices found.', '', '')
        self.menu.insertItem_atIndex_(self.menuNotice,0)
	self.noDevice = self.createBarItem(self.noDeviceImage)

    if options.debug:
	end = time.time()
	print "Time elapsed = ", end - start, "seconds"
Пример #55
0
 def applicationDidFinishLaunching_(self, notification):
     global start_time
     statusbar = NSStatusBar.systemStatusBar()
     # Create the statusbar item
     self.statusitem = statusbar.statusItemWithLength_(70.0)
     # Set initial image
     self.statusitem.setTitle_(self.updateGeektime())
     # Let it highlight upon clicking
     self.statusitem.setHighlightMode_(1)
     
     self.menu = NSMenu.alloc().init()
     menuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_('Quit', 'terminate:', '')
     self.menu.addItem_(menuitem)
     self.statusitem.setMenu_(self.menu)
     
     self.timer = NSTimer.alloc().initWithFireDate_interval_target_selector_userInfo_repeats_(start_time, 0.65, self, 'tick:', None, True)
     NSRunLoop.currentRunLoop().addTimer_forMode_(self.timer, NSDefaultRunLoopMode)
     self.timer.fire()
Пример #56
0
    def __init__(self):
        """ Add the "Change Suffixes" menu item to the Font menu. """
        title = "Change Suffixes..."
        fontMenu = NSApp().mainMenu().itemWithTitle_("Font")
        if not fontMenu:
            print "Suffixer: Error, aborting"
            return
        fontMenu = fontMenu.submenu()
        if fontMenu.itemWithTitle_(title):
            return

        index = fontMenu.indexOfItemWithTitle_("Add Glyphs")
        self.target = CallbackWrapper(self.openWindow)
        newItem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
            title, "action:", "S")
        newItem.setKeyEquivalentModifierMask_(NSAlternateKeyMask
                                              | NSCommandKeyMask)
        newItem.setTarget_(self.target)
        fontMenu.insertItem_atIndex_(newItem, index + 1)
Пример #57
0
 def _update_menubar(self):
     ns_app = self._ns_app
     ns_menubar = NSMenu.alloc().initWithTitle_("")
     menu_list = self._effective_menus()
     for menu in menu_list:
         ns_item = NSMenuItem.alloc()
         ns_item.initWithTitle_action_keyEquivalent_(menu.title, '', "")
         ns_menubar.addItem_(ns_item)
         ns_menu = menu._ns_menu
         #  An NSMenu can only be a submenu of one menu at a time, so
         #  remove it from the old menubar if necessary.
         old_supermenu = ns_menu.supermenu()
         if old_supermenu:
             i = old_supermenu.indexOfItemWithSubmenu_(ns_menu)
             old_supermenu.removeItemAtIndex_(i)
         ns_menubar.setSubmenu_forItem_(ns_menu, ns_item)
     # The menu you pass to setAppleMenu_ must *also* be a member of the
     # main menu.
     ns_app.setMainMenu_(ns_menubar)
     if menu_list:
         ns_app_menu = menu_list[0]._ns_menu
         ns_app.setAppleMenu_(ns_app_menu)
    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