def applicationDidFinishLaunching_(self, notification):
        #activate logging with ToggleProxy -logging 1 
        self.shouldLog = NSUserDefaults.standardUserDefaults().boolForKey_("logging")
        
        # load icon files
        self.active_image = NSImage.imageNamed_("StatusBarImage")
        self.inactive_image = NSImage.imageNamed_("StatusBarImage-inactive")
        self.no_network_image = NSImage.imageNamed_("StatusBarImage-noNetwork")
        self.active_image.setTemplate_(True)
        self.inactive_image.setTemplate_(True)
        self.no_network_image.setTemplate_(True)

        # 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)
        self.prefDict = SCNetworkProtocolGetConfiguration(SCNetworkServiceCopyProtocol(self.service, kSCNetworkProtocolTypeProxies))
        self.constructMenu()

        self.watchForProxyOrIpChanges()
        self.updateUI()
        self.setEnvVariables()
Esempio n. 2
0
    def populateList(self, sender):
        self.selected.clear()
        self.w.list._removeSelection()
        item = self.pathList.titleOfSelectedItem()

        for i in range(len(self.w.list)):
            del self.w.list[0]

        thisItem = {}
        image = None
        id = os.getuid()
        systemWarning = "You should not edit or remove existing system's daemons. These jobs are required for a working macOS system."

        if item != 'Active Daemons':
            if item == 'User Agents':
                homedir = os.path.expanduser('~')
                path = homedir + '/Library/LaunchAgents'
                # If the folder doesn't exist in the user folder, create it
                try:
                    os.listdir(path)
                except:
                    os.mkdir(path)
            elif item == 'Global Agents':
                path = '/Library/LaunchAgents'
            elif item == 'Global Daemons':
                path = '/Library/LaunchDaemons'
            elif item == 'System Agents':
                path = '/System/Library/LaunchAgents'
                self._warning(self, systemWarning, "showSystemWarning")
            elif item == 'System Daemons':
                path = '/System/Library/LaunchDaemons'
                self._warning(self, systemWarning, "showSystemWarning")

            items = []
            files = os.listdir(path)
            count = 0

            for file in files:
                if file.endswith('.plist'):
                    file = file.replace('.plist', '')
                    try:
                        pid = launchd.LaunchdJob(file).pid
                    except:
                        pid = False
                    if launchd.LaunchdJob(file).exists() and pid != None:
                        image = NSImage.imageNamed_(NSImageNameStatusAvailable)
                    elif launchd.LaunchdJob(file).exists() and pid == None:
                        image = NSImage.imageNamed_(
                            NSImageNameStatusPartiallyAvailable)
                    else:
                        image = NSImage.imageNamed_(NSImageNameStatusNone)
                    state = True
                    thisItem['image'] = image
                    thisItem['name'] = file
                    self.w.list.append(thisItem)
                    count += 1
            self.w.counter.set(str(count) + ' Jobs')
Esempio n. 3
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. 4
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. 5
0
    def setImage(self, imagePath=None, imageNamed=None, imageObject=None):
        """
        Set the image in the view.

        **imagePath** A file path to an image.

        **imageNamed** The name of an image already load as a `NSImage`_
        by the application.

        **imageObject** A `NSImage`_ object.

        .. note::
           Only one of *imagePath*, *imageNamed*, *imageObject* should be set.

        .. _NSImage: https://developer.apple.com/documentation/appkit/nsimage?language=objc
        """
        if imagePath is not None:
            image = NSImage.alloc().initWithContentsOfFile_(imagePath)
        elif imageNamed is not None:
            image = NSImage.imageNamed_(imageNamed)
        elif imageObject is not None:
            image = imageObject
        else:
            raise ValueError("no image source defined")
        self._nsObject.setImage_(image)
Esempio n. 6
0
def openSplash():
    global splash
    splash = NSWindow.alloc()
    rect = NSMakeRect(0,0,240,420)
    styleMask = 0
    splash.initWithContentRect_styleMask_backing_defer_(rect, styleMask, NSBackingStoreBuffered, False)

    # http://stackoverflow.com/questions/19437580/splash-screen-in-osx-cocoa-app

    splashImage = NSImageView.alloc().initWithFrame_(rect)
    splashImage.setImageScaling_(NSScaleToFit)
    splashImage.setImage_(NSImage.imageNamed_('ottosplash.png'))
    #[customView addSubview:splashImage];

    #splash.setContentView_(webview)
    splash.setContentView_(splashImage)
    splash.setHasShadow_(True)
    splash.setOpaque_(False)
    splash.setBackgroundColor_(NSColor.clearColor())

    # xPos = NSWidth([[splashWindow screen] frame])/2 - NSWidth([splashWindow frame])/2;
    #CGFloat yPos = NSHeight([[splashWindow screen] frame])/2 - NSHeight([splashWindow frame])/2;
    #[splashWindow setFrame:NSMakeRect(xPos, yPos, NSWidth([splashWindow frame]), NSHeight([splashWindow frame])) display:YES];
    splash.center()
    splash.orderFrontRegardless()
Esempio n. 7
0
 def __init__(self, posSize, segmentDescriptions, callback=None, selectionStyle="one", sizeStyle="small"):
     self._setupView(self.nsSegmentedControlClass, posSize)
     if self.nsSegmentedCellClass != NSSegmentedCell:
         self._nsObject.setCell_(self.nsSegmentedCellClass.alloc().init())
     if callback is not None:
         self._setCallback(callback)
     self._setSizeStyle(sizeStyle)
     nsObject = self._nsObject
     nsObject.setSegmentCount_(len(segmentDescriptions))
     nsObject.cell().setTrackingMode_(_trackingModeMap[selectionStyle])
     for segmentIndex, segmentDescription in enumerate(segmentDescriptions):
         width = segmentDescription.get("width", 0)
         title = segmentDescription.get("title", "")
         enabled = segmentDescription.get("enabled", True)
         imagePath = segmentDescription.get("imagePath")
         imageNamed = segmentDescription.get("imageNamed")
         imageObject = segmentDescription.get("imageObject")
         # create the NSImage if needed
         if imagePath is not None:
             image = NSImage.alloc().initWithContentsOfFile_(imagePath)
         elif imageNamed is not None:
             image = NSImage.imageNamed_(imageNamed)
         elif imageObject is not None:
             image = imageObject
         else:
             image = None
         nsObject.setWidth_forSegment_(width, segmentIndex)
         nsObject.setLabel_forSegment_(title, segmentIndex)
         nsObject.setEnabled_forSegment_(enabled, segmentIndex)
         if image is not None:
             nsObject.setImage_forSegment_(image, segmentIndex)
