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

Здесь можно обсудить ваш любимый плагин.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

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

Post by Smitis »

Latest post of the previous page:

На \\.\nul редактор при выходе ругается, что файл удалён, сделал пока через обычный временный файл
Разум когда-нибудь победит.
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

HaRT wrote: работающие макросы для Undo/Redo/Edit/Show password в поле ввода текста
Добавлены макросы для вызова Поиска (F7) и Замены (CtrlF7). Вот полный новый комплект:
  1. -- See http:// forum.farmanager.com/viewtopic.php?p=136132#p136132
  2.  
  3. local DLGITEMTYPE_EDIT, DLGITEMTYPE_PSWEDIT, DLGITEMTYPE_FIXEDIT = 4, 5, 6
  4.  
  5.  
  6.  
  7. local DialogTools_MainGuid = "B2EC2264-0F55-4B86-87F7-F1392B8FC5DC"
  8.  
  9. local DialogTools_SrchGuid = "40E53FB1-6291-45a1-9DDF-B4A2048CA6BA"
  10.  
  11. local DialogTools_RplcGuid = "F4C58B97-BA69-4814-9FC9-DAB9307C0E88"
  12.  
  13. local DialogTools_UndoGuid = "1117C0E3-76BA-443D-90E3-89D20C45F364"
  14.  
  15. local DialogTools_EditGuid = "D0C5118D-E750-4E00-A4D4-0E0E0063571F"
  16.  
  17. local DialogTools_PwShGuid = "C8D4D4A4-943B-436F-8414-D36CBAF37C53"
  18.  
  19.  
  20.  
  21. local function inEditField()
  22.  
  23.   return Dlg.ItemType == DLGITEMTYPE_EDIT or Dlg.ItemType == DLGITEMTYPE_FIXEDIT
  24.  
  25. end
  26.  
  27.  
  28.  
  29. local function callUndoRedo( stepKey )
  30.  
  31.   Plugin.Menu( DialogTools_MainGuid, DialogTools_UndoGuid )
  32.  
  33.   Keys( stepKey .. ' ' .. 'Enter' )
  34.  
  35. end
  36.  
  37.  
  38.  
  39. Macro {
  40.  
  41.   description = "DialogTools: Search";
  42.  
  43.   area = "Dialog"; key = "F7";
  44.  
  45.   condition = inEditField;
  46.  
  47.   action = function() Plugin.Menu( DialogTools_MainGuid, DialogTools_SrchGuid ) end
  48.  
  49. }
  50.  
  51.  
  52.  
  53. Macro {
  54.  
  55.   description = "DialogTools: Replace";
  56.  
  57.   area = "Dialog"; key = "CtrlF7";
  58.  
  59.   condition = inEditField;
  60.  
  61.   action = function() Plugin.Menu( DialogTools_MainGuid, DialogTools_RplcGuid ) end
  62.  
  63. }
  64.  
  65.  
  66.  
  67. Macro {
  68.  
  69.   description = "DialogTools: Undo";
  70.  
  71.   area = "Dialog"; key = "CtrlZ AltBS";
  72.  
  73.   condition = inEditField;
  74.  
  75.   action = function() callUndoRedo( '' ) end
  76.  
  77. }
  78.  
  79.  
  80.  
  81. Macro {
  82.  
  83.   description = "DialogTools: Redo";
  84.  
  85.   area = "Dialog"; key = "CtrlShiftZ AltShiftBS";
  86.  
  87.   condition = inEditField;
  88.  
  89.   action = function() callUndoRedo( 'Up' ) end
  90.  
  91. }
  92.  
  93.  
  94.  
  95. Macro {
  96.  
  97.   description = "DialogTools: Edit";
  98.  
  99.   area = "Dialog"; key = "F4";
  100.  
  101.   condition = inEditField;
  102.  
  103.   action = function() Plugin.Menu( DialogTools_MainGuid, DialogTools_EditGuid ) end
  104.  
  105. }
  106.  
  107.  
  108.  
  109. Macro {
  110.  
  111.   description = "DialogTools: Show password";
  112.  
  113.   area = "Dialog"; key = "F3";
  114.  
  115.   condition = function() return Dlg.ItemType == DLGITEMTYPE_PSWEDIT end;
  116.  
  117.   action = function() Plugin.Menu( DialogTools_MainGuid, DialogTools_PwShGuid ) end
  118.  
  119. }
Не добавить ли эти скриптики в комплект поставки плагина, чтобы людям их не выискивать?
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

в репозитарий закоммитил.
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

Обнаружилось, что Paste Selection ошибается, если выделение содержит ‘"’ или ‘\’: (), вставляет не то (в умеренном случае), делает чёрт-те что (в плохом) — из-за того, что , безо всякого экранирования. “Code injection? Нет, не слышал.”
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

