вооот. а вы попробуйте, покопайтесь. вот John Doe попробовал, как-то меньше от него не очень осмысленных советов стало. хотя может и совпадение.
HaRT wrote:а у автора новой функциональности (ещё раз спасибо ему большое) всё это ещё свежо в памяти.
что это? автор новой функциональности не делал вставки. то что он добавил в диалог кнопку и сделал замену, не поможет ему со вставкой абсолютно никак.
HaRT wrote:а заодно и выношу на обсуждение.
а что тут обсуждать? добавьте вишь на мантис про какой-нибудь DM_INSERTTEXT, распишите, что он должен делать, структурки накидаете, вообще шикарно. будет DM_INSERTTEXT, будет то, что вы хотите. а предлагать через print сделать, это на нужные вещества для DrKnS у всего форума денег не хватит.
К тому же, если Фар будет вставлять, а кому-то надо замещать, то макрос получится гораздо проще, чем когда наоборот (сейчас).
Студия берёт слово. Это привычно и чаще востребовано. Искать всю строку это экзотика (выделить нет). add: к тому же экзотика легко реализуемая через Ctrl-C F7
HaRT wrote:Так может — кроме шуток — вместо замещения значения поля просто после передачи туда фокуса вызывать макросовый print? И огород не надо городить, и результат будет как раз тот, что требуется.
zg, в принципе, уже всё сказал, добавлю только одно:
Господа, на этом форуме и на сорсфорже нет возрастных ограничений, поэтому помните - нас читают дети.
Некоторые из них в не столь отдалённом будущем будут писать для вас кардиостимуляторы, беспилотные автомобили, термоядерные реакторы, звездолёты и матрицу.
Не надо закладывать в их пока ещё светлые умы мысли о вызывании макросового принта или эмуляции посимвольного ввода с клавиатуры для вставки текста в поле.
ОФФ: Что интересно, то совсем не удивлюсь, что сейчас при управлении ядерным реакторм программа использует что-то типа "эмуляции посимвольного ввода с клавиатуры для вставки текста в поле" вызова какой-то последовательности действий (утрирую конечно). И это так работает в реальности! Не боги же программы пишут на госпредприятиях.
P.S. Сам таким был.
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
Yegor, прошу не заводить в этой теме спор об уместности или неуместности использованных аналогий.
Я вот, например, с DrKnS не согласен, но не собираюсь с ним спорить. Жаль, конечно, что фича получается недоделанная, но ничего не попишешь — всё ведь на общественных началах.
Честно, не понимаю, с каких пор макросная функция print стала ругательным словом. Реализована она целиком в Far (не в LuaMacro). Почему бы не выделить из неё отдельной функцией ту часть, которая отвечает за вставку текста в поле диалога, и не использовать эту функцию как предложили выше? Она что, второго сорта?
Shmuel wrote: Честно, не понимаю, с каких пор макросная функция print стала ругательным словом. Реализована она целиком в Far (не в LuaMacro). Почему бы не выделить из неё отдельной функцией ту часть, которая отвечает за вставку текста в поле диалога, и не использовать эту функцию как предложили выше? Она что, второго сорта?
честно, не понимаю, для кого я тут пишу на форуме:
zg wrote:добавьте вишь на мантис про какой-нибудь DM_INSERTTEXT, распишите, что он должен делать, структурки накидаете, вообще шикарно. будет DM_INSERTTEXT, будет то, что вы хотите.
case KEY_SHIFTINS: case KEY_SHIFTNUMPAD0:
{
string ClipText;
if (GetMaxLength()==-1)
{
if (!GetClipboard(ClipText))
return TRUE;
}
else
{
if (!GetClipboardEx(GetMaxLength(), ClipText))
return TRUE;
}
if (!m_Flags.Check(FEDITLINE_PERSISTENTBLOCKS))
{
DisableCallback();
DeleteBlock();
RevertCallback();
}
for (size_t i=0; i < ClipText.size(); ++i)
{
if (IsEol(ClipText[i]))
{
if (i + 1 < ClipText.size() && IsEol(ClipText[i + 1]))
ClipText.erase(i, 1);
if (i+1 == ClipText.size())
ClipText.resize(i);
else
ClipText[i] = L' ';
}
}
if (m_Flags.Check(FEDITLINE_CLEARFLAG))
{
LeftPos=0;
m_Flags.Clear(FEDITLINE_CLEARFLAG);
SetString(ClipText.data());
}
else
{
InsertString(ClipText.data());
}
Show();
return TRUE;
}
, которая, если отбросить способ получения текста, концептуально делает то же самое.
Вместо того, чтобы отделить непосредственно вставку от работы с буфером обмена и переиспользовать её - родили велосипед. Ну, бывает.
Вообще, создаётся впечатление, что люди думают, что вставить строку - это какая-то научная проблема, и пытаются искренне помочь, предалагая НУ ХОТЬ ЧТО-ТО.
Это не проблема, нет. Просто ещё один велосипед не нужен, а "сделать нормально" требует некоторого времени.
DrKnS, пусть функция print имеет даже большие недостатки в реализации. Но она является частью Фара и находится в использовании. К её работе, вроде бы, ни у кого нет претензий. Меня удивляет почему дополнительное использование этой, уже имеющейся функции, вдруг является чем-то совершенно недопустимым.
build 4479
Диалог поиска - по горячей клавише S происходит нажатие кнопки "Word".
Надо поставить подсказку "Search for" после кнопок (stddlg.cpp строка 125)
Smitis wrote: Надо поставить подсказку "Search for" после кнопок (stddlg.cpp строка 125)
Передвинул.
HaRT wrote: нажатие любой из этих кнопок должно приводить к вставке слова/выделения в позицию каретки, а не к замещению текущего значения. Замещаться должно только неизменённое значение из истории — так же, как при начале ввода в поле