Esempio n. 8
0
 def __init__(self,
              posSize,
              imagePath=None,
              imageNamed=None,
              imageObject=None,
              title=None,
              bordered=True,
              imagePosition="top",
              callback=None,
              sizeStyle="regular"):
     super(ImageButton, self).__init__(posSize,
                                       title=title,
                                       callback=callback,
                                       sizeStyle=sizeStyle)
     image = None
     if imagePath is not None:
         image = NSImage.alloc().initWithContentsOfFile_(imagePath)
     elif imageNamed is not None:
         image = NSImage.imageNamed_(imageNamed)
     elif imageObject is not None:
         image = imageObject
     if image is not None:
         self._nsObject.setImage_(image)
     self._nsObject.setBordered_(bordered)
     if title is None:
         position = NSImageOnly
     else:
         position = _imagePositionMap[imagePosition]
         if imagePosition == "left":
             self._nsObject.setAlignment_(NSRightTextAlignment)
         elif imagePosition == "right":
             self._nsObject.setAlignment_(NSLeftTextAlignment)
     if not bordered:
         self._nsObject.cell().setHighlightsBy_(NSNoCellMask)
     self._nsObject.setImagePosition_(position)
Esempio n. 9
0
def openSplash():
    global splash
    splash = NSWindow.alloc()
    rect = NSMakeRect(0,0,240,420)
    styleMask = 0
    splash.initWithContentRect_styleMask_backing_defer_(rect, styleMask, NSBackingStoreBuffered, False)

    # http://stackoverflow.com/questions/19437580/splash-screen-in-osx-cocoa-app

    splashImage = NSImageView.alloc().initWithFrame_(rect)
    splashImage.setImageScaling_(NSScaleToFit)
    splashImage.setImage_(NSImage.imageNamed_('ottosplash.png'))
    #[customView addSubview:splashImage];

    #splash.setContentView_(webview)
    splash.setContentView_(splashImage)
    splash.setHasShadow_(True)
    splash.setOpaque_(False)
    splash.setBackgroundColor_(NSColor.clearColor())

    # xPos = NSWidth([[splashWindow screen] frame])/2 - NSWidth([splashWindow frame])/2;
    #CGFloat yPos = NSHeight([[splashWindow screen] frame])/2 - NSHeight([splashWindow frame])/2;
    #[splashWindow setFrame:NSMakeRect(xPos, yPos, NSWidth([splashWindow frame]), NSHeight([splashWindow frame])) display:YES];
    splash.center()
    splash.orderFrontRegardless()
Esempio n. 10
0
 def __init__(self, posSize,
             imagePath=None, imageNamed=None, imageObject=None,
             title=None, bordered=True, imagePosition="top", callback=None, sizeStyle="regular"):
     super(ImageButton,  self).__init__(posSize, title=title, callback=callback, sizeStyle=sizeStyle)
     image = None
     if imagePath is not None:
         image = NSImage.alloc().initWithContentsOfFile_(imagePath)
     elif imageNamed is not None:
         image = NSImage.imageNamed_(imageNamed)
     elif imageObject is not None:
         image = imageObject
     if image is not None:
         self._nsObject.setImage_(image)
     self._nsObject.setBordered_(bordered)
     if title is None:
         position = NSImageOnly
     else:
         position= _imagePositionMap[imagePosition]
         if imagePosition == "left":
             self._nsObject.setAlignment_(NSRightTextAlignment)
         elif imagePosition == "right":
             self._nsObject.setAlignment_(NSLeftTextAlignment)
     if not bordered:
         self._nsObject.cell().setHighlightsBy_(NSNoCellMask)
     self._nsObject.setImagePosition_(position)
Esempio n. 11
0
 def __init__(self, posSize, segmentDescriptions, callback=None, selectionStyle="one", sizeStyle="small"):
     self._setupView(self.nsSegmentedControlClass, posSize)
     if self.nsSegmentedCellClass != NSSegmentedCell:
         self._nsObject.setCell_(self.nsSegmentedCellClass.alloc().init())
     if callback is not None:
         self._setCallback(callback)
     self._setSizeStyle(sizeStyle)
     nsObject = self._nsObject
     nsObject.setSegmentCount_(len(segmentDescriptions))
     nsObject.cell().setTrackingMode_(_trackingModeMap[selectionStyle])
     for segmentIndex, segmentDescription in enumerate(segmentDescriptions):
         width = segmentDescription.get("width", 0)
         title = segmentDescription.get("title", "")
         enabled = segmentDescription.get("enabled", True)
         imagePath = segmentDescription.get("imagePath")
         imageNamed = segmentDescription.get("imageNamed")
         imageTemplate = segmentDescription.get("imageTemplate")
         imageObject = segmentDescription.get("imageObject")
         # create the NSImage if needed
         if imagePath is not None:
             image = NSImage.alloc().initWithContentsOfFile_(imagePath)
         elif imageNamed is not None:
             image = NSImage.imageNamed_(imageNamed)
         elif imageObject is not None:
             image = imageObject
         else:
             image = None
         nsObject.setWidth_forSegment_(width, segmentIndex)
         nsObject.setLabel_forSegment_(title, segmentIndex)
         nsObject.setEnabled_forSegment_(enabled, segmentIndex)
         if image is not None:
             if imageTemplate is not None:
                 # only change the image template setting if its either True or False
                 image.setTemplate_(imageTemplate)
             nsObject.setImage_forSegment_(image, segmentIndex)
Esempio n. 12
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. 13
0
 def refreshWithSender_(self, sender):
     if self.crawlTask is not None:
         return self.stopRefreshWithSender_(sender)
     logger.debug('%r refreshWithSender:%r', self, sender)
     sender.setImage_(NSImage.imageNamed_(NSImageNameStopProgressTemplate))
     self.crawlTask = NSThread.alloc().initWithTarget_selector_object_(
         self, 'crawlWithSender:', sender
     )
     self.crawlTask.start()
