X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=applications%2Fbuild%2Fja-jp%2Ffindinfiles%2FfindinfilesController.ring;fp=applications%2Fbuild%2Fja-jp%2Ffindinfiles%2FfindinfilesController.ring;h=d74c589a6f8a62332245e138be6c9177977e68b9;hb=c261394ba4a07ecae2c8c9dab7b37b6de7bfa6db;hp=0000000000000000000000000000000000000000;hpb=6e38943e5a70728b29bc63d57ef3fe96e4565653;p=ring-lang-081%2Fring.git diff --git a/applications/build/ja-jp/findinfiles/findinfilesController.ring b/applications/build/ja-jp/findinfiles/findinfilesController.ring new file mode 100644 index 0000000..d74c589 --- /dev/null +++ b/applications/build/ja-jp/findinfiles/findinfilesController.ring @@ -0,0 +1,193 @@ +# Application : Find in files +# Author : Mahmoud Fayed +# Date : 2018.03.06 + +load "findinfilesView.ring" +import System.GUI +if isMainSourceFile() { + new App + { + StyleFusion() + open_window(:findinfilesController) + exec() + } +} + +class findinfilesController from WindowsControllerParent + + oView = new findinfilesView + + cCurrentDir = currentdir() + setFolder(cCurrentDir) + + aResult = [] + nFilesCount = 0 + nMatches = 0 + + aResultFiles = [] + + lShowNoOutputMessage = True + + oSearchFilter = new qallevents(oView.win) + oSearchFilter.setKeyPressEvent(Method(:SearchKeyPress)) + oView.win.installeventfilter(oSearchFilter) + + + + func setFolder cFolder + oView.txtFolder.setText(cFolder) + + func search + Qt_ItemIsSelectable = 1 + Qt_ItemIsEnabled = 32 + aResult = [] + aResultFiles = [] + oView { + cText = txtFind.text() + cFolder = trim(txtFolder.text()) + cExtension = trim(txtExtension.text()) + if trim(cText) = NULL or trim(cFolder) = NULL or trim(cExtension) = NULL { + return + } + try { + cDir = currentdir() + chdir(this.cCurrentDir) + aFiles = ListAllFiles(cFolder,cExtension) + chdir(cDir) + Catch + msginfo("もうしわけございません", "フォルダを開くことができません!") + return + } + nRow = 0 + this.StartOutput() + Statusbar1.ShowMessage(cText + " を検索しています... " + + len(aFiles) + " 件のファイルと一致" ,0) + this.nFilesCount = 0 + this.nMatches = 0 + for cFile in aFiles step 1 { + cFileText = read(cFile) + aList = str2list(cFileText) + nMax = len(aList) + lFound = False + for x = 1 to nMax step 1 { + cLine = aList[x] + if checkMatchCase.checkstate() { + nPos = substr(cLine,cText) + else + nPos = substr(upper(cLine),upper(cText)) + } + cLine = substr(cLine,Tab,"") + cLine = trim(cLine) + if nPos { + this.nMatches++ + if lFound = False { + lFound = True + this.nFilesCount++ + } + nRow++ + TableOutput.setRowCount(nRow) + oItem = new TableWidgetItem(cFile) + oItem.setFlags(Qt_ItemIsSelectable|Qt_ItemIsEnabled) + TableOutput.setItem(nRow,1,oItem) + oItem = new TableWidgetItem(""+x) + oItem.setFlags(Qt_ItemIsSelectable|Qt_ItemIsEnabled) + TableOutput.setItem(nRow,2,oItem) + oItem = new TableWidgetItem(cLine) + oItem.setFlags(Qt_ItemIsSelectable|Qt_ItemIsEnabled) + TableOutput.setItem(nRow,3,oItem) + this.aResult + [cFile,x] + if not find(this.aResultFiles,cFile) { + this.aResultFiles + cFile + } + } + } + } + if nRow = 0 { + if this.lShowNoOutputMessage { + Statusbar1.ShowMessage("完了...",0) + msginfo("もうしわけございません", "一致しません!") + } + return + } + Statusbar1.ShowMessage("" + + this.nFilesCount + " ファイル " + + this.nMatches + " 件と一致しました..." ,0) + } + + func StartOutput + + oView { + TableOutput.setRowCount(0) + TableOutput.hide() + TableOutput.show() + } + + func browse + + new QFileDialog(oView.win) + { + cFolder = getExistingDirectory(this.oView.win,"ディレクトリを開く","Folder",0) + } + oView.txtFolder.setText(cFolder) + + func close + + oView.win.close() + + func SelectResult + + nIndex = oView.TableOutput.currentrow() + cFile = aResult[nIndex][1] + nRow = aResult[nIndex][2] + if isParent() { + parent().FindInFilesSelect(cFile,nRow) + } + + func Replace + nIndex = oView.TableOutput.currentrow() + cFile = aResult[nIndex][1] + nRow = aResult[nIndex][2] + cText = oView.txtFind.text() + cReplace = oView.txtReplace.text() + lCase = oView.checkMatchCase.checkstate() + cContent = read(cFile) + aContentList = str2list(cContent) + if lCase { + aContentList[nRow] = substr(aContentList[nRow],cText,cReplace) + else + aContentList[nRow] = substr(aContentList[nRow],cText,cReplace,True) + } + cContent = list2str(aContentList) + if isWindows() { + cContent = substr(cContent,nl,Windowsnl()) + } + write(cFile,cContent) + lShowNoOutputMessage = False + search() + lShowNoOutputMessage = True + oView.Statusbar1.ShowMessage(cFile + "ファイルの置換処理を完了しました",0) + + func ReplaceAll + cText = oView.txtFind.text() + cReplace = oView.txtReplace.text() + lCase = oView.checkMatchCase.checkstate() + for cFile in aResultFiles { + cContent = read(cFile) + if lCase { + cContent = substr(cContent,cText,cReplace) + else + cContent = substr(cContent,cText,cReplace,True) + } + write(cFile,cContent) + } + # Calling search() will modify aResultFiles + cMsg = len(aResultFiles) + "ファイルの置換処理を全て完了しました" + lShowNoOutputMessage = False + search() + lShowNoOutputMessage = True + oView.Statusbar1.ShowMessage(cMsg,0) + + func SearchKeyPress + if oSearchFilter.getKeyCode() = Qt_Key_Escape + Close() + ok