DialogTools — дополнительные возможности в диалогах

Здесь можно обсудить ваш любимый плагин.
Victorian
Posts: 80
Joined: Sun 11 Oct, 2009 05:55
Has thanked: 1 time

DialogTools — дополнительные возможности в диалогах

Post by Victorian » Wed 25 Nov, 2015 17:44

Latest post of the previous page:

Появилось предложение в плагине реализовать кодирование и декодирование многострочного описания к файлу, записываемого в Descript.ion
viewtopic.php?f=7&t=285&p=133862#p133862
Есть какие-либо трудности в реализации данной идеи?

Smitis
Posts: 1455
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 13 times
Been thanked: 23 times
Contact:

DialogTools — дополнительные возможности в диалогах

Post by Smitis » Wed 25 Nov, 2015 19:41

Лучше что-нибудь типа editor.Editor с возможностью вместо файла передать любой текст и с возвратом отредактированного текста.
Впрочем, через временный файл такое можно и сейчас реализовать.
Разум когда-нибудь победит.

User avatar
HaRT
Moderator
Posts: 8048
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 100 times

DialogTools — дополнительные возможности в диалогах

Post by HaRT » Wed 25 Nov, 2015 19:55

Smitis wrote: через временный файл такое можно и сейчас реализовать
Вы о чём? “DialogTools: Edit” уже как раз и работает через временный файл и позволяет редактировать содержимое поля ввода в полноценном редакторе.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
zg
zero-gravity
Posts: 5246
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 42 times
Contact:

DialogTools — дополнительные возможности в диалогах

Post by zg » Wed 25 Nov, 2015 20:44

HaRT wrote:Вы о чём? “DialogTools: Edit” уже как раз и работает через временный файл и позволяет редактировать содержимое поля ввода в полноценном редакторе.
функциональность «DialogTools: Edit» сейчас очень легко реализуется макросом, к которому так же легко прикрутить любое поведение при склейке/разбивке строк.

Smitis
Posts: 1455
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 13 times
Been thanked: 23 times
Contact:

DialogTools — дополнительные возможности в диалогах

Post by Smitis » Wed 25 Nov, 2015 21:09

HaRT wrote:“DialogTools: Edit” уже как раз и работает через временный файл и позволяет редактировать содержимое поля ввода в полноценном редакторе.
Я думал напрямую как-нибудь вызывает, без файла. А так и смысла нет делать. Если время будет, завтра свои макросы попробую доработать.
Разум когда-нибудь победит.

User avatar
zg
zero-gravity
Posts: 5246
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 42 times
Contact:

DialogTools — дополнительные возможности в диалогах

Post by zg » Wed 25 Nov, 2015 21:14

Smitis wrote:Я думал напрямую как-нибудь вызывает, без файла.
в качестве файла указать \\.\nul, по ee_read добавить строки и сохранить, по ee_save копировать содержимое себе.
Last edited by zg on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Добавлены ссылка на объяснение „странного“ пути

Smitis
Posts: 1455
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 13 times
Been thanked: 23 times
Contact:

DialogTools — дополнительные возможности в диалогах

Post by Smitis » Thu 26 Nov, 2015 13:37

На \\.\nul редактор при выходе ругается, что файл удалён, сделал пока через обычный временный файл
Разум когда-нибудь победит.

User avatar
HaRT
Moderator
Posts: 8048
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 100 times

DialogTools — дополнительные возможности в диалогах

Post by HaRT » Tue 01 Mar, 2016 19:09

