Идея, которая витала в воздухе давно, - добавить возможность всем панелям плагов/тулбарам возможность автоматически скрываться при уходе курсора с области панели/тулбара и появляться при подведении курсора мыши к краю проги. Такая возможность есть в LN, AuotCAD и др. прогах, - очень удобно.
Но очень не нравилось когда скрипт "бегает" по вкладкам и AkelPad дёргается, а если их много, то это очень не красиво )
Недавно познакомился с функцией SetRedraw, немножко модифицировал скрипт:
Сейчас, на мой взгляд очень хорошо - в заголовке окна пробегают адреса файлов, но акел не "Дёргается"
Можно ли такую же вещь добавить при работе с командами
1. Вкладок Command(4319) , Command(4320)
2. При "Поиске и Замене" - галочка "все файлы" - зачем нам видеть как программа пробегает по всем вкладкам
/// CloseUnnamedAll.js
// http://tc-image.3dn.ru/forum/9-254-839-16-1332920186
// http://akelpad.sourceforge.net/forum/viewtopic.php?p=3370#p3370
//
//// Закрыть все указанные MDI документы.
//// Close all unnamed or unexisted MDI documents.
//
// Arguments:
// -CloseUnnamed=false -Закрыть документы без имени (по умочанию = true).
// -CloseUnexisted=true -Закрыть документы, если файлы были удалены (по умочанию = false).
//
// Example:
// -"Close only unexisted" Call("Scripts::Main", 1, "CloseUnnamedAll.js", `-CloseUnnamed=false -CloseUnexisted=true`)
// Version v1.4 16.11.2011 + 26.04.2012
// Author: Instructor
//Arguments
var bCloseUnnamed=AkelPad.GetArgValue("CloseUnnamed", true);
var bCloseUnexisted=AkelPad.GetArgValue("CloseUnexisted", false);
//Variables
var hMainWnd=AkelPad.GetMainWnd();
var oSys=AkelPad.SystemFunction();
var lpFrameInit=0;
var lpFrameCur=0;
var bFrameClose=false;
var pFile;
var dwState=0;
if (AkelPad.IsMDI())
{
var hMainWnd = AkelPad.GetMainWnd();
SetRedraw(hMainWnd, false); // Добавил для себя Аверин Андрей (26.04.2012)
//Turn off watch file
if (hMenuMain=AkelPad.SendMessage(hMainWnd, 1222 /*AKD_GETMAININFO*/, 21 /*MI_MENUMAIN*/, 0))
{
dwState=oSys.Call("user32::GetMenuState", hMenuMain, 4253 /*IDM_OPTIONS_WATCHFILE*/, 0 /*MF_BYCOMMAND*/);
if (dwState & 0x8 /*MF_CHECKED*/)
AkelPad.Command(4253 /*IDM_OPTIONS_WATCHFILE*/);
}
for (;;)
{
if (!lpFrameCur) lpFrameCur=AkelPad.SendMessage(hMainWnd, 1288 /*AKD_FRAMEFIND*/, 1 /*FWF_CURRENT*/, 0);
if (!lpFrameInit) lpFrameInit=lpFrameCur;
//Is frame must be closed
pFile=AkelPad.GetEditFile(0);
if ((bCloseUnnamed && !pFile) ||
(bCloseUnexisted && oSys.Call("kernel32::GetFileAttributes" + _TCHAR, pFile) == -1))
{
bFrameClose=true;
}
if (bFrameClose)
{
//Close MDI frame
if (AkelPad.GetEditModified(0))
AkelPad.SendMessage(hMainWnd, 1229 /*AKD_SETMODIFY*/, 0, false);
if (!AkelPad.Command(4318 /*IDM_WINDOW_FRAMECLOSE*/))
break;
if (lpFrameInit == lpFrameCur)
lpFrameInit=0;
lpFrameCur=0;
bFrameClose=false;
}
else
{
//Next MDI frame
lpFrameCur=AkelPad.Command(4316 /*IDM_WINDOW_FRAMENEXT*/);
if (!lpFrameCur || lpFrameCur == lpFrameInit)
break;
}
}
//Turn on watch file
if (dwState & 0x8 /*MF_CHECKED*/)
AkelPad.Command(4253 /*IDM_OPTIONS_WATCHFILE*/);
SetRedraw(hMainWnd, true);
}
function SetRedraw(hWnd, bRedraw)
{
var oSys = AkelPad.SystemFunction();
AkelPad.SendMessage(hWnd, 11 /*WM_SETREDRAW*/, bRedraw, 0);
bRedraw && oSys.Call("user32::InvalidateRect", hWnd, 0, true);
}
Posted: Wed May 16, 2012 8:44 pm
by Instructor
Andrey_A_A
SetRedraw - нужно пользоваться осторожно. Везде, где команда была уместна, она была использована.
Posted: Fri May 25, 2012 11:06 am
by Infocatcher
Надо бы центрировать окно
Документ был изменён. Сохранить?
---------------------------
Да Нет Отмена
, а также «Невозможно открыть файл "..."» и т.п. относительно окна AkelPad'а, а не всего экрана.
А то на разрешении 1920x1080 растягивать окно на всю ширину нет практически никакого смысла.
Posted: Fri May 25, 2012 3:18 pm
by Instructor
Infocatcher
Это стандартное поведение WINAPI функции MessageBox.
При таскании вертикального маркера с зажатым Shift (Параметры – Редактор 1 – Перенос – Маркер) надо добавить отображение текущего положения во всплывающей подсказке.
Аналогично при таскании разделителей окна.
Еще можно утащить удобную фишку из Total Commander'а: если перемещать разделитель с зажатым Shift, то переместить можно будет только в несколько фиксированных положений.
Posted: Sat May 26, 2012 7:52 pm
by Infocatcher
При печати не хватает возможности вывести в колонтитуле общее количество страниц.
Для перенесенных строк надо бы сделать какую-нибудь визуальную индикацию (вроде, так сделано в Visual Studio, мне сейчас не проверить). Или ограничиться выводом номеров строк.
Posted: Sat May 26, 2012 11:13 pm
by San_dr
Благодаря FullScreenEx.js от VladSh теперь очень удобно работать на широкоформатных мониторах, - кнопки в один ряд равномерно.
"Режимы панелей окна" Icon("%a\AkelFiles\Plugs\ico
{
-"AltFullScreen - полноэкранный режим с расширенным тулбаром - Вкл/Выкл" Call("Scripts::Main", 1, "FullScreenEx.js", `-ToolBar="ToolBar-Alt"`)
-"Полноэкранный режим с расширенным тулбаром и Псевдо-SDI- Вкл/Выкл" Call("Scripts::Main", 1, "FullScreenEx.js", `-ToolBar="ToolBar-Alt" -Menu=1 -StatusBar=1`)
.....и т.д }
А для полной реализации "Полноэкранный режим с расширенным тулбаром и Псевдо-SDI" не хватает флагов FullScreen режима - чтобы при полном раскрытии главное меню тоже не было куцым и обрубленным
Хотелось бы, чтобы PMDI режим можно было приводить к виду SDI. SDI режима хватает почти для всего, кроме редких случаев когда надо провести поиск и замену сразу в большом количестве документов, хотелось бы чтобы эти возможности сосуществвали вместе.
Конкретнее, для PMDI:
- Опция, позволяющая выбирать:открывать документ при двойном клике по нему, в новой вкладке(если окно есть) или в новом окне.
- Опция, позволяющая выбирать поведение при drug&drop: открывать документ в новой вкладке или в текущей (замещать документ находящийся во вкладке, в которую его закинул).
Или хотя бы волшебную чудо-кнопку(shift например), при удержании которой во время drag`n`drop файла, он открывался бы не в новой вкладке, а в той, в которую его пихнешь. Очень удобно когда вкладки не нужны. Ну када-нить в далеком будущем))))
- Опция, позволяющая скрывать панель вкладок если вкладка только одна.
- Внутренняя команда открыть/закрыть панель вкладок. А сверху они находятся или снизу - в виде опции.
Posted: Fri Jun 15, 2012 5:52 am
by [Yustas.NeO]
Предлагаю
1. Добавить возможность иметь не один, а несколько вертикальных маркеров.
2. Добавить опцию, при которой функция "Не открывать программу дважды" работает только для экземпляров, запущенных по одному и тому же пути (включая имя файла).
Posted: Mon Jun 18, 2012 7:10 am
by Fr0sT
Добавить опцию, при которой функция "Не открывать программу дважды" работает только для экземпляров, запущенных по одному и тому же пути (включая имя файла)
Вообще расширить до способности различать копии Акеля по директории запуска. А то и с MDI и двумя копиями Акеля не то поведение, которое ожидаешь
Posted: Tue Jun 19, 2012 7:11 pm
by VladSh
Просьба в StatusUserFormat добавить начертание шрифта, а то с этими скриптами, постоянно его передёргивающими, уже путаешься... Сейчас хотел добавить, но во всём монструозном списке %-"переменных" не нашёл его
Хотелось бы видеть не Шрифт=10
а, к примеру, Courier New, 10.
Выбор сглаживания в диалоге шрифтов бы непомешал, где системное было бы лишь одним из вариантов.
В винде вообще с этим сглаживанием как-то не очень: шрифты с ClearType далеко не все сочетаются, для самого интерфейса оно не прет совершенно, и многие проги с ним работают довольно хреново, но в некоторых вполне ок. В общем, юзал бы GDI++, да он баженный, блин, так что пока лучшим вариантом вижу просто в отдельных прогах по возможности ClearType выставлять, как оно выставляется в том же мелкоофисе =\
Кстати, никому не встречался какой-нибудь моноширный шрифт с хорошим мелким курсивом без сглаживания?