Example #1
0
    def __init__(self, parent, auth_event):
        self.__auth_event = auth_event
        builder = Gtk.Builder()
        builder.add_from_file(FileCatalog.get_elsaclipper_glade())
        self.__dialog = builder.get_object("SettingLogDialog")
        self.__dialog.set_icon_from_file(FileCatalog.get_elsaclipper_icon('elsaclipper_config.png'))
        self.__dialog.show_all()

        self.__radiobutton_yinxiang = builder.get_object(SettingDialog.UI_RADIOBUTTON_YINXIANG)
        self.__radiobutton_evernote_international = builder.get_object(SettingDialog.UI_RADIOBUTTON_EVERNOTE_INTERNATIONAL)
        if MetaData.get_evernote_host() == MetaData.VAL_Evernote_HOST_Yinxiang:
            self.__radiobutton_yinxiang.set_active(True)
        else:
            self.__radiobutton_evernote_international.set_active(True)

        # self.__notebook_selecter = builder.get_object(SettingDialog.UI_NOTEBOOK_SELECTER)
        # self.__notebook_selecter_changed_times = 0
        # self.__notebook_spinner = builder.get_object(SettingDialog.UI_NOTEBOOK_SPINNER)
        # self.__notebook_spinner.start()
        # self.__notebook_image = builder.get_object(SettingDialog.UI_NOTEBOOK_IMAGE)
        # self.__notebook_image.hide()
        self.__auth_status_image = builder.get_object(SettingDialog.UI_AUTH_STATUS_IMAGE)
        self.__auth_status_spinner = builder.get_object(SettingDialog.UI_AUTH_STATUS_SPINNER)
        self.__auth_status_spinner.hide()

        # self.__notebook_updater =  None
        

        self.__shortcut_text_entry = builder.get_object(SettingDialog.UI_SHORTCUT_ENTRY)
        self.__shortcut_text_entry.set_text(MetaData.get_snapshoot_shortcut_value())

        self.__shortcut_alt_check_box = builder.get_object(SettingDialog.UI_SHORTCUT_ALT_CHECK)
        self.__shortcut_alt_check_box.set_active(MetaData.get_snapshoot_shortcut_alt_modifier())

        
        builder.connect_signals(
            {
                "on_close_button_clicked" : self.on_close_button_clicked,
                'on_authorize_button_clicked': self.on_authorize_button_clicked_cb,
                'on_shortcut_entry_changed': self.on_shortcut_entry_changed,
                'on_alt_check_toggled': self.on_alt_check_toggled,
                'on_account_type_changed':self.on_account_type_changed
            }
        )
        self.__authorize_button = builder.get_object(SettingDialog.UI_OBJECT_AUTH_BUTTON)
        authToken = KeyRing.get_auth_token()
        logging.debug('auth token = %s' % authToken)
        if authToken is None or authToken=='':
            self.__authorize_button.set_label(SettingDialog.BUTTON_LABLE_AUTHORIZE)
            self.__auth_status_image.set_from_icon_name('dialog-warning',Gtk.IconSize.BUTTON)
            # self.__notebook_image.set_from_icon_name('dialog-warning',Gtk.IconSize.BUTTON)
            # self.__notebook_image.show()
            # self.__notebook_spinner.hide()
        else:
            self.__authorize_button.set_label(SettingDialog.BUTTON_LABLE_UNAUTHORIZE)
            self.__auth_status_image.set_from_icon_name('dialog-ok',Gtk.IconSize.BUTTON)
Example #2
0
 def on_shortcut_entry_changed(self, widget):
     text = widget.get_text().upper()
     widget.set_text(text)
     if (text >= 'A' and text <= 'Z') or (text >= '0' and text <= '9'):
         widget.modify_fg(Gtk.StateFlags.NORMAL, None)
         MetaData.set_snapshoot_shortcut_value(text)
         logging.debug(MetaData.get_snapshoot_shortcut())
         SettingDialog.KeyBinder.bind_key()
     else:
         COLOR_INVALID = Color(50000, 0, 0) 
         widget.modify_fg(Gtk.StateFlags.NORMAL, COLOR_INVALID)