HaRT wrote: работающие макросы для Undo/Redo/Edit/Show password в поле ввода текста
Добавлены макросы для вызова Поиска ([b]F7[/b]) и Замены ([b]CtrlF7[/b]). Вот полный новый комплект:
  1. -- See http:// forum.farmanager.com/viewtopic.php?p=136132#p136132
  2. local DLGITEMTYPE_EDIT, DLGITEMTYPE_PSWEDIT, DLGITEMTYPE_FIXEDIT = 4, 5, 6
  3.  
  4. local DialogTools_MainGuid = "B2EC2264-0F55-4B86-87F7-F1392B8FC5DC"
  5. local DialogTools_SrchGuid = "40E53FB1-6291-45a1-9DDF-B4A2048CA6BA"
  6. local DialogTools_RplcGuid = "F4C58B97-BA69-4814-9FC9-DAB9307C0E88"
  7. local DialogTools_UndoGuid = "1117C0E3-76BA-443D-90E3-89D20C45F364"
  8. local DialogTools_EditGuid = "D0C5118D-E750-4E00-A4D4-0E0E0063571F"
  9. local DialogTools_PwShGuid = "C8D4D4A4-943B-436F-8414-D36CBAF37C53"
  10.  
  11. local function inEditField()
  12.   return Dlg.ItemType == DLGITEMTYPE_EDIT or Dlg.ItemType == DLGITEMTYPE_FIXEDIT
  13. end
  14.  
  15. local function callUndoRedo( stepKey )
  16.   Plugin.Menu( DialogTools_MainGuid, DialogTools_UndoGuid )
  17.   Keys( stepKey .. ' ' .. 'Enter' )
  18. end
  19.  
  20. Macro {
  21.   description = "DialogTools: Search";
  22.   area = "Dialog"; key = "F7";
  23.   condition = inEditField;
  24.   action = function() Plugin.Menu( DialogTools_MainGuid, DialogTools_SrchGuid ) end
  25. }
  26.  
  27. Macro {
  28.   description = "DialogTools: Replace";
  29.   area = "Dialog"; key = "CtrlF7";
  30.   condition = inEditField;
  31.   action = function() Plugin.Menu( DialogTools_MainGuid, DialogTools_RplcGuid ) end
  32. }
  33.  
  34. Macro {
  35.   description = "DialogTools: Undo";
  36.   area = "Dialog"; key = "CtrlZ AltBS";
  37.   condition = inEditField;
  38.   action = function() callUndoRedo( '' ) end
  39. }
  40.  
  41. Macro {
  42.   description = "DialogTools: Redo";
  43.   area = "Dialog"; key = "CtrlShiftZ AltShiftBS";
  44.   condition = inEditField;
  45.   action = function() callUndoRedo( 'Up' ) end
  46. }
  47.  
  48. Macro {
  49.   description = "DialogTools: Edit";
  50.   area = "Dialog"; key = "F4";
  51.   condition = inEditField;
  52.   action = function() Plugin.Menu( DialogTools_MainGuid, DialogTools_EditGuid ) end
  53. }
  54.  
  55. Macro {
  56.   description = "DialogTools: Show password";
  57.   area = "Dialog"; key = "F3";
  58.   condition = function() return Dlg.ItemType == DLGITEMTYPE_PSWEDIT end;
  59.   action = function() Plugin.Menu( DialogTools_MainGuid, DialogTools_PwShGuid ) end
  60. }
Не добавить ли эти скриптики в комплект поставки плагина, чтобы людям их не выискивать?
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
zg
zero-gravity
Posts: 5246
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 42 times
Contact:

DialogTools — дополнительные возможности в диалогах

Post by zg » Tue 01 Mar, 2016 19:40

в репозитарий закоммитил.

User avatar
HaRT
Moderator
Posts: 8048
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 100 times

DialogTools — дополнительные возможности в диалогах

Post by HaRT » Mon 18 Apr, 2016 17:03

Обнаружилось, что Paste Selection ошибается, если выделение содержит ‘"’ или ‘\’: (), вставляет не то (в умеренном случае), делает чёрт-те что (в плохом) — из-за того, что , безо всякого экранирования. “Code injection? Нет, не слышал.”
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
HaRT
Moderator
Posts: 8048
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 100 times

DialogTools — дополнительные возможности в диалогах

Post by HaRT » Tue 19 Apr, 2016 16:31

