Code: Select all
var oDateLogFormat =
{
Val :'',
Def :'',
Wnd :[],
IDTXT :2001,
IDVAL :2002,
IDDEF :2003,
IDENABLE:2004,
IDED :2005,
Initialize:function()
{
if (SendMessage(hMainWnd, 1222 /*AKD_GETMAININFO*/, 129 /*MI_DATELOGFORMAT*/, lpText))
this.Val = AkelPad.MemRead(lpText, 1 /*DT_UNICODE*/);
this.Ini = this.Val;
this.Enable = SendMessage(hMainWnd, 1222 /*AKD_GETMAININFO*/, 217 /*MI_DATELOG*/, 0);
this.EnableIni = this.Enable;
this.Wnd[this.IDTXT ]={C:'STATIC', S:0x50000000, X:140, Y: 15, W:640, H: 13, Txt:'Defines date and time format for files containing ".LOG" at the beginning:',
Rus:'Определяет формат даты для файлов содержащих ".LOG" в начале:'};
this.Wnd[this.IDVAL ]={C:'COMBOBOX', S:0x50010042, X:140, Y: 35, W:640, H: 21};
this.Wnd[this.IDDEF ]={C:'BUTTON', S:0x50010003, X:140, Y: 66, W:640, H: 16, Txt:oDateInsertFormat.Wnd[oDateInsertFormat.IDDEF].Txt,
Rus:oDateInsertFormat.Wnd[oDateInsertFormat.IDDEF].Rus};
this.Wnd[this.IDENABLE]={C:'BUTTON', S:0x50010003, X:140, Y: 86, W:640, H: 16, Txt:'Works only if enabled "Insert date if file has .LOG at the beginning" in settings (DateLog=1).',
Rus:'Работает только при отмеченном пункте в настройках "Вставить дату, если файл содержит .LOG в начале" (DateLog=1).'};
this.Wnd[this.IDED ]={C:'AkelEditW', S:0x50310804, X:140, Y:112, W:640, H:357, Txt:oDateInsertFormat.Wnd[oDateInsertFormat.IDED].Txt,
Rus:oDateInsertFormat.Wnd[oDateInsertFormat.IDED].Rus};
},
Apply:function()
{
SendMessage(hMainWnd, 1219 /*AKD_SETMAININFO*/, 129 /*MIS_DATELOGFORMAT*/, this.Val);
SendMessage(hMainWnd, 1219 /*AKD_SETMAININFO*/, 217 /*MIS_DATELOG*/, this.Enable);
},
SetVal:function()
{
oSys.Call("User32::SetWindowTextW", this.Wnd[this.IDVAL].HWND, this.Val);
SendMessage(this.Wnd[this.IDDEF ].HWND, 241 /*BM_SETCHECK*/, this.Val == this.Def, 0);
SendMessage(this.Wnd[this.IDENABLE].HWND, 241 /*BM_SETCHECK*/, this.Enable, 0);
},
Command:function(nID, nCode, hWnd)
{
if (nID == this.IDVAL)
ProcessCB(hWnd, nCode);
else if ((nID == this.IDDEF) && SendMessage(hWnd, 240 /*BM_GETCHECK*/, 0, 0))
{
bChanged = 1;
this.Val = this.Def;
this.SetVal();
}
else if (nID == this.IDENABLE)
{
bChanged = 1;
this.Enable = SendMessage(hWnd, 240 /*BM_GETCHECK*/, 0, 0);
}
}
};
var oEditStyle =
{
Def :0,
Wnd :[],
IDTXT :2001,
IDBUT1:2002,
IDDEF :2003,
IDSUM :2004,
Initialize:function()
{
this.Val = SendMessage(hMainWnd, 1222 /*AKD_GETMAININFO*/, 122 /*MI_EDITSTYLE*/, 0);
this.Ini = this.Val;
this.Wnd[this.IDTXT ]={C:'STATIC', S:0x50000000, X:140, Y:15, W:640, H:13, Txt:'Defines some edit window creation flags. Sets by the sum of members:',
Rus:'Определяет некоторые флаги создания окна редактирования. Задается суммой членов:'};
this.Wnd[this.IDBUT1]={C:'BUTTON', S:0x50012403, X:140, Y:35, W:640, H:26, Type:1 /*EDS_GLOBALUNDO*/, Txt:'1 - Use process heap for Undo buffer instead of window heap. This flag required for work of AEM_DETACHUNDO and AEM_ATTACHUNDO messages, but when closing edit window the memory releasing will be slower.',
Rus:'1 - Буфер отмен использует кучу процесса, вместо кучи окна. Данный флаг необходим для работы сообщений AEM_DETACHUNDO и AEM_ATTACHUNDO, но при закрытии окна освобождение памяти будет происходить медленнее.'};
this.Wnd[this.IDDEF ]={C:'BUTTON', S:0x50010003, X:140, Y:93, W:640, H:16, Txt:'By default: 0',
Rus:'По умолчанию: 0'};
this.Wnd[this.IDSUM ]={C:'STATIC', S:0x50000000, X:150, Y:67, W: 70, H:13};
},
Apply:function()
{
SendMessage(hMainWnd, 1219 /*AKD_SETMAININFO*/, 122 /*MIS_EDITSTYLE*/, this.Val);
},
SetVal:function()
{
for (var i = this.IDBUT1; i <= this.IDBUT1; ++i)
SendMessage(this.Wnd[i].HWND, 241 /*BM_SETCHECK*/, this.Val & this.Wnd[i].Type, 0);
oSys.Call("User32::SetWindowTextW", this.Wnd[this.IDSUM].HWND, '=' + this.Val);
SendMessage(this.Wnd[this.IDDEF].HWND, 241 /*BM_SETCHECK*/, this.Val == this.Def, 0);
},
Command:function(nID, nCode, hWnd)
{
if ((nID >= this.IDBUT1) && (nID <= this.IDBUT1))
{
bChanged = 1;
this.Val = 0;
for (var i = this.IDBUT1; i <= this.IDBUT1; ++i)
{
if (SendMessage(this.Wnd[i].HWND, 240 /*BM_GETCHECK*/, 0, 0))
this.Val |= this.Wnd[i].Type;
}
this.SetVal();
}
else if ((nID == this.IDDEF) && SendMessage(hWnd, 240 /*BM_GETCHECK*/, 0, 0))
{
bChanged = 1;
this.Val = this.Def;
this.SetVal();
}
}
};
var oFixedCharWidth =
{
Def :0,
Wnd :[],
IDTXT :2001,
IDVAL :2002,
IDDEF :2003,
IDNOTE:2004,
Initialize:function()
{
this.Val = SendMessage(hMainWnd, 1222 /*AKD_GETMAININFO*/, 120 /*MI_FIXEDCHARWIDTH*/, 0);
if ((this.Val < -1) && (this.Val != -4) && (this.Val != -6))
this.Val = 0;
this.Ini = this.Val;
this.Wnd[this.IDTXT ]={C:'STATIC', S:0x50000000, X:140, Y: 15, W:640, H:78, Txt:'Defines fixed character width. All symbols, including proportional fonts, will be paint in this width.\nSpecial values:\n-1 - font latin character average width.\n-4 - font space width.\n-6 - font latin character maximum width.\n0 - disable fixed width.',
Rus:'Определяет фиксированную ширину символа. Все символы, включая пропорциональные шрифты, будут рисоваться в заданной ширине. Специальные значения:\n-1 - средняя ширина латинских символов в шрифте.\n-4 - ширина пробела в шрифте.\n-6 - максимальная ширина латинских символов в шрифте.\n0 - отключить фиксацию ширины.'};
this.Wnd[this.IDVAL ]={C:'COMBOBOX', S:0x50210003, X:140, Y:100, W: 50, H:21};
this.Wnd[this.IDDEF ]={C:'BUTTON', S:0x50010003, X:140, Y:131, W:640, H:16, Txt:'By default: 0',
Rus:'По умолчанию: 0'};
this.Wnd[this.IDNOTE]={C:'STATIC', S:0x50000000, X:140, Y:157, W:640, H:13, Txt:'Note: changes are applied for a new edit windows.',
Rus:'Замечание: изменения будут применены для новых окон редактирования.'};
},
Apply:function()
{
SendMessage(hMainWnd, 1219 /*AKD_SETMAININFO*/, 120 /*MIS_FIXEDCHARWIDTH*/, this.Val);
},
SetVal:function()
{
SendMessage(this.Wnd[this.IDVAL].HWND, 0x014E /*CB_SETCURSEL*/, SendMessage(this.Wnd[this.IDVAL].HWND, 0x0158 /*CB_FINDSTRINGEXACT*/, -1, this.Val.toString()), 0);
SendMessage(this.Wnd[this.IDDEF].HWND, 241 /*BM_SETCHECK*/, this.Val == this.Def, 0);
},
InitDialog:function()
{
SendMessage(this.Wnd[this.IDVAL].HWND, 0x0143 /*CB_ADDSTRING*/, 0, "-6");
SendMessage(this.Wnd[this.IDVAL].HWND, 0x0143 /*CB_ADDSTRING*/, 0, "-4");
SendMessage(this.Wnd[this.IDVAL].HWND, 0x0143 /*CB_ADDSTRING*/, 0, "-1");
for (var i = 0; i < 201; ++i)
SendMessage(this.Wnd[this.IDVAL].HWND, 0x0143 /*CB_ADDSTRING*/, 0, i.toString());
if (this.Ini > 200)
SendMessage(this.Wnd[this.IDVAL].HWND, 0x0143 /*CB_ADDSTRING*/, 0, this.Ini.toString());
},
Command:function(nID, nCode, hWnd)
{
if (nID == this.IDVAL)
{
if (nCode == 1 /*CBN_SELCHANGE*/)
{
bChanged = 1;
SendMessage(hWnd, 0x0148 /*CB_GETLBTEXT*/, SendMessage(hWnd, 0x0147 /*CB_GETCURSEL*/, 0, 0), lpText);
this.Val = parseInt(AkelPad.MemRead(lpText, 1 /*DT_UNICODE*/));
SendMessage(this.Wnd[this.IDDEF].HWND, 241 /*BM_SETCHECK*/, this.Val == this.Def, 0);
}
else if (nCode == 8 /*CBN_CLOSEUP*/)
bCloseCB = 0;
}
else if ((nID == this.IDDEF) && SendMessage(hWnd, 240 /*BM_GETCHECK*/, 0, 0))
{
bChanged = 1;
this.Val = this.Def;
this.SetVal();
}
}
};
var oMouseOptions =
{
Def :7,
Wnd :[],
IDTXT :2001,
IDBUT1 :2002,
IDBUT2 :2003,
IDBUT3 :2004,
IDBUT4 :2005,
IDBUT5 :2006,
IDBUT6 :2007,
IDBUT7 :2008,
IDBUT8 :2009,
IDBUT9 :2010,
IDBUT10:2011,
IDDEF :2012,
IDSUM :2013,
Initialize:function()
{
if (! hEditWnd)
SendMessage(hMainWnd, 273 /*WM_COMMAND*/, 4101 /*wParam=MAKEWPARAM(0,IDM_FILE_NEW)*/, 1 /*lParam=TRUE*/);
this.Val = SendMessage(hMainWnd, 1223 /*AKD_GETFRAMEINFO*/, 87 /*FI_MOUSEOPTIONS*/, 0);
this.Ini = this.Val;
if (! hEditWnd)
AkelPad.Command(4318 /*IDM_WINDOW_FRAMECLOSE*/);
this.Wnd[this.IDTXT ]={C:'STATIC', S:0x50000000, X:140, Y: 15, W:640, H:13, Txt:'Defines mouse settings. Set by the sum of members:',
Rus:'Определяет настройки мыши. Задается суммой членов:'};
this.Wnd[this.IDBUT1 ]={C:'BUTTON', S:0x50010003, X:140, Y: 35, W:640, H:16, Type: 1 /*MO_LEFTMARGINSELECTION*/, Txt:'1 - GUI (left click on margin selects line).',
Rus:'1 - GUI (левый клик в отступ выделяет строку).'};
this.Wnd[this.IDBUT2 ]={C:'BUTTON', S:0x50010003, X:140, Y: 55, W:640, H:16, Type: 2 /*MO_RICHEDITMOUSE*/, Txt:'2 - GUI (use RichEdit mouse selection).',
Rus:'2 - GUI (RichEdit выделение мышью).'};
this.Wnd[this.IDBUT3 ]={C:'BUTTON', S:0x50010003, X:140, Y: 75, W:640, H:16, Type: 4 /*MO_MOUSEDRAGGING*/, Txt:'4 - GUI (enable mouse dragging).',
Rus:'4 - GUI (перетаскивание мышью).'};
this.Wnd[this.IDBUT4 ]={C:'BUTTON', S:0x50010003, X:140, Y: 95, W:640, H:16, Type: 8 /*MO_RCLICKMOVECARET*/, Txt:'8 - GUI (right click moves caret).',
Rus:'8 - GUI (правый клик смещает каретку).'};
this.Wnd[this.IDBUT5 ]={C:'BUTTON', S:0x50010003, X:140, Y:115, W:640, H:16, Type: 16 /*MO_NONEWLINEMOUSESELECT*/, Txt:'16 - Triple click and left margin click selects line without newline character(s).',
Rus:'16 - Не выделять новую строку при клике в зону левого отступа, а также при тройном клике.'};
this.Wnd[this.IDBUT6 ]={C:'BUTTON', S:0x50010003, X:140, Y:135, W:640, H:16, Type: 32 /*MO_NOWHEELFONTCHANGE*/, Txt:'32 - Disable font size change using Ctrl+mouse scroll wheel.',
Rus:'32 - Не менять размер шрифта посредством колесика мыши и клавиши Ctrl.'};
this.Wnd[this.IDBUT7 ]={C:'BUTTON', S:0x50010003, X:140, Y:155, W:640, H:16, Type: 64 /*MO_SELUNWRAPLINE*/, Txt:'64 - Line selection with mouse selects all wrapped line.',
Rus:'64 - Выделять мышью всю, разделенную переносами, строку.'};
this.Wnd[this.IDBUT8 ]={C:'BUTTON', S:0x50010003, X:140, Y:175, W:640, H:16, Type:128 /*MO_MBUTTONDOWNNOSCROLL*/, Txt:'128 - No scrolling after middle mouse click.',
Rus:'128 - Не прокручивать окно после клика средней клавишей мыши.'};
this.Wnd[this.IDBUT9 ]={C:'BUTTON', S:0x50010003, X:140, Y:195, W:640, H:16, Type:256 /*MO_INVERTHORZWHEEL*/, Txt:'256 - Invert mouse horizontal wheel.',
Rus:'256 - Инвертировать горизонтальную прокрутку колесиком мыши.'};
this.Wnd[this.IDBUT10]={C:'BUTTON', S:0x50010003, X:140, Y:215, W:640, H:16, Type:512 /*MO_INVERTVERTWHEEL*/, Txt:'512 - Invert mouse vertical wheel.',
Rus:'512 - Инвертировать вертикальную прокрутку колесиком мыши.'};
this.Wnd[this.IDDEF ]={C:'BUTTON', S:0x50010003, X:140, Y:261, W:640, H:16, Txt:'By default: 1+2+4=7',
Rus:'По умолчанию: 1+2+4=7'};
this.Wnd[this.IDSUM ]={C:'STATIC', S:0x50000000, X:150, Y:235, W: 70, H:13};
},
Apply:function()
{
if (! hEditWnd)
SendMessage(hMainWnd, 273 /*WM_COMMAND*/, 4101 /*wParam=MAKEWPARAM(0,IDM_FILE_NEW)*/, 1 /*lParam=TRUE*/);
AkelPad.SetFrameInfo(0, 34 /*FIS_MOUSEOPTIONS*/, this.Val);
if (! hEditWnd)
AkelPad.Command(4318 /*IDM_WINDOW_FRAMECLOSE*/);
},
SetVal:function()
{
for (var i = this.IDBUT1; i <= this.IDBUT10; ++i)
SendMessage(this.Wnd[i].HWND, 241 /*BM_SETCHECK*/, this.Val & this.Wnd[i].Type, 0);
oSys.Call("User32::SetWindowTextW", this.Wnd[this.IDSUM].HWND, '=' + this.Val);
SendMessage(this.Wnd[this.IDDEF].HWND, 241 /*BM_SETCHECK*/, this.Val == this.Def, 0);
},
Command:function(nID, nCode, hWnd)
{
if ((nID >= this.IDBUT1) && (nID <= this.IDBUT10))
{
bChanged = 1;
this.Val = 0;
for (var i = this.IDBUT1; i <= this.IDBUT10; ++i)
{
if (SendMessage(this.Wnd[i].HWND, 240 /*BM_GETCHECK*/, 0, 0))
this.Val |= this.Wnd[i].Type;
}
this.SetVal();
}
else if ((nID == this.IDDEF) && SendMessage(hWnd, 240 /*BM_GETCHECK*/, 0, 0))
{
bChanged = 1;
this.Val = this.Def;
this.SetVal();
}
}
};
var oPaintOptions =
{
Def :0,
Wnd :[],
IDTXT :2001,
IDBUT1:2002,
IDBUT2:2003,
IDBUT3:2004,
IDBUT4:2005,
IDBUT5:2006,
IDBUT6:2007,
IDBUT7:2008,
IDBUT8:2009,
IDBUT9:2010,
IDDEF :2011,
IDSUM :2012,
IDNOTE:2013,
Initialize:function()
{
this.Val = SendMessage(hMainWnd, 1222 /*AKD_GETMAININFO*/, 121 /*MI_PAINTOPTIONS*/, 0);
this.Ini = this.Val;
this.Wnd[this.IDTXT ]={C:'STATIC', S:0x50000000, X:140, Y: 15, W:640, H:13, Txt:'Defines, some text draw settings. Sets by the sum of members:',
Rus:'Определяет некоторые установки по рисованию текста. Задается суммой членов:'};
this.Wnd[this.IDBUT1]={C:'BUTTON', S:0x50012403, X:140, Y: 35, W:640, H:52, Type: 1 /*PAINT_PAINTGROUP*/, Txt:'1 - Paint text by groups of characters (default is character by character). With this flag some text recognition programs could start to work, printer could print faster, but highlighted symbols and combined unicode symbols can be drawn differently and editing of whose characters may become uncomfortable.',
Rus:'1 - Рисование текста по группам символов (по умолчанию посимвольная прорисовка). С этим флагом некоторые программы, использующие графическое распознавание текста, могут начать работать (если не работали), принтер может печатать быстрее, но подсвеченные символы и комбинированные символы юникода могут рисоваться иначе, а также редактирование этих символов может стать некомфортным.'};
this.Wnd[this.IDBUT2]={C:'BUTTON', S:0x50010003, X:140, Y: 93, W:640, H:16, Type: 2 /*PAINT_NONEWLINEDRAW*/, Txt:'2 - Disable drawing new line selection as space character.',
Rus:'2 - Не рисовать выделение перевода строки как пробела.'};
this.Wnd[this.IDBUT3]={C:'BUTTON', S:0x50010003, X:140, Y:113, W:640, H:16, Type: 4 /*PAINT_ENTIRENEWLINEDRAW*/, Txt:'4 - Draw newline selection to right edge of text area.',
Rus:'4 - Рисовать выделение перевода строки до правой границы.'};
this.Wnd[this.IDBUT4]={C:'BUTTON', S:0x50010003, X:140, Y:133, W:640, H:16, Type: 8 /*PAINT_HIDESEL*/, Txt:'8 - Hides the selection when the control loses the input focus.',
Rus:'8 - Скрывать выделение при потере фокуса.'};
this.Wnd[this.IDBUT5]={C:'BUTTON', S:0x50010003, X:140, Y:153, W:640, H:16, Type: 16 /*PAINT_NOMARKERAFTERLASTLINE*/, Txt:'16 - Disable marker painting after last line.',
Rus:'16 - Не рисовать вертикальный маркер после последней строки.'};
this.Wnd[this.IDBUT6]={C:'BUTTON', S:0x50010003, X:140, Y:173, W:640, H:16, Type: 128 /*PAINT_VSCROLLBYLINE*/, Txt:'128 - Unit of vertical scrolling is line (default is pixel).',
Rus:'128 - Высота строки как единица для вертикальной прокрутки (по умолчанию пиксел).'};
this.Wnd[this.IDBUT7]={C:'BUTTON', S:0x50010003, X:140, Y:193, W:640, H:16, Type: 256 /*PAINT_HIDENOSCROLL*/, Txt:'256 - Show scroll bars only when needed.',
Rus:'256 - Скрывать прокрутку текста у окна редактирования, если она не требуется.'};
this.Wnd[this.IDBUT8]={C:'BUTTON', S:0x50010003, X:140, Y:213, W:640, H:16, Type: 512 /*PAINT_STATICEDGE*/, Txt:'512 - Draw thin edit window border.',
Rus:'512 - Рисовать тонкую границу у окна редактирования.'};
this.Wnd[this.IDBUT9]={C:'BUTTON', S:0x50010003, X:140, Y:233, W:640, H:16, Type:1024 /*PAINT_NOEDGE*/, Txt:'1024 - Draw no edit window border.',
Rus:'1024 - Не рисовать границу у окна редактирования.'};
this.Wnd[this.IDDEF ]={C:'BUTTON', S:0x50010003, X:140, Y:279, W:640, H:16, Txt:'By default: 0',
Rus:'По умолчанию: 0'};
this.Wnd[this.IDSUM ]={C:'STATIC', S:0x50000000, X:150, Y:253, W: 70, H:13};
this.Wnd[this.IDNOTE]={C:'STATIC', S:0x50000000, X:140, Y:305, W:640, H:13, Txt:oFixedCharWidth.Wnd[oFixedCharWidth.IDNOTE].Txt,
Rus:oFixedCharWidth.Wnd[oFixedCharWidth.IDNOTE].Rus};
},
Apply:function()
{
SendMessage(hMainWnd, 1219 /*AKD_SETMAININFO*/, 121 /*MIS_PAINTOPTIONS*/, this.Val);
},
SetVal:function()
{
for (var i = this.IDBUT1; i <= this.IDBUT9; ++i)
SendMessage(this.Wnd[i].HWND, 241 /*BM_SETCHECK*/, this.Val & this.Wnd[i].Type, 0);
oSys.Call("User32::SetWindowTextW", this.Wnd[this.IDSUM].HWND, '=' + this.Val);
SendMessage(this.Wnd[this.IDDEF].HWND, 241 /*BM_SETCHECK*/, this.Val == this.Def, 0);
},
Command:function(nID, nCode, hWnd)
{
if ((nID >= this.IDBUT1) && (nID <= this.IDBUT9))
{
bChanged = 1;
this.Val = 0;
for (var i = this.IDBUT1; i <= this.IDBUT9; ++i)
{
if (SendMessage(this.Wnd[i].HWND, 240 /*BM_GETCHECK*/, 0, 0))
this.Val |= this.Wnd[i].Type;
}
this.SetVal();
}
else if ((nID == this.IDDEF) && SendMessage(hWnd, 240 /*BM_GETCHECK*/, 0, 0))
{
bChanged = 1;
this.Val = this.Def;
this.SetVal();
}
}
};
var oRichEditClass =
{
Def :0,
Wnd :[],
IDTXT :2001,
IDBUT1:2002,
IDBUT2:2003,
IDDEF :2004,
IDNOTE:2005,
Initialize:function()
{
this.Val = SendMessage(hMainWnd, 1222 /*AKD_GETMAININFO*/, 125 /*MI_RICHEDITCLASS*/, 0);
this.Ini = this.Val;
this.Wnd[this.IDTXT ]={C:'STATIC', S:0x50000000, X:140, Y: 15, W:640, H:13, Txt:'Defines edit control class name:',
Rus:'Определяет какое имя класса будет у окна редактирования:'};
this.Wnd[this.IDBUT1]={C:'BUTTON', S:0x50010009, X:140, Y: 35, W:640, H:16, Txt:'0 - "AkelEdit".'};
this.Wnd[this.IDBUT2]={C:'BUTTON', S:0x50010009, X:140, Y: 55, W:640, H:16, Txt:'1 - "RichEdit20".'};
this.Wnd[this.IDDEF ]={C:'BUTTON', S:0x50010003, X:140, Y: 81, W:640, H:16, Txt:'By default: 0',
Rus:'По умолчанию: 0'};
this.Wnd[this.IDNOTE]={C:'STATIC', S:0x50000000, X:140, Y:110, W:640, H:13, Txt:oFixedCharWidth.Wnd[oFixedCharWidth.IDNOTE].Txt,
Rus:oFixedCharWidth.Wnd[oFixedCharWidth.IDNOTE].Rus};
},
Apply:function()
{
SendMessage(hMainWnd, 1219 /*AKD_SETMAININFO*/, 125 /*MIS_RICHEDITCLASS*/, this.Val);
},
SetVal:function()
{
for (var i = this.IDBUT1; i <= this.IDBUT2; ++i)
SendMessage(this.Wnd[i].HWND, 241 /*BM_SETCHECK*/, this.Val == i - this.IDBUT1, 0);
SendMessage(this.Wnd[this.IDDEF].HWND, 241 /*BM_SETCHECK*/, this.Val == this.Def, 0);
},
Command:function(nID, nCode, hWnd)
{
if ((nID >= this.IDBUT1) && (nID <= this.IDBUT2))
{
bChanged = 1;
this.Val = nID - this.IDBUT1;
this.SetVal();
SendMessage(aDlg[IDENGB + nLang].HWND, 241 /*BM_SETCHECK*/, 1, 0);
}
else if ((nID == this.IDDEF) && SendMessage(hWnd, 240 /*BM_GETCHECK*/, 0, 0))
{
bChanged = 1;
this.Val = this.Def;
this.SetVal();
}
else if ((nID == IDENGB) ||(nID == IDRUSB))
this.SetVal();
}
};
var oShowModify =
{
Def :9,
ShowAll:15,
Wnd :[],
IDTXT :2001,
IDBUT1 :2002,
IDBUT2 :2003,
IDBUT3 :2004,
IDBUT4 :2005,
IDDEF :2006,
IDALL :2007,
IDSUM :2008,
Initialize:function()
{
this.Val = SendMessage(hMainWnd, 1222 /*AKD_GETMAININFO*/, 110 /*MI_SHOWMODIFY*/, 0);
this.Ini = this.Val;
this.Wnd[this.IDTXT ]={C:'STATIC', S:0x50000000, X:140, Y: 15, W:640, H:13, Txt:'Determines where document changed status will be displayed. Set by the sum of members:',
Rus:'Определяет, где можно будет увидеть, что документ изменен. Задается суммой членов:'};
this.Wnd[this.IDBUT1]={C:'BUTTON', S:0x50010003, X:140, Y: 35, W:640, H:16, Type:1 /*SM_STATUSBAR*/, Txt:'1 - Display "Modified" in status bar.',
Rus:'1 - Отображение "Изменен" в строке состояния.'};
this.Wnd[this.IDBUT2]={C:'BUTTON', S:0x50010003, X:140, Y: 55, W:640, H:16, Type:2 /*SM_MAINTITLE_SDI*/, Txt:'2 - Display asterisk * in main window title (SDI).',
Rus:'2 - Отображение звездочки * в заголовке главного окна (SDI).'};
this.Wnd[this.IDBUT3]={C:'BUTTON', S:0x50010003, X:140, Y: 75, W:640, H:16, Type:4 /*SM_FRAMETITLE_MDI*/, Txt:'4 - Display asterisk * in main window title and in frame window title (MDI/PMDI).',
Rus:'4 - Отображение звездочки * в заголовке главного окна и в заголовке окна вкладки (MDI/PMDI).'};
this.Wnd[this.IDBUT4]={C:'BUTTON', S:0x50010003, X:140, Y: 95, W:640, H:16, Type:8 /*SM_TABTITLE_MDI*/, Txt:'8 - Display asterisk * in tab button name (MDI/PMDI).',
Rus:'8 - Отображение звездочки * в имени кнопки вкладки (MDI/PMDI).'};
this.Wnd[this.IDDEF ]={C:'BUTTON', S:0x50010003, X:140, Y:141, W:640, H:16, Txt:'By default: 1+8=9',
Rus:'По умолчанию: 1+8=9'};
this.Wnd[this.IDALL ]={C:'BUTTON', S:0x50010003, X:140, Y:161, W:640, H:16, Txt:'Show all: 1+2+4+8=15',
Rus:'Отображать везде: 1+2+4+8=15'};
this.Wnd[this.IDSUM ]={C:'STATIC', S:0x50000000, X:150, Y:115, W: 70, H:13};
},
Apply:function()
{
SendMessage(hMainWnd, 1219 /*AKD_SETMAININFO*/, 110 /*MIS_SHOWMODIFY*/, this.Val);
},
SetVal:function()
{
for (var i = this.IDBUT1; i <= this.IDBUT4; ++i)
SendMessage(this.Wnd[i].HWND, 241 /*BM_SETCHECK*/, this.Val & this.Wnd[i].Type, 0);
oSys.Call("User32::SetWindowTextW", this.Wnd[this.IDSUM].HWND, '=' + this.Val);
SendMessage(this.Wnd[this.IDDEF].HWND, 241 /*BM_SETCHECK*/, this.Val == this.Def, 0);
SendMessage(this.Wnd[this.IDALL].HWND, 241 /*BM_SETCHECK*/, this.Val == this.ShowAll, 0);
},
Command:function(nID, nCode, hWnd)
{
if ((nID >= this.IDBUT1) && (nID <= this.IDBUT4))
{
bChanged = 1;
this.Val = 0;
for (var i = this.IDBUT1; i <= this.IDBUT4; ++i)
{
if (SendMessage(this.Wnd[i].HWND, 240 /*BM_GETCHECK*/, 0, 0))
this.Val |= this.Wnd[i].Type;
}
this.SetVal();
}
else if (((nID == this.IDDEF) || (nID == this.IDALL)) && (SendMessage(hWnd, 240 /*BM_GETCHECK*/, 0, 0)))
{
bChanged = 1;
this.Val = (nID == this.IDDEF) ? this.Def : this.ShowAll;
this.SetVal();
}
}
};
var oSingleOpenProgram =
{
Def :1,
Wnd :[],
IDTXT :2001,
IDBUT1:2002,
IDBUT2:2003,
IDDEF :2004,
IDSUM :2005,
Initialize:function()
{
this.Val = SendMessage(hMainWnd, 1222 /*AKD_GETMAININFO*/, 153 /*MI_SINGLEOPENPROGRAM*/, 0);
this.Ini = this.Val;
this.Wnd[this.IDTXT ]={C:'STATIC', S:0x50000000, X:140, Y: 15, W:640, H:13, Txt:'Option "Don\'t open a program twice" in MDI/PMDI mode. Set by the sum of members:',
Rus:'Опция "Не открывать программу дважды" в режиме MDI/PMDI. Задается суммой членов:'};
this.Wnd[this.IDBUT1]={C:'BUTTON', S:0x50010003, X:140, Y: 35, W:640, H:16, Type:1 /*SOP_ON*/, Txt:'1 - GUI (option is on).',
Rus:'1 - GUI (опция включена).'};
this.Wnd[this.IDBUT2]={C:'BUTTON', S:0x50010003, X:140, Y: 55, W:640, H:16, Type:2 /*SOP_SAMEEXE*/, Txt:'2 - option works only for the same exe file. Requires run as administrator (UAC).',
Rus:'2 - опция работает только для совпадающего exe файла. Требует запуска от имени администратора (UAC).'};
this.Wnd[this.IDDEF ]={C:'BUTTON', S:0x50010003, X:140, Y:101, W:640, H:16, Txt:'By default: 1',
Rus:'По умолчанию: 1'};
this.Wnd[this.IDSUM ]={C:'STATIC', S:0x50000000, X:150, Y: 75, W: 70, H:13};
},
Apply:function()
{
SendMessage(hMainWnd, 1219 /*AKD_SETMAININFO*/, 153 /*MIS_SINGLEOPENPROGRAM*/, this.Val);
},
SetVal:function()
{
for (var i = this.IDBUT1; i <= this.IDBUT2; ++i)
SendMessage(this.Wnd[i].HWND, 241 /*BM_SETCHECK*/, this.Val & this.Wnd[i].Type, 0);
oSys.Call("User32::SetWindowTextW", this.Wnd[this.IDSUM].HWND, '=' + this.Val);
SendMessage(this.Wnd[this.IDDEF].HWND, 241 /*BM_SETCHECK*/, this.Val == this.Def, 0);
},
Command:function(nID, nCode, hWnd)
{
if ((nID >= this.IDBUT1) && (nID <= this.IDBUT2))
{
bChanged = 1;
this.Val = 0;
for (var i = this.IDBUT1; i <= this.IDBUT2; ++i)
{
if (SendMessage(this.Wnd[i].HWND, 240 /*BM_GETCHECK*/, 0, 0))
this.Val |= this.Wnd[i].Type;
}
this.SetVal();
}
else if ((nID == this.IDDEF) && SendMessage(hWnd, 240 /*BM_GETCHECK*/, 0, 0))
{
bChanged = 1;
this.Val = this.Def;
this.SetVal();
}
}
};
var oStatusPosType =
{
Def :0,
Wnd :[],
IDTXT :2001,
IDBUT1:2002,
IDBUT2:2003,
IDDEF :2004,
IDSUM :2005,
Initialize:function()
{
this.Val = SendMessage(hMainWnd, 1222 /*AKD_GETMAININFO*/, 111 /*MI_STATUSPOSTYPE*/, 0);
this.Ini = this.Val;
this.Wnd[this.IDTXT ]={C:'STATIC', S:0x50000000, X:140, Y: 15, W:640, H:13, Txt:'Defines how status bar statistics will be displayed. Set by the sum of members:',
Rus:'Определяет, как будет отражаться статистика в строке статуса. Задается суммой членов:'};
this.Wnd[this.IDBUT1]={C:'BUTTON', S:0x50010003, X:140, Y: 35, W:640, H:16, Type:1 /*SPT_COLUMN*/, Txt:'1 - "Line:Column". By default: "Line:Symbol".',
Rus:'1 - "Строка:Столбец". По умолчанию: "Строка:Символ".'};
this.Wnd[this.IDBUT2]={C:'BUTTON', S:0x50010003, X:140, Y: 55, W:640, H:16, Type:2 /*SPT_LINEWRAP*/, Txt:'2 - Wrap line numbers. By default: Non-wrap line numbers.',
Rus:'2 - Перенесённые номера строк. По умолчанию: неперенесённые номера строк.'};
this.Wnd[this.IDDEF ]={C:'BUTTON', S:0x50010003, X:140, Y:101, W:640, H:16, Txt:'By default: 0',
Rus:'По умолчанию: 0'};
this.Wnd[this.IDSUM ]={C:'STATIC', S:0x50000000, X:150, Y: 75, W: 70, H:13};
},
Apply:function()
{
SendMessage(hMainWnd, 1219 /*AKD_SETMAININFO*/, 111 /*MIS_STATUSPOSTYPE*/, this.Val);
},
SetVal:function()
{
for (var i = this.IDBUT1; i <= this.IDBUT2; ++i)
SendMessage(this.Wnd[i].HWND, 241 /*BM_SETCHECK*/, this.Val & this.Wnd[i].Type, 0);
oSys.Call("User32::SetWindowTextW", this.Wnd[this.IDSUM].HWND, '=' + this.Val);
SendMessage(this.Wnd[this.IDDEF].HWND, 241 /*BM_SETCHECK*/, this.Val == this.Def, 0);
},
Command:function(nID, nCode, hWnd)
{
if ((nID >= this.IDBUT1) && (nID <= this.IDBUT2))
{
bChanged = 1;
this.Val = 0;
for (var i = this.IDBUT1; i <= this.IDBUT2; ++i)
{
if (SendMessage(this.Wnd[i].HWND, 240 /*BM_GETCHECK*/, 0, 0))
this.Val |= this.Wnd[i].Type;
}
this.SetVal();
}
else if ((nID == this.IDDEF) && SendMessage(hWnd, 240 /*BM_GETCHECK*/, 0, 0))
{
bChanged = 1;
this.Val = this.Def;
this.SetVal();
}
}
};
var oStatusUserFormat =
{
Val :'',
Def :'',
Wnd :[],
IDTXT:2001,
IDVAL:2002,
IDDEF:2003,
IDED :2004,
Initialize:function()
{
if (SendMessage(hMainWnd, 1222 /*AKD_GETMAININFO*/, 112 /*MI_STATUSUSERFORMAT*/, lpText))
this.Val = AkelPad.MemRead(lpText, 1 /*DT_UNICODE*/).replace(/\t/g, '\\t');
this.Ini = this.Val;
this.Wnd[this.IDTXT]={C:'STATIC', S:0x50000000, X:140, Y:15, W:640, H: 13, Txt:'Defines user status bar format:',
Rus:'Определяет формат пользователя для строки состояния:'};
this.Wnd[this.IDVAL]={C:'COMBOBOX', S:0x50010042, X:140, Y:35, W:640, H: 21};
this.Wnd[this.IDDEF]={C:'BUTTON', S:0x50010003, X:140, Y:66, W:640, H: 16, Txt:'By default: "" - format is not defined, additional status bar section is not displayed.',
Rus:'По умолчанию: "" - формат не определен, дополнительная секция строки состояния не отображается.'};
this.Wnd[this.IDED ]={C:'AkelEditW', S:0x50310804, X:140, Y:91, W:640, H:383, Txt:'%[width]\t\tAdd status bar delimiter.\n%Ch\t\t\tCurrent character hex code in file codepage (lowercase).\n%CH\t\t\tCurrent character hex code in file codepage (uppercase).\n%ch\t\t\tCurrent character hex code (lowercase).\n%cH\t\t\tCurrent character hex code (uppercase).\n%cd\t\t\tCurrent character decimal code.\n%cl\t\t\tCurrent character letter.\n%or\t\t\tOffset in symbols. Any newline breaks counted as one symbol (RichEdit).\n%ob\t\t\tOffset in symbols. Newline breaks: \\r\\r\\n - three symbols, \\r\\n - two symbols, \\r - one symbol, \\n - one symbol. Use only if necessary because on large files can cause slowdown.\n%al\t\t\tCount of lines in document.\n%ar\t\t\tCount of symbols in document (RichEdit).\n%lb\t\t\tNumber of first selected line.\n%le\t\t\tNumber of last selected line.\n%ls\t\t\tCount of lines in selection.\n%f\t\t\tFont size.\n%t\t\t\tTabulation size.\n%m\t\t\tColumn marker position.\n%cap[text]\tText displayed when "Caps Lock" is on.\n%num[text]\tText displayed when "Num Lock" is on.\n%se[text]\t\tText displayed when end of the document reached during search.\n%r\t\t\tReplace count after "Replace all".\n%dc\t\t\tCount of all documents (MDI/PMDI).\n%dm\t\t\tCount of modified documents (MDI/PMDI).\n%ds\t\t\tCount of unmodified documents (MDI/PMDI).\n%di\t\t\tActive document index (MDI/PMDI).\n%%\t\t\t% symbol.\nTabulation\tOne tabulation aligns text to center, second tabulation to right edge (use \\t or \\t\\t).\n\nExample: "Symbol:0x%ch%[85]Font:%f%[48]Tab:%t%[38]Marker:%m%[60]Docs:%dm*/%dc"',
Rus:'%[ширина]\tДобавить разделитель в строку состояния.\n%Ch\t\t\tШестнадцатеричный код текущего символа в кодировке файла (нижний регистр).\n%CH\t\t\tШестнадцатеричный код текущего символа в кодировке файла (верхний регистр).\n%ch\t\t\tШестнадцатеричный код текущего символа (нижний регистр).\n%cH\t\t\tШестнадцатеричный код текущего символа (верхний регистр).\n%cd\t\t\tДесятеричный код текущего символа.\n%cl\t\t\tБуква текущего символа.\n%or\t\t\tСмещение в символах. Любые переводы строки считаются за один символ (RichEdit).\n%ob\t\t\tСмещение в символах. Переводы строки: \\r\\r\\n - три символа, \\r\\n - два символа, \\r - один символ, \\n - один символ. Используйте только при необходимости, т.к. на больших файлах может вызывать замедление работы.\n%al\t\t\tКоличество строк в документе.\n%ar\t\t\tКоличество символов в документе (RichEdit).\n%lb\t\t\tНомер первой строки выделения.\n%le\t\t\tНомер последней строки выделения.\n%ls\t\t\tКоличество выделенных строк.\n%f\t\t\tРазмер шрифта.\n%t\t\t\tРазмер табуляции.\n%m\t\t\tРазмер вертикального маркера.\n%cap[текст]\tТекст отображающийся при включенной клавише CapsLock.\n%num[текст]\tТекст отображающийся при включенной клавише NumLock.\n%se[текст]\tТекст отображающийся по достижению конца документа при поиске.\n%r\t\t\tКоличество замен после "Заменить все".\n%dc\t\t\tКоличество всех документов (MDI/PMDI).\n%dm\t\t\tКоличество измененных документов (MDI/PMDI).\n%ds\t\t\tКоличество неизмененных документов (MDI/PMDI).\n%di\t\t\tИндекс активного документа (MDI/PMDI).\n%%\t\t\tСимвол %.\nТабуляция\tПервая табуляция выравнивает текст по центру, вторая по правому краю (\\t или \\t\\t).\n\nПример: "Символ:0x%ch%[88]Шрифт:%f%[62]Таб:%t%[38]Маркер:%m%[64]Док:%dm*/%dc"'};
},
Apply:function()
{
SendMessage(hMainWnd, 1219 /*AKD_SETMAININFO*/, 112 /*MIS_STATUSUSERFORMAT*/, this.Val.replace(/\\t/g, '\t'));
},
SetVal:function()
{
oSys.Call("User32::SetWindowTextW", this.Wnd[this.IDVAL].HWND, this.Val);
SendMessage(this.Wnd[this.IDDEF].HWND, 241 /*BM_SETCHECK*/, this.Val == this.Def, 0);
},
Command:function(nID, nCode, hWnd)
{
if (nID == this.IDVAL)
ProcessCB(hWnd, nCode);
else if ((nID == this.IDDEF) && SendMessage(hWnd, 240 /*BM_GETCHECK*/, 0, 0))
{
bChanged = 1;
this.Val = this.Def;
this.SetVal();
}
}
};
var oTabNameFind =
{
Val :'',
Def :'',
Wnd :[],
IDTXT :2001,
IDVAL :2002,
IDDEF :2003,
IDED :2004,
IDNOTE:2005,
IDLINK:2006,
Initialize:function()
{
if (SendMessage(hMainWnd, 1222 /*AKD_GETMAININFO*/, 133 /*MI_TABNAMEFIND*/, lpText))
this.Val = AkelPad.MemRead(lpText, 1 /*DT_UNICODE*/);
this.Ini = this.Val;
this.Wnd[this.IDTXT ]={C:'STATIC', S:0x50000000, X:140, Y: 15, W:640, H:26, Txt:'Defines regular expression search pattern for tab name in MDI/PMDI mode.\nIf pattern not found, file name displayed without changes. Used with TabNameRep.',
Rus:'Определяет шаблон поиска регулярного выражения для имени вкладки в режиме MDI/PMDI.\nЕсли шаблон не найден, имя файла отображается без изменений. Используется совместно с TabNameRep.'};
this.Wnd[this.IDVAL ]={C:'COMBOBOX', S:0x50010042, X:140, Y: 48, W:640, H:21};
this.Wnd[this.IDDEF ]={C:'BUTTON', S:0x50010003, X:140, Y: 79, W:640, H:16, Txt:'By default: ""',
Rus:'По умолчанию: ""'};
this.Wnd[this.IDED ]={C:'AkelEditW', S:0x50010800, X:140, Y:104, W:640, H:21, Txt:'Example: (.{20}).{3,}(?:\\.([^.]*))?',
Rus:'Пример: (.{20}).{3,}(?:\\.([^.]*))?'};
this.Wnd[this.IDNOTE]={C:'STATIC', S:0x50000000, X:140, Y:138, W:640, H:13, Txt:oFixedCharWidth.Wnd[oFixedCharWidth.IDNOTE].Txt,
Rus:oFixedCharWidth.Wnd[oFixedCharWidth.IDNOTE].Rus};
this.Wnd[this.IDLINK]={C:'SysLink', S:0x50000000, X:140, Y:164, W:640, H:13, Txt:'<a>TabNameRep</a>'};
},
Apply:function()
{
SendMessage(hMainWnd, 1219 /*AKD_SETMAININFO*/, 133 /*MIS_TABNAMEFIND*/, this.Val);
},
SetVal:function()
{
oSys.Call("User32::SetWindowTextW", this.Wnd[this.IDVAL].HWND, this.Val);
SendMessage(this.Wnd[this.IDDEF].HWND, 241 /*BM_SETCHECK*/, this.Val == this.Def, 0);
},
Notify:function(wParam, lParam)
{
if ((wParam == this.IDLINK) && (AkelPad.MemRead(_PtrAdd(lParam, _X64 ? 16 : 8), 3 /*DT_DWORD*/) == -2 /*NM_CLICK*/))
{
SetCurSelLV(FindInArray(aParam, "TabNameRep"));
oSys.Call("User32::SetFocus", oTabNameRep.Wnd[oTabNameRep.IDVAL].HWND);
}
},
Command:function(nID, nCode, hWnd)
{
if (nID == this.IDVAL)
ProcessCB(hWnd, nCode);
else if ((nID == this.IDDEF) && SendMessage(hWnd, 240 /*BM_GETCHECK*/, 0, 0))
{
bChanged = 1;
this.Val = this.Def;
this.SetVal();
}
}
};
var oTabNameRep =
{
Val :'',
Def :'',
Wnd :[],
IDTXT :2001,
IDVAL :2002,
IDDEF :2003,
IDED :2004,
IDNOTE:2005,
IDLINK:2006,
Initialize:function()
{
if (SendMessage(hMainWnd, 1222 /*AKD_GETMAININFO*/, 134 /*MI_TABNAMEREP*/, lpText))
this.Val = AkelPad.MemRead(lpText, 1 /*DT_UNICODE*/);
this.Ini = this.Val;
this.Wnd[this.IDTXT ]={C:'STATIC', S:0x50000000, X:140, Y: 15, W:640, H:26, Txt:'Defines regular expression replace pattern for tab name in MDI/PMDI mode.\nUsed with TabNameFind.',
Rus:'Определяет шаблон замены регулярного выражения для имени вкладки в режиме MDI/PMDI.\nИспользуется совместно с TabNameFind.'};
this.Wnd[this.IDVAL ]={C:'COMBOBOX', S:0x50010042, X:140, Y: 48, W:640, H:21};
this.Wnd[this.IDDEF ]={C:'BUTTON', S:0x50010003, X:140, Y: 79, W:640, H:16, Txt:'By default: ""',
Rus:'По умолчанию: ""'};
this.Wnd[this.IDED ]={C:'AkelEditW', S:0x50010800, X:140, Y:104, W:640, H:21, Txt:'Example: \\1...\\2',
Rus:'Пример: \\1...\\2'};
this.Wnd[this.IDNOTE]={C:'STATIC', S:0x50000000, X:140, Y:138, W:640, H:13, Txt:oFixedCharWidth.Wnd[oFixedCharWidth.IDNOTE].Txt,
Rus:oFixedCharWidth.Wnd[oFixedCharWidth.IDNOTE].Rus};
this.Wnd[this.IDLINK]={C:'SysLink', S:0x50000000, X:140, Y:164, W:640, H:13, Txt:'<a>TabNameFind</a>'};
},
Apply:function()
{
SendMessage(hMainWnd, 1219 /*AKD_SETMAININFO*/, 134 /*MIS_TABNAMEREP*/, this.Val);
},
SetVal:function()
{
oSys.Call("User32::SetWindowTextW", this.Wnd[this.IDVAL].HWND, this.Val);
SendMessage(this.Wnd[this.IDDEF].HWND, 241 /*BM_SETCHECK*/, this.Val == this.Def, 0);
},
Notify:function(wParam, lParam)
{
if ((wParam == this.IDLINK) && (AkelPad.MemRead(_PtrAdd(lParam, _X64 ? 16 : 8), 3 /*DT_DWORD*/) == -2 /*NM_CLICK*/))
{
SetCurSelLV(FindInArray(aParam, "TabNameFind"));
oSys.Call("User32::SetFocus", oTabNameFind.Wnd[oTabNameFind.IDVAL].HWND);
}
},
Command:function(nID, nCode, hWnd)
{
if (nID == this.IDVAL)
ProcessCB(hWnd, nCode);
else if ((nID == this.IDDEF) && SendMessage(hWnd, 240 /*BM_GETCHECK*/, 0, 0))
{
bChanged = 1;
this.Val = this.Def;
this.SetVal();
}
}
};