Esempio n. 14
0
    def _createToolbarItem(self, itemData):
        itemIdentifier = itemData.get("itemIdentifier")
        if itemIdentifier is None:
            raise VanillaError(
                "toolbar item data must contain a unique itemIdentifier string"
            )
        if itemIdentifier in self._toolbarItems:
            raise VanillaError("toolbar itemIdentifier is not unique: %r" %
                               itemIdentifier)

        if itemIdentifier not in self._toolbarAllowedItemIdentifiers:
            self._toolbarAllowedItemIdentifiers.append(itemIdentifier)
        if itemData.get("visibleByDefault", True):
            self._toolbarDefaultItemIdentifiers.append(itemIdentifier)

        if itemIdentifier.startswith("NS"):
            # no need to create an actual item for a standard Cocoa toolbar item
            return

        label = itemData.get("label")
        paletteLabel = itemData.get("paletteLabel", label)
        toolTip = itemData.get("toolTip", label)
        imagePath = itemData.get("imagePath")
        imageNamed = itemData.get("imageNamed")
        imageObject = itemData.get("imageObject")
        view = itemData.get("view")
        callback = itemData.get("callback", None)
        # create the NSImage if needed
        if imagePath is not None:
            image = NSImage.alloc().initWithContentsOfFile_(imagePath)
        elif imageNamed is not None:
            image = NSImage.imageNamed_(imageNamed)
        elif imageObject is not None:
            image = imageObject
        else:
            image = None
        toolbarItem = NSToolbarItem.alloc().initWithItemIdentifier_(
            itemIdentifier)
        toolbarItem.setLabel_(label)
        toolbarItem.setPaletteLabel_(paletteLabel)
        toolbarItem.setToolTip_(toolTip)
        if image is not None:
            toolbarItem.setImage_(image)
        elif view is not None:
            toolbarItem.setView_(view)
            toolbarItem.setMinSize_(view.frame().size)
            toolbarItem.setMaxSize_(view.frame().size)
        if callback is not None:
            target = VanillaCallbackWrapper(callback)
            toolbarItem.setTarget_(target)
            toolbarItem.setAction_("action:")
            self._toolbarCallbackWrappers[itemIdentifier] = target
        if itemData.get("selectable", False):
            self._toolbarSelectableItemIdentifiers.append(itemIdentifier)
        self._toolbarItems[itemIdentifier] = toolbarItem
Esempio n. 15
0
    def _createToolbarItem(self, itemData):
        itemIdentifier = itemData.get("itemIdentifier")
        if itemIdentifier is None:
            raise VanillaError("toolbar item data must contain a unique itemIdentifier string")
        if itemIdentifier in self._toolbarItems:
            raise VanillaError("toolbar itemIdentifier is not unique: %r" % itemIdentifier)

        if itemIdentifier not in self._toolbarAllowedItemIdentifiers:
            self._toolbarAllowedItemIdentifiers.append(itemIdentifier)
        if itemData.get("visibleByDefault", True):
            self._toolbarDefaultItemIdentifiers.append(itemIdentifier)

        if itemIdentifier.startswith("NS"):
            # no need to create an actual item for a standard Cocoa toolbar item
            return

        label = itemData.get("label")
        paletteLabel = itemData.get("paletteLabel", label)
        toolTip = itemData.get("toolTip", label)
        imagePath = itemData.get("imagePath")
        imageNamed = itemData.get("imageNamed")
        imageObject = itemData.get("imageObject")
        imageTemplate = itemData.get("imageTemplate")
        view = itemData.get("view")
        callback = itemData.get("callback", None)
        # create the NSImage if needed
        if imagePath is not None:
            image = NSImage.alloc().initWithContentsOfFile_(imagePath)
        elif imageNamed is not None:
            image = NSImage.imageNamed_(imageNamed)
        elif imageObject is not None:
            image = imageObject
        else:
            image = None
        toolbarItem = NSToolbarItem.alloc().initWithItemIdentifier_(itemIdentifier)
        toolbarItem.setLabel_(label)
        toolbarItem.setPaletteLabel_(paletteLabel)
        toolbarItem.setToolTip_(toolTip)
        if image is not None:
            if imageTemplate is not None:
                # only change the image template setting if its either True or False
                image.setTemplate_(imageTemplate)
            toolbarItem.setImage_(image)
        elif view is not None:
            toolbarItem.setView_(view)
            toolbarItem.setMinSize_(view.frame().size)
            toolbarItem.setMaxSize_(view.frame().size)
        if callback is not None:
            target = VanillaCallbackWrapper(callback)
            toolbarItem.setTarget_(target)
            toolbarItem.setAction_("action:")
            self._toolbarCallbackWrappers[itemIdentifier] = target
        if itemData.get("selectable", False):
            self._toolbarSelectableItemIdentifiers.append(itemIdentifier)
        self._toolbarItems[itemIdentifier] = toolbarItem
Esempio n. 16
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
Esempio n. 17
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
Esempio n. 18
0
    def createToolbarItems(self):
        """
        Create the toolbar item and define the default and allowed set.
        """
        addToolbarItem(self, kServerToolbarItemIdentifier,
                       "Server", "Server", "Reset Server", self,
                       "resetServer:", NSImage.imageNamed_("NSNetwork"), None,)

        addToolbarItem(self, kRefreshToolbarItemIdentifier,
                       "Refresh", "Refresh", "Refresh Display", self,
                       "refreshData:", NSImage.imageNamed_("NSRefresh"), None,)

        addToolbarItem(self, kBrowserViewToolbarItemIdentifier,
                       "Browser", "Browser", "Browser View", self,
                       "changeBrowserView:", self.toolbarBrowserViewButton, None,)

        addToolbarItem(self, kDataViewToolbarItemIdentifier,
                       "View", "View", "Data View", self,
                       "changeDataView:", self.toolbarDataViewButton, None,)

        self._toolbarDefaultItemIdentifiers = [
            kServerToolbarItemIdentifier,
            kBrowserViewToolbarItemIdentifier,
            kDataViewToolbarItemIdentifier,
            NSToolbarFlexibleSpaceItemIdentifier,
            kRefreshToolbarItemIdentifier,
        ]

        self._toolbarAllowedItemIdentifiers = [
            kServerToolbarItemIdentifier,
            kBrowserViewToolbarItemIdentifier,
            kDataViewToolbarItemIdentifier,
            kRefreshToolbarItemIdentifier,
            NSToolbarSeparatorItemIdentifier,
            NSToolbarSpaceItemIdentifier,
            NSToolbarFlexibleSpaceItemIdentifier,
            NSToolbarPrintItemIdentifier,
            NSToolbarCustomizeToolbarItemIdentifier,
        ]
Esempio n. 19
0
def _drawDirtyStateImage(value):
    if value:
        imageName = "defconAppKitFontListDirtyStateTrue"
    else:
        imageName = "defconAppKitFontListDirtyStateFalse"
    image = NSImage.imageNamed_(imageName)
    if image is None:
        # make the image
        width = 13
        height = 17
        image = NSImage.alloc().initWithSize_((width, height))
        image.lockFocus()
        # draw if dirty
        if value:
            rect = ((2, 4), (9, 9))
            path = NSBezierPath.bezierPathWithOvalInRect_(rect)
            path.addClip()
            # colors
            color1 = NSColor.colorWithCalibratedRed_green_blue_alpha_(
                1.0, 0.1, 0.1, 1)
            color2 = NSColor.colorWithCalibratedRed_green_blue_alpha_(
                0.5, 0.0, 0.0, 1)
            # fill
            color1.set()
            path.fill()
            # shadow
            try:
                gradient = NSGradient.alloc().initWithColors_([color1, color2])
                gradient.drawInBezierPath_angle_(path, -90)
            except NameError:
                pass
            # stroke
            color2.set()
            path.setLineWidth_(2)
            path.stroke()
        image.unlockFocus()
        image.setName_(imageName)
        image = NSImage.imageNamed_(imageName)
    return image