HaRT wrote: выделенный текст подставляется в макрос как есть, безо всякого экранирования
Патч:
  1. diff --git a/DialogTools/src/pasteselection.cpp b/DialogTools/src/pasteselection.cpp
  2. index 61a6e5e..68ceacd 100644
  3. --- a/DialogTools/src/pasteselection.cpp
  4. +++ b/DialogTools/src/pasteselection.cpp
  5. @@ -18,7 +18,7 @@
  6.  */
  7.  
  8.  #include "dt.hpp"
  9. -#include "guid.hpp"
  10. +
  11.  #include <stdio.h>
  12.  
  13.  inline TCHAR hex(TCHAR c)
  14. @@ -27,7 +27,7 @@ inline TCHAR hex(TCHAR c)
  15.    return ('A'+c-10);
  16.  }
  17.  
  18. -#define MACRO_LEN 1
  19. +#define MACRO_LEN 2  // in the worst case we need to escape each text character
  20.  
  21.  void DoPaste(HANDLE aDlg)
  22.  {
  23. @@ -58,9 +58,15 @@ void DoPaste(HANDLE aDlg)
  24.                TCHAR *buffer=(TCHAR *)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,(len*MACRO_LEN+8+1)*sizeof(TCHAR));
  25.                if (buffer)
  26.                {
  27. -                _tcscpy(buffer,_T("print(\""));
  28. -                _tcscpy(buffer+7,text);
  29. -                _tcscpy(buffer+len*MACRO_LEN+7,_T("\")"));
  30. +                _tcscpy(buffer,_T("print(\""));  // length is 7
  31. +                TCHAR * src = text, * dst = buffer + 7;
  32. +                while(*src)
  33. +                {
  34. +                   if( *src == _T('\\') || *src == _T('"') )
  35. +                      *dst++ = _T('\\');
  36. +                   *dst++ = *src++;
  37. +                }
  38. +                _tcscpy(dst,_T("\")"));
  39.                  MacroSendMacroText seq={sizeof(MacroSendMacroText),KMFLAGS_NONE,{0},buffer};
  40.                  Info.MacroControl(0,MCTL_SENDSTRING,MSSC_POST,&seq);
  41.                  HeapFree(GetProcessHeap(),0,buffer);
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
HaRT
Moderator
Posts: 8048
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 100 times

DialogTools — дополнительные возможности в диалогах

Post by HaRT » Wed 20 Apr, 2016 21:21

zg wrote: закоммитил
Прошу туда ещё и патч применить…
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
HaRT
Moderator
Posts: 8048
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 100 times

DialogTools — дополнительные возможности в диалогах

Post by HaRT » Mon 25 Apr, 2016 20:55

t-rex, как я ещё могу посодействовать исправлению ошибки?
HaRT wrote:
zg wrote: закоммитил
Прошу туда ещё и патч применить…
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
zg
zero-gravity
Posts: 5246
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 42 times
Contact:

DialogTools — дополнительные возможности в диалогах

Post by zg » Mon 25 Apr, 2016 22:09

я применю патч, не надо нервничать.

Taciturn
Posts: 339
Joined: Thu 26 May, 2005 17:14
Location: Санкт-Петербург
Has thanked: 2 times
Been thanked: 3 times
Contact:

DialogTools — дополнительные возможности в диалогах

Post by Taciturn » Fri 28 Apr, 2017 09:27

Долгое время использовал Far 2 и DialogTools.111123.7z. При использовании команд «Поиск» и «Поиск и замена подстроки» в соответствующих диалогах работала история. Перешёл на Far 3.0.4900 и DialogTools 1.0.3.0 — истории в этих диалогах больше нет. Так и задумано? Если нет, то добавьте, пожалуйста, историю.

User avatar
zg
zero-gravity
Posts: 5246
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 42 times
Contact:

DialogTools — дополнительные возможности в диалогах

Post by zg » Fri 28 Apr, 2017 11:15

1.0.4.

Taciturn
Posts: 339
Joined: Thu 26 May, 2005 17:14
Location: Санкт-Петербург
Has thanked: 2 times
Been thanked: 3 times
Contact:

DialogTools — дополнительные возможности в диалогах

Post by Taciturn » Fri 28 Apr, 2017 11:28

Спасибо большое!

Post Reply

Return to “Обсуждение плагинов”