Example #3
0
 def on_shortcut_entry_changed(self, widget):
     text = widget.get_text().upper()
     widget.set_text(text)
     if (text >= 'A' and text <= 'Z') or (text >= '0' and text <= '9'):
         widget.modify_fg(Gtk.StateFlags.NORMAL, None)
         MetaData.set_snapshoot_shortcut_value(text)
         logging.debug(MetaData.get_snapshoot_shortcut())
         SettingDialog.KeyBinder.bind_key()
     else:
         COLOR_INVALID = Color(50000, 0, 0)
         widget.modify_fg(Gtk.StateFlags.NORMAL, COLOR_INVALID)
Example #4
0
 def on_account_type_changed(self, radiobutton):
     if radiobutton.get_active():
         EvernoteAdapter.logoff()
         if radiobutton is self.__radiobutton_yinxiang:
             logging.debug('change to yinxiang')
             MetaData.set_evernote_host_yinxiang()
         else:
             logging.debug('change to international')
             MetaData.set_evernote_host_international()
         if KeyRing.get_auth_token()!=None:
             logging.debug('remove auth from keyring')
             KeyRing.set_auth_token('')
             self.__authorize_button.set_label(SettingDialog.BUTTON_LABLE_AUTHORIZE)
             self.__auth_status_image.set_from_icon_name('dialog-warning',Gtk.IconSize.BUTTON)
Example #5
0
 def on_account_type_changed(self, radiobutton):
     if radiobutton.get_active():
         EvernoteAdapter.logoff()
         if radiobutton is self.__radiobutton_yinxiang:
             logging.debug('change to yinxiang')
             MetaData.set_evernote_host_yinxiang()
         else:
             logging.debug('change to international')
             MetaData.set_evernote_host_international()
         if KeyRing.get_auth_token() != None:
             logging.debug('remove auth from keyring')
             KeyRing.set_auth_token('')
             self.__authorize_button.set_label(
                 SettingDialog.BUTTON_LABLE_AUTHORIZE)
             self.__auth_status_image.set_from_icon_name(
                 'dialog-warning', Gtk.IconSize.BUTTON)
Example #6
0
    def on_navigation_requested(self, view, frame, req, data=None):
        logging.debug('Requesting new page')
        self.__spinner.show()
        self.__status_label.set_text(AuthDialog.STATUS_MESSAGE_CONNECTING)
        url = req.get_uri()
        if PROGRAM_NAME.lower() in url:
            query = urlparse.urlparse(url).query
            data = dict(urlparse.parse_qsl(query))

            try:
                self.__authData['oauth_verifier'] = data['oauth_verifier']
            except KeyError:
                logging.error('authorization failed')
                return False

            client = EvernoteClient(
                consumer_key=EverNoteConsumerInfo.CONSUMER_KEY,
                consumer_secret=EverNoteConsumerInfo.CONSUMER_SECRET,
                service_host=MetaData.get_evernote_host(),
                sandbox=False  # Default: True
            )
            self.__auth_token = client.get_access_token(
                self.__authData['oauth_token'],
                self.__authData['oauth_token_secret'],
                self.__authData['oauth_verifier'])
            self.__dialog.response(100)
        return False
