OberonCore https://forum.oberoncore.ru/ |
|
omcSearch - DevSearch, режим поиска по всем текстовым док-м https://forum.oberoncore.ru/viewtopic.php?f=90&t=4615 |
Страница 1 из 1 |
Автор: | Пётр Кушнир [ Пятница, 08 Ноябрь, 2013 22:38 ] |
Заголовок сообщения: | omcSearch - DevSearch, режим поиска по всем текстовым док-м |
В меню ББ есть пункты поиска по всяким местам, однако я заметил, что часто надо найти ключевую фразу в документах из каталога Rsrc или других. Модифицировал стандартный перебор каталогов внутри DevSearch, может кому пригодится. Код: (* выполняет поиск во всех текстовых документах внутри каталога ББ *)
PROCEDURE SearchEverywhere*; VAR pat: Pattern; t, log: TextModels.Model; v: Views.View; title: Views.Title; c: Containers.Controller; files: Files.FileInfo; dirs, subs: Files.LocInfo; loc, sloc: Files.Locator; path, p: Files.Name; list: Text; BEGIN (*TextCmds.InitFindDialog; *) pat := TextCmds.find.find$; IF pat # "" THEN Dialog.ShowStatus(searchingKey); TextCmds.find.find := pat$; log := TextModels.dir.New(); w.ConnectTo(log); w.SetPos(0); list := NIL; loc := Files.dir.This(""); subs:=Files.dir.LocList(loc); WHILE subs#NIL DO path := subs.name$; sloc:=loc.This(subs.name); files := Files.dir.FileList(sloc); WHILE files # NIL DO IF files.type = Kernel.docType THEN p := path + "/" + files.name; t := ThisText(sloc, files.name); IF t # NIL THEN Find(t, pat, p, list, TRUE) END END; files := files.next END; subs:=subs.next END; loc := Files.dir.This(""); dirs := Files.dir.LocList(loc); WHILE dirs # NIL DO loc := Files.dir.This(dirs.name); subs:=Files.dir.LocList(loc); WHILE subs#NIL DO path := dirs.name + "/"+subs.name; sloc:=loc.This(subs.name); files := Files.dir.FileList(sloc); WHILE files # NIL DO IF files.type = Kernel.docType THEN p := path + "/" + files.name; t := ThisText(sloc, files.name); IF t # NIL THEN Find(t, pat, p, list, TRUE) END END; files := files.next END; subs:=subs.next; END; dirs := dirs.next END; List(list, pat, TRUE, TRUE); v := TextViews.dir.New(log); title := 'Search for "' + pat + '"'; v(TextViews.View).SetDefaults(NewRuler(), TextViews.dir.defAttr); Views.OpenAux(v, title); c := v(Containers.View).ThisController(); c.SetOpts(c.opts + {Containers.noCaret}); w.ConnectTo(NIL); Dialog.ShowStatus("") END END SearchEverywhere; |
Автор: | Евгений Темиргалеев [ Пятница, 15 Ноябрь, 2013 15:22 ] |
Заголовок сообщения: | Re: DevSearch, режим поиска по всем текстовым документам |
Карточка в коллекции: http://oberoncore.ru/bbcc/subs/omc/search |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |