1 /* 2 Plugin API for Far Manager 3.0 build 5577 3 License: Public Domain 4 */ 5 6 module farplugin; 7 8 import std.stdint; 9 import core.sys.windows.windows; 10 11 const FARMANAGERVERSION_MAJOR = 3; 12 const FARMANAGERVERSION_MINOR = 0; 13 const FARMANAGERVERSION_REVISION = 0; 14 const FARMANAGERVERSION_BUILD = 5577; 15 const FARMANAGERVERSION_STAGE = VERSION_STAGE.VS_RELEASE; 16 17 const CP_UNICODE = cast(uintptr_t)1200; 18 const CP_REVERSEBOM = cast(uintptr_t)1201; 19 const CP_DEFAULT = cast(uintptr_t)-1; 20 const CP_REDETECT = cast(uintptr_t)-2; 21 22 alias FARCOLORFLAGS = ulong; 23 const FARCOLORFLAGS 24 FCF_FG_4BIT = 0x0000000000000001UL, 25 FCF_BG_4BIT = 0x0000000000000002UL, 26 FCF_4BITMASK = FCF_FG_4BIT|FCF_BG_4BIT, // 0x0000000000000003UL 27 28 FCF_RAWATTR_MASK = 0x000000000000FF00UL, // stored console attributes 29 30 FCF_EXTENDEDFLAGS = ~FCF_4BITMASK, // 0xFFFFFFFFFFFFFFFCUL 31 FCF_FG_BOLD = 0x1000000000000000UL, 32 FCF_FG_ITALIC = 0x2000000000000000UL, 33 FCF_FG_UNDERLINE = 0x4000000000000000UL, 34 FCF_STYLEMASK = FCF_FG_BOLD|FCF_FG_ITALIC|FCF_FG_UNDERLINE, // 0x7000000000000000UL 35 FCF_NONE = 0UL; 36 37 struct rgba { byte r, g, b, a; } 38 39 struct FarColor 40 { 41 FARCOLORFLAGS Flags; 42 union 43 { 44 COLORREF ForegroundColor; 45 rgba ForegroundRGBA; 46 } 47 union 48 { 49 COLORREF BackgroundColor; 50 rgba BackgroundRGBA; 51 } 52 void* Reserved; 53 54 bool IsBg4Bit() const 55 { 56 return (Flags & FCF_BG_4BIT) != 0; 57 } 58 59 bool IsFg4Bit() const 60 { 61 return (Flags & FCF_FG_4BIT) != 0; 62 } 63 64 FarColor SetBg4Bit(bool Value) 65 { 66 Value? Flags |= FCF_BG_4BIT : (Flags &= ~FCF_BG_4BIT); 67 return this; 68 } 69 70 FarColor SetFg4Bit(bool Value) 71 { 72 Value? Flags |= FCF_FG_4BIT : (Flags &= ~FCF_FG_4BIT); 73 return this; 74 } 75 } 76 77 const INDEXMASK = 0x0000000F; 78 const COLORMASK = 0x00FFFFFF; 79 const ALPHAMASK = 0xFF000000; 80 81 auto INDEXVALUE(ARG1)(ARG1 x) { return ((x)&INDEXMASK); } 82 auto COLORVALUE(ARG1)(ARG1 x) { return ((x)&COLORMASK); } 83 auto ALPHAVALUE(ARG1)(ARG1 x) { return ((x)&ALPHAMASK); } 84 85 auto IS_OPAQUE(ARG1)(ARG1 x) { return (ALPHAVALUE(x)==ALPHAMASK); } 86 auto IS_TRANSPARENT(ARG1)(ARG1 x) { return (!ALPHAVALUE(x)); } 87 void MAKE_OPAQUE(ARG1)(ref ARG1 x) { (x|=ALPHAMASK); } 88 void MAKE_TRANSPARENT(ARG1)(ref ARG1 x) { (x&=COLORMASK); } 89 90 alias COLORDIALOGFLAGS = ulong; 91 const COLORDIALOGFLAGS CDF_NONE = 0UL; 92 93 alias FARAPICOLORDIALOG = extern (Windows) BOOL function( 94 in GUID* PluginId, 95 COLORDIALOGFLAGS Flags, 96 FarColor* Color); 97 98 alias FARMESSAGEFLAGS = ulong; 99 const FARMESSAGEFLAGS 100 FMSG_WARNING = 0x0000000000000001UL, 101 FMSG_ERRORTYPE = 0x0000000000000002UL, 102 FMSG_KEEPBACKGROUND = 0x0000000000000004UL, 103 FMSG_LEFTALIGN = 0x0000000000000008UL, 104 FMSG_ALLINONE = 0x0000000000000010UL, 105 FMSG_MB_OK = 0x0000000000010000UL, 106 FMSG_MB_OKCANCEL = 0x0000000000020000UL, 107 FMSG_MB_ABORTRETRYIGNORE = 0x0000000000030000UL, 108 FMSG_MB_YESNO = 0x0000000000040000UL, 109 FMSG_MB_YESNOCANCEL = 0x0000000000050000UL, 110 FMSG_MB_RETRYCANCEL = 0x0000000000060000UL, 111 FMSG_NONE = 0UL; 112 113 alias FARAPIMESSAGE = extern (Windows) intptr_t function( 114 in GUID* PluginId, 115 in GUID* Id, 116 FARMESSAGEFLAGS Flags, 117 in wchar* HelpTopic, 118 in wchar** Items, 119 size_t ItemsNumber, 120 intptr_t ButtonsNumber); 121 122 enum FARDIALOGITEMTYPES 123 { 124 DI_TEXT = 0, 125 DI_VTEXT = 1, 126 DI_SINGLEBOX = 2, 127 DI_DOUBLEBOX = 3, 128 DI_EDIT = 4, 129 DI_PSWEDIT = 5, 130 DI_FIXEDIT = 6, 131 DI_BUTTON = 7, 132 DI_CHECKBOX = 8, 133 DI_RADIOBUTTON = 9, 134 DI_COMBOBOX = 10, 135 DI_LISTBOX = 11, 136 137 DI_USERCONTROL =255, 138 } 139 140 /* 141 Check diagol element type has inputstring? 142 (DI_EDIT, DI_FIXEDIT, DI_PSWEDIT, etc) 143 */ 144 BOOL IsEdit(FARDIALOGITEMTYPES Type) 145 { 146 with (FARDIALOGITEMTYPES) 147 switch (Type) 148 { 149 case DI_EDIT: 150 case DI_FIXEDIT: 151 case DI_PSWEDIT: 152 case DI_COMBOBOX: 153 return TRUE; 154 default: 155 return FALSE; 156 } 157 } 158 159 alias FARDIALOGITEMFLAGS = ulong; 160 const FARDIALOGITEMFLAGS 161 DIF_BOXCOLOR = 0x0000000000000200UL, 162 DIF_GROUP = 0x0000000000000400UL, 163 DIF_LEFTTEXT = 0x0000000000000800UL, 164 DIF_MOVESELECT = 0x0000000000001000UL, 165 DIF_SHOWAMPERSAND = 0x0000000000002000UL, 166 DIF_CENTERGROUP = 0x0000000000004000UL, 167 DIF_NOBRACKETS = 0x0000000000008000UL, 168 DIF_MANUALADDHISTORY = 0x0000000000008000UL, 169 DIF_SEPARATOR = 0x0000000000010000UL, 170 DIF_SEPARATOR2 = 0x0000000000020000UL, 171 DIF_EDITOR = 0x0000000000020000UL, 172 DIF_LISTNOAMPERSAND = 0x0000000000020000UL, 173 DIF_LISTNOBOX = 0x0000000000040000UL, 174 DIF_HISTORY = 0x0000000000040000UL, 175 DIF_BTNNOCLOSE = 0x0000000000040000UL, 176 DIF_CENTERTEXT = 0x0000000000040000UL, 177 DIF_SEPARATORUSER = 0x0000000000080000UL, 178 DIF_SETSHIELD = 0x0000000000080000UL, 179 DIF_EDITEXPAND = 0x0000000000080000UL, 180 DIF_DROPDOWNLIST = 0x0000000000100000UL, 181 DIF_USELASTHISTORY = 0x0000000000200000UL, 182 DIF_MASKEDIT = 0x0000000000400000UL, 183 DIF_LISTTRACKMOUSE = 0x0000000000400000UL, 184 DIF_LISTTRACKMOUSEINFOCUS = 0x0000000000800000UL, 185 DIF_SELECTONENTRY = 0x0000000000800000UL, 186 DIF_3STATE = 0x0000000000800000UL, 187 DIF_EDITPATH = 0x0000000001000000UL, 188 DIF_LISTWRAPMODE = 0x0000000001000000UL, 189 DIF_NOAUTOCOMPLETE = 0x0000000002000000UL, 190 DIF_LISTAUTOHIGHLIGHT = 0x0000000002000000UL, 191 DIF_LISTNOCLOSE = 0x0000000004000000UL, 192 DIF_EDITPATHEXEC = 0x0000000004000000UL, 193 DIF_HIDDEN = 0x0000000010000000UL, 194 DIF_READONLY = 0x0000000020000000UL, 195 DIF_NOFOCUS = 0x0000000040000000UL, 196 DIF_DISABLE = 0x0000000080000000UL, 197 DIF_DEFAULTBUTTON = 0x0000000100000000UL, 198 DIF_FOCUS = 0x0000000200000000UL, 199 DIF_RIGHTTEXT = 0x0000000400000000UL, 200 DIF_WORDWRAP = 0x0000000800000000UL, 201 DIF_NONE = 0UL; 202 203 enum FARMESSAGE 204 { 205 DM_FIRST = 0, 206 DM_CLOSE = 1, 207 DM_ENABLE = 2, 208 DM_ENABLEREDRAW = 3, 209 DM_GETDLGDATA = 4, 210 DM_GETDLGITEM = 5, 211 DM_GETDLGRECT = 6, 212 DM_GETTEXT = 7, 213 DM_KEY = 9, 214 DM_MOVEDIALOG = 10, 215 DM_SETDLGDATA = 11, 216 DM_SETDLGITEM = 12, 217 DM_SETFOCUS = 13, 218 DM_REDRAW = 14, 219 DM_SETTEXT = 15, 220 DM_SETMAXTEXTLENGTH = 16, 221 DM_SHOWDIALOG = 17, 222 DM_GETFOCUS = 18, 223 DM_GETCURSORPOS = 19, 224 DM_SETCURSORPOS = 20, 225 DM_SETTEXTPTR = 22, 226 DM_SHOWITEM = 23, 227 DM_ADDHISTORY = 24, 228 229 DM_GETCHECK = 25, 230 DM_SETCHECK = 26, 231 DM_SET3STATE = 27, 232 233 DM_LISTSORT = 28, 234 DM_LISTGETITEM = 29, 235 DM_LISTGETCURPOS = 30, 236 DM_LISTSETCURPOS = 31, 237 DM_LISTDELETE = 32, 238 DM_LISTADD = 33, 239 DM_LISTADDSTR = 34, 240 DM_LISTUPDATE = 35, 241 DM_LISTINSERT = 36, 242 DM_LISTFINDSTRING = 37, 243 DM_LISTINFO = 38, 244 DM_LISTGETDATA = 39, 245 DM_LISTSETDATA = 40, 246 DM_LISTSETTITLES = 41, 247 DM_LISTGETTITLES = 42, 248 249 DM_RESIZEDIALOG = 43, 250 DM_SETITEMPOSITION = 44, 251 252 DM_GETDROPDOWNOPENED = 45, 253 DM_SETDROPDOWNOPENED = 46, 254 255 DM_SETHISTORY = 47, 256 257 DM_GETITEMPOSITION = 48, 258 DM_SETINPUTNOTIFY = 49, 259 DM_SETMOUSEEVENTNOTIFY = DM_SETINPUTNOTIFY, 260 261 DM_EDITUNCHANGEDFLAG = 50, 262 263 DM_GETITEMDATA = 51, 264 DM_SETITEMDATA = 52, 265 266 DM_LISTSET = 53, 267 268 DM_GETCURSORSIZE = 54, 269 DM_SETCURSORSIZE = 55, 270 271 DM_LISTGETDATASIZE = 56, 272 273 DM_GETSELECTION = 57, 274 DM_SETSELECTION = 58, 275 276 DM_GETEDITPOSITION = 59, 277 DM_SETEDITPOSITION = 60, 278 279 DM_SETCOMBOBOXEVENT = 61, 280 DM_GETCOMBOBOXEVENT = 62, 281 282 DM_GETCONSTTEXTPTR = 63, 283 DM_GETDLGITEMSHORT = 64, 284 DM_SETDLGITEMSHORT = 65, 285 286 DM_GETDIALOGINFO = 66, 287 288 DM_GETDIALOGTITLE = 67, 289 290 DN_FIRST = 4096, 291 DN_BTNCLICK = 4097, 292 DN_CTLCOLORDIALOG = 4098, 293 DN_CTLCOLORDLGITEM = 4099, 294 DN_CTLCOLORDLGLIST = 4100, 295 DN_DRAWDIALOG = 4101, 296 DN_DRAWDLGITEM = 4102, 297 DN_EDITCHANGE = 4103, 298 DN_ENTERIDLE = 4104, 299 DN_GOTFOCUS = 4105, 300 DN_HELP = 4106, 301 DN_HOTKEY = 4107, 302 DN_INITDIALOG = 4108, 303 DN_KILLFOCUS = 4109, 304 DN_LISTCHANGE = 4110, 305 DN_DRAGGED = 4111, 306 DN_RESIZECONSOLE = 4112, 307 DN_DRAWDIALOGDONE = 4113, 308 DN_LISTHOTKEY = 4114, 309 DN_INPUT = 4115, 310 DN_CONTROLINPUT = 4116, 311 DN_CLOSE = 4117, 312 DN_GETVALUE = 4118, 313 DN_DROPDOWNOPENED = 4119, 314 DN_DRAWDLGITEMDONE = 4120, 315 316 DM_USER = 0x4000, 317 } 318 319 enum FARCHECKEDSTATE 320 { 321 BSTATE_UNCHECKED = 0, 322 BSTATE_CHECKED = 1, 323 BSTATE_3STATE = 2, 324 BSTATE_TOGGLE = 3, 325 } 326 327 enum FARCOMBOBOXEVENTTYPE 328 { 329 CBET_KEY = 0x00000001, 330 CBET_MOUSE = 0x00000002, 331 } 332 333 alias LISTITEMFLAGS = ulong; 334 const LISTITEMFLAGS 335 LIF_SELECTED = 0x0000000000010000UL, 336 LIF_CHECKED = 0x0000000000020000UL, 337 LIF_SEPARATOR = 0x0000000000040000UL, 338 LIF_DISABLE = 0x0000000000080000UL, 339 LIF_GRAYED = 0x0000000000100000UL, 340 LIF_HIDDEN = 0x0000000000200000UL, 341 LIF_DELETEUSERDATA = 0x0000000080000000UL, 342 LIF_NONE = 0UL; 343 344 struct FarListItem 345 { 346 LISTITEMFLAGS Flags; 347 const(wchar)* Text; 348 intptr_t UserData; 349 intptr_t Reserved; 350 } 351 352 struct FarListUpdate 353 { 354 size_t StructSize; 355 intptr_t Index; 356 FarListItem Item; 357 } 358 359 struct FarListInsert 360 { 361 size_t StructSize; 362 intptr_t Index; 363 FarListItem Item; 364 } 365 366 struct FarListGetItem 367 { 368 size_t StructSize; 369 intptr_t ItemIndex; 370 FarListItem Item; 371 } 372 373 struct FarListPos 374 { 375 size_t StructSize; 376 intptr_t SelectPos; 377 intptr_t TopPos; 378 } 379 380 alias FARLISTFINDFLAGS = ulong; 381 const FARLISTFINDFLAGS 382 LIFIND_EXACTMATCH = 0x0000000000000001UL, 383 LIFIND_NONE = 0UL; 384 385 struct FarListFind 386 { 387 size_t StructSize; 388 intptr_t StartIndex; 389 const(wchar)* Pattern; 390 FARLISTFINDFLAGS Flags; 391 } 392 393 struct FarListDelete 394 { 395 size_t StructSize; 396 intptr_t StartIndex; 397 intptr_t Count; 398 } 399 400 alias FARLISTINFOFLAGS = ulong; 401 const FARLISTINFOFLAGS 402 LINFO_SHOWNOBOX = 0x0000000000000400UL, 403 LINFO_AUTOHIGHLIGHT = 0x0000000000000800UL, 404 LINFO_REVERSEHIGHLIGHT = 0x0000000000001000UL, 405 LINFO_WRAPMODE = 0x0000000000008000UL, 406 LINFO_SHOWAMPERSAND = 0x0000000000010000UL, 407 LINFO_NONE = 0UL; 408 409 struct FarListInfo 410 { 411 size_t StructSize; 412 FARLISTINFOFLAGS Flags; 413 size_t ItemsNumber; 414 intptr_t SelectPos; 415 intptr_t TopPos; 416 intptr_t MaxHeight; 417 intptr_t MaxLength; 418 } 419 420 struct FarListItemData 421 { 422 size_t StructSize; 423 intptr_t Index; 424 size_t DataSize; 425 void* Data; 426 } 427 428 struct FarList 429 { 430 size_t StructSize; 431 size_t ItemsNumber; 432 FarListItem* Items; 433 } 434 435 struct FarListTitles 436 { 437 size_t StructSize; 438 size_t TitleSize; 439 const(wchar)* Title; 440 size_t BottomSize; 441 const(wchar)* Bottom; 442 } 443 444 struct FarDialogItemColors 445 { 446 size_t StructSize; 447 ulong Flags; 448 size_t ColorsCount; 449 FarColor* Colors; 450 } 451 452 struct FAR_CHAR_INFO 453 { 454 wchar Char; 455 FarColor Attributes; 456 } 457 458 struct FarDialogItem 459 { 460 FARDIALOGITEMTYPES Type; 461 intptr_t X1,Y1,X2,Y2; 462 union 463 { 464 intptr_t Selected; 465 FarList* ListItems; 466 FAR_CHAR_INFO* VBuf; 467 intptr_t Reserved0; 468 } 469 const(wchar)* History; 470 const(wchar)* Mask; 471 FARDIALOGITEMFLAGS Flags; 472 const(wchar)* Data; 473 size_t MaxLength; // terminate 0 not included (if == 0 string size is unlimited) 474 intptr_t UserData; 475 intptr_t[2] Reserved; 476 } 477 478 struct FarDialogItemData 479 { 480 size_t StructSize; 481 size_t PtrLength; 482 wchar* PtrData; 483 } 484 485 struct FarDialogEvent 486 { 487 size_t StructSize; 488 HANDLE hDlg; 489 intptr_t Msg; 490 intptr_t Param1; 491 void* Param2; 492 intptr_t Result; 493 } 494 495 struct OpenDlgPluginData 496 { 497 size_t StructSize; 498 HANDLE hDlg; 499 } 500 501 struct DialogInfo 502 { 503 size_t StructSize; 504 GUID Id; 505 GUID Owner; 506 } 507 508 struct FarGetDialogItem 509 { 510 size_t StructSize; 511 size_t Size; 512 FarDialogItem* Item; 513 } 514 515 alias FARDIALOGFLAGS = ulong; 516 const FARDIALOGFLAGS 517 FDLG_WARNING = 0x0000000000000001UL, 518 FDLG_SMALLDIALOG = 0x0000000000000002UL, 519 FDLG_NODRAWSHADOW = 0x0000000000000004UL, 520 FDLG_NODRAWPANEL = 0x0000000000000008UL, 521 FDLG_KEEPCONSOLETITLE = 0x0000000000000010UL, 522 FDLG_NONMODAL = 0x0000000000000020UL, 523 FDLG_NONE = 0UL; 524 525 alias FARWINDOWPROC = extern (Windows) intptr_t function(HANDLE hDlg, intptr_t Msg, intptr_t Param1, void* Param2); 526 527 alias FARAPISENDDLGMESSAGE = extern (Windows) intptr_t function(HANDLE hDlg, intptr_t Msg, intptr_t Param1, void* Param2); 528 529 alias FARAPIDEFDLGPROC = extern (Windows) intptr_t function(HANDLE hDlg, intptr_t Msg, intptr_t Param1, void* Param2); 530 531 alias FARAPIDIALOGINIT = extern (Windows) HANDLE function( 532 in GUID* PluginId, 533 in GUID* Id, 534 intptr_t X1, 535 intptr_t Y1, 536 intptr_t X2, 537 intptr_t Y2, 538 in wchar* HelpTopic, 539 in FarDialogItem* Item, 540 size_t ItemsNumber, 541 intptr_t Reserved, 542 FARDIALOGFLAGS Flags, 543 FARWINDOWPROC DlgProc, 544 void* Param); 545 546 alias FARAPIDIALOGRUN = extern (Windows) intptr_t function(HANDLE hDlg); 547 548 alias FARAPIDIALOGFREE = extern (Windows) void function(HANDLE hDlg); 549 550 struct FarKey 551 { 552 WORD VirtualKeyCode; 553 DWORD ControlKeyState; 554 } 555 556 alias MENUITEMFLAGS = ulong; 557 const MENUITEMFLAGS 558 MIF_SELECTED = 0x0000000000010000UL, 559 MIF_CHECKED = 0x0000000000020000UL, 560 MIF_SEPARATOR = 0x0000000000040000UL, 561 MIF_DISABLE = 0x0000000000080000UL, 562 MIF_GRAYED = 0x0000000000100000UL, 563 MIF_HIDDEN = 0x0000000000200000UL, 564 MIF_NONE = 0UL; 565 566 struct FarMenuItem 567 { 568 MENUITEMFLAGS Flags; 569 const(wchar)* Text; 570 FarKey AccelKey; 571 intptr_t UserData; 572 intptr_t[2] Reserved; 573 } 574 575 alias FARMENUFLAGS = ulong; 576 const FARMENUFLAGS 577 FMENU_SHOWAMPERSAND = 0x0000000000000001UL, 578 FMENU_WRAPMODE = 0x0000000000000002UL, 579 FMENU_AUTOHIGHLIGHT = 0x0000000000000004UL, 580 FMENU_REVERSEAUTOHIGHLIGHT = 0x0000000000000008UL, 581 FMENU_CHANGECONSOLETITLE = 0x0000000000000010UL, 582 FMENU_SHOWNOBOX = 0x0000000000000020UL, 583 FMENU_SHOWSHORTBOX = 0x0000000000000040UL, 584 FMENU_SHOWSINGLEBOX = 0x0000000000000080UL, 585 FMENU_NODRAWSHADOW = 0x0000000000000100UL, 586 FMENU_NONE = 0UL; 587 588 alias FARAPIMENU = extern (Windows) intptr_t function( 589 in GUID* PluginId, 590 in GUID* Id, 591 intptr_t X, 592 intptr_t Y, 593 intptr_t MaxHeight, 594 const FARMENUFLAGS Flags, 595 in wchar* Title, 596 in wchar* Bottom, 597 in wchar* HelpTopic, 598 in FarKey* BreakKeys, 599 intptr_t* BreakCode, 600 in FarMenuItem* Item, 601 size_t ItemsNumber); 602 603 alias PLUGINPANELITEMFLAGS = ulong; 604 const PLUGINPANELITEMFLAGS 605 PPIF_SELECTED = 0x0000000040000000UL, 606 PPIF_PROCESSDESCR = 0x0000000080000000UL, 607 PPIF_NONE = 0UL; 608 609 struct FarPanelItemFreeInfo 610 { 611 size_t StructSize; 612 HANDLE hPlugin; 613 } 614 615 alias FARPANELITEMFREECALLBACK = extern (Windows) void function( 616 void* UserData, 617 in FarPanelItemFreeInfo* Info); 618 619 struct UserDataItem 620 { 621 void* Data; 622 FARPANELITEMFREECALLBACK FreeData; 623 } 624 625 struct PluginPanelItem 626 { 627 FILETIME CreationTime; 628 FILETIME LastAccessTime; 629 FILETIME LastWriteTime; 630 FILETIME ChangeTime; 631 ulong FileSize; 632 ulong AllocationSize; 633 const(wchar)* FileName; 634 const(wchar)* AlternateFileName; 635 const(wchar)* Description; 636 const(wchar)* Owner; 637 const(wchar*)* CustomColumnData; 638 size_t CustomColumnNumber; 639 PLUGINPANELITEMFLAGS Flags; 640 UserDataItem UserData; 641 uintptr_t FileAttributes; 642 uintptr_t NumberOfLinks; 643 uintptr_t CRC32; 644 intptr_t[2] Reserved; 645 } 646 647 struct FarGetPluginPanelItem 648 { 649 size_t StructSize; 650 size_t Size; 651 PluginPanelItem* Item; 652 } 653 654 struct SortingPanelItem 655 { 656 FILETIME CreationTime; 657 FILETIME LastAccessTime; 658 FILETIME LastWriteTime; 659 FILETIME ChangeTime; 660 ulong FileSize; 661 ulong AllocationSize; 662 const(wchar)* FileName; 663 const(wchar)* AlternateFileName; 664 const(wchar)* Description; 665 const(wchar)* Owner; 666 const(wchar*)* CustomColumnData; 667 size_t CustomColumnNumber; 668 PLUGINPANELITEMFLAGS Flags; 669 UserDataItem UserData; 670 uintptr_t FileAttributes; 671 uintptr_t NumberOfLinks; 672 uintptr_t CRC32; 673 intptr_t Position; 674 intptr_t SortGroup; 675 uintptr_t NumberOfStreams; 676 ulong StreamsSize; 677 } 678 679 alias PANELINFOFLAGS = ulong; 680 const PANELINFOFLAGS 681 PFLAGS_SHOWHIDDEN = 0x0000000000000001UL, 682 PFLAGS_HIGHLIGHT = 0x0000000000000002UL, 683 PFLAGS_REVERSESORTORDER = 0x0000000000000004UL, 684 PFLAGS_USESORTGROUPS = 0x0000000000000008UL, 685 PFLAGS_SELECTEDFIRST = 0x0000000000000010UL, 686 PFLAGS_REALNAMES = 0x0000000000000020UL, 687 PFLAGS_PANELLEFT = 0x0000000000000080UL, 688 PFLAGS_DIRECTORIESFIRST = 0x0000000000000100UL, 689 PFLAGS_USECRC32 = 0x0000000000000200UL, 690 PFLAGS_PLUGIN = 0x0000000000000800UL, 691 PFLAGS_VISIBLE = 0x0000000000001000UL, 692 PFLAGS_FOCUS = 0x0000000000002000UL, 693 PFLAGS_ALTERNATIVENAMES = 0x0000000000004000UL, 694 PFLAGS_SHORTCUT = 0x0000000000008000UL, 695 PFLAGS_NONE = 0UL; 696 697 enum PANELINFOTYPE 698 { 699 PTYPE_FILEPANEL = 0, 700 PTYPE_TREEPANEL = 1, 701 PTYPE_QVIEWPANEL = 2, 702 PTYPE_INFOPANEL = 3, 703 } 704 705 enum OPENPANELINFO_SORTMODES 706 { 707 SM_DEFAULT = 0, 708 SM_UNSORTED = 1, 709 SM_NAME = 2, 710 SM_EXT = 3, 711 SM_MTIME = 4, 712 SM_CTIME = 5, 713 SM_ATIME = 6, 714 SM_SIZE = 7, 715 SM_DESCR = 8, 716 SM_OWNER = 9, 717 SM_COMPRESSEDSIZE = 10, 718 SM_NUMLINKS = 11, 719 SM_NUMSTREAMS = 12, 720 SM_STREAMSSIZE = 13, 721 SM_FULLNAME = 14, 722 SM_CHTIME = 15, 723 724 SM_COUNT 725 } 726 727 struct PanelInfo 728 { 729 size_t StructSize; 730 HANDLE PluginHandle; 731 GUID OwnerGuid; 732 PANELINFOFLAGS Flags; 733 size_t ItemsNumber; 734 size_t SelectedItemsNumber; 735 RECT PanelRect; 736 size_t CurrentItem; 737 size_t TopPanelItem; 738 intptr_t ViewMode; 739 PANELINFOTYPE PanelType; 740 OPENPANELINFO_SORTMODES SortMode; 741 } 742 743 struct PanelRedrawInfo 744 { 745 size_t StructSize; 746 size_t CurrentItem; 747 size_t TopPanelItem; 748 } 749 750 struct CmdLineSelect 751 { 752 size_t StructSize; 753 intptr_t SelStart; 754 intptr_t SelEnd; 755 } 756 757 struct FarPanelDirectory 758 { 759 size_t StructSize; 760 const(wchar)* Name; 761 const(wchar)* Param; 762 GUID PluginId; 763 const(wchar)* File; 764 } 765 766 const PANEL_NONE = cast(HANDLE)-1; 767 const PANEL_ACTIVE = cast(HANDLE)-1; 768 const PANEL_PASSIVE = cast(HANDLE)-2; 769 const PANEL_STOP = cast(HANDLE)-1; 770 771 enum FILE_CONTROL_COMMANDS 772 { 773 FCTL_CLOSEPANEL = 0, 774 FCTL_GETPANELINFO = 1, 775 FCTL_UPDATEPANEL = 2, 776 FCTL_REDRAWPANEL = 3, 777 FCTL_GETCMDLINE = 4, 778 FCTL_SETCMDLINE = 5, 779 FCTL_SETSELECTION = 6, 780 FCTL_SETVIEWMODE = 7, 781 FCTL_INSERTCMDLINE = 8, 782 FCTL_SETUSERSCREEN = 9, 783 FCTL_SETPANELDIRECTORY = 10, 784 FCTL_SETCMDLINEPOS = 11, 785 FCTL_GETCMDLINEPOS = 12, 786 FCTL_SETSORTMODE = 13, 787 FCTL_SETSORTORDER = 14, 788 FCTL_SETCMDLINESELECTION = 15, 789 FCTL_GETCMDLINESELECTION = 16, 790 FCTL_CHECKPANELSEXIST = 17, 791 FCTL_GETUSERSCREEN = 19, 792 FCTL_ISACTIVEPANEL = 20, 793 FCTL_GETPANELITEM = 21, 794 FCTL_GETSELECTEDPANELITEM = 22, 795 FCTL_GETCURRENTPANELITEM = 23, 796 FCTL_GETPANELDIRECTORY = 24, 797 FCTL_GETCOLUMNTYPES = 25, 798 FCTL_GETCOLUMNWIDTHS = 26, 799 FCTL_BEGINSELECTION = 27, 800 FCTL_ENDSELECTION = 28, 801 FCTL_CLEARSELECTION = 29, 802 FCTL_SETDIRECTORIESFIRST = 30, 803 FCTL_GETPANELFORMAT = 31, 804 FCTL_GETPANELHOSTFILE = 32, 805 FCTL_GETPANELPREFIX = 34, 806 FCTL_SETACTIVEPANEL = 35, 807 } 808 809 alias FARAPITEXT = extern (Windows) void function( 810 intptr_t X, 811 intptr_t Y, 812 in FarColor* Color, 813 in wchar* Str); 814 815 alias FARAPISAVESCREEN = extern (Windows) HANDLE function(intptr_t X1, intptr_t Y1, intptr_t X2, intptr_t Y2); 816 817 alias FARAPIRESTORESCREEN = extern (Windows) void function(HANDLE hScreen); 818 819 alias FARAPIFREESCREEN = extern (Windows) void function(HANDLE hScreen); 820 821 alias FARAPIGETDIRLIST = extern (Windows) intptr_t function( 822 in wchar* Dir, 823 PluginPanelItem** pPanelItem, 824 size_t* pItemsNumber); 825 826 alias FARAPIGETPLUGINDIRLIST = extern (Windows) intptr_t function( 827 in GUID* PluginId, 828 HANDLE hPanel, 829 in wchar* Dir, 830 PluginPanelItem** pPanelItem, 831 size_t* pItemsNumber); 832 833 alias FARAPIFREEDIRLIST = extern (Windows) void function(PluginPanelItem* PanelItem, size_t nItemsNumber); 834 835 alias FARAPIFREEPLUGINDIRLIST = extern (Windows) void function(HANDLE hPanel, PluginPanelItem* PanelItem, size_t nItemsNumber); 836 837 alias VIEWER_FLAGS = ulong; 838 const VIEWER_FLAGS 839 VF_NONMODAL = 0x0000000000000001UL, 840 VF_DELETEONCLOSE = 0x0000000000000002UL, 841 VF_ENABLE_F6 = 0x0000000000000004UL, 842 VF_DISABLEHISTORY = 0x0000000000000008UL, 843 VF_IMMEDIATERETURN = 0x0000000000000100UL, 844 VF_DELETEONLYFILEONCLOSE = 0x0000000000000200UL, 845 VF_NONE = 0UL; 846 847 alias FARAPIVIEWER = extern (Windows) intptr_t function( 848 in wchar* FileName, 849 in wchar* Title, 850 intptr_t X1, 851 intptr_t Y1, 852 intptr_t X2, 853 intptr_t Y2, 854 VIEWER_FLAGS Flags, 855 uintptr_t CodePage); 856 857 alias EDITOR_FLAGS = ulong; 858 const EDITOR_FLAGS 859 EF_NONMODAL = 0x0000000000000001UL, 860 EF_CREATENEW = 0x0000000000000002UL, 861 EF_ENABLE_F6 = 0x0000000000000004UL, 862 EF_DISABLEHISTORY = 0x0000000000000008UL, 863 EF_DELETEONCLOSE = 0x0000000000000010UL, 864 EF_IMMEDIATERETURN = 0x0000000000000100UL, 865 EF_DELETEONLYFILEONCLOSE = 0x0000000000000200UL, 866 EF_LOCKED = 0x0000000000000400UL, 867 EF_DISABLESAVEPOS = 0x0000000000000800UL, 868 EF_OPENMODE_MASK = 0x00000000F0000000UL, 869 EF_OPENMODE_QUERY = 0x0000000000000000UL, 870 EF_OPENMODE_NEWIFOPEN = 0x0000000010000000UL, 871 EF_OPENMODE_USEEXISTING = 0x0000000020000000UL, 872 EF_OPENMODE_BREAKIFOPEN = 0x0000000030000000UL, 873 EF_OPENMODE_RELOADIFOPEN = 0x0000000040000000UL, 874 EN_NONE = 0UL; 875 876 enum EDITOR_EXITCODE 877 { 878 EEC_OPEN_ERROR = 0, 879 EEC_MODIFIED = 1, 880 EEC_NOT_MODIFIED = 2, 881 EEC_LOADING_INTERRUPTED = 3, 882 } 883 884 alias FARAPIEDITOR = extern (Windows) intptr_t function( 885 in wchar* FileName, 886 in wchar* Title, 887 intptr_t X1, 888 intptr_t Y1, 889 intptr_t X2, 890 intptr_t Y2, 891 EDITOR_FLAGS Flags, 892 int StartLine, 893 int StartChar, 894 uintptr_t CodePage); 895 896 alias FARAPIGETMSG = extern (Windows) const(wchar)* function( 897 in GUID* PluginId, 898 intptr_t MsgId); 899 900 alias FARHELPFLAGS = ulong; 901 const FARHELPFLAGS 902 FHELP_NOSHOWERROR = 0x0000000080000000UL, 903 FHELP_SELFHELP = 0x0000000000000000UL, 904 FHELP_FARHELP = 0x0000000000000001UL, 905 FHELP_CUSTOMFILE = 0x0000000000000002UL, 906 FHELP_CUSTOMPATH = 0x0000000000000004UL, 907 FHELP_GUID = 0x0000000000000008UL, 908 FHELP_USECONTENTS = 0x0000000040000000UL, 909 FHELP_NONE = 0UL; 910 911 alias FARAPISHOWHELP = extern (Windows) BOOL function( 912 in wchar* ModuleName, 913 in wchar* Topic, 914 FARHELPFLAGS Flags); 915 916 enum ADVANCED_CONTROL_COMMANDS 917 { 918 ACTL_GETFARMANAGERVERSION = 0, 919 ACTL_WAITKEY = 2, 920 ACTL_GETCOLOR = 3, 921 ACTL_GETARRAYCOLOR = 4, 922 ACTL_GETWINDOWINFO = 6, 923 ACTL_GETWINDOWCOUNT = 7, 924 ACTL_SETCURRENTWINDOW = 8, 925 ACTL_COMMIT = 9, 926 ACTL_GETFARHWND = 10, 927 ACTL_SETARRAYCOLOR = 16, 928 ACTL_REDRAWALL = 19, 929 ACTL_SYNCHRO = 20, 930 ACTL_SETPROGRESSSTATE = 21, 931 ACTL_SETPROGRESSVALUE = 22, 932 ACTL_QUIT = 23, 933 ACTL_GETFARRECT = 24, 934 ACTL_GETCURSORPOS = 25, 935 ACTL_SETCURSORPOS = 26, 936 ACTL_PROGRESSNOTIFY = 27, 937 ACTL_GETWINDOWTYPE = 28, 938 } 939 940 enum FAR_MACRO_CONTROL_COMMANDS 941 { 942 MCTL_LOADALL = 0, 943 MCTL_SAVEALL = 1, 944 MCTL_SENDSTRING = 2, 945 MCTL_GETSTATE = 5, 946 MCTL_GETAREA = 6, 947 MCTL_ADDMACRO = 7, 948 MCTL_DELMACRO = 8, 949 MCTL_GETLASTERROR = 9, 950 MCTL_EXECSTRING = 10, 951 } 952 953 alias FARKEYMACROFLAGS = ulong; 954 const FARKEYMACROFLAGS 955 KMFLAGS_SILENTCHECK = 0x0000000000000001UL, 956 KMFLAGS_NOSENDKEYSTOPLUGINS = 0x0000000000000002UL, 957 KMFLAGS_ENABLEOUTPUT = 0x0000000000000004UL, 958 KMFLAGS_LANGMASK = 0x0000000000000070UL, // 3 bits reserved for 8 languages 959 KMFLAGS_LUA = 0x0000000000000000UL, 960 KMFLAGS_MOONSCRIPT = 0x0000000000000010UL, 961 KMFLAGS_NONE = 0UL; 962 963 enum FARMACROSENDSTRINGCOMMAND 964 { 965 MSSC_POST =0, 966 MSSC_CHECK =2, 967 } 968 969 enum FARMACROAREA 970 { 971 MACROAREA_OTHER = 0, // Reserved 972 MACROAREA_SHELL = 1, // File panels 973 MACROAREA_VIEWER = 2, // Internal viewer program 974 MACROAREA_EDITOR = 3, // Editor 975 MACROAREA_DIALOG = 4, // Dialogs 976 MACROAREA_SEARCH = 5, // Quick search in panels 977 MACROAREA_DISKS = 6, // Menu of disk selection 978 MACROAREA_MAINMENU = 7, // Main menu 979 MACROAREA_MENU = 8, // Other menus 980 MACROAREA_HELP = 9, // Help system 981 MACROAREA_INFOPANEL = 10, // Info panel 982 MACROAREA_QVIEWPANEL = 11, // Quick view panel 983 MACROAREA_TREEPANEL = 12, // Folders tree panel 984 MACROAREA_FINDFOLDER = 13, // Find folder 985 MACROAREA_USERMENU = 14, // User menu 986 MACROAREA_SHELLAUTOCOMPLETION = 15, // Autocompletion list in command line 987 MACROAREA_DIALOGAUTOCOMPLETION = 16, // Autocompletion list in dialogs 988 MACROAREA_GRABBER = 17, // Mode of copying text from the screen 989 MACROAREA_DESKTOP = 18, // Desktop 990 991 MACROAREA_COMMON = 255, 992 } 993 994 enum FARMACROSTATE 995 { 996 MACROSTATE_NOMACRO = 0, 997 MACROSTATE_EXECUTING = 1, 998 MACROSTATE_EXECUTING_COMMON = 2, 999 MACROSTATE_RECORDING = 3, 1000 MACROSTATE_RECORDING_COMMON = 4, 1001 } 1002 1003 enum FARMACROPARSEERRORCODE 1004 { 1005 MPEC_SUCCESS = 0, 1006 MPEC_ERROR = 1, 1007 } 1008 1009 struct MacroParseResult 1010 { 1011 size_t StructSize; 1012 DWORD ErrCode; 1013 COORD ErrPos; 1014 const(wchar)* ErrSrc; 1015 } 1016 1017 struct MacroSendMacroText 1018 { 1019 size_t StructSize; 1020 FARKEYMACROFLAGS Flags; 1021 INPUT_RECORD AKey; 1022 const(wchar)* SequenceText; 1023 } 1024 1025 alias FARADDKEYMACROFLAGS = ulong; 1026 const FARADDKEYMACROFLAGS AKMFLAGS_NONE = 0UL; 1027 1028 alias FARMACROCALLBACK = extern (Windows) intptr_t function(void* Id, FARADDKEYMACROFLAGS Flags); 1029 1030 struct MacroAddMacro 1031 { 1032 size_t StructSize; 1033 void* Id; 1034 const(wchar)* SequenceText; 1035 const(wchar)* Description; 1036 FARKEYMACROFLAGS Flags; 1037 INPUT_RECORD AKey; 1038 FARMACROAREA Area; 1039 FARMACROCALLBACK Callback; 1040 intptr_t Priority; 1041 } 1042 1043 enum FARMACROVARTYPE 1044 { 1045 FMVT_UNKNOWN = 0, 1046 FMVT_INTEGER = 1, 1047 FMVT_STRING = 2, 1048 FMVT_DOUBLE = 3, 1049 FMVT_BOOLEAN = 4, 1050 FMVT_BINARY = 5, 1051 FMVT_POINTER = 6, 1052 FMVT_NIL = 7, 1053 FMVT_ARRAY = 8, 1054 FMVT_PANEL = 9, 1055 FMVT_ERROR = 10, 1056 } 1057 1058 struct FarMacroValueBinary 1059 { 1060 void* Data; 1061 size_t Size; 1062 } 1063 1064 struct FarMacroValueArray 1065 { 1066 FarMacroValue* Values; 1067 size_t Count; 1068 } 1069 1070 struct FarMacroValue 1071 { 1072 FARMACROVARTYPE Type = FARMACROVARTYPE.FMVT_NIL; 1073 union 1074 { 1075 long Integer; 1076 long Boolean; 1077 double Double; 1078 const(wchar)* String; 1079 void* Pointer; 1080 FarMacroValueBinary Binary; 1081 FarMacroValueArray Array; 1082 } 1083 1084 this(int v) { Type=FARMACROVARTYPE.FMVT_INTEGER; Integer=v; } 1085 this(uint v) { Type=FARMACROVARTYPE.FMVT_INTEGER; Integer=v; } 1086 this(long v) { Type=FARMACROVARTYPE.FMVT_INTEGER; Integer=v; } 1087 this(ulong v) { Type=FARMACROVARTYPE.FMVT_INTEGER; Integer=v; } 1088 this(bool v) { Type=FARMACROVARTYPE.FMVT_BOOLEAN; Boolean=v; } 1089 this(double v) { Type=FARMACROVARTYPE.FMVT_DOUBLE; Double=v; } 1090 this(const(wchar)* v) { Type=FARMACROVARTYPE.FMVT_STRING; String=v; } 1091 this(void* v) { Type=FARMACROVARTYPE.FMVT_POINTER; Pointer=v; } 1092 this(ref const GUID v) { Type=FARMACROVARTYPE.FMVT_BINARY; Binary.Data=cast(void*)&v; Binary.Size=GUID.sizeof; } 1093 this(FarMacroValue* arr,size_t count) { Type=FARMACROVARTYPE.FMVT_ARRAY; Array.Values=arr; Array.Count=count; } 1094 } 1095 1096 struct FarMacroCall 1097 { 1098 size_t StructSize; 1099 size_t Count; 1100 FarMacroValue* Values; 1101 extern (Windows) void function(void* CallbackData, FarMacroValue* Values, size_t Count) Callback; 1102 void* CallbackData; 1103 } 1104 1105 struct FarGetValue 1106 { 1107 size_t StructSize; 1108 intptr_t Type; 1109 FarMacroValue Value; 1110 } 1111 1112 struct MacroExecuteString 1113 { 1114 size_t StructSize; 1115 FARKEYMACROFLAGS Flags; 1116 const(wchar)* SequenceText; 1117 size_t InCount; 1118 FarMacroValue* InValues; 1119 size_t OutCount; 1120 const(FarMacroValue)* OutValues; 1121 } 1122 1123 struct FarMacroLoad 1124 { 1125 size_t StructSize; 1126 const(wchar)* Path; 1127 ulong Flags; 1128 } 1129 1130 alias FARSETCOLORFLAGS = ulong; 1131 const FARSETCOLORFLAGS 1132 FSETCLR_REDRAW = 0x0000000000000001UL, 1133 FSETCLR_NONE = 0UL; 1134 1135 struct FarSetColors 1136 { 1137 size_t StructSize; 1138 FARSETCOLORFLAGS Flags; 1139 size_t StartIndex; 1140 size_t ColorsCount; 1141 FarColor* Colors; 1142 } 1143 1144 enum WINDOWINFO_TYPE 1145 { 1146 WTYPE_UNKNOWN = -1, 1147 WTYPE_DESKTOP = 0, 1148 WTYPE_PANELS = 1, 1149 WTYPE_VIEWER = 2, 1150 WTYPE_EDITOR = 3, 1151 WTYPE_DIALOG = 4, 1152 WTYPE_VMENU = 5, 1153 WTYPE_HELP = 6, 1154 WTYPE_COMBOBOX = 7, 1155 WTYPE_GRABBER = 8, 1156 WTYPE_HMENU = 9, 1157 } 1158 1159 alias WINDOWINFO_FLAGS = ulong; 1160 const WINDOWINFO_FLAGS 1161 WIF_MODIFIED = 0x0000000000000001UL, 1162 WIF_CURRENT = 0x0000000000000002UL, 1163 WIF_MODAL = 0x0000000000000004UL, 1164 WIF_NONE = 0; 1165 1166 struct WindowInfo 1167 { 1168 size_t StructSize; 1169 intptr_t Id; 1170 wchar* TypeName; 1171 wchar* Name; 1172 intptr_t TypeNameSize; 1173 intptr_t NameSize; 1174 intptr_t Pos; 1175 WINDOWINFO_TYPE Type; 1176 WINDOWINFO_FLAGS Flags; 1177 } 1178 1179 struct WindowType 1180 { 1181 size_t StructSize; 1182 WINDOWINFO_TYPE Type; 1183 } 1184 1185 enum TASKBARPROGRESSTATE 1186 { 1187 TBPS_NOPROGRESS =0x0, 1188 TBPS_INDETERMINATE=0x1, 1189 TBPS_NORMAL =0x2, 1190 TBPS_ERROR =0x4, 1191 TBPS_PAUSED =0x8, 1192 } 1193 1194 struct ProgressValue 1195 { 1196 size_t StructSize; 1197 ulong Completed; 1198 ulong Total; 1199 } 1200 1201 enum VIEWER_CONTROL_COMMANDS 1202 { 1203 VCTL_GETINFO = 0, 1204 VCTL_QUIT = 1, 1205 VCTL_REDRAW = 2, 1206 VCTL_SETKEYBAR = 3, 1207 VCTL_SETPOSITION = 4, 1208 VCTL_SELECT = 5, 1209 VCTL_SETMODE = 6, 1210 VCTL_GETFILENAME = 7, 1211 } 1212 1213 alias VIEWER_OPTIONS = ulong; 1214 const VIEWER_OPTIONS 1215 VOPT_SAVEFILEPOSITION = 0x0000000000000001UL, 1216 VOPT_AUTODETECTCODEPAGE = 0x0000000000000002UL, 1217 VOPT_SHOWTITLEBAR = 0x0000000000000004UL, 1218 VOPT_SHOWKEYBAR = 0x0000000000000008UL, 1219 VOPT_SHOWSCROLLBAR = 0x0000000000000010UL, 1220 VOPT_QUICKVIEW = 0x0000000000000020UL, 1221 VOPT_NONE = 0UL; 1222 1223 enum VIEWER_SETMODE_TYPES 1224 { 1225 VSMT_VIEWMODE = 0, 1226 VSMT_WRAP = 1, 1227 VSMT_WORDWRAP = 2, 1228 } 1229 1230 alias VIEWER_SETMODEFLAGS_TYPES = ulong; 1231 const VIEWER_SETMODEFLAGS_TYPES 1232 VSMFL_REDRAW = 0x0000000000000001UL, 1233 VSMFL_NONE = 0; 1234 1235 struct ViewerSetMode 1236 { 1237 size_t StructSize; 1238 VIEWER_SETMODE_TYPES Type; 1239 union 1240 { 1241 intptr_t iParam; 1242 wchar* wszParam; 1243 } 1244 VIEWER_SETMODEFLAGS_TYPES Flags; 1245 } 1246 1247 struct ViewerSelect 1248 { 1249 size_t StructSize; 1250 long BlockStartPos; 1251 long BlockLen; 1252 } 1253 1254 alias VIEWER_SETPOS_FLAGS = ulong; 1255 const VIEWER_SETPOS_FLAGS 1256 VSP_NOREDRAW = 0x0000000000000001UL, 1257 VSP_PERCENT = 0x0000000000000002UL, 1258 VSP_RELATIVE = 0x0000000000000004UL, 1259 VSP_NORETNEWPOS = 0x0000000000000008UL, 1260 VSP_NONE = 0; 1261 1262 struct ViewerSetPosition 1263 { 1264 size_t StructSize; 1265 VIEWER_SETPOS_FLAGS Flags; 1266 long StartPos; 1267 long LeftPos; 1268 } 1269 1270 alias VIEWER_MODE_FLAGS = ulong; 1271 const VIEWER_MODE_FLAGS 1272 VMF_WRAP = 0x0000000000000001UL, 1273 VMF_WORDWRAP = 0x0000000000000002UL, 1274 VMF_NONE = 0; 1275 1276 enum VIEWER_MODE_TYPE 1277 { 1278 VMT_TEXT =0, 1279 VMT_HEX =1, 1280 VMT_DUMP =2, 1281 } 1282 1283 struct ViewerMode 1284 { 1285 uintptr_t CodePage; 1286 VIEWER_MODE_FLAGS Flags; 1287 VIEWER_MODE_TYPE ViewMode; 1288 } 1289 1290 struct ViewerInfo 1291 { 1292 size_t StructSize; 1293 intptr_t ViewerID; 1294 intptr_t TabSize; 1295 ViewerMode CurMode; 1296 long FileSize; 1297 long FilePos; 1298 long LeftPos; 1299 VIEWER_OPTIONS Options; 1300 intptr_t WindowSizeX; 1301 intptr_t WindowSizeY; 1302 } 1303 1304 enum VIEWER_EVENTS 1305 { 1306 VE_READ =0, 1307 VE_CLOSE =1, 1308 1309 VE_GOTFOCUS =6, 1310 VE_KILLFOCUS =7, 1311 } 1312 1313 enum EDITOR_EVENTS 1314 { 1315 EE_READ =0, 1316 EE_SAVE =1, 1317 EE_REDRAW =2, 1318 EE_CLOSE =3, 1319 1320 EE_GOTFOCUS =6, 1321 EE_KILLFOCUS =7, 1322 EE_CHANGE =8, 1323 } 1324 1325 enum DIALOG_EVENTS 1326 { 1327 DE_DLGPROCINIT =0, 1328 DE_DEFDLGPROCINIT =1, 1329 DE_DLGPROCEND =2, 1330 } 1331 1332 enum SYNCHRO_EVENTS 1333 { 1334 SE_COMMONSYNCHRO =0, 1335 } 1336 1337 const EEREDRAW_ALL = cast(void*)0; 1338 const CURRENT_EDITOR = -1; 1339 1340 enum EDITOR_CONTROL_COMMANDS 1341 { 1342 ECTL_GETSTRING = 0, 1343 ECTL_SETSTRING = 1, 1344 ECTL_INSERTSTRING = 2, 1345 ECTL_DELETESTRING = 3, 1346 ECTL_DELETECHAR = 4, 1347 ECTL_INSERTTEXT = 5, 1348 ECTL_GETINFO = 6, 1349 ECTL_SETPOSITION = 7, 1350 ECTL_SELECT = 8, 1351 ECTL_REDRAW = 9, 1352 ECTL_TABTOREAL = 10, 1353 ECTL_REALTOTAB = 11, 1354 ECTL_EXPANDTABS = 12, 1355 ECTL_SETTITLE = 13, 1356 ECTL_READINPUT = 14, 1357 ECTL_PROCESSINPUT = 15, 1358 ECTL_ADDCOLOR = 16, 1359 ECTL_GETCOLOR = 17, 1360 ECTL_SAVEFILE = 18, 1361 ECTL_QUIT = 19, 1362 ECTL_SETKEYBAR = 20, 1363 1364 ECTL_SETPARAM = 22, 1365 ECTL_GETBOOKMARKS = 23, 1366 ECTL_DELETEBLOCK = 25, 1367 ECTL_ADDSESSIONBOOKMARK = 26, 1368 ECTL_PREVSESSIONBOOKMARK = 27, 1369 ECTL_NEXTSESSIONBOOKMARK = 28, 1370 ECTL_CLEARSESSIONBOOKMARKS = 29, 1371 ECTL_DELETESESSIONBOOKMARK = 30, 1372 ECTL_GETSESSIONBOOKMARKS = 31, 1373 ECTL_UNDOREDO = 32, 1374 ECTL_GETFILENAME = 33, 1375 ECTL_DELCOLOR = 34, 1376 ECTL_SUBSCRIBECHANGEEVENT = 36, 1377 ECTL_UNSUBSCRIBECHANGEEVENT = 37, 1378 ECTL_GETTITLE = 38, 1379 } 1380 1381 enum EDITOR_SETPARAMETER_TYPES 1382 { 1383 ESPT_TABSIZE = 0, 1384 ESPT_EXPANDTABS = 1, 1385 ESPT_AUTOINDENT = 2, 1386 ESPT_CURSORBEYONDEOL = 3, 1387 ESPT_CHARCODEBASE = 4, 1388 ESPT_CODEPAGE = 5, 1389 ESPT_SAVEFILEPOSITION = 6, 1390 ESPT_LOCKMODE = 7, 1391 ESPT_SETWORDDIV = 8, 1392 ESPT_GETWORDDIV = 9, 1393 ESPT_SHOWWHITESPACE = 10, 1394 ESPT_SETBOM = 11, 1395 } 1396 1397 struct EditorSetParameter 1398 { 1399 size_t StructSize; 1400 EDITOR_SETPARAMETER_TYPES Type; 1401 union 1402 { 1403 intptr_t iParam; 1404 wchar* wszParam; 1405 intptr_t Reserved; 1406 } 1407 ulong Flags; 1408 size_t Size; 1409 } 1410 1411 enum EDITOR_UNDOREDO_COMMANDS 1412 { 1413 EUR_BEGIN = 0, 1414 EUR_END = 1, 1415 EUR_UNDO = 2, 1416 EUR_REDO = 3, 1417 } 1418 1419 struct EditorUndoRedo 1420 { 1421 size_t StructSize; 1422 EDITOR_UNDOREDO_COMMANDS Command; 1423 } 1424 1425 struct EditorGetString 1426 { 1427 size_t StructSize; 1428 intptr_t StringNumber; 1429 intptr_t StringLength; 1430 const(wchar)* StringText; 1431 const(wchar)* StringEOL; 1432 intptr_t SelStart; 1433 intptr_t SelEnd; 1434 } 1435 1436 struct EditorSetString 1437 { 1438 size_t StructSize; 1439 intptr_t StringNumber; 1440 intptr_t StringLength; 1441 const(wchar)* StringText; 1442 const(wchar)* StringEOL; 1443 } 1444 1445 enum EXPAND_TABS 1446 { 1447 EXPAND_NOTABS = 0, 1448 EXPAND_ALLTABS = 1, 1449 EXPAND_NEWTABS = 2, 1450 } 1451 1452 enum EDITOR_OPTIONS 1453 { 1454 EOPT_EXPANDALLTABS = 0x00000001, 1455 EOPT_PERSISTENTBLOCKS = 0x00000002, 1456 EOPT_DELREMOVESBLOCKS = 0x00000004, 1457 EOPT_AUTOINDENT = 0x00000008, 1458 EOPT_SAVEFILEPOSITION = 0x00000010, 1459 EOPT_AUTODETECTCODEPAGE= 0x00000020, 1460 EOPT_CURSORBEYONDEOL = 0x00000040, 1461 EOPT_EXPANDONLYNEWTABS = 0x00000080, 1462 EOPT_SHOWWHITESPACE = 0x00000100, 1463 EOPT_BOM = 0x00000200, 1464 EOPT_SHOWLINEBREAK = 0x00000400, 1465 EOPT_SHOWTITLEBAR = 0x00000800, 1466 EOPT_SHOWKEYBAR = 0x00001000, 1467 EOPT_SHOWSCROLLBAR = 0x00002000, 1468 } 1469 1470 enum EDITOR_BLOCK_TYPES 1471 { 1472 BTYPE_NONE = 0, 1473 BTYPE_STREAM = 1, 1474 BTYPE_COLUMN = 2, 1475 } 1476 1477 enum EDITOR_CURRENTSTATE 1478 { 1479 ECSTATE_MODIFIED = 0x00000001, 1480 ECSTATE_SAVED = 0x00000002, 1481 ECSTATE_LOCKED = 0x00000004, 1482 } 1483 1484 struct EditorInfo 1485 { 1486 size_t StructSize; 1487 intptr_t EditorID; 1488 intptr_t WindowSizeX; 1489 intptr_t WindowSizeY; 1490 intptr_t TotalLines; 1491 intptr_t CurLine; 1492 intptr_t CurPos; 1493 intptr_t CurTabPos; 1494 intptr_t TopScreenLine; 1495 intptr_t LeftPos; 1496 intptr_t Overtype; 1497 intptr_t BlockType; 1498 intptr_t BlockStartLine; 1499 uintptr_t Options; 1500 intptr_t TabSize; 1501 size_t BookmarkCount; 1502 size_t SessionBookmarkCount; 1503 uintptr_t CurState; 1504 uintptr_t CodePage; 1505 } 1506 1507 struct EditorBookmarks 1508 { 1509 size_t StructSize; 1510 size_t Size; 1511 size_t Count; 1512 intptr_t* Line; 1513 intptr_t* Cursor; 1514 intptr_t* ScreenLine; 1515 intptr_t* LeftPos; 1516 } 1517 1518 struct EditorSetPosition 1519 { 1520 size_t StructSize; 1521 intptr_t CurLine; 1522 intptr_t CurPos; 1523 intptr_t CurTabPos; 1524 intptr_t TopScreenLine; 1525 intptr_t LeftPos; 1526 intptr_t Overtype; 1527 } 1528 1529 struct EditorSelect 1530 { 1531 size_t StructSize; 1532 intptr_t BlockType; 1533 intptr_t BlockStartLine; 1534 intptr_t BlockStartPos; 1535 intptr_t BlockWidth; 1536 intptr_t BlockHeight; 1537 } 1538 1539 struct EditorConvertPos 1540 { 1541 size_t StructSize; 1542 intptr_t StringNumber; 1543 intptr_t SrcPos; 1544 intptr_t DestPos; 1545 } 1546 1547 1548 alias EDITORCOLORFLAGS = ulong; 1549 const EDITORCOLORFLAGS 1550 ECF_TABMARKFIRST = 0x0000000000000001UL, 1551 ECF_TABMARKCURRENT = 0x0000000000000002UL, 1552 ECF_AUTODELETE = 0x0000000000000004UL, 1553 ECF_NONE = 0; 1554 1555 struct EditorColor 1556 { 1557 size_t StructSize; 1558 intptr_t StringNumber; 1559 intptr_t ColorItem; 1560 intptr_t StartPos; 1561 intptr_t EndPos; 1562 uintptr_t Priority; 1563 EDITORCOLORFLAGS Flags; 1564 FarColor Color; 1565 GUID Owner; 1566 } 1567 1568 struct EditorDeleteColor 1569 { 1570 size_t StructSize; 1571 GUID Owner; 1572 intptr_t StringNumber; 1573 intptr_t StartPos; 1574 } 1575 1576 const EDITOR_COLOR_NORMAL_PRIORITY = 0x80000000U; 1577 1578 struct EditorSaveFile 1579 { 1580 size_t StructSize; 1581 const(wchar)* FileName; 1582 const(wchar)* FileEOL; 1583 uintptr_t CodePage; 1584 } 1585 1586 enum EDITOR_CHANGETYPE 1587 { 1588 ECTYPE_CHANGED = 0, 1589 ECTYPE_ADDED = 1, 1590 ECTYPE_DELETED = 2, 1591 } 1592 1593 struct EditorChange 1594 { 1595 size_t StructSize; 1596 EDITOR_CHANGETYPE Type; 1597 intptr_t StringNumber; 1598 } 1599 1600 struct EditorSubscribeChangeEvent 1601 { 1602 size_t StructSize; 1603 GUID PluginId; 1604 } 1605 1606 alias INPUTBOXFLAGS = ulong; 1607 const INPUTBOXFLAGS 1608 FIB_ENABLEEMPTY = 0x0000000000000001UL, 1609 FIB_PASSWORD = 0x0000000000000002UL, 1610 FIB_EXPANDENV = 0x0000000000000004UL, 1611 FIB_NOUSELASTHISTORY = 0x0000000000000008UL, 1612 FIB_BUTTONS = 0x0000000000000010UL, 1613 FIB_NOAMPERSAND = 0x0000000000000020UL, 1614 FIB_EDITPATH = 0x0000000000000040UL, 1615 FIB_EDITPATHEXEC = 0x0000000000000080UL, 1616 FIB_NONE = 0UL; 1617 1618 alias FARAPIINPUTBOX = extern (Windows) intptr_t function( 1619 in GUID* PluginId, 1620 in GUID* Id, 1621 in wchar* Title, 1622 in wchar* SubTitle, 1623 in wchar* HistoryName, 1624 in wchar* SrcText, 1625 wchar* DestText, 1626 size_t DestSize, 1627 in wchar* HelpTopic, 1628 INPUTBOXFLAGS Flags); 1629 1630 enum FAR_PLUGINS_CONTROL_COMMANDS 1631 { 1632 PCTL_LOADPLUGIN = 0, 1633 PCTL_UNLOADPLUGIN = 1, 1634 PCTL_FORCEDLOADPLUGIN = 2, 1635 PCTL_FINDPLUGIN = 3, 1636 PCTL_GETPLUGININFORMATION = 4, 1637 PCTL_GETPLUGINS = 5, 1638 } 1639 1640 enum FAR_PLUGIN_LOAD_TYPE 1641 { 1642 PLT_PATH = 0, 1643 } 1644 1645 enum FAR_PLUGIN_FIND_TYPE 1646 { 1647 PFM_GUID = 0, 1648 PFM_MODULENAME = 1, 1649 } 1650 1651 alias FAR_PLUGIN_FLAGS = ulong; 1652 const FAR_PLUGIN_FLAGS 1653 FPF_LOADED = 0x0000000000000001UL, 1654 FPF_ANSI = 0x1000000000000000UL, 1655 FPF_NONE = 0UL; 1656 1657 enum FAR_FILE_FILTER_CONTROL_COMMANDS 1658 { 1659 FFCTL_CREATEFILEFILTER = 0, 1660 FFCTL_FREEFILEFILTER = 1, 1661 FFCTL_OPENFILTERSMENU = 2, 1662 FFCTL_STARTINGTOFILTER = 3, 1663 FFCTL_ISFILEINFILTER = 4, 1664 } 1665 1666 enum FAR_FILE_FILTER_TYPE 1667 { 1668 FFT_PANEL = 0, 1669 FFT_FINDFILE = 1, 1670 FFT_COPY = 2, 1671 FFT_SELECT = 3, 1672 FFT_CUSTOM = 4, 1673 } 1674 1675 enum FAR_REGEXP_CONTROL_COMMANDS 1676 { 1677 RECTL_CREATE = 0, 1678 RECTL_FREE = 1, 1679 RECTL_COMPILE = 2, 1680 RECTL_OPTIMIZE = 3, 1681 RECTL_MATCHEX = 4, 1682 RECTL_SEARCHEX = 5, 1683 RECTL_BRACKETSCOUNT = 6, 1684 } 1685 1686 struct RegExpMatch 1687 { 1688 intptr_t start,end; 1689 } 1690 1691 struct RegExpSearch 1692 { 1693 const(wchar)* Text; 1694 intptr_t Position; 1695 intptr_t Length; 1696 RegExpMatch* Match; 1697 intptr_t Count; 1698 void* Reserved; 1699 } 1700 1701 enum FAR_SETTINGS_CONTROL_COMMANDS 1702 { 1703 SCTL_CREATE = 0, 1704 SCTL_FREE = 1, 1705 SCTL_SET = 2, 1706 SCTL_GET = 3, 1707 SCTL_ENUM = 4, 1708 SCTL_DELETE = 5, 1709 SCTL_CREATESUBKEY = 6, 1710 SCTL_OPENSUBKEY = 7, 1711 } 1712 1713 enum FARSETTINGSTYPES 1714 { 1715 FST_UNKNOWN = 0, 1716 FST_SUBKEY = 1, 1717 FST_QWORD = 2, 1718 FST_STRING = 3, 1719 FST_DATA = 4, 1720 } 1721 1722 enum FARSETTINGS_SUBFOLDERS 1723 { 1724 FSSF_ROOT = 0, 1725 FSSF_HISTORY_CMD = 1, 1726 FSSF_HISTORY_FOLDER = 2, 1727 FSSF_HISTORY_VIEW = 3, 1728 FSSF_HISTORY_EDIT = 4, 1729 FSSF_HISTORY_EXTERNAL = 5, 1730 FSSF_FOLDERSHORTCUT_0 = 6, 1731 FSSF_FOLDERSHORTCUT_1 = 7, 1732 FSSF_FOLDERSHORTCUT_2 = 8, 1733 FSSF_FOLDERSHORTCUT_3 = 9, 1734 FSSF_FOLDERSHORTCUT_4 = 10, 1735 FSSF_FOLDERSHORTCUT_5 = 11, 1736 FSSF_FOLDERSHORTCUT_6 = 12, 1737 FSSF_FOLDERSHORTCUT_7 = 13, 1738 FSSF_FOLDERSHORTCUT_8 = 14, 1739 FSSF_FOLDERSHORTCUT_9 = 15, 1740 FSSF_CONFIRMATIONS = 16, 1741 FSSF_SYSTEM = 17, 1742 FSSF_PANEL = 18, 1743 FSSF_EDITOR = 19, 1744 FSSF_SCREEN = 20, 1745 FSSF_DIALOG = 21, 1746 FSSF_INTERFACE = 22, 1747 FSSF_PANELLAYOUT = 23, 1748 } 1749 1750 enum FAR_PLUGIN_SETTINGS_LOCATION 1751 { 1752 PSL_ROAMING = 0, 1753 PSL_LOCAL = 1, 1754 } 1755 1756 struct FarSettingsCreate 1757 { 1758 size_t StructSize; 1759 GUID Guid; 1760 HANDLE Handle; 1761 } 1762 1763 struct FarSettingsItemData 1764 { 1765 size_t Size; 1766 const(void)* Data; 1767 } 1768 1769 struct FarSettingsItem 1770 { 1771 size_t StructSize; 1772 size_t Root; 1773 const(wchar)* Name; 1774 FARSETTINGSTYPES Type; 1775 union 1776 { 1777 ulong Number; 1778 const(wchar)* String; 1779 FarSettingsItemData Data; 1780 } 1781 } 1782 1783 struct FarSettingsName 1784 { 1785 const(wchar)* Name; 1786 FARSETTINGSTYPES Type; 1787 } 1788 1789 struct FarSettingsHistory 1790 { 1791 const(wchar)* Name; 1792 const(wchar)* Param; 1793 GUID PluginId; 1794 const(wchar)* File; 1795 FILETIME Time; 1796 BOOL Lock; 1797 } 1798 1799 struct FarSettingsEnum 1800 { 1801 size_t StructSize; 1802 size_t Root; 1803 size_t Count; 1804 union 1805 { 1806 const(FarSettingsName)* Items; 1807 const(FarSettingsHistory)* Histories; 1808 } 1809 } 1810 1811 struct FarSettingsValue 1812 { 1813 size_t StructSize; 1814 size_t Root; 1815 const(wchar)* Value; 1816 } 1817 1818 alias FARAPIPANELCONTROL = extern (Windows) intptr_t function(HANDLE hPanel, FILE_CONTROL_COMMANDS Command, intptr_t Param1, void* Param2); 1819 1820 alias FARAPIADVCONTROL = extern (Windows) intptr_t function( 1821 in GUID* PluginId, 1822 ADVANCED_CONTROL_COMMANDS Command, 1823 intptr_t Param1, 1824 void* Param2); 1825 1826 alias FARAPIVIEWERCONTROL = extern (Windows) intptr_t function(intptr_t ViewerID, VIEWER_CONTROL_COMMANDS Command, intptr_t Param1, void* Param2); 1827 1828 alias FARAPIEDITORCONTROL = extern (Windows) intptr_t function(intptr_t EditorID, EDITOR_CONTROL_COMMANDS Command, intptr_t Param1, void* Param2); 1829 1830 alias FARAPIMACROCONTROL = extern (Windows) intptr_t function( 1831 in GUID* PluginId, 1832 FAR_MACRO_CONTROL_COMMANDS Command, 1833 intptr_t Param1, 1834 void* Param2); 1835 1836 alias FARAPIPLUGINSCONTROL = extern (Windows) intptr_t function(HANDLE hHandle, FAR_PLUGINS_CONTROL_COMMANDS Command, intptr_t Param1, void* Param2); 1837 1838 alias FARAPIFILEFILTERCONTROL = extern (Windows) intptr_t function(HANDLE hHandle, FAR_FILE_FILTER_CONTROL_COMMANDS Command, intptr_t Param1, void* Param2); 1839 1840 alias FARAPIREGEXPCONTROL = extern (Windows) intptr_t function(HANDLE hHandle, FAR_REGEXP_CONTROL_COMMANDS Command, intptr_t Param1, void* Param2); 1841 1842 alias FARAPISETTINGSCONTROL = extern (Windows) intptr_t function(HANDLE hHandle, FAR_SETTINGS_CONTROL_COMMANDS Command, intptr_t Param1, void* Param2); 1843 1844 enum FARCLIPBOARD_TYPE 1845 { 1846 FCT_ANY=0, 1847 FCT_STREAM=1, 1848 FCT_COLUMN=2 1849 } 1850 1851 alias FARSTDSPRINTF = extern (C) int function(wchar* Buffer, in wchar* Format, ...); 1852 1853 alias FARSTDSNPRINTF = extern (C) int function(wchar* Buffer, size_t Sizebuf, in wchar* Format, ...); 1854 1855 alias FARSTDSSCANF = extern (C) int function(in wchar* Buffer, in wchar* Format, ...); 1856 1857 alias FARSTDQSORT = extern (Windows) void function(void* base, size_t nelem, size_t width, int function(in void* , in void* , void* userparam)fcmp, void* userparam); 1858 1859 alias FARSTDBSEARCH = extern (Windows) void* function(in void* key, in void* base, size_t nelem, size_t width, int function(in void* , in void* , void* userparam)fcmp, void* userparam); 1860 1861 alias FARSTDGETFILEOWNER = extern (Windows) size_t function(in wchar* Computer, in wchar* Name, wchar* Owner, size_t Size); 1862 1863 alias FARSTDGETNUMBEROFLINKS = extern (Windows) size_t function(in wchar* Name); 1864 1865 alias FARSTDATOI = extern (Windows) int function(in wchar* s); 1866 1867 alias FARSTDATOI64 = extern (Windows) long function(in wchar* s); 1868 1869 alias FARSTDITOA64 = extern (Windows) wchar* function(long value, wchar* Str, int radix); 1870 1871 alias FARSTDITOA = extern (Windows) wchar* function(int value, wchar* Str, int radix); 1872 1873 alias FARSTDLTRIM = extern (Windows) wchar* function(wchar* Str); 1874 1875 alias FARSTDRTRIM = extern (Windows) wchar* function(wchar* Str); 1876 1877 alias FARSTDTRIM = extern (Windows) wchar* function(wchar* Str); 1878 1879 alias FARSTDTRUNCSTR = extern (Windows) wchar* function(wchar* Str, intptr_t MaxLength); 1880 1881 alias FARSTDTRUNCPATHSTR = extern (Windows) wchar* function(wchar* Str, intptr_t MaxLength); 1882 1883 alias FARSTDQUOTESPACEONLY = extern (Windows) wchar* function(wchar* Str); 1884 1885 alias FARSTDPOINTTONAME = extern (Windows) const(wchar)* function(in wchar* Path); 1886 1887 alias FARSTDADDENDSLASH = extern (Windows) BOOL function(wchar* Path); 1888 1889 alias FARSTDCOPYTOCLIPBOARD = extern (Windows) BOOL function(FARCLIPBOARD_TYPE Type, in wchar* Data); 1890 1891 alias FARSTDPASTEFROMCLIPBOARD = extern (Windows) size_t function(FARCLIPBOARD_TYPE Type, wchar* Data, size_t Size); 1892 1893 alias FARSTDLOCALISLOWER = extern (Windows) int function(wchar Ch); 1894 1895 alias FARSTDLOCALISUPPER = extern (Windows) int function(wchar Ch); 1896 1897 alias FARSTDLOCALISALPHA = extern (Windows) int function(wchar Ch); 1898 1899 alias FARSTDLOCALISALPHANUM = extern (Windows) int function(wchar Ch); 1900 1901 alias FARSTDLOCALUPPER = extern (Windows) wchar function(wchar LowerChar); 1902 1903 alias FARSTDLOCALLOWER = extern (Windows) wchar function(wchar UpperChar); 1904 1905 alias FARSTDLOCALUPPERBUF = extern (Windows) void function(wchar* Buf, intptr_t Length); 1906 1907 alias FARSTDLOCALLOWERBUF = extern (Windows) void function(wchar* Buf, intptr_t Length); 1908 1909 alias FARSTDLOCALSTRUPR = extern (Windows) void function(wchar* s1); 1910 1911 alias FARSTDLOCALSTRLWR = extern (Windows) void function(wchar* s1); 1912 1913 deprecated 1914 alias FARSTDLOCALSTRICMP = extern (Windows) int function(in wchar* s1, in wchar* s2); 1915 1916 deprecated 1917 alias FARSTDLOCALSTRNICMP = extern (Windows) int function(in wchar* s1, in wchar* s2, intptr_t n); 1918 1919 alias FARSTDFARCLOCK = extern (Windows) ulong function(); 1920 1921 alias FARSTDCOMPARESTRINGS = extern (Windows) int function(in wchar* Str1, size_t Size1, in wchar* Str2, size_t Size2); 1922 1923 alias PROCESSNAME_FLAGS = ulong; 1924 const PROCESSNAME_FLAGS 1925 // 0xFFFF - length 1926 // 0xFF0000 - mode 1927 // 0xFFFFFFFFFF000000 - flags 1928 PN_CMPNAME = 0x0000000000000000UL, 1929 PN_CMPNAMELIST = 0x0000000000010000UL, 1930 PN_GENERATENAME = 0x0000000000020000UL, 1931 PN_CHECKMASK = 0x0000000000030000UL, 1932 PN_SKIPPATH = 0x0000000001000000UL, 1933 PN_SHOWERRORMESSAGE = 0x0000000002000000UL, 1934 PN_NONE = 0; 1935 1936 alias FARSTDPROCESSNAME = extern (Windows) size_t function( 1937 in wchar* param1, 1938 wchar* param2, 1939 size_t size, 1940 PROCESSNAME_FLAGS flags); 1941 1942 alias FARSTDUNQUOTE = extern (Windows) void function(wchar* Str); 1943 1944 alias XLAT_FLAGS = ulong; 1945 const XLAT_FLAGS 1946 XLAT_SWITCHKEYBLAYOUT = 0x0000000000000001UL, 1947 XLAT_SWITCHKEYBBEEP = 0x0000000000000002UL, 1948 XLAT_USEKEYBLAYOUTNAME = 0x0000000000000004UL, 1949 XLAT_CONVERTALLCMDLINE = 0x0000000000010000UL, 1950 XLAT_NONE = 0UL; 1951 1952 alias FARSTDINPUTRECORDTOKEYNAME = extern (Windows) size_t function( 1953 in INPUT_RECORD* Key, 1954 wchar* KeyText, 1955 size_t Size); 1956 1957 alias FARSTDXLAT = extern (Windows) wchar* function(wchar* Line, intptr_t StartPos, intptr_t EndPos, XLAT_FLAGS Flags); 1958 1959 alias FARSTDKEYNAMETOINPUTRECORD = extern (Windows) BOOL function( 1960 in wchar* Name, 1961 INPUT_RECORD* Key); 1962 1963 alias FRSUSERFUNC = extern (Windows) int function( 1964 in PluginPanelItem* FData, 1965 in wchar* FullName, 1966 void* Param); 1967 1968 alias FRSMODE = ulong; 1969 const FRSMODE 1970 FRS_RETUPDIR = 0x0000000000000001UL, 1971 FRS_RECUR = 0x0000000000000002UL, 1972 FRS_SCANSYMLINK = 0x0000000000000004UL, 1973 FRS_NONE = 0; 1974 1975 alias FARSTDRECURSIVESEARCH = extern (Windows) void function( 1976 in wchar* InitDir, 1977 in wchar* Mask, 1978 FRSUSERFUNC Func, 1979 FRSMODE Flags, 1980 void* Param); 1981 1982 alias FARSTDMKTEMP = extern (Windows) size_t function( 1983 wchar* Dest, 1984 size_t DestSize, 1985 in wchar* Prefix); 1986 1987 alias FARSTDGETPATHROOT = extern (Windows) size_t function( 1988 in wchar* Path, 1989 wchar* Root, 1990 size_t DestSize); 1991 1992 enum LINK_TYPE 1993 { 1994 LINK_HARDLINK = 1, 1995 LINK_JUNCTION = 2, 1996 LINK_VOLMOUNT = 3, 1997 LINK_SYMLINKFILE = 4, 1998 LINK_SYMLINKDIR = 5, 1999 LINK_SYMLINK = 6, 2000 } 2001 2002 alias MKLINK_FLAGS = ulong; 2003 const MKLINK_FLAGS 2004 MLF_SHOWERRMSG = 0x0000000000010000UL, 2005 MLF_DONOTUPDATEPANEL = 0x0000000000020000UL, 2006 MLF_HOLDTARGET = 0x0000000000040000UL, 2007 MLF_NONE = 0UL; 2008 2009 alias FARSTDMKLINK = extern (Windows) BOOL function( 2010 in wchar* Src, 2011 in wchar* Dest, 2012 LINK_TYPE Type, 2013 MKLINK_FLAGS Flags); 2014 2015 alias FARGETREPARSEPOINTINFO = extern (Windows) size_t function( 2016 in wchar* Src, 2017 wchar* Dest, 2018 size_t DestSize); 2019 2020 enum CONVERTPATHMODES 2021 { 2022 CPM_FULL = 0, 2023 CPM_REAL = 1, 2024 CPM_NATIVE = 2, 2025 } 2026 2027 alias FARCONVERTPATH = extern (Windows) size_t function( 2028 CONVERTPATHMODES Mode, 2029 in wchar* Src, 2030 wchar* Dest, 2031 size_t DestSize); 2032 2033 alias FARGETCURRENTDIRECTORY = extern (Windows) size_t function(size_t Size, wchar* Buffer); 2034 2035 alias FARFORMATFILESIZEFLAGS = ulong; 2036 const FARFORMATFILESIZEFLAGS 2037 FFFS_COMMAS = 0x0100000000000000UL, 2038 FFFS_FLOATSIZE = 0x0200000000000000UL, 2039 FFFS_SHOWBYTESINDEX = 0x0400000000000000UL, 2040 FFFS_ECONOMIC = 0x0800000000000000UL, 2041 FFFS_THOUSAND = 0x1000000000000000UL, 2042 FFFS_MINSIZEINDEX = 0x2000000000000000UL, 2043 FFFS_MINSIZEINDEX_MASK = 0x0000000000000003UL, 2044 FFFS_NONE = 0; 2045 2046 alias FARFORMATFILESIZE = extern (Windows) size_t function(ulong Size, intptr_t Width, FARFORMATFILESIZEFLAGS Flags, wchar* Dest, size_t DestSize); 2047 2048 struct FarStandardFunctions 2049 { 2050 size_t StructSize; 2051 FARSTDATOI atoi; 2052 FARSTDATOI64 atoi64; 2053 FARSTDITOA itoa; 2054 FARSTDITOA64 itoa64; 2055 FARSTDSPRINTF sprintf; 2056 FARSTDSSCANF sscanf; 2057 FARSTDQSORT qsort; 2058 FARSTDBSEARCH bsearch; 2059 FARSTDSNPRINTF snprintf; 2060 FARSTDLOCALISLOWER LIsLower; 2061 FARSTDLOCALISUPPER LIsUpper; 2062 FARSTDLOCALISALPHA LIsAlpha; 2063 FARSTDLOCALISALPHANUM LIsAlphanum; 2064 FARSTDLOCALUPPER LUpper; 2065 FARSTDLOCALLOWER LLower; 2066 FARSTDLOCALUPPERBUF LUpperBuf; 2067 FARSTDLOCALLOWERBUF LLowerBuf; 2068 FARSTDLOCALSTRUPR LStrupr; 2069 FARSTDLOCALSTRLWR LStrlwr; 2070 deprecated FARSTDLOCALSTRICMP LStricmp; 2071 deprecated FARSTDLOCALSTRNICMP LStrnicmp; 2072 FARSTDUNQUOTE Unquote; 2073 FARSTDLTRIM LTrim; 2074 FARSTDRTRIM RTrim; 2075 FARSTDTRIM Trim; 2076 FARSTDTRUNCSTR TruncStr; 2077 FARSTDTRUNCPATHSTR TruncPathStr; 2078 FARSTDQUOTESPACEONLY QuoteSpaceOnly; 2079 FARSTDPOINTTONAME PointToName; 2080 FARSTDGETPATHROOT GetPathRoot; 2081 FARSTDADDENDSLASH AddEndSlash; 2082 FARSTDCOPYTOCLIPBOARD CopyToClipboard; 2083 FARSTDPASTEFROMCLIPBOARD PasteFromClipboard; 2084 FARSTDINPUTRECORDTOKEYNAME FarInputRecordToName; 2085 FARSTDKEYNAMETOINPUTRECORD FarNameToInputRecord; 2086 FARSTDXLAT XLat; 2087 FARSTDGETFILEOWNER GetFileOwner; 2088 FARSTDGETNUMBEROFLINKS GetNumberOfLinks; 2089 FARSTDRECURSIVESEARCH FarRecursiveSearch; 2090 FARSTDMKTEMP MkTemp; 2091 FARSTDPROCESSNAME ProcessName; 2092 FARSTDMKLINK MkLink; 2093 FARCONVERTPATH ConvertPath; 2094 FARGETREPARSEPOINTINFO GetReparsePointInfo; 2095 FARGETCURRENTDIRECTORY GetCurrentDirectory; 2096 FARFORMATFILESIZE FormatFileSize; 2097 FARSTDFARCLOCK FarClock; 2098 FARSTDCOMPARESTRINGS CompareStrings; 2099 } 2100 alias FARSTANDARDFUNCTIONS = FarStandardFunctions; 2101 2102 struct PluginStartupInfo 2103 { 2104 size_t StructSize; 2105 const(wchar)* ModuleName; 2106 FARAPIMENU Menu; 2107 FARAPIMESSAGE Message; 2108 FARAPIGETMSG GetMsg; 2109 FARAPIPANELCONTROL PanelControl; 2110 FARAPISAVESCREEN SaveScreen; 2111 FARAPIRESTORESCREEN RestoreScreen; 2112 FARAPIGETDIRLIST GetDirList; 2113 FARAPIGETPLUGINDIRLIST GetPluginDirList; 2114 FARAPIFREEDIRLIST FreeDirList; 2115 FARAPIFREEPLUGINDIRLIST FreePluginDirList; 2116 FARAPIVIEWER Viewer; 2117 FARAPIEDITOR Editor; 2118 FARAPITEXT Text; 2119 FARAPIEDITORCONTROL EditorControl; 2120 FARSTANDARDFUNCTIONS* FSF; 2121 FARAPISHOWHELP ShowHelp; 2122 FARAPIADVCONTROL AdvControl; 2123 FARAPIINPUTBOX InputBox; 2124 FARAPICOLORDIALOG ColorDialog; 2125 FARAPIDIALOGINIT DialogInit; 2126 FARAPIDIALOGRUN DialogRun; 2127 FARAPIDIALOGFREE DialogFree; 2128 FARAPISENDDLGMESSAGE SendDlgMessage; 2129 FARAPIDEFDLGPROC DefDlgProc; 2130 FARAPIVIEWERCONTROL ViewerControl; 2131 FARAPIPLUGINSCONTROL PluginsControl; 2132 FARAPIFILEFILTERCONTROL FileFilterControl; 2133 FARAPIREGEXPCONTROL RegExpControl; 2134 FARAPIMACROCONTROL MacroControl; 2135 FARAPISETTINGSCONTROL SettingsControl; 2136 const(void)* Private; 2137 void* Instance; 2138 FARAPIFREESCREEN FreeScreen; 2139 } 2140 2141 alias FARAPICREATEFILE = extern (Windows) HANDLE function( 2142 in wchar* Object, 2143 DWORD DesiredAccess, 2144 DWORD ShareMode, 2145 LPSECURITY_ATTRIBUTES SecurityAttributes, 2146 DWORD CreationDistribution, 2147 DWORD FlagsAndAttributes, 2148 HANDLE TemplateFile); 2149 2150 alias FARAPIGETFILEATTRIBUTES = extern (Windows) DWORD function(in wchar* FileName); 2151 2152 alias FARAPISETFILEATTRIBUTES = extern (Windows) BOOL function( 2153 in wchar* FileName, 2154 DWORD dwFileAttributes); 2155 2156 alias FARAPIMOVEFILEEX = extern (Windows) BOOL function( 2157 in wchar* ExistingFileName, 2158 in wchar* NewFileName, 2159 DWORD dwFlags); 2160 2161 alias FARAPIDELETEFILE = extern (Windows) BOOL function(in wchar* FileName); 2162 2163 alias FARAPIREMOVEDIRECTORY = extern (Windows) BOOL function(in wchar* DirName); 2164 2165 alias FARAPICREATEDIRECTORY = extern (Windows) BOOL function( 2166 in wchar* PathName, 2167 LPSECURITY_ATTRIBUTES lpSecurityAttributes); 2168 2169 struct ArclitePrivateInfo 2170 { 2171 size_t StructSize; 2172 FARAPICREATEFILE CreateFile; 2173 FARAPIGETFILEATTRIBUTES GetFileAttributes; 2174 FARAPISETFILEATTRIBUTES SetFileAttributes; 2175 FARAPIMOVEFILEEX MoveFileEx; 2176 FARAPIDELETEFILE DeleteFile; 2177 FARAPIREMOVEDIRECTORY RemoveDirectory; 2178 FARAPICREATEDIRECTORY CreateDirectory; 2179 } 2180 2181 struct NetBoxPrivateInfo 2182 { 2183 size_t StructSize; 2184 FARAPICREATEFILE CreateFile; 2185 FARAPIGETFILEATTRIBUTES GetFileAttributes; 2186 FARAPISETFILEATTRIBUTES SetFileAttributes; 2187 FARAPIMOVEFILEEX MoveFileEx; 2188 FARAPIDELETEFILE DeleteFile; 2189 FARAPIREMOVEDIRECTORY RemoveDirectory; 2190 FARAPICREATEDIRECTORY CreateDirectory; 2191 } 2192 2193 struct MacroPluginReturn 2194 { 2195 intptr_t ReturnType; 2196 size_t Count; 2197 FarMacroValue* Values; 2198 } 2199 2200 alias FARAPICALLFAR = extern (Windows) intptr_t function(intptr_t CheckCode, FarMacroCall* Data); 2201 2202 struct MacroPrivateInfo 2203 { 2204 size_t StructSize; 2205 FARAPICALLFAR CallFar; 2206 } 2207 2208 alias PLUGIN_FLAGS = ulong; 2209 const PLUGIN_FLAGS 2210 PF_PRELOAD = 0x0000000000000001UL, 2211 PF_DISABLEPANELS = 0x0000000000000002UL, 2212 PF_EDITOR = 0x0000000000000004UL, 2213 PF_VIEWER = 0x0000000000000008UL, 2214 PF_FULLCMDLINE = 0x0000000000000010UL, 2215 PF_DIALOG = 0x0000000000000020UL, 2216 PF_NONE = 0UL; 2217 2218 struct PluginMenuItem 2219 { 2220 const(GUID)* Guids; 2221 const(wchar*)* Strings; 2222 size_t Count; 2223 } 2224 2225 enum VERSION_STAGE 2226 { 2227 VS_RELEASE = 0, 2228 VS_ALPHA = 1, 2229 VS_BETA = 2, 2230 VS_RC = 3, 2231 VS_SPECIAL = 4, 2232 VS_PRIVATE = 5, 2233 } 2234 2235 struct VersionInfo 2236 { 2237 DWORD Major; 2238 DWORD Minor; 2239 DWORD Revision; 2240 DWORD Build; 2241 VERSION_STAGE Stage; 2242 } 2243 2244 BOOL CheckVersion(in VersionInfo* Current, in VersionInfo* Required) 2245 { 2246 return (Current.Major > Required.Major) 2247 || (Current.Major == Required.Major && Current.Minor > Required.Minor) 2248 || (Current.Major == Required.Major && Current.Minor == Required.Minor && Current.Revision > Required.Revision) 2249 || (Current.Major == Required.Major && Current.Minor == Required.Minor && Current.Revision == Required.Revision && Current.Build >= Required.Build); 2250 } 2251 2252 VersionInfo MakeFarVersion(DWORD Major, DWORD Minor, DWORD Revision, DWORD Build, VERSION_STAGE Stage) 2253 { 2254 return VersionInfo(Major, Minor, Revision, Build, Stage); 2255 } 2256 auto FARMANAGERVERSION() { return MakeFarVersion(FARMANAGERVERSION_MAJOR, FARMANAGERVERSION_MINOR, FARMANAGERVERSION_REVISION, FARMANAGERVERSION_BUILD, FARMANAGERVERSION_STAGE); } 2257 2258 struct GlobalInfo 2259 { 2260 size_t StructSize; 2261 VersionInfo MinFarVersion; 2262 VersionInfo Version; 2263 GUID Guid; 2264 const(wchar)* Title; 2265 const(wchar)* Description; 2266 const(wchar)* Author; 2267 void* Instance; 2268 } 2269 2270 struct PluginInfo 2271 { 2272 size_t StructSize; 2273 PLUGIN_FLAGS Flags; 2274 PluginMenuItem DiskMenu; 2275 PluginMenuItem PluginMenu; 2276 PluginMenuItem PluginConfig; 2277 const(wchar)* CommandPrefix; 2278 void* Instance; 2279 } 2280 2281 struct FarGetPluginInformation 2282 { 2283 size_t StructSize; 2284 const(wchar)* ModuleName; 2285 FAR_PLUGIN_FLAGS Flags; 2286 PluginInfo* PInfo; 2287 GlobalInfo* GInfo; 2288 } 2289 2290 alias INFOPANELLINE_FLAGS = ulong; 2291 const INFOPANELLINE_FLAGS 2292 IPLFLAGS_SEPARATOR = 0x0000000000000001UL, 2293 IPLFLAGS_NONE = 0; 2294 2295 struct InfoPanelLine 2296 { 2297 const(wchar)* Text; 2298 const(wchar)* Data; 2299 INFOPANELLINE_FLAGS Flags; 2300 } 2301 2302 alias PANELMODE_FLAGS = ulong; 2303 const PANELMODE_FLAGS 2304 PMFLAGS_FULLSCREEN = 0x0000000000000001UL, 2305 PMFLAGS_DETAILEDSTATUS = 0x0000000000000002UL, 2306 PMFLAGS_ALIGNEXTENSIONS = 0x0000000000000004UL, 2307 PMFLAGS_CASECONVERSION = 0x0000000000000008UL, 2308 PMFLAGS_NONE = 0; 2309 2310 struct PanelMode 2311 { 2312 const(wchar)* ColumnTypes; 2313 const(wchar)* ColumnWidths; 2314 const(wchar*)* ColumnTitles; 2315 const(wchar)* StatusColumnTypes; 2316 const(wchar)* StatusColumnWidths; 2317 PANELMODE_FLAGS Flags; 2318 } 2319 2320 alias OPENPANELINFO_FLAGS = ulong; 2321 const OPENPANELINFO_FLAGS 2322 OPIF_DISABLEFILTER = 0x0000000000000001UL, 2323 OPIF_DISABLESORTGROUPS = 0x0000000000000002UL, 2324 OPIF_DISABLEHIGHLIGHTING = 0x0000000000000004UL, 2325 OPIF_ADDDOTS = 0x0000000000000008UL, 2326 OPIF_RAWSELECTION = 0x0000000000000010UL, 2327 OPIF_REALNAMES = 0x0000000000000020UL, 2328 OPIF_SHOWNAMESONLY = 0x0000000000000040UL, 2329 OPIF_SHOWRIGHTALIGNNAMES = 0x0000000000000080UL, 2330 OPIF_SHOWPRESERVECASE = 0x0000000000000100UL, 2331 OPIF_COMPAREFATTIME = 0x0000000000000400UL, 2332 OPIF_EXTERNALGET = 0x0000000000000800UL, 2333 OPIF_EXTERNALPUT = 0x0000000000001000UL, 2334 OPIF_EXTERNALDELETE = 0x0000000000002000UL, 2335 OPIF_EXTERNALMKDIR = 0x0000000000004000UL, 2336 OPIF_USEATTRHIGHLIGHTING = 0x0000000000008000UL, 2337 OPIF_USECRC32 = 0x0000000000010000UL, 2338 OPIF_USEFREESIZE = 0x0000000000020000UL, 2339 OPIF_SHORTCUT = 0x0000000000040000UL, 2340 OPIF_NONE = 0UL; 2341 2342 struct KeyBarLabel 2343 { 2344 FarKey Key; 2345 const(wchar)* Text; 2346 const(wchar)* LongText; 2347 } 2348 2349 struct KeyBarTitles 2350 { 2351 size_t CountLabels; 2352 KeyBarLabel* Labels; 2353 } 2354 2355 struct FarSetKeyBarTitles 2356 { 2357 size_t StructSize; 2358 KeyBarTitles* Titles; 2359 } 2360 2361 alias OPERATION_MODES = ulong; 2362 const OPERATION_MODES 2363 OPM_SILENT =0x0000000000000001UL, 2364 OPM_FIND =0x0000000000000002UL, 2365 OPM_VIEW =0x0000000000000004UL, 2366 OPM_EDIT =0x0000000000000008UL, 2367 OPM_TOPLEVEL =0x0000000000000010UL, 2368 OPM_DESCR =0x0000000000000020UL, 2369 OPM_QUICKVIEW =0x0000000000000040UL, 2370 OPM_PGDN =0x0000000000000080UL, 2371 OPM_COMMANDS =0x0000000000000100UL, 2372 OPM_NONE =0UL; 2373 2374 struct OpenPanelInfo 2375 { 2376 size_t StructSize; 2377 HANDLE hPanel; 2378 OPENPANELINFO_FLAGS Flags; 2379 const(wchar)* HostFile; 2380 const(wchar)* CurDir; 2381 const(wchar)* Format; 2382 const(wchar)* PanelTitle; 2383 const(InfoPanelLine)* InfoLines; 2384 size_t InfoLinesNumber; 2385 const(wchar*)* DescrFiles; 2386 size_t DescrFilesNumber; 2387 const(PanelMode)* PanelModesArray; 2388 size_t PanelModesNumber; 2389 intptr_t StartPanelMode; 2390 OPENPANELINFO_SORTMODES StartSortMode; 2391 intptr_t StartSortOrder; 2392 const(KeyBarTitles)* KeyBar; 2393 const(wchar)* ShortcutData; 2394 ulong FreeSize; 2395 UserDataItem UserData; 2396 void* Instance; 2397 } 2398 2399 struct AnalyseInfo 2400 { 2401 size_t StructSize; 2402 const(wchar)* FileName; 2403 void* Buffer; 2404 size_t BufferSize; 2405 OPERATION_MODES OpMode; 2406 void* Instance; 2407 } 2408 2409 struct OpenAnalyseInfo 2410 { 2411 size_t StructSize; 2412 AnalyseInfo* Info; 2413 HANDLE Handle; 2414 } 2415 2416 struct OpenMacroInfo 2417 { 2418 size_t StructSize; 2419 size_t Count; 2420 FarMacroValue* Values; 2421 } 2422 2423 alias FAROPENSHORTCUTFLAGS = ulong; 2424 const FAROPENSHORTCUTFLAGS 2425 FOSF_ACTIVE = 0x0000000000000001UL, 2426 FOSF_NONE = 0; 2427 2428 struct OpenShortcutInfo 2429 { 2430 size_t StructSize; 2431 const(wchar)* HostFile; 2432 const(wchar)* ShortcutData; 2433 FAROPENSHORTCUTFLAGS Flags; 2434 } 2435 2436 struct OpenCommandLineInfo 2437 { 2438 size_t StructSize; 2439 const(wchar)* CommandLine; 2440 } 2441 2442 enum OPENFROM 2443 { 2444 OPEN_LEFTDISKMENU = 0, 2445 OPEN_PLUGINSMENU = 1, 2446 OPEN_FINDLIST = 2, 2447 OPEN_SHORTCUT = 3, 2448 OPEN_COMMANDLINE = 4, 2449 OPEN_EDITOR = 5, 2450 OPEN_VIEWER = 6, 2451 OPEN_FILEPANEL = 7, 2452 OPEN_DIALOG = 8, 2453 OPEN_ANALYSE = 9, 2454 OPEN_RIGHTDISKMENU = 10, 2455 OPEN_FROMMACRO = 11, 2456 OPEN_LUAMACRO = 100, 2457 } 2458 2459 enum MACROCALLTYPE 2460 { 2461 MCT_MACROPARSE = 0, 2462 MCT_LOADMACROS = 1, 2463 MCT_ENUMMACROS = 2, 2464 MCT_WRITEMACROS = 3, 2465 MCT_GETMACRO = 4, 2466 MCT_RECORDEDMACRO = 5, 2467 MCT_DELMACRO = 6, 2468 MCT_RUNSTARTMACRO = 7, 2469 MCT_EXECSTRING = 8, 2470 MCT_PANELSORT = 9, 2471 MCT_GETCUSTOMSORTMODES = 10, 2472 MCT_ADDMACRO = 11, 2473 MCT_KEYMACRO = 12, 2474 MCT_CANPANELSORT = 13, 2475 } 2476 2477 enum MACROPLUGINRETURNTYPE 2478 { 2479 MPRT_NORMALFINISH = 0, 2480 MPRT_ERRORFINISH = 1, 2481 MPRT_ERRORPARSE = 2, 2482 MPRT_KEYS = 3, 2483 MPRT_PRINT = 4, 2484 MPRT_PLUGINCALL = 5, 2485 MPRT_PLUGINMENU = 6, 2486 MPRT_PLUGINCONFIG = 7, 2487 MPRT_PLUGINCOMMAND = 8, 2488 MPRT_USERMENU = 9, 2489 MPRT_HASNOMACRO = 10, 2490 } 2491 2492 struct OpenMacroPluginInfo 2493 { 2494 MACROCALLTYPE CallType; 2495 FarMacroCall* Data; 2496 MacroPluginReturn Ret; 2497 } 2498 2499 enum FAR_EVENTS 2500 { 2501 FE_CHANGEVIEWMODE =0, 2502 FE_REDRAW =1, 2503 FE_IDLE =2, 2504 FE_CLOSE =3, 2505 FE_BREAK =4, 2506 FE_COMMAND =5, 2507 2508 FE_GOTFOCUS =6, 2509 FE_KILLFOCUS =7, 2510 FE_CHANGESORTPARAMS =8, 2511 } 2512 2513 struct OpenInfo 2514 { 2515 size_t StructSize; 2516 OPENFROM OpenFrom; 2517 const(GUID)* Guid; 2518 intptr_t Data; 2519 void* Instance; 2520 } 2521 2522 struct SetDirectoryInfo 2523 { 2524 size_t StructSize; 2525 HANDLE hPanel; 2526 const(wchar)* Dir; 2527 intptr_t Reserved; 2528 OPERATION_MODES OpMode; 2529 UserDataItem UserData; 2530 void* Instance; 2531 } 2532 2533 struct SetFindListInfo 2534 { 2535 size_t StructSize; 2536 HANDLE hPanel; 2537 const(PluginPanelItem)* PanelItem; 2538 size_t ItemsNumber; 2539 void* Instance; 2540 } 2541 2542 struct PutFilesInfo 2543 { 2544 size_t StructSize; 2545 HANDLE hPanel; 2546 PluginPanelItem* PanelItem; 2547 size_t ItemsNumber; 2548 BOOL Move; 2549 const(wchar)* SrcPath; 2550 OPERATION_MODES OpMode; 2551 void* Instance; 2552 } 2553 2554 struct ProcessHostFileInfo 2555 { 2556 size_t StructSize; 2557 HANDLE hPanel; 2558 PluginPanelItem* PanelItem; 2559 size_t ItemsNumber; 2560 OPERATION_MODES OpMode; 2561 void* Instance; 2562 } 2563 2564 struct MakeDirectoryInfo 2565 { 2566 size_t StructSize; 2567 HANDLE hPanel; 2568 const(wchar)* Name; 2569 OPERATION_MODES OpMode; 2570 void* Instance; 2571 } 2572 2573 struct CompareInfo 2574 { 2575 size_t StructSize; 2576 HANDLE hPanel; 2577 const(PluginPanelItem)* Item1; 2578 const(PluginPanelItem)* Item2; 2579 OPENPANELINFO_SORTMODES Mode; 2580 void* Instance; 2581 } 2582 2583 struct GetFindDataInfo 2584 { 2585 size_t StructSize; 2586 HANDLE hPanel; 2587 PluginPanelItem* PanelItem; 2588 size_t ItemsNumber; 2589 OPERATION_MODES OpMode; 2590 void* Instance; 2591 } 2592 2593 struct FreeFindDataInfo 2594 { 2595 size_t StructSize; 2596 HANDLE hPanel; 2597 PluginPanelItem* PanelItem; 2598 size_t ItemsNumber; 2599 void* Instance; 2600 } 2601 2602 struct GetFilesInfo 2603 { 2604 size_t StructSize; 2605 HANDLE hPanel; 2606 PluginPanelItem* PanelItem; 2607 size_t ItemsNumber; 2608 BOOL Move; 2609 const(wchar)* DestPath; 2610 OPERATION_MODES OpMode; 2611 void* Instance; 2612 } 2613 2614 struct DeleteFilesInfo 2615 { 2616 size_t StructSize; 2617 HANDLE hPanel; 2618 PluginPanelItem* PanelItem; 2619 size_t ItemsNumber; 2620 OPERATION_MODES OpMode; 2621 void* Instance; 2622 } 2623 2624 struct ProcessPanelInputInfo 2625 { 2626 size_t StructSize; 2627 HANDLE hPanel; 2628 INPUT_RECORD Rec; 2629 void* Instance; 2630 } 2631 2632 struct ProcessEditorInputInfo 2633 { 2634 size_t StructSize; 2635 INPUT_RECORD Rec; 2636 void* Instance; 2637 } 2638 2639 alias PROCESSCONSOLEINPUT_FLAGS = ulong; 2640 const PROCESSCONSOLEINPUT_FLAGS 2641 PCIF_NONE = 0; 2642 2643 struct ProcessConsoleInputInfo 2644 { 2645 size_t StructSize; 2646 PROCESSCONSOLEINPUT_FLAGS Flags; 2647 INPUT_RECORD Rec; 2648 void* Instance; 2649 } 2650 2651 struct ExitInfo 2652 { 2653 size_t StructSize; 2654 void* Instance; 2655 } 2656 2657 struct ProcessPanelEventInfo 2658 { 2659 size_t StructSize; 2660 intptr_t Event; 2661 void* Param; 2662 HANDLE hPanel; 2663 void* Instance; 2664 } 2665 2666 struct ProcessEditorEventInfo 2667 { 2668 size_t StructSize; 2669 intptr_t Event; 2670 void* Param; 2671 intptr_t EditorID; 2672 void* Instance; 2673 } 2674 2675 struct ProcessDialogEventInfo 2676 { 2677 size_t StructSize; 2678 intptr_t Event; 2679 FarDialogEvent* Param; 2680 void* Instance; 2681 } 2682 2683 struct ProcessSynchroEventInfo 2684 { 2685 size_t StructSize; 2686 intptr_t Event; 2687 void* Param; 2688 void* Instance; 2689 } 2690 2691 struct ProcessViewerEventInfo 2692 { 2693 size_t StructSize; 2694 intptr_t Event; 2695 void* Param; 2696 intptr_t ViewerID; 2697 void* Instance; 2698 } 2699 2700 struct ClosePanelInfo 2701 { 2702 size_t StructSize; 2703 HANDLE hPanel; 2704 void* Instance; 2705 } 2706 2707 struct CloseAnalyseInfo 2708 { 2709 size_t StructSize; 2710 HANDLE Handle; 2711 void* Instance; 2712 } 2713 2714 struct ConfigureInfo 2715 { 2716 size_t StructSize; 2717 const(GUID)* Guid; 2718 void* Instance; 2719 } 2720 2721 struct GetContentFieldsInfo 2722 { 2723 size_t StructSize; 2724 size_t Count; 2725 const(wchar*)* Names; 2726 void* Instance; 2727 } 2728 2729 struct GetContentDataInfo 2730 { 2731 size_t StructSize; 2732 const(wchar)* FilePath; 2733 size_t Count; 2734 const(wchar*)* Names; 2735 const(wchar)** Values; 2736 void* Instance; 2737 } 2738 2739 struct ErrorInfo 2740 { 2741 size_t StructSize; 2742 const(wchar)* Summary; 2743 const(wchar)* Description; 2744 } 2745 2746 GUID FarGuid = {0x00000000, 0x0000, 0x0000, [0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00]}; 2747 2748 // Exported Functions 2749 2750 extern (Windows) HANDLE AnalyseW(in AnalyseInfo* Info); 2751 2752 extern (Windows) void CloseAnalyseW(in CloseAnalyseInfo* Info); 2753 2754 extern (Windows) void ClosePanelW(in ClosePanelInfo* Info); 2755 2756 extern (Windows) intptr_t CompareW(in CompareInfo* Info); 2757 2758 extern (Windows) intptr_t ConfigureW(in ConfigureInfo* Info); 2759 2760 extern (Windows) intptr_t DeleteFilesW(in DeleteFilesInfo* Info); 2761 2762 extern (Windows) void ExitFARW(in ExitInfo* Info); 2763 2764 extern (Windows) void FreeFindDataW(in FreeFindDataInfo* Info); 2765 2766 extern (Windows) intptr_t GetFilesW(GetFilesInfo* Info); 2767 2768 extern (Windows) intptr_t GetFindDataW(GetFindDataInfo* Info); 2769 2770 extern (Windows) void GetGlobalInfoW(GlobalInfo* Info); 2771 2772 extern (Windows) void GetOpenPanelInfoW(OpenPanelInfo* Info); 2773 2774 extern (Windows) void GetPluginInfoW(PluginInfo* Info); 2775 2776 extern (Windows) intptr_t MakeDirectoryW(MakeDirectoryInfo* Info); 2777 2778 extern (Windows) HANDLE OpenW(in OpenInfo* Info); 2779 2780 extern (Windows) intptr_t ProcessDialogEventW(in ProcessDialogEventInfo* Info); 2781 2782 extern (Windows) intptr_t ProcessEditorEventW(in ProcessEditorEventInfo* Info); 2783 2784 extern (Windows) intptr_t ProcessEditorInputW(in ProcessEditorInputInfo* Info); 2785 2786 extern (Windows) intptr_t ProcessPanelEventW(in ProcessPanelEventInfo* Info); 2787 2788 extern (Windows) intptr_t ProcessHostFileW(in ProcessHostFileInfo* Info); 2789 2790 extern (Windows) intptr_t ProcessPanelInputW(in ProcessPanelInputInfo* Info); 2791 2792 extern (Windows) intptr_t ProcessConsoleInputW(ProcessConsoleInputInfo* Info); 2793 2794 extern (Windows) intptr_t ProcessSynchroEventW(in ProcessSynchroEventInfo* Info); 2795 2796 extern (Windows) intptr_t ProcessViewerEventW(in ProcessViewerEventInfo* Info); 2797 2798 extern (Windows) intptr_t PutFilesW(in PutFilesInfo* Info); 2799 2800 extern (Windows) intptr_t SetDirectoryW(in SetDirectoryInfo* Info); 2801 2802 extern (Windows) intptr_t SetFindListW(in SetFindListInfo* Info); 2803 2804 extern (Windows) void SetStartupInfoW(in PluginStartupInfo* Info); 2805 2806 extern (Windows) intptr_t GetContentFieldsW(in GetContentFieldsInfo* Info); 2807 2808 extern (Windows) intptr_t GetContentDataW(GetContentDataInfo* Info); 2809 2810 extern (Windows) void FreeContentDataW(in GetContentDataInfo* Info);