Ejemplo n.º 1
0
 def UpdateFilelist(self, silence=False, cursorTargetName=""):
     """検索をやり直す。ファイルは非同期処理で増えるので、cursorTargetNameは使用されない。"""
     if not self.tempListObject.GetFinishedStatus():
         globalVars.app.say(_("現在検索中です。再建策はできません。"), interrupt=True)
         return
     # end まだ検索終わってない
     if not silence:
         globalVars.app.say(_("再建策"), interrupt=True)
     # end not silence
     self.DeleteAllItems()
     searches = []
     self.listObject.RedoSearch(searches)
     task = workerThreads.RegisterTask(
         workerThreadTasks.GetRecursiveFileList, {
             'path': self.listObject.rootDirectory,
             'out_lst': searches,
             'eol': True
         })
     self.tempListObject = self.listType()
     self.tempListObject.Initialize(self.listObject.rootDirectory, searches,
                                    keyword, isRegularExpression)
     workerThreads.RegisterTask(workerThreadTasks.PerformSearch, {
         'listObject': self.tempListObject,
         'tabObject': self
     })
Ejemplo n.º 2
0
Archivo: main.py Proyecto: yncat/falcon
    def Search(self):
        basePath = self.parent.activeTab.listObject.rootDirectory
        out_lst = []  # 入力画面が出てるときに、もうファイルリスト取得を開始してしまう
        task = workerThreads.RegisterTask(workerThreadTasks.GetRecursiveFileList, {'path': basePath, 'out_lst': out_lst, 'eol': True})

        searchHistory = history.History(globalVars.app.config.getint("search", "history_count", 0, 0, 100), False)
        grepHistory = history.History(globalVars.app.config.getint("search", "history_count", 0, 0, 100), False)
        hist = {}
        try:
            with open(constants.HISTORY_FILE_NAME, 'rb') as f:
                hist = pickle.load(f)
                searchHistory.lst = hist["search"]
                searchHistory.cursor = len(hist["search"]) - 1
                grepHistory.lst = hist["grep"]
                grepHistory.cursor = len(hist["grep"]) - 1
        except BaseException:
            pass

        d = views.search.Dialog(basePath, list(reversed(searchHistory.getList())), list(reversed(grepHistory.getList())))
        d.Initialize()
        canceled = False
        while(True):
            ret = d.Show()
            if ret == wx.ID_CANCEL:
                task.Cancel()
                canceled = True
                break
            # end キャンセルして抜ける
            val = d.GetValue()
            if val['isRegularExpression']:
                ret = misc.ValidateRegularExpression(val['keyword'])
                if ret != "OK":
                    dialog(_("エラー"), _("正規表現の文法が間違っています。\nエラー内容: %(error)s") % {'error': ret})
                    continue
                # end 正規表現違う
            # end 正規表現モードがオンかどうか
            break
        # end 入力が正しくなるまで
        if canceled:
            return
        actionstr = "search" if val['type'] == 0 else "grep"
        target = {
            'action': actionstr,
            'basePath': basePath,
            'out_lst': out_lst,
            'keyword': val['keyword'],
            'isRegularExpression': val['isRegularExpression']}
        self.parent.Navigate(target, as_new_tab=True)

        if val['type'] == 0:
            searchHistory.add(val['keyword'])
        else:
            grepHistory.add(val['keyword'])
        hist["search"] = searchHistory.getList()
        hist["grep"] = grepHistory.getList()
        try:
            with open(constants.HISTORY_FILE_NAME, 'wb') as f:
                pickle.dump(hist, f)
        except BaseException:
            pass
Ejemplo n.º 3
0
	def StartSearch(self,rootPath,searches,keyword, isRegularExpression):
		self.listObject=lists.SearchResultList()
		self.listObject.Initialize(rootPath,searches,keyword, isRegularExpression)
		self.SetListColumns(self.listObject)
		workerThreads.RegisterTask(workerThreadTasks.PerformSearch,{'listObject': self.listObject, 'tabObject': self})

		#タブの名前変更を通知
		globalVars.app.hMainView.UpdateTabName()
