Page 1 of 12

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

Posted: Tue 23 Dec, 2008 04:42
by zg
часть того, что было dialogmanager'ом портировано под новое апи и уникод. называется DialogTools. лежит у t-rex'а в svn. включает в себя:

Code: Select all

Change Case
Open File Dialog
Paste Selection
Show Password
Search
Replace
Undo
остальное как-нибудь тоже планируется.

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

Posted: Wed 16 Sep, 2009 10:16
by HaRT
В этой теме теперь обсуждается плагин DialogTools.
Но начиналось всё с темы в разделе «Плагины: Предложения и идеи».


Вступление: есть у меня идейка, но совершенно нет энтузиазма её воплощать. Для частного случая она была независимо придумана и реализована Cavalerом в недавней версии его плагина RESearch, но общий случай он тоже делать не рвётся.

Мотивация: зачастую поля ввода в Фаровских диалогах куда меньше, чем текст, который надо в них ввести. Про удобство редактирования, всякие там переходы-раскраски-навороты я уж и не говорю. Хочется иметь в полях ввода стандартных диалогов (почти) всю мощь редактора.

Идея: написать плагин, который бы, будучи вызван из поля ввода через меню плагинов, брал текущее содержимое, позицию курсора, выделение, режим вставки/замены (и проч.) и открывал (модальный) редактор со всем этим. При закрытии редактора все те же самые данные плагин переносил бы обратно в поле ввода.

Обсуждение: разумеется, встают некоторые закономерные вопросы, как-то: что делать с разделителями строк, какого размера должен быть редактор и т.п. Но какие-то из них для начального этапа неважны, а другие могут быть урегулированы опциями.

Заключение: если кому-то это интересно, я готов обсуждать детали логики.

2015-07-09
HaRT wrote: Если кому интересно, вот работающие макросы для Undo/Redo/Edit/Show password в поле ввода текста:
  1. -- See http:// forum.farmanager.com/viewtopic.php?p=130985#p130985
  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_UndoGuid = "1117C0E3-76BA-443D-90E3-89D20C45F364"
  10.  
  11. local DialogTools_EditGuid = "D0C5118D-E750-4E00-A4D4-0E0E0063571F"
  12.  
  13. local DialogTools_PwShGuid = "C8D4D4A4-943B-436F-8414-D36CBAF37C53"
  14.  
  15.  
  16.  
  17. local function inEditField()
  18.  
  19.   return Dlg.ItemType == DLGITEMTYPE_EDIT or Dlg.ItemType == DLGITEMTYPE_FIXEDIT
  20.  
  21. end
  22.  
  23.  
  24.  
  25. local function callUndoRedo( stepKey )
  26.  
  27.   Plugin.Menu( DialogTools_MainGuid, DialogTools_UndoGuid )
  28.  
  29.   Keys( stepKey .. ' ' .. 'Enter' )
  30.  
  31. end
  32.  
  33.  
  34.  
  35. Macro {
  36.  
  37.   description = "DialogTools: Undo";
  38.  
  39.   area = "Dialog"; key = "CtrlZ AltBS";
  40.  
  41.   condition = inEditField;
  42.  
  43.   action = function() callUndoRedo( '' ) end
  44.  
  45. }
  46.  
  47.  
  48.  
  49. Macro {
  50.  
  51.   description = "DialogTools: Redo";
  52.  
  53.   area = "Dialog"; key = "CtrlShiftZ AltShiftBS";
  54.  
  55.   condition = inEditField;
  56.  
  57.   action = function() callUndoRedo( 'Up' ) end
  58.  
  59. }
  60.  
  61.  
  62.  
  63. Macro {
  64.  
  65.   description = "DialogTools: Edit";
  66.  
  67.   area = "Dialog"; key = "F4";
  68.  
  69.   condition = inEditField;
  70.  
  71.   action = function() Plugin.Menu( DialogTools_MainGuid, DialogTools_EditGuid ) end
  72.  
  73. }
  74.  
  75.  
  76.  
  77. Macro {
  78.  
  79.   description = "DialogTools: Show password";
  80.  
  81.   area = "Dialog"; key = "F3";
  82.  
  83.   condition = function() return Dlg.ItemType == DLGITEMTYPE_PSWEDIT end;
  84.  
  85.   action = function() Plugin.Menu( DialogTools_MainGuid, DialogTools_PwShGuid ) end
  86.  
  87. }

Re: Развёрнутое редактирование полей ввода

Posted: Wed 16 Sep, 2009 10:34
by Yegor
Я думаю, есть смысл расширить ф-ть плагина DialogTools и попробовать добавить тюда такую ф-ю.
Не знаю, правда, насколько это нужно, хотя было бы полезно в редактировании макросов в плагине FAR Macro

