Задачи nnCron + меню Total Commander

Обсуждение программ nnCron и nnCron LITE

Задачи nnCron + меню Total Commander

Postby MAN » Tue, 28 Jul 2009, 20:50

Уважаемые Господа програмеры, есть одна мыслишка, скрестить задачи nnCron и меню Total Commander
Наверняка есть приверженцы TC. В версии 7.50 появилась поддержка меню выпадающих из кнопок.
Вот таких
Image
Можно конечно наполнять эти меню и вручную, каждую строчечку, только тяжко.

Собственно вопрос
=================
Кто сможет помочь со скриптом?
Задача скрипта "посмотреть" какие 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.
User avatar
MAN
 
Posts: 145
Joined: Wed, 17 Jun 2009, 21:34

Re: Задачи nnCron + меню Total Commander

Postby Ilya » Tue, 28 Jul 2009, 21:49

MAN wrote:Уважаемые Господа програмеры, есть одна мыслишка, скрестить задачи nnCron и меню Total Commander
Наверняка есть приверженцы TC. В версии 7.50 появилась поддержка меню выпадающих из кнопок.

ОФФ Я активно юзаю ТС! Может в личку кинете местечко, где мона взять 7.5 !? ;)


Была в своё время идея заняться "плагиностроением" на ФОРТ-е под Сабж.
Ilya
 
Posts: 443
Joined: Mon, 07 Aug 2006, 09:51
Location: Санкт-Петербург

Re: Задачи nnCron + меню Total Commander

Postby 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.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Задачи nnCron + меню Total Commander

Postby 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

:?:
User avatar
MAN
 
Posts: 145
Joined: Wed, 17 Jun 2009, 21:34

Re: Задачи nnCron + меню Total Commander

Postby VoidVolker » Wed, 29 Jul 2009, 08:39

MAN wrote:в отдельный последний кронтаб - это например zzz.tab ?
последний это при сортировке по имени или в списке подкюченных ?

Слово SAVE-TC-BUTTONBAR при вызове сохраняет список текущих задач, т.е. все задачи после этого слова не будут добавлены в панель, поэтому его надо вызывать после подключения всех кронтабов и компиляции всех задач.
MAN wrote:после перезагрузки nnCron выдал - синтакс. ошибка в строке 12
1 +TO tasks-cnt

Странно, слово +TO должно быть в наличии :shock: . Ладно, используем обычную переменную. Исправлено.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Задачи nnCron + меню Total Commander

Postby MAN » Wed, 29 Jul 2009, 09:17

Сори СЭР
... а можно исправленный вариант в студию ?
:prayer:
User avatar
MAN
 
Posts: 145
Joined: Wed, 17 Jun 2009, 21:34

Re: Задачи nnCron + меню Total Commander

Postby VoidVolker » Wed, 29 Jul 2009, 10:40

MAN wrote:Сори СЭР
... а можно исправленный вариант в студию ?

Давно уже тут.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Задачи nnCron + меню Total Commander

Postby MAN » Wed, 29 Jul 2009, 12:31

Впечатляюще! :supz:
Результат превзошел самые смелые ожидания!
Меню динамическое, при внесении новой задачи она автоматом попадает в меню TC.

Image

Вы МОНСТР (в лучшем смысле этого слова), ... ну как минимум ГИГАНТ!
User avatar
MAN
 
Posts: 145
Joined: Wed, 17 Jun 2009, 21:34

Re: Задачи nnCron + меню Total Commander

Postby VoidVolker » Wed, 29 Jul 2009, 15:37

АП! Тестируем обновленную версию - теперь это полноценный плагин: можно создавать несколько различных меню и создать меню из всех задач. Также имеется фильтр.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Задачи nnCron + меню Total Commander

Postby MAN » Wed, 29 Jul 2009, 20:05

Я в ступоре :( (уже несколько часов)
К какому месту прикладывать :?:
User avatar
MAN
 
Posts: 145
Joined: Wed, 17 Jun 2009, 21:34

Re: Задачи nnCron + меню Total Commander

Postby VoidVolker » Wed, 29 Jul 2009, 20:33

MAN wrote:Я в ступоре :( (уже несколько часов)
К какому месту прикладывать

Что именно прикладывать? Как подключить? Код в файл tc-menu-generator.spf, файл в папку nnCron\plugins и в nncron.ini подключить как и остальные плагины, затем перезапустить ннкрон.
Замечания, предложения есть?
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Задачи nnCron + меню Total Commander

Postby MAN » Wed, 29 Jul 2009, 20:52

а дальше :oops:
User avatar
MAN
 
Posts: 145
Joined: Wed, 17 Jun 2009, 21:34

Re: Задачи nnCron + меню Total Commander

Postby VoidVolker » Wed, 29 Jul 2009, 20:56

В смысле? Там же в коде все описано.
Last edited by VoidVolker on Wed, 29 Jul 2009, 23:24, edited 1 time in total.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Задачи nnCron + меню Total Commander

Postby MAN » Wed, 29 Jul 2009, 21:01

........ууууууууууууф отлегло (расклинило) :D
начинаю пробовать, о результатах доложу
User avatar
MAN
 
Posts: 145
Joined: Wed, 17 Jun 2009, 21:34

Re: Задачи nnCron + меню Total Commander

Postby VoidVolker » Wed, 29 Jul 2009, 21:03

MAN wrote:........ууууууууууууф отлегло (расклинило)

Ура! :D
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Next

Return to nnCron forum (Russian)

Who is online

Users browsing this forum: Bing [Bot] and 2 guests

cron