HaRT wrote: выделенный текст подставляется в макрос как есть, безо всякого экранирования
Патч:
  1. diff --git a/DialogTools/src/pasteselection.cpp b/DialogTools/src/pasteselection.cpp
  2.  
  3. index 61a6e5e..68ceacd 100644
  4.  
  5. --- a/DialogTools/src/pasteselection.cpp
  6.  
  7. +++ b/DialogTools/src/pasteselection.cpp
  8.  
  9. @@ -18,7 +18,7 @@
  10.  
  11.  */
  12.  
  13.  
  14.  
  15.  #include "dt.hpp"
  16.  
  17. -#include "guid.hpp"
  18.  
  19. +
  20.  
  21.  #include <stdio.h>
  22.  
  23.  
  24.  
  25.  inline TCHAR hex(TCHAR c)
  26.  
  27. @@ -27,7 +27,7 @@ inline TCHAR hex(TCHAR c)
  28.  
  29.    return ('A'+c-10);
  30.  
  31.  }
  32.  
  33.  
  34.  
  35. -#define MACRO_LEN 1
  36.  
  37. +#define MACRO_LEN 2  // in the worst case we need to escape each text character
  38.  
  39.  
  40.  
  41.  void DoPaste(HANDLE aDlg)
  42.  
  43.  {
  44.  
  45. @@ -58,9 +58,15 @@ void DoPaste(HANDLE aDlg)
  46.  
  47.                TCHAR *buffer=(TCHAR *)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,(len*MACRO_LEN+8+1)*sizeof(TCHAR));
  48.  
  49.                if (buffer)
  50.  
  51.                {
  52.  
  53. -                _tcscpy(buffer,_T("print(\""));
  54.  
  55. -                _tcscpy(buffer+7,text);
  56.  
  57. -                _tcscpy(buffer+len*MACRO_LEN+7,_T("\")"));
  58.  
  59. +                _tcscpy(buffer,_T("print(\""));  // length is 7
  60.  
  61. +                TCHAR * src = text, * dst = buffer + 7;
  62.  
  63. +                while(*src)
  64.  
  65. +                {
  66.  
  67. +                   if( *src == _T('\\') || *src == _T('"') )
  68.  
  69. +                      *dst++ = _T('\\');
  70.  
  71. +                   *dst++ = *src++;
  72.  
  73. +                }
  74.  
  75. +                _tcscpy(dst,_T("\")"));
  76.  
  77.                  MacroSendMacroText seq={sizeof(MacroSendMacroText),KMFLAGS_NONE,{0},buffer};
  78.  
  79.                  Info.MacroControl(0,MCTL_SENDSTRING,MSSC_POST,&seq);
  80.  
  81.                  HeapFree(GetProcessHeap(),0,buffer);
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

zg wrote: закоммитил
Прошу туда ещё и патч применить…
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

t-rex, как я ещё могу посодействовать исправлению ошибки?
HaRT wrote:
zg wrote: закоммитил
Прошу туда ещё и патч применить…
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

я применю патч, не надо нервничать.
User avatar
Taciturn
Posts: 600
Joined: Thu 26 May, 2005 17:14
Location: Санкт-Петербург
Has thanked: 89 times
Been thanked: 31 times
Contact:

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

Post by Taciturn »

Долгое время использовал Far 2 и DialogTools.111123.7z. При использовании команд «Поиск» и «Поиск и замена подстроки» в соответствующих диалогах работала история. Перешёл на Far 3.0.4900 и DialogTools 1.0.3.0 — истории в этих диалогах больше нет. Так и задумано? Если нет, то добавьте, пожалуйста, историю.
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

1.0.4.
User avatar
Taciturn
Posts: 600
Joined: Thu 26 May, 2005 17:14
Location: Санкт-Петербург
Has thanked: 89 times
Been thanked: 31 times
Contact:

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

Post by Taciturn »

Спасибо большое!
Hedin
Posts: 210
Joined: Thu 17 Mar, 2005 10:29
Has thanked: 4 times

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

Post by Hedin »

В FAR3 5263-64 (возможно раньше) перестал работать вызов диалога выбора файла. Версия плагина 1.0.4.
При выборе этого пункта из меню FAR зависает, его кнопка в таскбаре Win7 становится красной, а через некоторое время появляется сообщение Windows: "Прекращена работа программы "File and archive manager"..." с кнопкой "Закрыть программу".
Больше никаких сообщений не показывается.
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

1.0.5.
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

zg wrote: Wed 05 Sep, 2018 10:371.0.5
Планируете загрузить бинари на плагринг?
Фар есть инструмент, а не нянька. © 2009 DrKnS
skipik
Posts: 318
Joined: Wed 03 Jun, 2015 15:24
Has thanked: 67 times
Been thanked: 29 times

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

Post by skipik »

Собрал обе разрядности, вдруг кому потребуется: https://www.upload.ee/files/8910593/bin_1.7z.html
В качестве бонуса положил ecompl, который тоже недавно обновлялся.
skv
Posts: 1
Joined: Fri 06 Sep, 2019 00:03
Has thanked: 1 time

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

Post by skv »

Где взять собранную последнюю версию DialogTools?
Post Reply

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