Example #7
0
    def login(cls, ):
        '''
        Get the notebook name and guid, get note_store
        Returns:
          STATUS_OK              : Everything is fine
          STATUS_NO_AUTH_TOKEN   : No auth token can be found in keying, user should authorize this application
          STATUS_AUTH_EXPIRED    : auth expired, need auth again.

        For mote information about "app notebooks": http://dev.yinxiang.com/doc/articles/app_notebook.php
        '''
        auth_token = KeyRing.get_auth_token()
        if auth_token is not None:
            client = EvernoteClient(
                consumer_key=EverNoteConsumerInfo.CONSUMER_KEY,
                consumer_secret=EverNoteConsumerInfo.CONSUMER_SECRET,
                service_host=MetaData.get_evernote_host(),
                token=auth_token,
                sandbox=False)
            try:
                cls.note_store = client.get_note_store()
            except ErrorTypes.EDAMUserException:
                return cls.STATUS_LOGIN_AUTH_EXPIRED
            notebooks = cls.note_store.listNotebooks()
            len_notebooks = len(notebooks)
            if len_notebooks == 0:
                logging.error("Application notebook has been deleted")
                return cls.STATUS_LOGIN_NOTEBOOK_DELETED
            cls.notebook_name = notebooks[0].name
            cls.notebook_guid = notebooks[0].guid
            return cls.STATUS_LOGIN_OK
        else:
            return cls.STATUS_LOGIN_NO_AUTH_TOKEN
    def login(cls,):
        '''
        Get the notebook name and guid, get note_store
        Returns:
          STATUS_OK              : Everything is fine
          STATUS_NO_AUTH_TOKEN   : No auth token can be found in keying, user should authorize this application
          STATUS_AUTH_EXPIRED    : auth expired, need auth again.

        For mote information about "app notebooks": http://dev.yinxiang.com/doc/articles/app_notebook.php
        '''
        auth_token = KeyRing.get_auth_token()
        if auth_token is not None:
            client = EvernoteClient(
                consumer_key=EverNoteConsumerInfo.CONSUMER_KEY,
                consumer_secret=EverNoteConsumerInfo.CONSUMER_SECRET,
                service_host = MetaData.get_evernote_host(),
                token=auth_token,
                sandbox=False)
            try:
                cls.note_store = client.get_note_store()
            except ErrorTypes.EDAMUserException:
                return cls.STATUS_LOGIN_AUTH_EXPIRED
            notebooks = cls.note_store.listNotebooks()
            len_notebooks = len(notebooks)
            if len_notebooks == 0:
                logging.error("Application notebook has been deleted")
                return cls.STATUS_LOGIN_NOTEBOOK_DELETED
            cls.notebook_name = notebooks[0].name
            cls.notebook_guid = notebooks[0].guid
            return cls.STATUS_LOGIN_OK
        else:
            return cls.STATUS_LOGIN_NO_AUTH_TOKEN
Example #9
0
    def on_navigation_requested(self, view, frame, req, data=None):
        logging.debug('Requesting new page')
        self.__spinner.show()
        self.__status_label.set_text(AuthDialog.STATUS_MESSAGE_CONNECTING)
        url = req.get_uri()
        if PROGRAM_NAME.lower() in url:
            query = urlparse.urlparse(url).query
            data = dict(urlparse.parse_qsl(query))
            
            try:
                self.__authData['oauth_verifier'] = data['oauth_verifier']
            except KeyError:
                logging.error('authorization failed')
                return False

            client = EvernoteClient(
                consumer_key=EverNoteConsumerInfo.CONSUMER_KEY,
                consumer_secret=EverNoteConsumerInfo.CONSUMER_SECRET,
                service_host = MetaData.get_evernote_host(),
                sandbox=False # Default: True
            )
            self.__auth_token = client.get_access_token(
                self.__authData['oauth_token'],
                self.__authData['oauth_token_secret'],
                self.__authData['oauth_verifier']
            )
            self.__dialog.response(100)
        return False
Example #10
0
 def bind_key(cls):
     Keybinder.init()
     shortcut = MetaData.get_snapshoot_shortcut()
     if Keybinder.bind(shortcut, cls.callback, ""):
         if cls.old_key_shortcut is not None:
             Keybinder.unbind(cls.old_key_shortcut)
         cls.old_key_shortcut = shortcut
     else:
         logging.error("Bind shortcut key failed ")
Example #11
0
def main():
    try:
        MetaData.init_path()
        FORMAT = "<%(asctime)s> [ %(levelname)s %(filename)s:%(lineno)s - %(funcName)20s()  ] %(message)s"
        logging.basicConfig(filename = MetaData.LOG_FILE_NAME, level = logging.DEBUG, format=FORMAT)
        get_lock(__file__)
        
        logging.debug('init start')
        GLib.threads_init()
        Gdk.threads_init()
        Gdk.threads_enter()
        SettingDialog.KeyBinder.bind_key()
        StatusIcon()
        Gtk.main()
        Gdk.threads_leave()
    except Exception,e:
        logging.error(str(e))
        print e
Example #12
0
 def bind_key(cls):
     Keybinder.init()
     shortcut = MetaData.get_snapshoot_shortcut()
     if Keybinder.bind(shortcut,cls.callback,""):
         if cls.old_key_shortcut is not None:
             Keybinder.unbind(cls.old_key_shortcut)
         cls.old_key_shortcut = shortcut
     else:
         logging.error("Bind shortcut key failed ")