Esempio n. 20
0
def _drawDirtyStateImage(value):
    if value:
        imageName = "defconAppKitFontListDirtyStateTrue"
    else:
        imageName = "defconAppKitFontListDirtyStateFalse"
    image = NSImage.imageNamed_(imageName)
    if image is None:
        # make the image
        width = 13
        height = 17
        image = NSImage.alloc().initWithSize_((width, height))
        image.lockFocus()
        # draw if dirty
        if value:
            rect = ((2, 4), (9, 9))
            path = NSBezierPath.bezierPathWithOvalInRect_(rect)
            path.addClip()
            # colors
            color1 = NSColor.colorWithCalibratedRed_green_blue_alpha_(1.0, 0.1, 0.1, 1)
            color2 = NSColor.colorWithCalibratedRed_green_blue_alpha_(0.5, 0.0, 0.0, 1)
            # fill
            color1.set()
            path.fill()
            # shadow
            try:
                gradient = NSGradient.alloc().initWithColors_([color1, color2])
                gradient.drawInBezierPath_angle_(path, -90)
            except NameError:
                pass
            # stroke
            color2.set()
            path.setLineWidth_(2)
            path.stroke()
        image.unlockFocus()
        image.setName_(imageName)
        image = NSImage.imageNamed_(imageName)
    return image
Esempio n. 21
0
    def setImage(self, imagePath=None, imageNamed=None, imageObject=None):
        """
        Set the image in the button.

        **imagePath** A file path to an image.

        **imageNamed** The name of an image already load as a *NSImage* by the application.

        **imageObject** A *NSImage* object.

        *Only one of imagePath, imageNamed, imageObject should be set.*
        """
        if imagePath is not None:
            image = NSImage.alloc().initWithContentsOfFile_(imagePath)
        elif imageNamed is not None:
            image = NSImage.imageNamed_(imageNamed)
        elif imageObject is not None:
            image = imageObject
        else:
            raise ValueError("no image source defined")
        self._nsObject.setImage_(image)
Esempio n. 22
0
    def setImage(self, imagePath=None, imageNamed=None, imageObject=None):
        """
        Set the image in the button.

        **imagePath** A file path to an image.

        **imageNamed** The name of an image already loaded as an `NSImage`_ by the application.

        **imageObject** A `NSImage`_ object.

        .. note:: Only one of *imagePath*, *imageNamed*, *imageObject* should be set.
        """
        if imagePath is not None:
            image = NSImage.alloc().initWithContentsOfFile_(imagePath)
        elif imageNamed is not None:
            image = NSImage.imageNamed_(imageNamed)
        elif imageObject is not None:
            image = imageObject
        else:
            raise ValueError("no image source defined")
        self._nsObject.setImage_(image)
Esempio n. 23
0
    def setImage(self, imagePath=None, imageNamed=None, imageObject=None):
        """
        Set the image in the view.

        **imagePath** A file path to an image.

        **imageNamed** The name of an image already load as a *NSImage*
        by the application.

        **imageObject** A *NSImage* object.

        *Only one of imagePath, imageNamed, imageObject should be set.*
        """
        if imagePath is not None:
            image = NSImage.alloc().initWithContentsOfFile_(imagePath)
        elif imageNamed is not None:
            image = NSImage.imageNamed_(imageNamed)
        elif imageObject is not None:
            image = imageObject
        else:
            raise ValueError("no image source defined")
        self._nsObject.setImage_(image)
Esempio n. 24
0
 def create_image(self):
     image = NSImage.imageNamed_("ExtensionIcon")
     self.w.image = ImageView((15, 15, 80, 80), scale="fit")
     self.w.image.setImage(imageObject=image)