Re: Развёрнутое редактирование полей ввода

Posted: Wed 16 Sep, 2009 10:42
by HaRT
Yegor wrote:Я думаю, есть смысл расширить ф-ть плагина DialogTools и попробовать добавить тюда такую ф-ю.
Коренной недостаток такого подхода в том, что DialogTools только для Far 2.

23:23 MSK
Оказывается, в Фаре 1.75 с DialogTools тоже всё в порядке.

Re: Развёрнутое редактирование полей ввода

Posted: Wed 16 Sep, 2009 10:48
by Skirda
Ну, я бы сказал, что это баян, но т.к. это (спецификация) вроде бы ни где не публиковалось (упоминания можно найти в форуме), то...
В общем есть такой проект DI_MEMOEDIT (для чего в свое время выкидывали все, относящиеся к слову "файл" из класса Editor в FileEdit)
Вот только руки никак не доходят...

Здесь как раз тот случай, когда плагином не гоже...

PS.
Если нужно, могу выкатить текущее недоописание проекта.

Re: Развёрнутое редактирование полей ввода

Posted: Wed 16 Sep, 2009 10:53
by Skirda
Хе... оказывается описание есть :-)

Re: Развёрнутое редактирование полей ввода

Posted: Wed 16 Sep, 2009 10:59
by HaRT
Skirda wrote:есть такой проект DI_MEMOEDIT (для чего в свое время выкидывали все, относящиеся к слову "файл" из класса Editor в FileEdit)
Вот только руки никак не доходят...
Вот-вот. А в виде плагина пусть и не так красиво, зато гораздо проще и потенциально быстрее.
Плюс оно возможно и в Фар 1.7.

Re: Развёрнутое редактирование полей ввода

Posted: Wed 16 Sep, 2009 11:15
by Skirda
HaRT, да ради Бога, главное чтобы кто-то поддерживал такой плагин :-)

Re: Развёрнутое редактирование полей ввода

Posted: Wed 16 Sep, 2009 11:15
by Александр Кряжев
HaRT, не кажется ли Вам, что пора уже "забивать" на поддержку тупиковых ветвей развития? ;)

Re: Развёрнутое редактирование полей ввода

Posted: Wed 16 Sep, 2009 11:29
by t-rex
Ну это плагин ровно на 10-20 строк кода, можешь и сам написать раз оно тебе так надо.

Re: Развёрнутое редактирование полей ввода

Posted: Wed 16 Sep, 2009 11:34
by HaRT
Skirda wrote:да ради Бога, главное чтобы кто-то поддерживал такой плагин :-)
Вот я и ищу такого человека. Пожалуй, постучусь ещё в PowerShellFar, т.к. надеюсь, что наскриптовать предлагаемый плагин опытному человеку будет несложно. Вдруг NightRomanу идея понравится…
Александр Кряжев wrote:не кажется ли Вам, что пора уже "забивать" на поддержку тупиковых ветвей развития? ;)
Русская пословица гласит: “Старый конь борозды не портит”; есть и английская фраза к случаю: “The latest isn't the greatest”. Зачем раньше времени хоронить хороший продукт, ведь Фар 2 по некоторым показателям ещё не дотягивает до Фар 1.7.

Re: Развёрнутое редактирование полей ввода

Posted: Wed 16 Sep, 2009 11:43
by HaRT
Skirda wrote:Здесь как раз тот случай, когда плагином не гоже...
Я вспомнил ещё один довод.
Я ничего не имею против DI_MEMOEDIT, но его внедрение ничем не улучшит уже написанные плагины, а предлагаемая мной функциональность всё-таки упростила бы работу с ними.

Re: Развёрнутое редактирование полей ввода

Posted: Wed 16 Sep, 2009 12:08
by t-rex
t-rex wrote:Ну это плагин ровно на 10-20 строк кода, можешь и сам написать раз оно тебе так надо.
Ты уже тут стока написал что мог бы уже и плагин написать.

Re: Развёрнутое редактирование полей ввода

Posted: Wed 16 Sep, 2009 12:11
by HaRT
t-rex wrote:Ну это плагин ровно на 10-20 строк кода, можешь и сам написать раз оно тебе так надо.
В минимальном варианте, возможно, и так, но в полнофункциональном куда больше.
t-rex wrote:Ты уже тут стока написал что мог бы уже и плагин написать.
Ты мне льстишь.
Приятно, конечно, но, к сожалению, я не так быстро въезжаю в новое, а также применяю имеющийся багаж на практике.

Re: Развёрнутое редактирование полей ввода

Posted: Wed 16 Sep, 2009 12:30
by t-rex
Имено полнофункциональный 20 строк.