Example #1
0
 def keyDown_(self, ns_event):
     #print "PyGUI_FieldEditorBase.keyDown_ for", self.pygui_component ###
     if ns_event.characters() == "\r":
         if self.pygui_component._multiline:
             self.insertText_("\n")
             return
     NSTextView.keyDown_(self, ns_event)
Example #2
0
 def keyDown_(self, ns_event):
     #print "PyGUI_FieldEditorBase.keyDown_ for", self.pygui_component ###
     if ns_event.characters() == "\r":
         if self.pygui_component._multiline:
             self.insertText_("\n")
             return
     NSTextView.keyDown_(self, ns_event)
Example #3
0
    def initWithFrame_imageDir_(self, frame, imageDir):
        self = super(IntroView, self).initWithFrame_(frame)
        if not self:
            return None
        dropboxImage = NSImage.alloc().initWithContentsOfFile_(os.path.join(imageDir, u'box_stroked_150.png'))
        iW, iH = dropboxImage.size()
        newHeight = iH * 300.0 / iW
        self.dropboxViewFinalPosition = NSRect((25, frame.size[1] - 43 - newHeight), (300, newHeight))
        self.dropboxView = ShadowedImage.alloc().initWithFrame_(self.dropboxViewFinalPosition)
        self.dropboxView.setImageScaling_(NSScaleToFit)
        self.dropboxView.setImage_(dropboxImage)
        self.dropboxView.setShadowColor_(NSColor.colorWithCalibratedRed_green_blue_alpha_(0, 0, 0, 0.5))
        self.dropboxView.setShadowOffset_((0.0, -2.0))
        self.dropboxView.setShadowBlurRadius_(5.0)
        logoImage = NSImage.alloc().initWithContentsOfFile_(os.path.join(imageDir, u'dropboxlogo.png'))
        iW, iH = logoImage.size()
        newHeight = iH * 300.0 / iW
        self.logoViewFinalPosition = NSRect((25, frame.size[1] - 334 - newHeight), (300, newHeight))
        self.logoView = NSImageView.alloc().initWithFrame_(self.logoViewFinalPosition)
        self.logoView.setImage_(logoImage)
        self.versionView = NSTextView.alloc().initWithFrame_(NSRect((0, 0), frame.size))
        self.versionView.setDrawsBackground_(NO)
        self.versionView.setEditable_(NO)
        self.versionView.setSelectable_(NO)
        self.versionView.textStorage().mutableString().setString_(u'Version %s' % build_number.VERSION)
        self.versionView.textStorage().setFont_(NSFont.labelFontOfSize_(14))
        self.versionView.layoutManager().glyphRangeForTextContainer_(self.versionView.textContainer())
        textSize1 = self.versionView.layoutManager().usedRectForTextContainer_(self.versionView.textContainer()).size
        textAnchor1 = 5
        self.versionView2 = NSTextView.alloc().initWithFrame_(NSRect((0, 0), frame.size))
        self.versionView2.setDrawsBackground_(NO)
        self.versionView2.setEditable_(NO)
        self.versionView2.setSelectable_(NO)
        self.versionView2.textStorage().mutableString().setString_(u'Copyright \xa9 2007-2010 Dropbox Inc.')
        self.versionView2.setFont_(NSFont.systemFontOfSize_(NSFont.systemFontSizeForControlSize_(NSSmallControlSize)))
        self.versionView2.layoutManager().glyphRangeForTextContainer_(self.versionView2.textContainer())
        textSize2 = self.versionView2.layoutManager().usedRectForTextContainer_(self.versionView2.textContainer()).size
        textAnchor2 = 4
        bottomToLogoViewBaseline = self.logoView.frame().origin[1] + 17
        textSeparation = 10
        combinedHeight = textSize1[1] + textSize2[1] + textSeparation
        self.versionView2FinalPosition = NSRect(((frame.size[0] - textSize2[0]) / 2.0, (bottomToLogoViewBaseline - combinedHeight) / 2.0), (textSize2[0], textSize2[1] + textAnchor2))
        self.versionView2.setFrame_(self.versionView2FinalPosition)
        self.versionViewFinalPosition = NSRect(((frame.size[0] - textSize1[0]) / 2.0, self.versionView2.frame().origin[1] + textSeparation + self.versionView2.frame().size[1]), (textSize1[0], textSize1[1] + textAnchor1))
        self.versionView.setFrame_(self.versionViewFinalPosition)
        for _view in (self.dropboxView,
         self.logoView,
         self.versionView,
         self.versionView2):
            self.addSubview_(_view)

        return self
Example #4
0
 def get_layout_spec(self):
     layout = "us"
     layouts = ["us"]
     variant = ""
     variants = []
     options = ""
     try:
         from AppKit import NSTextInputContext, NSTextView       #@UnresolvedImport
         text_input_context = NSTextInputContext.alloc()
         view = NSTextView.new()
         text_input_context.initWithClient_(view)
         current_keyboard = text_input_context.selectedKeyboardInputSource()
         code = APPLE_LAYOUTS.get(current_keyboard.split(".")[-1])
         log("get_layout_spec() current_keyboard=%s, code=%s", current_keyboard, code)
         all_keyboards = text_input_context.keyboardInputSources()
         log("get_layout_spec() other keyboards=%s", all_keyboards)
         if code:
             layout = code
         if all_keyboards:
             layouts = []
             for k in all_keyboards:
                 code = APPLE_LAYOUTS.get(k.split(".")[-1])
                 if code:
                     layouts.append(code)
             if not layouts:
                 layouts.append("us")
         else:
             if code not in layouts:
                 layouts.insert(0, code)
         log("get_layout_spec() view=%s, input_context=%s, layout=%s, layouts=%s", view, text_input_context, layout, layouts)
     except Exception as e:
         log("get_layout_spec()", exc_info=True)
         log.error("Error querying keyboard layout:")
         log.error(" %s", e)
     return layout, layouts, variant, variants, options
Example #5
0
 def initWithFrame_view_size_name_captionText_(self, frame, view, size, name, caption_text):
     self = super(PictureView, self).initWithFrame_(frame)
     if not self:
         return
     _size = iW, iH = size
     xOffset = (frame.size[0] - iW) / 2.0
     yOffset = frame.size[1] - xOffset - iH
     self.dropboxViewFinalPosition = NSRect((xOffset, yOffset), _size)
     self.dropboxView = view
     self.dropboxView.setFrame_(self.dropboxViewFinalPosition)
     self.addSubview_(self.dropboxView)
     self.versionView = NSTextView.alloc().initWithFrame_(NSRect((0, 0), frame.size))
     self.versionView.setDrawsBackground_(NO)
     self.versionView.setEditable_(NO)
     self.versionView.setSelectable_(NO)
     self.versionView.textStorage().beginEditing()
     self.versionView.textStorage().mutableString().setString_(name)
     self.versionView.textStorage().setForegroundColor_(NSColor.whiteColor())
     self.versionView.textStorage().setFont_(NSFont.labelFontOfSize_(18))
     self.versionView.textStorage().endEditing()
     self.versionView.setAlignment_range_(NSCenterTextAlignment, NSMakeRange(0, self.versionView.string().length()))
     self.versionView.layoutManager().glyphRangeForTextContainer_(self.versionView.textContainer())
     textSize1 = self.versionView.layoutManager().usedRectForTextContainer_(self.versionView.textContainer()).size
     textAnchor1 = 0
     self.versionView2 = NSTextView.alloc().initWithFrame_(NSRect((0, 0), frame.size))
     self.versionView2.setDrawsBackground_(NO)
     self.versionView2.setEditable_(NO)
     self.versionView2.setSelectable_(NO)
     self.versionView2.textStorage().beginEditing()
     self.versionView2.textStorage().mutableString().setString_(u'"%s"' % (caption_text,))
     self.versionView2.textStorage().setForegroundColor_(NSColor.whiteColor())
     self.versionView2.textStorage().setFont_(NSFont.labelFontOfSize_(13))
     self.versionView2.textStorage().endEditing()
     self.versionView2.setAlignment_range_(NSCenterTextAlignment, NSMakeRange(0, self.versionView2.string().length()))
     self.versionView2.layoutManager().glyphRangeForTextContainer_(self.versionView2.textContainer())
     textSize2 = self.versionView2.layoutManager().usedRectForTextContainer_(self.versionView2.textContainer()).size
     textAnchor2 = 0
     bottomToLogoViewBaseline = yOffset
     textSeparation = (yOffset - textSize1[1] - textSize2[1]) * 0.2
     combinedHeight = textSize1[1] + textSize2[1] + textSeparation
     self.versionView2FinalPosition = NSRect(((frame.size[0] - textSize2[0]) / 2.0, (bottomToLogoViewBaseline - combinedHeight) / 2.0), (textSize2[0], textSize2[1] + textAnchor2))
     self.versionView2.setFrame_(self.versionView2FinalPosition)
     self.versionViewFinalPosition = NSRect(((frame.size[0] - textSize1[0]) / 2.0, self.versionView2.frame().origin[1] + textSeparation + self.versionView2.frame().size[1]), (textSize1[0], textSize1[1] + textAnchor1))
     self.versionView.setFrame_(self.versionViewFinalPosition)
     self.addSubview_(self.versionView)
     self.addSubview_(self.versionView2)
     return self
Example #6
0
    def watch(ime):
        txtObj = NSTextInputContext.alloc().initWithClient_(NSTextView.new())

        obs = Observer.new().initWithValue_(txtObj)
        obs.ime = ime

        Foundation.NSNotificationCenter.defaultCenter().addObserver_selector_name_object_(
            obs, 'bundle:', NSTextInputContextKeyboardSelectionDidChangeNotification, None)
        AppHelper.runConsoleEventLoop()
Example #7
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)
Example #8
0
 def __init__(self) -> None:
     self.text_input_context = NSTextInputContext.alloc().initWithClient_(NSTextView.new())
     self.last_ime = ImSwitcher.english_ime
     manager = multiprocessing.Manager()
     self.cur_ime = manager.Value(ctypes.c_wchar_p, ImSwitcher.english_ime)
     multiprocessing.Process(target=Observer.watch,
                             args=(self.cur_ime,)).start()
     try:
         # 隐藏macos dock栏小火箭
         info = NSBundle.mainBundle().infoDictionary()
         info["LSBackgroundOnly"] = "1"
     except ImportError:
         print("隐藏macos dock栏小火箭,需要pip3 install -U PyObjC")
Example #9
0
    def initWithFrame_(self, frame):
        self = super(GreetingsTo, self).initWithFrame_(frame)
        if not self:
            return
        self.timers = []
        for __text in ('greetings',
         'to',
         'AAPL',
         'GOOG',
         'MSFT',
         (':)', '_smile'),
         (':P', '_wink')):
            if type(__text) is str:
                _text = attr = __text
            else:
                _text, attr = __text
            vv = NSTextView.alloc().initWithFrame_(NSRect((0, 0), frame.size))
            vv.setDrawsBackground_(NO)
            vv.setEditable_(NO)
            vv.setSelectable_(NO)
            vv.setAlignment_range_(NSCenterTextAlignment, NSMakeRange(0, vv.string().length()))
            vv.textStorage().beginEditing()
            vv.textStorage().mutableString().setString_(_text)
            vv.textStorage().setFont_(NSFont.labelFontOfSize_(42 if _text in ('greetings', 'to') else 36))
            vv.textStorage().setForegroundColor_(NSColor.whiteColor())
            vv.textStorage().endEditing()
            vv.layoutManager().glyphRangeForTextContainer_(vv.textContainer())
            vv.setFrameSize_(vv.layoutManager().usedRectForTextContainer_(vv.textContainer()).size)
            setattr(self, attr, vv)
            vv.setHidden_(True)
            self.addSubview_(vv)

        self.blast_order = (self.greetings,
         self.to,
         self.AAPL,
         self.GOOG,
         self.MSFT,
         self._smile)
        self.greetings.setHidden_(False)
        self.greetings.setFrameOrigin_(((frame.size[0] - self.greetings.frame().size[0]) / 2.0, BASE_HEIGHT - 100))
        self.to.setFrameOrigin_(((frame.size[0] - self.to.frame().size[0]) / 2.0, BASE_HEIGHT - 100 - self.greetings.frame().size[1] - 20))
        offset = (frame.size[0] - (self.AAPL.frame().size[0] + self.GOOG.frame().size[0] + 60)) / 2.0
        self.AAPL_POS = (offset, 220)
        self.GOOG_POS = (WIDTH - self.GOOG.frame().size[0] - offset, 220)
        self.MSFT_POS = ((frame.size[0] - self.MSFT.frame().size[0]) / 2.0, 200 - self.AAPL.frame().size[1] - 80)
        self._wink.setFrameOrigin_(((frame.size[0] - self._wink.frame().size[0]) / 2.0, 200 - self._wink.frame().size[1]))
        self._smile.setFrameOrigin_(((frame.size[0] - self._wink.frame().size[0]) / 2.0, 200 - self._wink.frame().size[1]))
        return self
Example #10
0
 def __init__(self):
     text = "Python " + sys.version + "\n\n" + sys.copyright
     title = "HalfCaff " + halfcaff.version.version
     if halfcaff.util.is_dev_mode():
         title += '-dev'
     super(AboutWindow, self).__init__(title=title,
                                       message=_message,
                                       default_text=_text)
     self.icon = halfcaff.util.icon('halfcaff.icns')
     #self._textfield.dealloc()
     self._textfield = NSTextView.alloc().initWithFrame_(
         NSMakeRect(0, 0, 320, 160))
     self._textfield.setSelectable_(True)
     #self._textfield.usesRuler_(True)
     self._alert.setAccessoryView_(self._textfield)
     self._textfield.setString_(rumps.compat.text_type(_text))
