def _create_fixed_phrase(self, commanddata): """ @exception CannotCreateFixedPhraseError スニペット読込or取得に失敗 """ snippetname = commanddata.get_parameter1() if snippetname=="": dialog_wrapper.ok(dlgmsg.MSG_ERROR_SHOTAGE_EMPTY_SNIPPET_NAME) raise CannotCreateFixedPhraseError(dlgmsg.MSG_ERROR_SHOTAGE_EMPTY_SNIPPET_NAME) snippetinst = snippet.Snippet() snippetdata = "" try: snippetdata = snippetinst.get(snippetname) except KeyError: dialog_wrapper.ok(dlgmsg.MSG_ERROR_NOTFOUND_SNIPPET_FILE % snippetname) raise CannotCreateFixedPhraseError(snippetname) try: snippetdata = \ selfinfo_dynamic.macro_interpreter2snippet.deploy(snippetdata) except Exception as e: # 失敗したら展開前の値をそのまま返す. # # 原則ここには来ないはず. 来るとしたら, # dynamic 情報にマクロインスタンスがセットされてないとか, # deploy の内部で何らかのエラーが起きたとか. dialog_wrapper.ok(dlgmsg.MSG_ERROR_INTERNAL_INTERPRETER2SNIPPET_DEPLOY % dlgmsg.exception2str(e)) return snippetdata
def _set_to_config_wrapper(self, key, value): """ 設定値を Config にセットする. 失敗した場合は, 設定ファイルの記述 or コード自体がおかしい. いずれにせよユーザ側に明示的に通知して, プログラム自体は終了させることで修正してもらうようにする. (コード自体がおかしい場合はプログラマ自身が修正する. もちろん公開後はこのエラーが出てはいけない.) """ try: log.debug("before config[" + str(key) + "]=" + str(value)) config.inst.set(key, value) log.debug("after config[" + str(key) + "]=" + str(value)) except config.ProgrammersMistake as e: dialog_wrapper.ok(dlgmsg.MSG_ERROR_INTERNAL_CONFIG_SET % dlgmsg.exception2str(e)) endhandler.inst.run() raise except config.NotFoundConfigKeyFailure as e: dialog_wrapper.ok(dlgmsg.MSG_ERROR_NOTFOUND_CONFIG_KEY % key) endhandler.inst.run() raise except config.BoolConversionFailure as e: dialog_wrapper.ok(dlgmsg.MSG_ERROR_FAILED_CONFIG_BOOL_CONVERTION % key) endhandler.inst.run() raise except config.IntegerConversionFailure as e: dialog_wrapper.ok(dlgmsg.MSG_ERROR_FAILED_CONFIG_INTERGER_CONVERSION % key) endhandler.inst.run() raise pass
def _get_history_by_range(self): """ @exception HistoryError 履歴の範囲指定が異常 """ try: self._histories = historymanager.inst.get_data_by_range( self._start, self._end ) except RuntimeError as e: dialog_wrapper.ok(dlgmsg.MSG_ERROR_INVALID_HISTORY_RANGE % dlgmsg.exception2str(e)) raise HistoryError(e)
def _get_query(self): """ <クエリ候補> ::= <検索開始文字列><クエリ> ~~~~~~~ ここを取り出す @return 空文字列 クエリ取得に失敗 """ # クリップボードからクエリ候補を取得 import util_win.clipboard as clipboard emptystr = '' cbstr = '' try: cbstr = clipboard.Clipboard.get() except Exception as e: dialog_wrapper.ok(dlgmsg.MSG_ERROR_FAILED_GET_HISTORY_SEARCH_QUERY % dlgmsg.exception2str(e)) return emptystr startstr = config.inst.get_hisearch_startstr() if not(cbstr.startswith(startstr)): return emptystr return cbstr[len(startstr):]
def _interpret_menu(self): """ @retval 空文字列 メニュー表示に失敗orメニュー表示を省略 """ with menucreator.MenuCreator() as creator: empty = "" tracker = menutracker.MenuTracker(self._hwnd) macroer = macro.Macro(gui_info_wrapper.get()) # メニュー作成前に必要な設定はここで取得. maxlen_menuitem = config.inst.get_menuitem_length() if maxlen_menuitem<=1: maxlen_menuitem = config.Config.MAP["menuitem_length"] # メニュー作成前に Config を初期値に戻す. # 初期値がベースだから. config.inst.init() # 各行を解釈してメニューを作成 line_interpreter = LineInterpreter(creator, macroer, maxlen_menuitem) try: for i in range(len(self._content_of_file)): line_interpreter.interpret(self._content_of_file[i]) except config.ConfigError as e: # 下位でダイアログ表示まで行っているため, # ここでは何もせずそのまま raise raise except historymenu.HistoryError as e: # 下位でダイアログ表示まで行っているため, # ここでは何もせず中断. return empty except Exception as e: # 予期せぬエラー含め内部エラーはここで吸収. errmsg = dlgmsg.MSG_ERROR_INTERNAL_INTERPRET_LINE % dlgmsg.exception2str(e) dialog_wrapper.ok(errmsg) return empty if self._use_config_only: return empty # 完成したメニューデータを取り出す. # 作成に失敗していたら警告を出して終了する. menudata = None try: menudata = creator.get_menudata() except ValueError as e: dialog_wrapper.ok(dlgmsg.MSG_ERROR_INVALID_MENU_STRUCTURE % dlgmsg.exception2str(e)) endhandler.inst.run() # コピペコマンド側で使うため, マクロインスタンスを動的情報にセット. selfinfo_dynamic.macro_interpreter2snippet = macroer # 作成したメニューを表示し, 選択項目に対応する値を取得. retval = empty try: mx, my = trackpositioncalculator.inst.get() retval = tracker.track(menudata, mx, my) except Exception as e: # メニューキャンセル時にもここに入るのでダイアログにはしない. log.error( "interepretation error: failed to track." + str(e) ) return retval
def _ini2list(self): """ @retval True 読み込みに成功 @retval False 読み込みに失敗 """ try: self._content_of_file = self._reader.read(selfinfo.MENUINI_PATH) except IOError as e: dialog_wrapper.ok(dlgmsg.MSG_ERROR_FAILED_LOAD_MENUINI % (selfinfo.MENUINI_PATH, dlgmsg.exception2str(e))) return False return True