Esempio n. 25
0
    def _setupContentView(self):
        # ------------------------------------------ #
        #                   Table View               #
        # ------------------------------------------ #
        rect = NSMakeRect(0, 0, self.WIDTH, self.HEIGHT)
        containerView = NSView.alloc().initWithFrame_(rect)

        # Startup btn
        height = 20
        margin = 20
        width = self.WIDTH - 2 * margin
        self.startupBtn = NSButton.buttonWithTitle_target_action_(
            "Run safetyapp on startup", self, "startupDidChanged:")
        self.startupBtn.setButtonType_(NSButtonTypeSwitch)
        self.startupBtn.setFrame_(
            NSMakeRect(margin, self.HEIGHT - 2 * height, width, height))
        self.startupBtn.setState_(self.data["startup"])
        containerView.addSubview_(self.startupBtn)

        # API Key settings
        titleLabel = NSTextField.labelWithString_("API Key")
        titleLabel.setTextColor_(NSColor.blackColor())
        rect = NSMakeRect(
            self.startupBtn.frame().origin.x,
            self.startupBtn.frame().origin.y -
            self.startupBtn.frame().size.height - height, width, height)
        titleLabel.setFrame_(rect)
        titleLabel.setFont_(NSFont.boldSystemFontOfSize_(14))
        containerView.addSubview_(titleLabel)

        # API Key Sub-label
        titleSubLabel = NSTextField.labelWithString_(
            "Lorem lpsum dolor sit amet")
        titleSubLabel.setTextColor_(NSColor.blackColor())
        rect = NSMakeRect(
            titleLabel.frame().origin.x,
            titleLabel.frame().origin.y - titleLabel.frame().size.height -
            height / 2, width, height)
        titleSubLabel.setFrame_(rect)
        titleSubLabel.setFont_(NSFont.systemFontOfSize_(14))
        containerView.addSubview_(titleSubLabel)

        # API Key text field
        self.apiTextField = NSTextField.textFieldWithString_("")
        rect = NSMakeRect(
            titleSubLabel.frame().origin.x,
            titleSubLabel.frame().origin.y -
            titleSubLabel.frame().size.height - height / 2, width,
            1.2 * height)
        self.apiTextField.setFrame_(rect)
        self.apiTextField.setFocusRingType_(NSFocusRingTypeNone)
        self.apiTextField.setTitleWithMnemonic_(self.data["api_key"])
        self.apiTextField.setEditable_(True)
        containerView.addSubview_(self.apiTextField)
        self.window().makeFirstResponder_(self.apiTextField)

        # Table title
        tableTitleLabel = NSTextField.labelWithString_("Directories")
        tableTitleLabel.setTextColor_(NSColor.blackColor())
        rect = NSMakeRect(
            self.apiTextField.frame().origin.x,
            self.apiTextField.frame().origin.y -
            self.apiTextField.frame().size.height - height, width, height)
        tableTitleLabel.setFrame_(rect)
        tableTitleLabel.setFont_(NSFont.boldSystemFontOfSize_(14))
        containerView.addSubview_(tableTitleLabel)

        # Table sub-title
        tableSubTitleLabel = NSTextField.labelWithString_(
            "Lorem lpsum dolor sit amet")
        tableSubTitleLabel.setTextColor_(NSColor.blackColor())
        rect = NSMakeRect(
            tableTitleLabel.frame().origin.x,
            tableTitleLabel.frame().origin.y -
            tableTitleLabel.frame().size.height - height / 2, width, height)
        tableSubTitleLabel.setFrame_(rect)
        tableSubTitleLabel.setFont_(NSFont.systemFontOfSize_(14))
        containerView.addSubview_(tableSubTitleLabel)

        # ------------------------------------------ #
        #               Toolbar button               #
        # ------------------------------------------ #
        rect = NSMakeRect(20, 20, 67, 21)
        segControl = NSSegmentedControl.alloc().initWithFrame_(rect)
        segControl.setSegmentCount_(2)
        segControl.setSegmentStyle_(NSSegmentStyleSmallSquare)
        segControl.setWidth_forSegment_(32, 0)
        segControl.setWidth_forSegment_(32, 1)
        segControl.setImage_forSegment_(
            NSImage.imageNamed_(NSImageNameAddTemplate), 0)
        segControl.setImage_forSegment_(
            NSImage.imageNamed_(NSImageNameRemoveTemplate), 1)
        segControl.setTarget_(self)
        segControl.setAction_("segControlDidClicked:")
        containerView.addSubview_(segControl)

        rect = NSMakeRect(86, 21,
                          self.WIDTH - 2 * margin - rect.size.width + 1, 21)
        toolbar = NSButton.alloc().initWithFrame_(rect)
        toolbar.setTitle_("")
        toolbar.setRefusesFirstResponder_(True)
        toolbar.setBezelStyle_(NSBezelStyleSmallSquare)
        containerView.addSubview_(toolbar)

        height = tableSubTitleLabel.frame().origin.y - segControl.frame(
        ).origin.y - margin - segControl.frame(
        ).size.height + 1 + tableSubTitleLabel.frame().size.height / 2
        rect = NSMakeRect(
            tableSubTitleLabel.frame().origin.x,
            tableSubTitleLabel.frame().origin.y -
            tableSubTitleLabel.frame().size.height / 2 - height, width, height)
        scrollView = NSScrollView.alloc().initWithFrame_(rect)
        scrollView.setBorderType_(NSBezelBorder)

        self.tableView = NSTableView.alloc().initWithFrame_(
            scrollView.bounds())
        self.tableView.setDataSource_(self)
        self.tableView.setDelegate_(self)
        self.tableView.setFocusRingType_(NSFocusRingTypeNone)

        # Path column
        pathCol = NSTableColumn.alloc().initWithIdentifier_(
            self.PATH_COL_IDENTIFIER)
        pathCol.setTitle_("Directory")  # <-- Table view directory column title
        pathCol.setWidth_(self.WIDTH * 0.8)
        textCell = NSTextFieldCell.alloc().init()
        textCell.setEditable_(True)
        textCell.setTarget_(self)
        pathCol.setDataCell_(textCell)

        # Enable column
        enableCol = NSTableColumn.alloc().initWithIdentifier_(
            self.ENALBE_COL_IDENTIFIER)
        enableCol.setTitle_("Enable?")  # <-- Enable column title
        enableCol.setWidth_(self.WIDTH * 0.2)
        cell = NSButtonCell.alloc().init()
        cell.setButtonType_(NSButtonTypeSwitch)
        cell.setTitle_("")
        cell.setTarget_(self)
        enableCol.setDataCell_(cell)

        self.tableView.addTableColumn_(pathCol)
        self.tableView.addTableColumn_(enableCol)

        scrollView.setDocumentView_(self.tableView)
        scrollView.setHasVerticalScroller_(True)
        containerView.addSubview_(scrollView)
        self.window().setContentView_(containerView)
Esempio n. 26
0
    def _selectionCallback(self, sender):
        try:
            if not self.w.list.getSelection():
                # Application did not finish loading yet
                pass
            else:
                # Get job name
                self.selected.clear()
                job = sender.get()[self.w.list.getSelection()[0]]
                self.selected['name'] = job['name']
                self.valueGroups = []
                # Get job path and file location
                item = self.pathList.titleOfSelectedItem()

                if 'User' in item:
                    import getpass
                    username = getpass.getuser()
                    user = username
                    path = '/Users/%s/Library/Launch' % username
                elif 'Global' in item:
                    user = '******'
                    path = '/Library/Launch'
                elif 'System' in item:
                    user = '******'
                    path = '/System/Library/Launch'
                if 'Agents' in item:
                    path += 'Agents/'
                else:
                    path += 'Daemons/'

                self.selected['path'] = path
                self.selected['file'] = str(self.selected['path'].replace(
                    ' ', '\ ')) + job['name'].replace(' ', '\ ') + '.plist'
                f = open(self.selected['file'], "r")
                self.selected['raw'] = str(f.read())
                self.selected['short'] = (
                    self.selected['name'][:32] + '…') if len(
                        self.selected['name']) > 32 else self.selected['name']
                # Get status
                if job['image'] == NSImage.imageNamed_(NSImageNameStatusNone):
                    status = None
                else:
                    status = 'Available'
                self.selected['status'] = status

                index = sender.getSelection()[0]
                relativeRect = sender.getNSTableView().rectOfRow_(index)

                self.pop = Popover((300, 100))

                self.pop.tabs = Tabs((20, 40, -20, -20),
                                     ["Editor", "Raw View"])
                self.pop.tabs._nsObject.setTabViewType_(NSNoTabsNoBorder)

                self.pop.tabBtn = SegmentedButton(
                    (10, 10, -10, 20),
                    [dict(title="Editor"),
                     dict(title="Raw View")],
                    callback=self._segmentPressed,
                    selectionStyle='one')
                self.pop.tabBtn.set(0)

                self.edit = self.pop.tabs[0]

                self.rawEdit = self.pop.tabs[1]
                self.rawEdit.editor = TextEditor((0, 0, -0, -45),
                                                 text=self.selected['raw'])

                self.selected['dict'] = launchd.plist.read(
                    self.selected['name'])

                # TODO: Add stackview to scrollview as group
                # Waiting for merge into master: https://github.com/robotools/vanilla/issues/132
                self.edit.stack = VerticalStackGroup((0, 0, -0, -45))

                for idx, (key, value) in enumerate(
                        sorted(self.selected['dict'].items())):
                    group = ValueGroup((0, 0, -0, -0),
                                       sender=self,
                                       key=key,
                                       value=value,
                                       idx=idx)
                    self.valueGroups.append(group)
                    self.edit.stack.addView(
                        self.valueGroups[idx], 300,
                        self.valueGroups[idx].getPosSize()[3])

                self.pop.save = Button((20, -50, -20, 40),
                                       "Save",
                                       callback=self._savePlist)
                self.pop.save.enable(False)
                self.pop.open(parentView=sender.getNSTableView(),
                              preferredEdge='right',
                              relativeRect=relativeRect)
        except:
            pass
Esempio n. 27
0
    def __init__(self):
        self.locations = [
            'User Agents', 'Global Agents', 'Global Daemons', 'System Agents',
            'System Daemons'
        ]
        self.listItems = []
        self.selected = {}

        # Preferences
        self.homedir = os.path.expanduser('~')
        self.prefsFolder = self.homedir + "/Library/Preferences/"
        self.prefsFile = "de.nelsonfritsch.unicron.plist"

        if os.path.isfile(self.prefsFolder + self.prefsFile):
            self.prefs = self._loadPrefs(self)
        else:
            self.prefs = dict(showSystemWarning=True, windowStyle='System')
            self._savePrefs(self)

        # Preferences Window
        self.prefsWindow = Window((300, 105), 'Preferences')

        self.styles = ['System', 'Light', 'Dark']
        self.prefsWindow.styleTxt = TextBox((10, 10, -10, 20), "Window Style:")
        self.prefsWindow.style = PopUpButton((30, 35, -10, 20),
                                             self.styles,
                                             callback=self.prefsSetStyle)

        self.prefsWindow.restore = Button((10, 75, -10, 20),
                                          'Restore Warnings',
                                          callback=self.prefsRestoreWarnings)

        # Main Window
        minsize = 285
        self.w = Window((minsize, 400),
                        'Unicron',
                        closable=True,
                        fullSizeContentView=True,
                        titleVisible=False,
                        minSize=(minsize, minsize),
                        maxSize=(600, 1200),
                        autosaveName="UnicronMainWindow")

        self.pathList = NSPopUpButton.alloc().initWithFrame_(
            ((0, 0), (160, 20)))
        self.pathList.addItemsWithTitles_(self.locations)

        refreshIcon = NSImage.alloc().initWithSize_((32, 32))
        sourceImage = NSImage.imageNamed_(NSImageNameRefreshTemplate)

        w, h = sourceImage.size()

        if w > h:
            diffx = 0
            diffy = w - h
        else:
            diffx = h - w
            diffy = 0

        maxSize = max([w, h])
        refreshIcon.lockFocus()
        sourceImage.drawInRect_fromRect_operation_fraction_(
            NSMakeRect(diffx, diffy + 4, 22, 22),
            NSMakeRect(0, 0, maxSize, maxSize), NSCompositeSourceOver, 1)
        refreshIcon.unlockFocus()
        refreshIcon.setTemplate_(True)

        toolbarItems = [
            dict(itemIdentifier="Daemons",
                 label="Daemons",
                 toolTip="Daemon Group",
                 view=self.pathList,
                 callback=self.populateList),
            dict(itemIdentifier="image",
                 label="Image",
                 imageObject=refreshIcon,
                 callback=self.populateList),
        ]
        self.w.addToolbar("Unicron Toolbar",
                          toolbarItems=toolbarItems,
                          displayMode="icon")

        self.w.blend = Group((0, 0, 0, 0), blendingMode='behindWindow')

        self.listColumnDescriptions = [{
            'title': '',
            'key': 'image',
            'width': 25,
            'typingSensitive': True,
            'allowsSorting': True,
            'cell': ImageListCell()
        }, {
            'title': 'Name',
            'key': 'name',
            'typingSensitive': True,
            'allowsSorting': True,
        }]
        self.rowHeight = 20
        self.w.list = List((0, 37, -0, 0),
                           items=self.listItems,
                           columnDescriptions=self.listColumnDescriptions,
                           showColumnTitles=True,
                           allowsEmptySelection=True,
                           allowsMultipleSelection=False,
                           autohidesScrollers=True,
                           drawFocusRing=False,
                           rowHeight=self.rowHeight,
                           selectionCallback=self._selectionCallback,
                           menuCallback=self._menuCallback)

        self.w.list._nsObject.setBorderType_(NSNoBorder)

        self.w.statusbar = Group((0, -26, 0, 0), blendingMode='behindWindow')
        self.w.statusbar.border = HorizontalLine((0, 0, 0, 1))

        self.w.counter = TextBox((16, -20, -16, 15),
                                 '',
                                 alignment='center',
                                 sizeStyle='small')
        self.populateList(self)
        self.w.rowIndicator = Group((0, 0, 0, 10))

        self.prefsSetStyle(self)

        self.w.open()