Ejemplo n.º 4
0
 def _getNetworkList(self):
     if self.networkListTask is not None:
         self.networkListTask.Cancel()
         self.networkListTask = None
     # end cancel previous
     self.networkListTask = workerThreads.RegisterTask(
         workerThreadTasks.GetNetworkResources, {
             "isReady": self.isReady,
             "onAppend": self.OnAppendNetworkResource,
             "onFinish": self.OnFinishNetworkResource
         })
Ejemplo n.º 5
0
	def UpdateFilelist(self,silence=False,cursorTargetName=""):
		"""検索をやり直す。ファイルは非同期処理で増えるので、cursorTargetNameは使用されない。"""
		if not self.listObject.GetFinishedStatus():
			globalVars.app.say(_("現在検索中です。再建策はできません。"), interrupt=True)
			return
		#end まだ検索終わってない
		if silence==False:
			globalVars.app.say(_("再建策"), interrupt=True)
		#end not silence
		self.hListCtrl.DeleteAllItems()
		self.listObject.RedoSearch()
		workerThreads.RegisterTask(workerThreadTasks.PerformSearch,{'listObject': self.listObject, 'tabObject': self})
Ejemplo n.º 6
0
 def DirCalc(self):
     lst = []
     for i in self.GetSelectedItems(index_mode=True):
         elem = self.listObject.GetElement(i)
         elem.size = constants.DIR_SIZE_CALCURATING
         self.hListCtrl.RefreshItem(i)
         lst.append((i, elem.fullpath))
     # end for
     param = {'lst': lst, 'callback': self._dirCalc_receive}
     self.background_tasks.append(
         workerThreads.RegisterTask(
             workerThreadTasks.DirCalc, param))
Ejemplo n.º 7
0
 def DirCalc(self):
     lst = []
     for i in self.GetSelectedItems(index_mode=True):
         elem = self.listObject.GetElement(i)
         if elem.__class__.__name__ == "Folder":
             self.hListCtrl.SetItem(index=i, column=1, label=_("<計算中>"))
             lst.append((i, elem.fullpath))
         #end フォルダだったら
     #end for
     param = {'lst': lst, 'callback': self._dirCalc_receive}
     self.background_tasks.append(
         workerThreads.RegisterTask(workerThreadTasks.DirCalc, param))
Ejemplo n.º 8
0
 def Search(self):
     basePath = self.parent.activeTab.listObject.rootDirectory
     out_lst = []  #入力画面が出てるときに、もうファイルリスト取得を開始してしまう
     task = workerThreads.RegisterTask(
         workerThreadTasks.GetRecursiveFileList, {
             'path': basePath,
             'out_lst': out_lst,
             'eol': True
         })
     d = views.search.Dialog(basePath)
     d.Initialize()
     canceled = False
     while (True):
         ret = d.Show()
         if ret == wx.ID_CANCEL:
             task.Cancel()
             canceled = True
             break
         #end キャンセルして抜ける
         val = d.GetValue()
         if val['isRegularExpression']:
             ret = misc.ValidateRegularExpression(val['keyword'])
             if ret != "OK":
                 dialog(
                     _("エラー"),
                     _("正規表現の文法が間違っています。\nエラー内容: %(error)s") %
                     {'error': ret})
                 continue
             #end 正規表現違う
         #end 正規表現モードがオンかどうか
         break
     #end 入力が正しくなるまで
     d.Destroy()
     if canceled: return
     actionstr = "search" if val['type'] == 0 else "grep"
     target = {
         'action': actionstr,
         'basePath': basePath,
         'out_lst': out_lst,
         'keyword': val['keyword'],
         'isRegularExpression': val['isRegularExpression']
     }
     self.parent.Navigate(target, as_new_tab=True)
Ejemplo n.º 9
0
 def FileOperationTest(self):
     if self.task:
         self.task.Cancel()
     else:
         self.task = workerThreads.RegisterTask(workerThreadTasks.DebugBeep)
Ejemplo n.º 10
0
Archivo: main.py Proyecto: yncat/falcon
    def ShowDetail(self, elem):
        d = views.objectDetail.Dialog()
        d.Initialize()
        d.add(_("名前"), elem.basename)
        d.add(_("パス"), elem.fullpath)
        if isinstance(elem, browsableObjects.File) or isinstance(elem, browsableObjects.Stream):
            if elem.size >= 0:
                d.add(_("サイズ"), misc.ConvertBytesTo(elem.size, misc.UNIT_AUTO, True))
                d.add(_("サイズ(バイト)"), elem.size)
                if isinstance(elem, browsableObjects.Folder):
                    d.add(_("内容"), _("ファイル数: %d サブディレクトリ数: %d") % (elem.fileCount, elem.dirCount))
            elif isinstance(elem, browsableObjects.Folder):
                d.add(_("サイズ"), d.CALCURATING)
                d.add(_("サイズ(バイト)"), d.CALCURATING)
                d.add(_("内容"), d.CALCURATING)
                param = {'lst': [(0, elem.fullpath)], 'callback': d.setDirCalcResult}
                d.setTask(workerThreads.RegisterTask(workerThreadTasks.DirCalc, param))
        if isinstance(elem, browsableObjects.File):
            d.add(_("作成日時"), elem.creationDate.strftime("%Y/%m/%d(%a) %H:%M:%S"))
            d.add(_("更新日時"), elem.modDate.strftime("%Y/%m/%d(%a) %H:%M:%S"))
            d.add(_("属性"), elem.longAttributesString)
            d.add(_("種類"), elem.typeString)
            if not elem.shortName == "":
                d.add(_("短い名前"), elem.shortName)
            else:
                d.add(_("短い名前"), _("なし"))

            h = win32file.CreateFile(
                elem.fullpath,
                0,
                win32file.FILE_SHARE_READ | win32file.FILE_SHARE_WRITE,
                None,
                win32file.OPEN_EXISTING,
                win32file.FILE_FLAG_BACKUP_SEMANTICS,  # これがないとディレクトリを開けない
                0)
            info = win32file.GetFileInformationByHandleEx(h, win32file.FileStandardInfo)
            if info:
                d.add(_("消費ディスク領域"),
                      misc.ConvertBytesTo(info["AllocationSize"], misc.UNIT_AUTO, True) + " (" + str(info["AllocationSize"]) + " bytes)")
                tmp = ""
                if info["DeletePending"]:
                    tmp += _("削除予約済 ")
                if info["NumberOfLinks"] > 1:
                    tmp += _("ハードリンクにより他の %d 箇所から参照" % (info["NumberOfLinks"] - 1))
                if tmp == "":
                    tmp = _("なし")
                d.add(_("追加情報"), tmp)

        if isinstance(elem, browsableObjects.Drive):
            if elem.free >= 0:
                d.add(_("フォーマット"), fileSystemManager.GetFileSystemObject(elem.letter))
                if elem.total > 0:
                    d.add(_("空き容量"), "%s (%s%%)" % (misc.ConvertBytesTo(elem.free, misc.UNIT_AUTO, True), elem.free * 100 // elem.total))
                else:
                    d.add(_("空き容量"), misc.ConvertBytesTo(elem.free, misc.UNIT_AUTO, True))
                d.add(_("総容量"), misc.ConvertBytesTo(elem.total, misc.UNIT_AUTO, True))
            else:
                d.add(_("フォーマット"), _("未挿入"))
            d.add(_("種類"), elem.typeString)
        if isinstance(elem, browsableObjects.NetworkResource) and elem.address != "":
            d.add(_("IPアドレス"), elem.address)
        d.Show()
        return