Обсуждение программ nnCron и nnCron LITE
by MAN » Tue, 28 Jul 2009, 20:50
Уважаемые Господа програмеры, есть одна мыслишка, скрестить задачи nnCron и меню Total Commander Наверняка есть приверженцы TC. В версии 7.50 появилась поддержка меню выпадающих из кнопок. Вот таких Можно конечно наполнять эти меню и вручную, каждую строчечку, только тяжко. Собственно вопрос ================= Кто сможет помочь со скриптом? Задача скрипта "посмотреть" какие tab файлы подключены в nnCron вытянуть из них ВСЕ задачи и сформировать из этого списка задач файл *.bar в формате TC. Потом этот *.bar легким движением руки можно подключать в TC. Вот к стати bar файл для представленного на картинке меню http://www.ughman.narod.ru/tempo/pict/go2net.bar Обратите внимание, что 2-я и 3-я кнопка в меню запускают задачи nnCron
Last edited by MAN on Wed, 29 Jul 2009, 12:46, edited 2 times in total.
-

MAN
-
- Posts: 145
- Joined: Wed, 17 Jun 2009, 21:34
by Ilya » Tue, 28 Jul 2009, 21:49
MAN wrote:Уважаемые Господа програмеры, есть одна мыслишка, скрестить задачи nnCron и меню Total Commander Наверняка есть приверженцы TC. В версии 7.50 появилась поддержка меню выпадающих из кнопок.
ОФФ Я активно юзаю ТС! Может в личку кинете местечко, где мона взять 7.5 !?  Была в своё время идея заняться "плагиностроением" на ФОРТ-е под Сабж.
-
Ilya
-
- Posts: 445
- Joined: Mon, 07 Aug 2006, 09:51
- Location: Санкт-Петербург
-
by VoidVolker » Tue, 28 Jul 2009, 23:31
Генератор меню для TC: - Code: Select all
\ Файл[File]: tc-menu-generator.spf \ Автор[Author]: VoidVolker \ Дата[Date]: 30/07/2009 10:30 \ Описание[Description]: Генератор пользовательских меню для Total Commander. \ При перечитывании кронтаба создает файл описания меню со списком задач ннкрона. \ Возможно создание меню как выбранной группы задач, так и всех задач ннкрона.
\ Использование - в кронтабе за пределами задачи в секции <% ... %> \ Имеется фильтр на задачи вида CLASSIC-TASK-#-xxx - они также не добавляются в меню, и \ есть возможность вставки разделителя.
\ Создание меню из группы задач: \ <% S" C:\<путь к TC>\nncron-tasks.bar" TC-MENU: <Название меню с любыми символами до конца строки> \ %>
\ < ... Задачи кронтаба для отображения в меню ... >
\ <% TC-MENU-OFF %> \ Временно отключаем создание меню \ Опционально
\ < ... Задачи скомпилированные здесь не будут добавлены в меню ... >
\ <% TC-MENU-ON %> \ Включаем обратно создание меню \ Опционально
\ < ... Задачи кронтаба для отображения в меню ... >
\ <% ;TC-MENU %>
\ А вот так сохраняется меню для всех задач: \ <% S" Задачи ннкрона" S" C:\<путь к TC>\nncron-tasks.bar" SAVE-TC-BUTTONBAR %>
\ Задачи определенные уже после сохранения меню не будут добавлены в него.
MODULE: TOTALCMD-MENU-MODULE : nncron-path S" C:\Program Files\nnCron\nncron.exe" ;
CREATE tn-stack 1024 CELLS ALLOT VARIABLE tn-stack-depth
: >tn-stack \ ( num -- ) tn-stack tn-stack-depth @ CELLS + ! tn-stack-depth 1+! ;
: tn-stack> \ ( -- num ) -1 tn-stack-depth +! tn-stack tn-stack-depth @ CELLS + @ ;
CREATE crontab-menu-name 64 ALLOT CREATE tc-menu-path 256 ALLOT VARIABLE marked-task VARIABLE tasks-cnt 2VARIABLE tc-menu : tc-menu-path-init \ ( -- ) tc-menu-path 256 ERASE ; tc-menu-path-init : tc-menu-init \ ( -- ) S" " tc-menu 2! ; tc-menu-init
: >tcm \ ( a u -- ) tc-menu 2@ 2SWAP S+ tc-menu 2! ;
: "cnt \ ( -- a u ) tasks-cnt @ N>S ; : cnt>tcm \ ( -- ) "cnt >tcm ;
: crlf>tcm \ ( -- ) CRLF >tcm ; : ">tcm \ ( -- ) QUOTE >tcm ; : TCM" [CHAR] " PARSE [COMPILE] SLITERAL POSTPONE >tcm ; IMMEDIATE : not-hidden-task? \ ( a u -- ? ) DROP 15 S" CLASSIC-TASK-#-" COMPARE ; : task>tcm \ ( a u -- ) tasks-cnt 1+! TCM" button" cnt>tcm TCM" =" nncron-path >tcm TCM" ,2" crlf>tcm TCM" cmd" cnt>tcm TCM" =" ">tcm ">tcm nncron-path >tcm ">tcm TCM" -run " 2DUP >tcm ">tcm CRLF >tcm TCM" iconic" cnt>tcm TCM" =0" crlf>tcm TCM" menu" cnt>tcm TCM" =" >tcm crlf>tcm ; : tasks>tcm tn-stack-depth @ 0 DO tn-stack> COUNT task>tcm LOOP ; : for-task \ ( node -- ) CRON-NAME @ DUP COUNT not-hidden-task? IF >tn-stack ELSE DROP THEN ;
: get-tasks \ ( -- a u ) ['] for-task CRON-LIST DoList tasks>tcm tc-menu 2@ ;
: TcmDoList \ ( xt list -- ) @ BEGIN marked-task @ OVER = 0= WHILE \ xt node 2DUP SWAP EXECUTE @ REPEAT 2DROP ; : get-marked-tasks \ ( -- ) ['] for-task CRON-LIST TcmDoList tasks>tcm ; : mark-task \ ( -- ) CRON-LIST @ marked-task ! ; : tcm-header \ ( -- a u ) \ Заголовок меню S" [Buttonbar]" CRLF S+ S" Buttoncount=" S+ "cnt S+ CRLF S+ S" button1=totalcmd.exe,10" S+ CRLF S+ S" cmd1=default.bar" S+ CRLF S+ S" iconic1=0" S+ CRLF S+ S" menu1=" S+ crontab-menu-name COUNT S+ CRLF S+ S" button2=" S+ CRLF S+ S" iconic2=0" S+ CRLF S+ ;
EXPORT
: TC-MENU-OFF \ ( -- ) get-marked-tasks ; : TC-MENU-ON \ ( -- ) mark-task ; : TC-MENU-SEPARATOR \ ( -- ) \ Добавить в меню разделитель get-marked-tasks tasks-cnt 1+! TCM" button" cnt>tcm TCM" =" crlf>tcm TCM" iconic" cnt>tcm TCM" =0" crlf>tcm mark-task ; : TC-MENU: \ ( a-filename u-filename -- ) " имя до конца строки с пробелами" \ ВНИМАНИЕ! Только для применения в кронтабе в секции <% ... %> \ Только для режима интерпретаци! tc-menu-path-init tc-menu-path PLACE tc-menu-init 2 tasks-cnt ! mark-task crontab-menu-name 64 ERASE 0 PARSE crontab-menu-name PLACE ; : ;TC-MENU \ ( -- ) get-marked-tasks tcm-header tc-menu 2@ S+ tc-menu-path COUNT FWRITE ; : SAVE-TC-BUTTONBAR \ ( a-name u-name a-filename u-filename -- ) 2SWAP crontab-menu-name PLACE tc-menu-init 2 tasks-cnt ! get-tasks \ a u tcm-header 2SWAP S+ 2SWAP FWRITE ;
;MODULE
Last edited by VoidVolker on Thu, 30 Jul 2009, 09:32, edited 8 times in total.
-

VoidVolker
- Site Admin
-
- Posts: 2907
- Joined: Tue, 25 Apr 2006, 17:56
by MAN » Wed, 29 Jul 2009, 07:23
Благодарю за молниеносную реакцию! Однако скрипт пока запустить не удалось. В связи с этим есть несколько вопросов в отдельный последний кронтаб - это например zzz.tab ? последний это при сортировке по имени или в списке подкюченных ? создал файл zzz.tab , подключил , после перезагрузки nnCron выдал - синтакс. ошибка в строке 12 1 +TO tasks-cnt изменил на 1 + TO tasks-cnt синтакс. ошибка в строке 27 1 + TO tasks-cnt изменил на 1 + TO tasks-cnt синтакс. ошибка в строке 39 S" C:\Program Files\TC\tctb.bar" SAVE-TC-BUTTONBAR 
-

MAN
-
- Posts: 145
- Joined: Wed, 17 Jun 2009, 21:34
by VoidVolker » Wed, 29 Jul 2009, 08:39
MAN wrote:в отдельный последний кронтаб - это например zzz.tab ? последний это при сортировке по имени или в списке подкюченных ?
Слово SAVE-TC-BUTTONBAR при вызове сохраняет список текущих задач, т.е. все задачи после этого слова не будут добавлены в панель, поэтому его надо вызывать после подключения всех кронтабов и компиляции всех задач. MAN wrote:после перезагрузки nnCron выдал - синтакс. ошибка в строке 12 1 +TO tasks-cnt
Странно, слово +TO должно быть в наличии  . Ладно, используем обычную переменную. Исправлено.
-

VoidVolker
- Site Admin
-
- Posts: 2907
- Joined: Tue, 25 Apr 2006, 17:56
by MAN » Wed, 29 Jul 2009, 09:17
Сори СЭР ... а можно исправленный вариант в студию ? 
-

MAN
-
- Posts: 145
- Joined: Wed, 17 Jun 2009, 21:34
by VoidVolker » Wed, 29 Jul 2009, 10:40
MAN wrote:Сори СЭР ... а можно исправленный вариант в студию ? Давно уже тут.
-

VoidVolker
- Site Admin
-
- Posts: 2907
- Joined: Tue, 25 Apr 2006, 17:56
by MAN » Wed, 29 Jul 2009, 12:31
Впечатляюще! Результат превзошел самые смелые ожидания! Меню динамическое, при внесении новой задачи она автоматом попадает в меню TC.  Вы МОНСТР (в лучшем смысле этого слова), ... ну как минимум ГИГАНТ!
-

MAN
-
- Posts: 145
- Joined: Wed, 17 Jun 2009, 21:34
by VoidVolker » Wed, 29 Jul 2009, 15:37
АП! Тестируем обновленную версию - теперь это полноценный плагин: можно создавать несколько различных меню и создать меню из всех задач. Также имеется фильтр.
-

VoidVolker
- Site Admin
-
- Posts: 2907
- Joined: Tue, 25 Apr 2006, 17:56
by MAN » Wed, 29 Jul 2009, 20:05
Я в ступоре  (уже несколько часов) К какому месту прикладывать 
-

MAN
-
- Posts: 145
- Joined: Wed, 17 Jun 2009, 21:34
by VoidVolker » Wed, 29 Jul 2009, 20:33
MAN wrote:Я в ступоре  (уже несколько часов) К какому месту прикладывать
Что именно прикладывать? Как подключить? Код в файл tc-menu-generator.spf, файл в папку nnCron\plugins и в nncron.ini подключить как и остальные плагины, затем перезапустить ннкрон. Замечания, предложения есть?
-

VoidVolker
- Site Admin
-
- Posts: 2907
- Joined: Tue, 25 Apr 2006, 17:56
by MAN » Wed, 29 Jul 2009, 20:52
а дальше 
-

MAN
-
- Posts: 145
- Joined: Wed, 17 Jun 2009, 21:34
by VoidVolker » Wed, 29 Jul 2009, 20:56
В смысле? Там же в коде все описано.
Last edited by VoidVolker on Wed, 29 Jul 2009, 23:24, edited 1 time in total.
-

VoidVolker
- Site Admin
-
- Posts: 2907
- Joined: Tue, 25 Apr 2006, 17:56
by MAN » Wed, 29 Jul 2009, 21:01
........ууууууууууууф отлегло (расклинило) начинаю пробовать, о результатах доложу
-

MAN
-
- Posts: 145
- Joined: Wed, 17 Jun 2009, 21:34
by VoidVolker » Wed, 29 Jul 2009, 21:03
MAN wrote:........ууууууууууууф отлегло (расклинило)
Ура! 
-

VoidVolker
- Site Admin
-
- Posts: 2907
- Joined: Tue, 25 Apr 2006, 17:56
Return to nnCron forum (Russian)
Who is online
Users browsing this forum: No registered users and 2 guests
|
|