Esempio n. 28
0
    def __init__(self, drawGrid=False):
        self.w = Window((600, 500), "List Test", minSize=(400, 400))

        simpleList = List((0, 0, 0, 0),
                          listOptions,
                          enableTypingSensitivity=True)

        multiItems = [{
            "name":
            name,
            "path":
            os.path.basename(getattr(module, "__file__", "Unknown"))
        } for name, module in sys.modules.items()]
        columnDescriptions = [{
            "title": "Module Name",
            "key": "name"
        }, {
            "title": "File Name",
            "key": "path"
        }]
        multiList = List((0, 0, 0, 0),
                         multiItems,
                         columnDescriptions=columnDescriptions,
                         enableTypingSensitivity=True)

        if iconPath:
            image = NSImage.alloc().initWithContentsOfFile_(iconPath)
        else:
            image = NSImage.imageNamed_(iconName)

        miscItems = [
            {
                "slider": 50,
                "sliderWithTicks": 50,
                "checkBox": False,
                "image": image,
                "segment": 0
            },
            {
                "slider": 20,
                "sliderWithTicks": 20,
                "checkBox": True,
                "image": image,
                "segment": 1
            },
            {
                "slider": 70,
                "sliderWithTicks": 70,
                "checkBox": False,
                "image": image,
                "segment": 2
            },
            {
                "slider": 20,
                "sliderWithTicks": 20,
                "checkBox": True,
                "image": image,
                "segment": 0
            },
            {
                "slider": 10,
                "sliderWithTicks": 10,
                "checkBox": True,
                "image": image,
                "segment": 1
            },
            {
                "slider": 90,
                "sliderWithTicks": 90,
                "checkBox": False,
                "image": image,
                "segment": 2
            },
        ]
        columnDescriptions = [
            {
                "title": "SliderListCell",
                "key": "slider",
                "cell": SliderListCell()
            },
            {
                "title": "SliderListCell",
                "key": "sliderWithTicks",
                "cell": SliderListCell(tickMarkCount=10, stopOnTickMarks=True)
            },
            {
                "title": "CheckBoxListCell",
                "key": "checkBox",
                "cell": CheckBoxListCell()
            },
            {
                "title": "ImageListCell",
                "key": "image",
                "cell": ImageListCell()
            },
            {
                "title":
                "SegmentedButtonListCell",
                "key":
                "segment",
                "cell":
                SegmentedButtonListCell(
                    [dict(title="0"),
                     dict(title="1"),
                     dict(title="2")]),
                "binding":
                "selectedIndex"
            },
        ]
        miscCellList = List((0, 0, 0, 0),
                            items=miscItems,
                            columnDescriptions=columnDescriptions)

        paneDescriptions = [
            dict(view=simpleList, identifier="simpleList"),
            dict(view=multiList, identifier="multiList"),
            dict(view=miscCellList, identifier="miscCellList"),
        ]

        # only add the ListIndicator tests if the controls are available
        try:
            listIndicatorItems = [
                {
                    "discrete": 3,
                    "continuous": 4,
                    "rating": 1,
                    "relevancy": 9
                },
                {
                    "discrete": 8,
                    "continuous": 3,
                    "rating": 5,
                    "relevancy": 5
                },
                {
                    "discrete": 3,
                    "continuous": 7,
                    "rating": 3,
                    "relevancy": 4
                },
                {
                    "discrete": 2,
                    "continuous": 5,
                    "rating": 4,
                    "relevancy": 7
                },
                {
                    "discrete": 6,
                    "continuous": 9,
                    "rating": 3,
                    "relevancy": 2
                },
                {
                    "discrete": 4,
                    "continuous": 0,
                    "rating": 6,
                    "relevancy": 8
                },
            ]
            columnDescriptions = [
                {
                    "title":
                    "discrete",
                    "cell":
                    LevelIndicatorListCell(style="discrete",
                                           warningValue=7,
                                           criticalValue=9)
                },
                {
                    "title":
                    "continuous",
                    "cell":
                    LevelIndicatorListCell(style="continuous",
                                           warningValue=7,
                                           criticalValue=9)
                },
                {
                    "title": "rating",
                    "cell": LevelIndicatorListCell(style="rating", maxValue=6)
                },
                {
                    "title": "relevancy",
                    "cell": LevelIndicatorListCell(style="relevancy")
                },
            ]
            levelIndicatorList = List((0, 0, 0, 0),
                                      items=listIndicatorItems,
                                      columnDescriptions=columnDescriptions)
            paneDescriptions.append(
                dict(view=levelIndicatorList, identifier="levelIndicatorList"))
        except NameError:
            pass

        self.w.splitView = SplitView((0, 0, -0, -0),
                                     paneDescriptions,
                                     isVertical=False)

        if drawGrid:
            self.drawGrid()

        self.w.open()
Esempio n. 29
0
 def stopRefreshWithSender_(self, sender):
     logger.debug('%r stopRefreshWithSender:%r', self, sender)
     sender.setImage_(NSImage.imageNamed_(NSImageNameRefreshTemplate))
     self.crawlTask = None
Esempio n. 30
0
def LevelIndicatorListCell(style="discrete",
        minValue=0, maxValue=10, warningValue=None, criticalValue=None,
        imagePath=None, imageNamed=None, imageObject=None):

    """
    An object that displays a level indicator in a List column.

    **This object should only be used in the *columnDescriptions* argument
    during the construction of a List.**::

        from vanilla import *

        class LevelIndicatorListCellDemo(object):

             def __init__(self):
                 self.w = Window((340, 140))
                 items = [
                     {"discrete": 3, "continuous": 4, "rating": 1, "relevancy": 9},
                     {"discrete": 8, "continuous": 3, "rating": 5, "relevancy": 5},
                     {"discrete": 3, "continuous": 7, "rating": 3, "relevancy": 4},
                     {"discrete": 2, "continuous": 5, "rating": 4, "relevancy": 7},
                     {"discrete": 6, "continuous": 9, "rating": 3, "relevancy": 2},
                     {"discrete": 4, "continuous": 0, "rating": 6, "relevancy": 8},
                 ]
                 columnDescriptions = [
                     {"title": "discrete",
                     "cell": LevelIndicatorListCell(style="discrete", warningValue=7, criticalValue=9)},
                     {"title": "continuous",
                     "cell": LevelIndicatorListCell(style="continuous", warningValue=7, criticalValue=9)},
                     {"title": "rating",
                     "cell": LevelIndicatorListCell(style="rating", maxValue=6)},
                     {"title": "relevancy",
                     "cell": LevelIndicatorListCell(style="relevancy")},
                 ]
                 self.w.list = List((0, 0, -0, -0), items=items,
                                columnDescriptions=columnDescriptions)
                 self.w.open()

        LevelIndicatorListCellDemo()

    **style** The style of the level indicator. The options are:

    +--------------+-----------------------------------------+
    | "continuous" | A continuous bar.                       |
    +--------------+-----------------------------------------+
    | "discrete"   | A segmented bar.                        |
    +--------------+-----------------------------------------+
    | "rating"     | A row of stars. Similar to the rating   |
    |              | indicator in iTunes.                    |
    +--------------+-----------------------------------------+
    | "relevancy"  | A row of lines. Similar to the search   |
    |              | result relevancy indicator in Mail.     |
    +--------------+-----------------------------------------+

    **minValue** The minimum value allowed by the level indicator.

    **maxValue** The maximum value allowed by the level indicator.

    **warningValue** The value at which the filled portions of the
    level indicator should display the warning color. Applies only to
    discrete and continuous level indicators.

    **criticalValue** The value at which the filled portions of the
    level indicator should display the critical color. Applies only to
    discrete and continuous level indicators.
    """
    cell = NSLevelIndicatorCell.alloc().init()
    cell.setLevelIndicatorStyle_(_levelIndicatorStyleMap[style])
    cell.setMinValue_(minValue)
    cell.setMaxValue_(maxValue)
    if warningValue is not None:
        cell.setWarningValue_(warningValue)
    if criticalValue is not None:
        cell.setCriticalValue_(criticalValue)
    if imagePath is not None:
        image = NSImage.alloc().initWithContentsOfFile_(imagePath)
    elif imageNamed is not None:
        image = NSImage.imageNamed_(imageNamed)
    elif imageObject is not None:
        image = imageObject
    if imageObject is not None:
        cell.setImage_(image)
    return cell
    def createToolbarItems(self):
        """
        Create the toolbar item and define the default and allowed set.
        """
        addToolbarItem(
            self,
            kServerToolbarItemIdentifier,
            "Server",
            "Server",
            "Reset Server",
            self,
            "resetServer:",
            NSImage.imageNamed_("NSNetwork"),
            None,
        )

        addToolbarItem(
            self,
            kRefreshToolbarItemIdentifier,
            "Refresh",
            "Refresh",
            "Refresh Display",
            self,
            "refreshData:",
            NSImage.imageNamed_("NSRefresh"),
            None,
        )

        addToolbarItem(
            self,
            kBrowserViewToolbarItemIdentifier,
            "Browser",
            "Browser",
            "Browser View",
            self,
            "changeBrowserView:",
            self.toolbarBrowserViewButton,
            None,
        )

        addToolbarItem(
            self,
            kDataViewToolbarItemIdentifier,
            "View",
            "View",
            "Data View",
            self,
            "changeDataView:",
            self.toolbarDataViewButton,
            None,
        )

        self._toolbarDefaultItemIdentifiers = [
            kServerToolbarItemIdentifier,
            kBrowserViewToolbarItemIdentifier,
            kDataViewToolbarItemIdentifier,
            NSToolbarFlexibleSpaceItemIdentifier,
            kRefreshToolbarItemIdentifier,
        ]

        self._toolbarAllowedItemIdentifiers = [
            kServerToolbarItemIdentifier,
            kBrowserViewToolbarItemIdentifier,
            kDataViewToolbarItemIdentifier,
            kRefreshToolbarItemIdentifier,
            NSToolbarSeparatorItemIdentifier,
            NSToolbarSpaceItemIdentifier,
            NSToolbarFlexibleSpaceItemIdentifier,
            NSToolbarPrintItemIdentifier,
            NSToolbarCustomizeToolbarItemIdentifier,
        ]
def insertFeatureToolbarImage():
    im = NSImage.imageNamed_("toolbarFeatures")
    return ufoApps.createToolbarIcon(im)
Esempio n. 33
0
    def __init__(self, drawGrid=False):
        self.w = Window((600, 500), "List Test", minSize=(400, 400))

        simpleList = List((0, 0, 0, 0), listOptions, enableTypingSensitivity=True)

        multiItems = [
            {"name": name, "path": os.path.basename(getattr(module, "__file__", "Unknown"))}
            for name, module in sys.modules.items()
        ]
        columnDescriptions = [
            {"title": "Module Name", "key": "name"},
            {"title": "File Name", "key": "path"}
        ]
        multiList = List((0, 0, 0, 0), multiItems, columnDescriptions=columnDescriptions, enableTypingSensitivity=True)

        if iconPath:
            image = NSImage.alloc().initWithContentsOfFile_(iconPath)
        else:
            image = NSImage.imageNamed_(iconName)

        miscItems = [
            {"slider": 50, "sliderWithTicks" : 50, "checkBox": False, "image" : image, "segment" : 0},
            {"slider": 20, "sliderWithTicks" : 20, "checkBox": True,  "image" : image, "segment" : 1},
            {"slider": 70, "sliderWithTicks" : 70, "checkBox": False, "image" : image, "segment" : 2},
            {"slider": 20, "sliderWithTicks" : 20, "checkBox": True,  "image" : image, "segment" : 0},
            {"slider": 10, "sliderWithTicks" : 10, "checkBox": True,  "image" : image, "segment" : 1},
            {"slider": 90, "sliderWithTicks" : 90, "checkBox": False, "image" : image, "segment" : 2},
        ]
        columnDescriptions = [
            {"title": "SliderListCell", "key": "slider", "cell": SliderListCell()},
            {"title": "SliderListCell", "key": "sliderWithTicks", "cell": SliderListCell(tickMarkCount=10, stopOnTickMarks=True)},
            {"title": "CheckBoxListCell", "key": "checkBox", "cell": CheckBoxListCell()},
            {"title": "ImageListCell", "key": "image", "cell": ImageListCell()},
            {"title": "SegmentedButtonListCell", "key": "segment", "cell": SegmentedButtonListCell([dict(title="0"), dict(title="1"), dict(title="2")]), "binding": "selectedIndex"},
        ]
        miscCellList = List((0, 0, 0, 0), items=miscItems, columnDescriptions=columnDescriptions)

        paneDescriptions = [
            dict(view=simpleList, identifier="simpleList"),
            dict(view=multiList, identifier="multiList"),
            dict(view=miscCellList, identifier="miscCellList"),
        ]

        # only add the ListIndicator tests if the controls are available
        try:
            listIndicatorItems = [
                {"discrete": 3, "continuous": 4, "rating": 1, "relevancy": 9},
                {"discrete": 8, "continuous": 3, "rating": 5, "relevancy": 5},
                {"discrete": 3, "continuous": 7, "rating": 3, "relevancy": 4},
                {"discrete": 2, "continuous": 5, "rating": 4, "relevancy": 7},
                {"discrete": 6, "continuous": 9, "rating": 3, "relevancy": 2},
                {"discrete": 4, "continuous": 0, "rating": 6, "relevancy": 8},
            ]
            columnDescriptions = [
                {"title": "discrete",
                "cell": LevelIndicatorListCell(style="discrete", warningValue=7, criticalValue=9)},
                {"title": "continuous",
                "cell": LevelIndicatorListCell(style="continuous", warningValue=7, criticalValue=9)},
                {"title": "rating",
                "cell": LevelIndicatorListCell(style="rating", maxValue=6)},
                {"title": "relevancy",
                "cell": LevelIndicatorListCell(style="relevancy")},
            ]
            levelIndicatorList = List((0, 0, 0, 0), items=listIndicatorItems, columnDescriptions=columnDescriptions)
            paneDescriptions.append(dict(view=levelIndicatorList, identifier="levelIndicatorList"))
        except NameError:
            pass

        self.w.splitView = SplitView((0, 0, -0, -0), paneDescriptions, isVertical=False)

        if drawGrid:
            self.drawGrid()

        self.w.open()
Esempio n. 34
0
def insertFeatureToolbarImage():
    im = NSImage.imageNamed_("toolbarFeatures")
    return ufoApps.createToolbarIcon(im)
Esempio n. 35
0
 def create_image(self):
     image = NSImage.imageNamed_("ExtensionIcon")
     self.w.image = ImageView((15, 15, 80, 80), scale='fit')
     self.w.image.setImage(imageObject=image)