Example #13
0
def main():
    try:
        MetaData.init_path()
        FORMAT = "<%(asctime)s> [ %(levelname)s %(filename)s:%(lineno)s - %(funcName)20s()  ] %(message)s"
        logging.basicConfig(filename=MetaData.LOG_FILE_NAME,
                            level=logging.DEBUG,
                            format=FORMAT)
        get_lock(__file__)

        logging.debug('init start')
        GLib.threads_init()
        Gdk.threads_init()
        Gdk.threads_enter()
        SettingDialog.KeyBinder.bind_key()
        StatusIcon()
        Gtk.main()
        Gdk.threads_leave()
    except Exception, e:
        logging.error(str(e))
        print e
Example #14
0
    def start(cls):
        '''
        Start the listening thread, is another thread is alreay started, stop it first
        '''
        if cls.notify_thread is not None and cls.notify_thread.is_alive():
            cls.notify_thread.stop()

        pathname = MetaData.get_note_buffer_path_name()
        # get all not uploaded files
        file_list = [ files for root,dirs,files in os.walk(pathname) ][0]
        for filename in file_list:
            NoteListenerThread.status_queue.put(os.path.join(pathname,filename))

        wm = pyinotify.WatchManager()
        wm.add_watch(pathname, pyinotify.IN_CLOSE_WRITE, rec=True)
        eh = cls.NewFileHandler()
        cls.notify_thread = pyinotify.ThreadedNotifier(wm,eh)
        cls.notify_thread.start()
Example #15
0
    def _getEverNoteOAuthURL(self):
        client = EvernoteClient(
            consumer_key=EverNoteConsumerInfo.CONSUMER_KEY,
            consumer_secret=EverNoteConsumerInfo.CONSUMER_SECRET,
            service_host = MetaData.get_evernote_host(),
            sandbox=False # Default: True ; if using yinxiang, set service_host='www.yinxiang.com' ; in using Evernote International, set  service_host='www.evernote.com'
        )

        callbackUrl = "http://"+PROGRAM_NAME
        request_token = client.get_request_token(callbackUrl)
        # Save the request token information for later
        self.__authData['oauth_token'] = request_token['oauth_token']
        self.__authData['oauth_token_secret'] = request_token['oauth_token_secret']

        # Redirect the user to the Evernote authorization URL
        url = client.get_authorize_url(request_token)
        logging.debug(url)
        return url
Example #16
0
    def start(cls):
        '''
        Start the listening thread, is another thread is alreay started, stop it first
        '''
        if cls.notify_thread is not None and cls.notify_thread.is_alive():
            cls.notify_thread.stop()

        pathname = MetaData.get_note_buffer_path_name()
        # get all not uploaded files
        file_list = [files for root, dirs, files in os.walk(pathname)][0]
        for filename in file_list:
            NoteListenerThread.status_queue.put(
                os.path.join(pathname, filename))

        wm = pyinotify.WatchManager()
        wm.add_watch(pathname, pyinotify.IN_CLOSE_WRITE, rec=True)
        eh = cls.NewFileHandler()
        cls.notify_thread = pyinotify.ThreadedNotifier(wm, eh)
        cls.notify_thread.start()
Example #17
0
    def _getEverNoteOAuthURL(self):
        client = EvernoteClient(
            consumer_key=EverNoteConsumerInfo.CONSUMER_KEY,
            consumer_secret=EverNoteConsumerInfo.CONSUMER_SECRET,
            service_host=MetaData.get_evernote_host(),
            sandbox=
            False  # Default: True ; if using yinxiang, set service_host='www.yinxiang.com' ; in using Evernote International, set  service_host='www.evernote.com'
        )

        callbackUrl = "http://" + PROGRAM_NAME
        request_token = client.get_request_token(callbackUrl)
        # Save the request token information for later
        self.__authData['oauth_token'] = request_token['oauth_token']
        self.__authData['oauth_token_secret'] = request_token[
            'oauth_token_secret']

        # Redirect the user to the Evernote authorization URL
        url = client.get_authorize_url(request_token)
        logging.debug(url)
        return url
