def Initialize(self): t = misc.Timer() self.log.debug("created") self.events = Events(self, self.identifier) title = "" if(ctypes.windll.shell32.IsUserAnAdmin()): title += "[" + _("管理者") + "]" title += constants.APP_NAME super().Initialize( title, self.app.config.getint(self.identifier, "sizeX", 800, 400), self.app.config.getint(self.identifier, "sizeY", 600, 300), self.app.config.getint(self.identifier, "positionX", 50, 0), self.app.config.getint(self.identifier, "positionY", 50, 0) ) self.menu = Menu(self.identifier) self.AddUserCommandKey() self.InstallMenuEvent(self.menu, self.events.OnMenuSelect) self.AddUserCommandMenu() self.tabs = [] self.activeTab = None # 最初なので空 self.hTabCtrl = self.creator.tabCtrl(_("タブ選択"), self.ChangeTab, 0, wx.EXPAND, 1) self.MakeFirstTab() self.activeTab.hListCtrl.SetFocus() self.hFrame.Bind(wx.EVT_CLOSE, self.OnClose) self.hFrame.Bind(wx.EVT_MENU_OPEN, self.events.OnMenuOpen) if self.app.config.getboolean(self.identifier, "maximized", False): self.hFrame.Maximize() self.hFrame.Show() self.app.SetTopWindow(self.hFrame) self.log.debug("Finished creating main view (%f seconds)" % t.elapsed) return True
def Initialize(self): t = misc.Timer() self.identifier = "wxFontTestView" #このビューを表す文字列 self.log = getLogger("falcon.%s" % self.identifier) self.log.debug("created") self.app = globalVars.app super().Initialize("wxテスト", 800, 600) manager = FontManager() self.InstallControls() self.hFrame.Show() """ # FontDataを生成し、設定を行う fontData=wx.FontData() fontData.EnableEffects(False) #取り消し線などは設定できない fontData.SetAllowSymbols(False) #シンボルフォントの設定は認めない fontData.SetRange(5,35) fontchooser=wx.FontDialog(self.hFrame,fontData) fontchooser.ShowModal() font=fontchooser.GetFontData().GetChosenFont() if not font.IsOk(): dialog("エラー","有効なフォントではありません。") return True #アサーションエラーの対策 """ font = manager.GetFont() manager.ShowSettingDialog(self.hFrame) font = manager.GetFont() dialog("test", str(manager.GetSize())) dialog("test", manager.GetName()) globalVars.app.config["view"]["font"] = manager.GetInfo() return True
def Initialize(self, lst=None, silent=False): """ドライブ情報を取得し、リストを初期化する。""" self.log.debug("Getting drives list...") self.rootDirectory = "" t = misc.Timer() if isinstance( lst, list ): # パラメータがリストなら、browsableObjects のリストとして処理刷る(ファイルリストを取得しないでコピーする) self._copyFromList(lst) return errorCodes.OK # end copy self.drives.clear() self.unusableDrives.clear() self.networkResources.clear() if not silent: globalVars.app.say(_("ドライブ洗濯")) drv = win32api.GetLogicalDrives() check = 1 for i in range(26): if drv & check: self.Append(i) # ドライブ検出 check <<= 1 # end ドライブ25個分調べる # ネットワークリソースの追加はタブ側から来ることになった self.log.debug("Drives list created in %d seconds." % t.elapsed) self.log.debug("%d drives and %d unusableDrives found." % (len(self.drives), len(self.unusableDrives))) self.log.debug("Triggering sorting") self.ApplySort() return errorCodes.OK
def run(self): while (True): item = tasks.get() self.log.debug("picked up job") if isinstance(item, Stop_task): # ワーカースレッド終了 self.log.debug("Received stop signal. Exiting thread...") tasks.task_done() break # end 終了 if stopped: continue # 終了した後にはタスクをもらっても働かない if item.canceled: # 出したけどキャンセル済み tasks.task_done() self.log.debug("Already canceled, skipping this task...") continue # end キャンセル済みタスク func = item.func params = item.params active_task_states.append(item) t = misc.Timer() item.setWorkingState(True) ret = func(item, params) if ret is True: item.FinishCallback() else: item.CancelCallback() # end どっちのcallbackを呼ぶか tasks.task_done() self.log.debug("task finished in %f seconds." % (t.elapsed) if ret else "Task canceled.") item.setWorkingState(False) active_task_states.remove(item)
def Initialize(self): t = misc.Timer() self.identifier = "mainView" #このビューを表す文字列 self.log = getLogger("falcon.%s" % self.identifier) self.log.debug("created") self.app = globalVars.app self.events = Events(self, self.identifier) title = "" if (ctypes.windll.shell32.IsUserAnAdmin()): title += "[" + _("管理者") + "]" title += constants.APP_NAME super().Initialize( title, self.app.config.getint(self.identifier, "sizeX", 800, 400), self.app.config.getint(self.identifier, "sizeY", 600, 300), self.app.config.getint(self.identifier, "positionX", 50, 0), self.app.config.getint(self.identifier, "positionY", 50, 0)) self.menu = Menu() self.menu.InitShortcut(self.identifier) #お気に入りフォルダと「ここで開く」のショートカットキーを登録 for target in (globalVars.app.userCommandManagers): for v in target.keyMap: if target == globalVars.app.openHereCommand: tabs.base.FalconTabBase.selectItemMenuConditions[0].append( target.refHead + v) tabs.base.FalconTabBase.selectItemMenuConditions[2].append( target.refHead + v) tabs.base.FalconTabBase.selectItemTypeMenuConditions[ browsableObjects.File].append(target.refHead + v) tabs.base.FalconTabBase.selectItemTypeMenuConditions[ browsableObjects.NetworkResource].append( target.refHead + v) tabs.streamList.StreamListTab.blockMenuList.append( target.refHead + v) self.menu.keymap.add(self.identifier, target.refHead + v, target.keyMap[v]) errors = self.menu.keymap.GetError(self.identifier) if errors: tmp = _( "お気に入りディレクトリもしくは「ここで開く」で設定されたショートカットキーが正しくありません。キーが重複しているか、存在しないキー名を指定しています。以下のキーの設定内容をご確認ください。\n\n" ) for v in errors: tmp += v + "\n" dialog(_("エラー"), tmp) self.InstallMenuEvent(self.menu, self.events) self.tabs = [] self.activeTab = None #最初なので空 self.hTabCtrl = self.creator.tabCtrl(_("タブ選択"), self.ChangeTab, 0, 1, wx.EXPAND) self.MakeFirstTab() self.hFrame.Bind(wx.EVT_CLOSE, self.OnClose) self.hFrame.Show() self.app.SetTopWindow(self.hFrame) self.log.debug("Finished creating main view (%f seconds)" % t.elapsed) return True
def Initialize(self): t = misc.Timer() self.identifier = "registOriginalAssociationDialog" # このビューを表す文字列 self.log = getLogger("falcon.%s" % self.identifier) self.log.debug("created") super().Initialize(self.app.hMainView.hFrame, _("拡張子の独自関連付け")) self.InstallControls() self.log.debug("Finished creating main view (%f seconds)" % t.elapsed) return True
def _sort(self, attrib, descending): """指定した要素で、リストを並べ替える。""" self.log.debug("Begin sorting (attrib %s, descending %s)" % (attrib, descending)) t = misc.Timer() f = self._getSortFunction(attrib) for l in self.lists: l.sort(key=f, reverse=(descending == 1)) self.log.debug("Finished sorting (%f seconds)" % t.elapsed)
def Initialize(self): t=misc.Timer() self.identifier="execProgramDialog"#このビューを表す文字列 self.log=getLogger("falcon.%s" % self.identifier) self.log.debug("created") self.app=globalVars.app super().Initialize(self.app.hMainView.hFrame,_("ファイル名を指定して実行")) self.InstallControls() self.log.debug("Finished creating main view (%f seconds)" % t.elapsed) return True
def Initialize(self,detailText=""): t=misc.Timer() self.identifier="newNameEditDialog"#このビューを表す文字列 self.log=getLogger("falcon.%s" % self.identifier) self.log.debug("created") self.app=globalVars.app super().Initialize(self.app.hMainView.hFrame,_("新しい名前を入力")) self.InstallControls(detailText) self.log.debug("Finished creating main view (%f seconds)" % t.elapsed) return True
def Initialize(self, dic): t = misc.Timer() self.identifier = "objectDetailDialog" #このビューを表す文字列 self.log = getLogger("falcon.%s" % self.identifier) self.log.debug("created") self.app = globalVars.app super().Initialize(self.app.hMainView.hFrame, _("詳細情報")) self.InstallControls(dic) self.log.debug("Finished creating main view (%f seconds)" % t.elapsed) return True
def Initialize(self): t = misc.Timer() self.identifier = "OperationSelecterDialog" #このビューを表す文字列 self.log = getLogger("falcon.%s" % self.identifier) self.log.debug("created") self.app = globalVars.app if self.enableCancel: super().Initialize(self.app.hMainView.hFrame, _("ファイル操作確認")) else: super().Initialize(self.app.hMainView.hFrame, _("ファイル操作確認"), 0) self.InstallControls() self.log.debug("Finished creating main view (%f seconds)" % t.elapsed) return True
def Initialize(self, path, silent=False): """リソースの情報を取得し、リストを初期化する。""" self.log.debug("Getting resources list...") self.rootDirectory = path t = misc.Timer() if isinstance( path, list ): # パラメータがリストなら、browsableObjects のリストとして処理刷る(ファイルリストを取得しないでコピーする) self.resources += path return errorCodes.OK # end copy self.resources.clear() if not silent: globalVars.app.say(path[2:]) # 取得対象を構造体にセット rootResource = win32wnet.NETRESOURCE() rootResource.lpRemoteName = path # リソースリストの取得 try: h = win32wnet.WNetOpenEnum(2, 1, 0, rootResource) # 2=RESOURCE_GLOBALNET # 1=RESOURCETYPE_DISK lst = win32wnet.WNetEnumResource(h, 64) # 65以上の指定不可 win32wnet.WNetCloseEnum(h) except win32wnet.error as er: dialog( _("エラー"), _("ネットワーク上のリソース一覧を取得できませんでした(%(error)s)") % {"error": str(er)}) return errorCodes.ACCESS_DENIED for l in lst: ret, shfileinfo = shell.SHGetFileInfo(l.lpRemoteName, 0, shellcon.SHGFI_ICON) s = browsableObjects.NetworkResource() self.log.debug("network resource found and check IP address:" + l.lpRemoteName[2:]) s.Initialize(l.lpRemoteName[len(path) + 1:], l.lpRemoteName, "", shfileinfo[0]) self.resources.append(s) self.log.debug("Network resource list created in %d seconds." % t.elapsed) self.log.debug(str(len(self.resources)) + " resources found.") return errorCodes.OK
def UpdateListContent(self, content, soft=False): """ リストコントロールの中身を更新し、並び替え状況を示すアイコンを再配置する。 カラムの数やテキストは変更しない。 soft=Trueの場合は、同一リストの再描画。読み込んだアイコン画像とチェック状態が維持される。 """ self.log.debug("Updating list control...") if soft: self.ClearAllItems() else: self.DeleteAllItems() t = misc.Timer() for elem in content: self._AppendElement(elem) # end 追加 self.log.debug("List control updated in %f seconds." % t.elapsed)
def _process(self): """ファイルオペレーション実行処理本体。スレッドで実行することもあるので、関数がべつになっている。""" self.working = True op = self.instructions["operation"] self.log.info("Starting file operation: %s" % op) self.opTimer = misc.Timer() if op == "rename": # リネーム retry = rename.Execute(self) # end rename if op == "changeAttribute": # 属性変更 retry = changeAttribute.Execute(self) # end changeAttribute if op == "mkdir": # フォルダ作成 retry = mkdir.Execute(self) # end mkdir if op == "trash": # ゴミ箱 retry = trash.Execute(self) # end trash if op == "shortcut": retry = shortcut.Execute(self) # end shortcut if op == "symbolicLink": retry = symbolicLink.Execute(self) # end symbolicLink if op == "hardLink": retry = hardLink.Execute(self) # end hardLink if op == "delete": retry = delete.Execute(self) # end hardLink if op == "past": retry = past.Execute(self, resume=self.resume) # end hardLink self.log.debug( "success %s, retry %s, need to confirm %s, failure %s." % (self.output["succeeded"], retry, len(self.output["need_to_confirm"]), len(self.output["failed"]))) if not self.elevated and retry > 0: self._elevate() # 昇格してリトライ if self.elevated: self._postElevation() # 昇格した後の後処理 self.working = False self.log.info("Finished (%f sec)" % self.opTimer.elapsed) self._doCallback("finished")
def __init__(self): t = misc.Timer() self.identifier = "wxFontManager" self.log = getLogger("falcon.%s" % self.identifier) self.log.debug("created") self.app = globalVars.app # 設定ファイルの情報を基にfontを生成 self.font = wx.Font() if not self.font.SetNativeFontInfoUserDesc( self.app.config.get("view", "font")): dialog(_("エラー"), _("設定されているフォント情報が不正です。デフォルトのフォントを適用します。")) self.log.warning("fontString error. SetNativeFontInfoUserDesc(" + self.app.config.get("view", "font") + ") returned false.") self.font.SetNativeFontInfoUserDesc( DefaultSettings.get("view", "font")) self.app.config.set("view", "font", DefaultSettings.get("view", "font")) with open(constants.SETTING_FILE_NAME, "w") as f: self.config.write(f)
def Initialize(self, file, silent=False): """ファイル名から副ストリーム情報を取得し、リストを初期化する。入力は絶対パスでなければならない。情報が取得できなかった場合、errorCodes.OK以外が返る。。""" t = misc.Timer() if isinstance( file, list ): #パラメータがリストなら、browsableObjects のリストとして処理刷る(ファイルリストを取得しないでコピーする) self.streams = file self.lists = [self.streams] return #end copy self.streams.clear() file_spl = file.split("\\") self.rootDirectory = file level = len(file_spl) if not silent: globalVars.app.say("%s%d %s" % (file[0], level, file_spl[level - 1])) self.log.debug("Getting stream list for %s..." % file) try: lst = win32file.FindStreams(file) except win32file.error as er: dialog( _("エラー"), _("NTFS 副ストリーム情報を取得できませんでした(%(error)s)") % {"error": str(er)}) return False #end 情報取得失敗 lst = lst[1:] #先頭はファイル本体なので省く for elem in lst: s = browsableObjects.Stream() s.Initialize(file, elem[1][1:-6], file + elem[1][0:-6], elem[0]) self.streams.append(s) #end 追加ループ self.log.debug("stream list created in %d milliseconds." % t.elapsed) self.log.debug(str(len(self.streams)) + " objects found.") if self.sortCursor != 0 or self.sortDescending != 0: self.log.debug("Triggering sorting") self.ApplySort() #end ソートが必要ならソート return errorCodes.OK
def UpdateListContent(self, content): """ リストコントロールの中身を更新し、並び替え状況を示すアイコンを再配置する。 カラムの数やテキストは変更しない。 """ self.log.debug("Updating list control...") self._cancelBackgroundTasks() self.hListCtrl.DeleteAllItems() self.ItemSelected() #メニューバーのアイテムの状態更新処理。選択中アイテムがいったん0になってる場合があるため必要。 self.checkedItem = set() globalVars.app.hMainView.menu.Enable( menuItemsStore.getRef("EDIT_UNMARKITEM_ALL"), False) self.hilightIndex = -1 t = misc.Timer() for elem in content: self.hListCtrl.Append(elem) #end 追加 self.log.debug("List control updated in %f seconds." % t.elapsed) #アイコン設定 self.hIconList = wx.ImageList(32, 32, False, len(self.listObject)) self.hListCtrl.AssignImageList(self.hIconList, wx.IMAGE_LIST_SMALL) for elem in self.listObject: icon = wx.Icon() if elem.hIcon >= 0: icon.CreateFromHICON(elem.hIcon) index = self.hIconList.Add(icon) if index >= 0: self.hListCtrl.SetItemImage(index, index, index) #カラム用アイコンを登録 self.hIconList.Add(wx.Icon("fx/dummy.ico")) self.hIconList.Add(wx.Icon("fx/ascending.ico")) self.hIconList.Add(wx.Icon("fx/descending.ico")) self._SetSortIcon()
def initialize(self): """アプリを初期化する。""" self.initUpdater() # プロキシの設定を適用 self.proxyEnviron = proxyUtil.virtualProxyEnviron() self.setProxyEnviron() # スレッドで例外が起きてもsys.exceptHookが呼ばれるようにする self.installThreadExcepthook() # アップデートを実行 if self.config.getboolean("general", "update"): globalVars.update.update(True) t = misc.Timer() wx.DisableAsserts() self.error_sound_handle = None self.InitSound() self.LoadUserCommandSettings() self.LoadUserExtentionSettings() self.InitCaches() workerThreads.Start() # 起動サウンドの再生 self.PlaySound(self.config["sounds"]["startup"]) self.log.debug("finished environment setup (%f seconds from start)" % t.elapsed) # メインビューを表示 from views import main self.hMainView = main.View("mainView") self.hMainView.Initialize() misc.InitContextMenu(self.hMainView.hFrame.GetHandle()) self.log.debug("Finished mainView setup (%f seconds from start)" % t.elapsed) return True
def __init__(self, _screen): self.screen = _screen self.timer = misc.Timer(_length=500, _func=self.create_star) self.star_list = []
def create_star(self): new_star = Star(self.screen, rand.randint(0, 640), rand.randint(1, 2)) self.star_list.append(new_star) self.timer = misc.Timer(_length=500, _func=self.create_star)
def Initialize(self, dir, silent=False): """ディレクトリからファイル情報を取得し、リストを初期化する。入力は絶対パスでなければならない。情報が取得できなかった場合、errorCodes.OK以外が返る。silentがTrueなら読み上げは行われない。""" self.ClearCache() if isinstance( dir, list ): # パラメータがリストなら、browsableObjects のリストとして処理刷る(ファイルリストを取得しないでコピーする) self._copyFromList(dir) return errorCodes.OK # end copy self.files.clear() self.folders.clear() dir_spl = dir[len(os.path.splitdrive(dir)[0]) + 1:].split("\\") level = len(dir_spl) if dir_spl[0] == "": level -= 1 if not silent: r = [] if globalVars.app.config['on_list_moved'][ 'read_directory_level'] == 'True': drive = os.path.splitdrive(dir)[0] if len(drive) == 2: drive = drive[0] if level == 0: r.append("%sルート" % drive) else: r.append("%sの%d " % (drive, level)) if globalVars.app.config['on_list_moved'][ 'read_directory_name'] == 'True': r.append(dir_spl[level - 1]) if len(r) > 0: globalVars.app.say("".join(r)) # end read self.rootDirectory = dir self.log.debug("Getting file list for %s..." % self.rootDirectory) t = misc.Timer() try: lst = win32api.FindFiles(os.path.join(dir, "*")) except pywintypes.error as err: self.log.error("Cannot open the directory! {0}".format(err)) if err.winerror == 5: return errorCodes.ACCESS_DENIED dialog(_("エラー"), _("フォルダを開くことができませんでした(%(error)s)") % {"error": str(err)}) return errorCodes.FATAL # end except if len(lst) == 0: self.log.debug("Blank folder.") return errorCodes.OK # end 空のフォルダだったらさっさと帰る for elem in lst: if elem[8] == "." or elem[8] == "..": continue fullpath = os.path.join(dir, elem[8]) shfileinfo = self.GetShellInfo(fullpath) if os.path.isfile(fullpath): f = browsableObjects.File() f.Initialize(dir, elem[8], fullpath, (elem[4] << 32) + elem[5], elem[3], elem[0], shfileinfo[4], elem[1], elem[9], shfileinfo[0]) self.files.append(f) else: f = browsableObjects.Folder() f.Initialize(dir, elem[8], fullpath, -1, elem[3], elem[0], shfileinfo[4], elem[1], elem[9], shfileinfo[0]) self.folders.append(f) # end どっちについかするか? # end 追加ループ self.log.debug("File list created in %f seconds." % t.elapsed) self.log.debug( str(len(self.folders)) + " directories and " + str(len(self.files)) + " files found.") if self.sortCursor != 0 or self.sortDescending != 0: self.log.debug("Triggering sorting") self.ApplySort() # end ソートが必要ならソート return errorCodes.OK
def initialize(self): """アプリを初期化する。""" t = misc.Timer() self.frozen = hasattr(sys, "frozen") self.InitLogger() self.error_sound_handle = None self.LoadSettings() wx.DisableAsserts() try: if self.config["general"]["locale"] != None: locale.setlocale(locale.LC_TIME, self.config["general"]["locale"]) else: locale.setlocale(locale.LC_TIME) except: locale.setlocale(locale.LC_TIME) self.config["general"]["locale"] = "" self.SetTimeZone() self.InitTranslation() self.LoadUserCommandSettings() self.LoadUserExtentionSettings() self.InitSound() self.InitCaches() workerThreads.Start() # 起動サウンドの再生 self.PlaySound(self.config["sounds"]["startup"]) # 音声読み上げの準備 reader = self.config["speech"]["reader"] if (reader == "PCTK"): self.log.info("use reader 'PCTalker'") self.speech = accessible_output2.outputs.pc_talker.PCTalker() elif (reader == "NVDA"): self.log.info("use reader 'NVDA'") self.speech = accessible_output2.outputs.nvda.NVDA() # elif(reader=="SAPI4"): # self.log.info("use reader 'SAPI4'") # self.speech=accessible_output2.outputs.sapi4.Sapi4() elif (reader == "SAPI5"): self.log.info("use reader 'SAPI5'") self.speech = accessible_output2.outputs.sapi5.SAPI5() elif (reader == "AUTO"): self.log.info("use reader 'AUTO'") self.speech = accessible_output2.outputs.auto.Auto() elif (reader == "JAWS"): self.log.info("use reader 'JAWS'") self.speech = accessible_output2.outputs.jaws.Jaws() elif (reader == "CLIPBOARD"): self.log.info("use reader 'CLIPBOARD'") self.speech = accessible_output2.outputs.clipboard.Clipboard() elif (reader == "NOSPEECH"): self.log.info("use reader 'NOSPEECH'") self.speech = accessible_output2.outputs.nospeech.NoSpeech() else: self.config.set("speech", "reader", "AUTO") self.log.warning("Setting missed! speech.reader reset to 'AUTO'") self.speech = accessible_output2.outputs.auto.Auto() self.log.debug("finished environment setup (%f seconds from start)" % t.elapsed) # メインビューを表示 self.hMainView = main.View() self.hMainView.Initialize() misc.InitContextMenu(self.hMainView.hFrame.GetHandle()) self.log.debug("Finished mainView setup (%f seconds from start)" % t.elapsed) return True