Example #11
0
 def initWithFrame_andText_(self, frame, text):
     self = super(TextPane, self).initWithFrame_(frame)
     if not self:
         return
     self.tx = NSTextView.alloc().initWithFrame_(NSRect((0, 0), frame.size))
     self.tx.setDrawsBackground_(NO)
     self.tx.setEditable_(NO)
     self.tx.setSelectable_(NO)
     self.tx.textStorage().mutableString().setString_(text)
     self.tx.setAlignment_range_(NSCenterTextAlignment, NSMakeRange(0, self.tx.string().length()))
     self.tx.setFont_(NSFont.userFontOfSize_(self.SIZE))
     self.tx.layoutManager().glyphRangeForTextContainer_(self.tx.textContainer())
     textSize2 = self.tx.layoutManager().usedRectForTextContainer_(self.tx.textContainer()).size
     self.tx.setFrame_(NSRect(((frame.size[0] - textSize2[0]) / 2.0, (frame.size[1] - textSize2[1]) / 2.0), textSize2))
     self.addSubview_(self.tx)
     return self
Example #12
0
 def open_license(_):
     print(0)
     alert = NSAlert.alertWithMessageText_defaultButton_alternateButton_otherButton_informativeTextWithFormat_(
         'License', None, None, None, 'GNU General Public License, version 3')
     alert.setAlertStyle_(0)
     textview = NSTextView.alloc().initWithFrame_(NSMakeRect(0, 0, 420, 180))
     textview.setEditable_(False)
     if getattr(sys, 'frozen', False):
         # noinspection PyUnresolvedReferences
         textview.setString_('\n' + open(sys._MEIPASS[:len(sys._MEIPASS) - 5] + 'Resources/LICENSE').read())
     else:
         textview.setString_('\n' + open('LICENSE').read())
     sv = NSScrollView.alloc().initWithFrame_(textview.frame())
     sv.setBorderType_(1)
     sv.setHasVerticalScroller_(True)
     sv.setAutoresizingMask_(2 | 16)
     sv.setDocumentView_(textview)
     alert.setAccessoryView_(sv)
     alert.runModal()
Example #13
0
    def initWithFrame_(self, frame):
        self = super(GreetingsToView, self).initWithFrame_(frame)
        if not self:
            return None
        self.timers = []
        poem = ('thanks for watching!', 'we love working on', 'Dropbox', 'and we really hope', 'it makes your life', 'easier.', '~~~', 'remember,', "do what's right", 'love thy neighbor', 'and', 'be yourself', '<3', '~~~', 'find us on the web at', 'http://dropbox.com/', '~~~', '4/15/2011')
        self.views = []
        total_height = 0
        for a in poem:
            vv = NSTextView.alloc().initWithFrame_(NSRect((0, 0), frame.size))
            vv.setDrawsBackground_(NO)
            vv.setEditable_(NO)
            vv.setSelectable_(NO)
            vv.setAlignment_range_(NSCenterTextAlignment, NSMakeRange(0, vv.string().length()))
            vv.textStorage().beginEditing()
            vv.textStorage().mutableString().setString_(a)
            vv.textStorage().setFont_(NSFont.labelFontOfSize_(14))
            vv.textStorage().setForegroundColor_(NSColor.colorWithCalibratedRed_green_blue_alpha_(1.0, 1.0, 1.0, 0.0))
            vv.textStorage().endEditing()
            vv.layoutManager().glyphRangeForTextContainer_(vv.textContainer())
            size = vv.layoutManager().usedRectForTextContainer_(vv.textContainer()).size
            vv.setFrameSize_(size)
            total_height += size[1]
            self.addSubview_(vv)
            self.views.append(vv)

        SPACING = 11
        total_height += SPACING * (len(self.views) - 1)
        placement = frame.size[1] - (frame.size[1] - total_height) / 2.0
        for a in self.views:
            w, h = a.frame().size
            placement -= h
            a.setFrameOrigin_(((frame.size[0] - w) / 2.0, placement))
            placement -= SPACING

        return self
Example #14
0
 def __init__(self, vim):
     self.vim = vim
     self.text_input_context = NSTextInputContext.alloc().initWithClient_(
         NSTextView.new())
Example #15
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)