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)
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)
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)
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)
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
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
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
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 ")
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
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 ")
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
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()
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
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()
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
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)
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()