Example #18
0
    def __init__(self, parent, auth_event):
        self.__auth_event = auth_event
        builder = Gtk.Builder()
        builder.add_from_file(FileCatalog.get_elsaclipper_glade())
        self.__dialog = builder.get_object("SettingLogDialog")
        self.__dialog.set_icon_from_file(
            FileCatalog.get_elsaclipper_icon('elsaclipper_config.png'))
        self.__dialog.show_all()

        self.__radiobutton_yinxiang = builder.get_object(
            SettingDialog.UI_RADIOBUTTON_YINXIANG)
        self.__radiobutton_evernote_international = builder.get_object(
            SettingDialog.UI_RADIOBUTTON_EVERNOTE_INTERNATIONAL)
        if MetaData.get_evernote_host() == MetaData.VAL_Evernote_HOST_Yinxiang:
            self.__radiobutton_yinxiang.set_active(True)
        else:
            self.__radiobutton_evernote_international.set_active(True)

        # self.__notebook_selecter = builder.get_object(SettingDialog.UI_NOTEBOOK_SELECTER)
        # self.__notebook_selecter_changed_times = 0
        # self.__notebook_spinner = builder.get_object(SettingDialog.UI_NOTEBOOK_SPINNER)
        # self.__notebook_spinner.start()
        # self.__notebook_image = builder.get_object(SettingDialog.UI_NOTEBOOK_IMAGE)
        # self.__notebook_image.hide()
        self.__auth_status_image = builder.get_object(
            SettingDialog.UI_AUTH_STATUS_IMAGE)
        self.__auth_status_spinner = builder.get_object(
            SettingDialog.UI_AUTH_STATUS_SPINNER)
        self.__auth_status_spinner.hide()

        # self.__notebook_updater =  None

        self.__shortcut_text_entry = builder.get_object(
            SettingDialog.UI_SHORTCUT_ENTRY)
        self.__shortcut_text_entry.set_text(
            MetaData.get_snapshoot_shortcut_value())

        self.__shortcut_alt_check_box = builder.get_object(
            SettingDialog.UI_SHORTCUT_ALT_CHECK)
        self.__shortcut_alt_check_box.set_active(
            MetaData.get_snapshoot_shortcut_alt_modifier())

        builder.connect_signals({
            "on_close_button_clicked":
            self.on_close_button_clicked,
            'on_authorize_button_clicked':
            self.on_authorize_button_clicked_cb,
            'on_shortcut_entry_changed':
            self.on_shortcut_entry_changed,
            'on_alt_check_toggled':
            self.on_alt_check_toggled,
            'on_account_type_changed':
            self.on_account_type_changed
        })
        self.__authorize_button = builder.get_object(
            SettingDialog.UI_OBJECT_AUTH_BUTTON)
        authToken = KeyRing.get_auth_token()
        logging.debug('auth token = %s' % authToken)
        if authToken is None or authToken == '':
            self.__authorize_button.set_label(
                SettingDialog.BUTTON_LABLE_AUTHORIZE)
            self.__auth_status_image.set_from_icon_name(
                'dialog-warning', Gtk.IconSize.BUTTON)
            # self.__notebook_image.set_from_icon_name('dialog-warning',Gtk.IconSize.BUTTON)
            # self.__notebook_image.show()
            # self.__notebook_spinner.hide()
        else:
            self.__authorize_button.set_label(
                SettingDialog.BUTTON_LABLE_UNAUTHORIZE)
            self.__auth_status_image.set_from_icon_name(
                'dialog-ok', Gtk.IconSize.BUTTON)
Example #19
0
 def on_alt_check_toggled(self, checker):
     checked = checker.get_active()
     MetaData.set_snapshoot_shortcut_alt_modifier(checked)
     logging.debug(MetaData.get_snapshoot_shortcut())
     SettingDialog.KeyBinder.bind_key()
Example #20
0
 def on_alt_check_toggled(self, checker):
     checked = checker.get_active()
     MetaData.set_snapshoot_shortcut_alt_modifier(checked)
     logging.debug(MetaData.get_snapshoot_shortcut())
     SettingDialog.KeyBinder.bind_key()