1 /* 2 Plugin API for Far Manager 3.0 build 5656 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 = 5656; 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 DWORD[2] 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 // The low word is reserved for private flags 606 PPIF_SELECTED = 0x0000000040000000UL, 607 PPIF_PROCESSDESCR = 0x0000000080000000UL, 608 PPIF_NONE = 0UL; 609 610 struct FarPanelItemFreeInfo 611 { 612 size_t StructSize; 613 HANDLE hPlugin; 614 } 615 616 alias FARPANELITEMFREECALLBACK = extern (Windows) void function( 617 void* UserData, 618 in FarPanelItemFreeInfo* Info); 619 620 struct UserDataItem 621 { 622 void* Data; 623 FARPANELITEMFREECALLBACK FreeData; 624 } 625 626 struct PluginPanelItem 627 { 628 FILETIME CreationTime; 629 FILETIME LastAccessTime; 630 FILETIME LastWriteTime; 631 FILETIME ChangeTime; 632 ulong FileSize; 633 ulong AllocationSize; 634 const(wchar)* FileName; 635 const(wchar)* AlternateFileName; 636 const(wchar)* Description; 637 const(wchar)* Owner; 638 const(wchar*)* CustomColumnData; 639 size_t CustomColumnNumber; 640 PLUGINPANELITEMFLAGS Flags; 641 UserDataItem UserData; 642 uintptr_t FileAttributes; 643 uintptr_t NumberOfLinks; 644 uintptr_t CRC32; 645 intptr_t[2] Reserved; 646 } 647 648 struct FarGetPluginPanelItem 649 { 650 size_t StructSize; 651 size_t Size; 652 PluginPanelItem* Item; 653 } 654 655 struct SortingPanelItem 656 { 657 FILETIME CreationTime; 658 FILETIME LastAccessTime; 659 FILETIME LastWriteTime; 660 FILETIME ChangeTime; 661 ulong FileSize; 662 ulong AllocationSize; 663 const(wchar)* FileName; 664 const(wchar)* AlternateFileName; 665 const(wchar)* Description; 666 const(wchar)* Owner; 667 const(wchar*)* CustomColumnData; 668 size_t CustomColumnNumber; 669 PLUGINPANELITEMFLAGS Flags; 670 UserDataItem UserData; 671 uintptr_t FileAttributes; 672 uintptr_t NumberOfLinks; 673 uintptr_t CRC32; 674 intptr_t Position; 675 intptr_t SortGroup; 676 uintptr_t NumberOfStreams; 677 ulong StreamsSize; 678 } 679 680 alias PANELINFOFLAGS = ulong; 681 const PANELINFOFLAGS 682 PFLAGS_SHOWHIDDEN = 0x0000000000000001UL, 683 PFLAGS_HIGHLIGHT = 0x0000000000000002UL, 684 PFLAGS_REVERSESORTORDER = 0x0000000000000004UL, 685 PFLAGS_USESORTGROUPS = 0x0000000000000008UL, 686 PFLAGS_SELECTEDFIRST = 0x0000000000000010UL, 687 PFLAGS_REALNAMES = 0x0000000000000020UL, 688 PFLAGS_PANELLEFT = 0x0000000000000080UL, 689 PFLAGS_DIRECTORIESFIRST = 0x0000000000000100UL, 690 PFLAGS_USECRC32 = 0x0000000000000200UL, 691 PFLAGS_PLUGIN = 0x0000000000000800UL, 692 PFLAGS_VISIBLE = 0x0000000000001000UL, 693 PFLAGS_FOCUS = 0x0000000000002000UL, 694 PFLAGS_ALTERNATIVENAMES = 0x0000000000004000UL, 695 PFLAGS_SHORTCUT = 0x0000000000008000UL, 696 PFLAGS_NONE = 0UL; 697 698 enum PANELINFOTYPE 699 { 700 PTYPE_FILEPANEL = 0, 701 PTYPE_TREEPANEL = 1, 702 PTYPE_QVIEWPANEL = 2, 703 PTYPE_INFOPANEL = 3, 704 } 705 706 enum OPENPANELINFO_SORTMODES 707 { 708 SM_DEFAULT = 0, 709 SM_UNSORTED = 1, 710 SM_NAME = 2, 711 SM_FULLNAME = SM_NAME, 712 SM_EXT = 3, 713 SM_MTIME = 4, 714 SM_CTIME = 5, 715 SM_ATIME = 6, 716 SM_SIZE = 7, 717 SM_DESCR = 8, 718 SM_OWNER = 9, 719 SM_COMPRESSEDSIZE = 10, 720 SM_NUMLINKS = 11, 721 SM_NUMSTREAMS = 12, 722 SM_STREAMSSIZE = 13, 723 SM_NAMEONLY = 14, 724 SM_CHTIME = 15, 725 726 SM_COUNT, 727 SM_USER = 100000 728 } 729 730 struct PanelInfo 731 { 732 size_t StructSize; 733 HANDLE PluginHandle; 734 GUID OwnerGuid; 735 PANELINFOFLAGS Flags; 736 size_t ItemsNumber; 737 size_t SelectedItemsNumber; 738 RECT PanelRect; 739 size_t CurrentItem; 740 size_t TopPanelItem; 741 intptr_t ViewMode; 742 PANELINFOTYPE PanelType; 743 OPENPANELINFO_SORTMODES SortMode; 744 } 745 746 struct PanelRedrawInfo 747 { 748 size_t StructSize; 749 size_t CurrentItem; 750 size_t TopPanelItem; 751 } 752 753 struct CmdLineSelect 754 { 755 size_t StructSize; 756 intptr_t SelStart; 757 intptr_t SelEnd; 758 } 759 760 struct FarPanelDirectory 761 { 762 size_t StructSize; 763 const(wchar)* Name; 764 const(wchar)* Param; 765 GUID PluginId; 766 const(wchar)* File; 767 } 768 769 const PANEL_NONE = cast(HANDLE)-1; 770 const PANEL_ACTIVE = cast(HANDLE)-1; 771 const PANEL_PASSIVE = cast(HANDLE)-2; 772 const PANEL_STOP = cast(HANDLE)-1; 773 774 enum FILE_CONTROL_COMMANDS 775 { 776 FCTL_CLOSEPANEL = 0, 777 FCTL_GETPANELINFO = 1, 778 FCTL_UPDATEPANEL = 2, 779 FCTL_REDRAWPANEL = 3, 780 FCTL_GETCMDLINE = 4, 781 FCTL_SETCMDLINE = 5, 782 FCTL_SETSELECTION = 6, 783 FCTL_SETVIEWMODE = 7, 784 FCTL_INSERTCMDLINE = 8, 785 FCTL_SETUSERSCREEN = 9, 786 FCTL_SETPANELDIRECTORY = 10, 787 FCTL_SETCMDLINEPOS = 11, 788 FCTL_GETCMDLINEPOS = 12, 789 FCTL_SETSORTMODE = 13, 790 FCTL_SETSORTORDER = 14, 791 FCTL_SETCMDLINESELECTION = 15, 792 FCTL_GETCMDLINESELECTION = 16, 793 FCTL_CHECKPANELSEXIST = 17, 794 FCTL_GETUSERSCREEN = 19, 795 FCTL_ISACTIVEPANEL = 20, 796 FCTL_GETPANELITEM = 21, 797 FCTL_GETSELECTEDPANELITEM = 22, 798 FCTL_GETCURRENTPANELITEM = 23, 799 FCTL_GETPANELDIRECTORY = 24, 800 FCTL_GETCOLUMNTYPES = 25, 801 FCTL_GETCOLUMNWIDTHS = 26, 802 FCTL_BEGINSELECTION = 27, 803 FCTL_ENDSELECTION = 28, 804 FCTL_CLEARSELECTION = 29, 805 FCTL_SETDIRECTORIESFIRST = 30, 806 FCTL_GETPANELFORMAT = 31, 807 FCTL_GETPANELHOSTFILE = 32, 808 FCTL_GETPANELPREFIX = 34, 809 FCTL_SETACTIVEPANEL = 35, 810 } 811 812 alias FARAPITEXT = extern (Windows) void function( 813 intptr_t X, 814 intptr_t Y, 815 in FarColor* Color, 816 in wchar* Str); 817 818 alias FARAPISAVESCREEN = extern (Windows) HANDLE function(intptr_t X1, intptr_t Y1, intptr_t X2, intptr_t Y2); 819 820 alias FARAPIRESTORESCREEN = extern (Windows) void function(HANDLE hScreen); 821 822 alias FARAPIFREESCREEN = extern (Windows) void function(HANDLE hScreen); 823 824 alias FARAPIGETDIRLIST = extern (Windows) intptr_t function( 825 in wchar* Dir, 826 PluginPanelItem** pPanelItem, 827 size_t* pItemsNumber); 828 829 alias FARAPIGETPLUGINDIRLIST = extern (Windows) intptr_t function( 830 in GUID* PluginId, 831 HANDLE hPanel, 832 in wchar* Dir, 833 PluginPanelItem** pPanelItem, 834 size_t* pItemsNumber); 835 836 alias FARAPIFREEDIRLIST = extern (Windows) void function(PluginPanelItem* PanelItem, size_t nItemsNumber); 837 838 alias FARAPIFREEPLUGINDIRLIST = extern (Windows) void function(HANDLE hPanel, PluginPanelItem* PanelItem, size_t nItemsNumber); 839 840 alias VIEWER_FLAGS = ulong; 841 const VIEWER_FLAGS 842 VF_NONMODAL = 0x0000000000000001UL, 843 VF_DELETEONCLOSE = 0x0000000000000002UL, 844 VF_ENABLE_F6 = 0x0000000000000004UL, 845 VF_DISABLEHISTORY = 0x0000000000000008UL, 846 VF_IMMEDIATERETURN = 0x0000000000000100UL, 847 VF_DELETEONLYFILEONCLOSE = 0x0000000000000200UL, 848 VF_NONE = 0UL; 849 850 alias FARAPIVIEWER = extern (Windows) intptr_t function( 851 in wchar* FileName, 852 in wchar* Title, 853 intptr_t X1, 854 intptr_t Y1, 855 intptr_t X2, 856 intptr_t Y2, 857 VIEWER_FLAGS Flags, 858 uintptr_t CodePage); 859 860 alias EDITOR_FLAGS = ulong; 861 const EDITOR_FLAGS 862 EF_NONMODAL = 0x0000000000000001UL, 863 EF_CREATENEW = 0x0000000000000002UL, 864 EF_ENABLE_F6 = 0x0000000000000004UL, 865 EF_DISABLEHISTORY = 0x0000000000000008UL, 866 EF_DELETEONCLOSE = 0x0000000000000010UL, 867 EF_IMMEDIATERETURN = 0x0000000000000100UL, 868 EF_DELETEONLYFILEONCLOSE = 0x0000000000000200UL, 869 EF_LOCKED = 0x0000000000000400UL, 870 EF_DISABLESAVEPOS = 0x0000000000000800UL, 871 EF_OPENMODE_MASK = 0x00000000F0000000UL, 872 EF_OPENMODE_QUERY = 0x0000000000000000UL, 873 EF_OPENMODE_NEWIFOPEN = 0x0000000010000000UL, 874 EF_OPENMODE_USEEXISTING = 0x0000000020000000UL, 875 EF_OPENMODE_BREAKIFOPEN = 0x0000000030000000UL, 876 EF_OPENMODE_RELOADIFOPEN = 0x0000000040000000UL, 877 EN_NONE = 0UL; 878 879 enum EDITOR_EXITCODE 880 { 881 EEC_OPEN_ERROR = 0, 882 EEC_MODIFIED = 1, 883 EEC_NOT_MODIFIED = 2, 884 EEC_LOADING_INTERRUPTED = 3, 885 } 886 887 alias FARAPIEDITOR = extern (Windows) intptr_t function( 888 in wchar* FileName, 889 in wchar* Title, 890 intptr_t X1, 891 intptr_t Y1, 892 intptr_t X2, 893 intptr_t Y2, 894 EDITOR_FLAGS Flags, 895 int StartLine, 896 int StartChar, 897 uintptr_t CodePage); 898 899 alias FARAPIGETMSG = extern (Windows) const(wchar)* function( 900 in GUID* PluginId, 901 intptr_t MsgId); 902 903 alias FARHELPFLAGS = ulong; 904 const FARHELPFLAGS 905 FHELP_NOSHOWERROR = 0x0000000080000000UL, 906 FHELP_SELFHELP = 0x0000000000000000UL, 907 FHELP_FARHELP = 0x0000000000000001UL, 908 FHELP_CUSTOMFILE = 0x0000000000000002UL, 909 FHELP_CUSTOMPATH = 0x0000000000000004UL, 910 FHELP_GUID = 0x0000000000000008UL, 911 FHELP_USECONTENTS = 0x0000000040000000UL, 912 FHELP_NONE = 0UL; 913 914 alias FARAPISHOWHELP = extern (Windows) BOOL function( 915 in wchar* ModuleName, 916 in wchar* Topic, 917 FARHELPFLAGS Flags); 918 919 enum ADVANCED_CONTROL_COMMANDS 920 { 921 ACTL_GETFARMANAGERVERSION = 0, 922 ACTL_WAITKEY = 2, 923 ACTL_GETCOLOR = 3, 924 ACTL_GETARRAYCOLOR = 4, 925 ACTL_GETWINDOWINFO = 6, 926 ACTL_GETWINDOWCOUNT = 7, 927 ACTL_SETCURRENTWINDOW = 8, 928 ACTL_COMMIT = 9, 929 ACTL_GETFARHWND = 10, 930 ACTL_SETARRAYCOLOR = 16, 931 ACTL_REDRAWALL = 19, 932 ACTL_SYNCHRO = 20, 933 ACTL_SETPROGRESSSTATE = 21, 934 ACTL_SETPROGRESSVALUE = 22, 935 ACTL_QUIT = 23, 936 ACTL_GETFARRECT = 24, 937 ACTL_GETCURSORPOS = 25, 938 ACTL_SETCURSORPOS = 26, 939 ACTL_PROGRESSNOTIFY = 27, 940 ACTL_GETWINDOWTYPE = 28, 941 } 942 943 enum FAR_MACRO_CONTROL_COMMANDS 944 { 945 MCTL_LOADALL = 0, 946 MCTL_SAVEALL = 1, 947 MCTL_SENDSTRING = 2, 948 MCTL_GETSTATE = 5, 949 MCTL_GETAREA = 6, 950 MCTL_ADDMACRO = 7, 951 MCTL_DELMACRO = 8, 952 MCTL_GETLASTERROR = 9, 953 MCTL_EXECSTRING = 10, 954 } 955 956 alias FARKEYMACROFLAGS = ulong; 957 const FARKEYMACROFLAGS 958 KMFLAGS_SILENTCHECK = 0x0000000000000001UL, 959 KMFLAGS_NOSENDKEYSTOPLUGINS = 0x0000000000000002UL, 960 KMFLAGS_ENABLEOUTPUT = 0x0000000000000004UL, 961 KMFLAGS_LANGMASK = 0x0000000000000070UL, // 3 bits reserved for 8 languages 962 KMFLAGS_LUA = 0x0000000000000000UL, 963 KMFLAGS_MOONSCRIPT = 0x0000000000000010UL, 964 KMFLAGS_NONE = 0UL; 965 966 enum FARMACROSENDSTRINGCOMMAND 967 { 968 MSSC_POST =0, 969 MSSC_CHECK =2, 970 } 971 972 enum FARMACROAREA 973 { 974 MACROAREA_OTHER = 0, // Reserved 975 MACROAREA_SHELL = 1, // File panels 976 MACROAREA_VIEWER = 2, // Internal viewer program 977 MACROAREA_EDITOR = 3, // Editor 978 MACROAREA_DIALOG = 4, // Dialogs 979 MACROAREA_SEARCH = 5, // Quick search in panels 980 MACROAREA_DISKS = 6, // Menu of disk selection 981 MACROAREA_MAINMENU = 7, // Main menu 982 MACROAREA_MENU = 8, // Other menus 983 MACROAREA_HELP = 9, // Help system 984 MACROAREA_INFOPANEL = 10, // Info panel 985 MACROAREA_QVIEWPANEL = 11, // Quick view panel 986 MACROAREA_TREEPANEL = 12, // Folders tree panel 987 MACROAREA_FINDFOLDER = 13, // Find folder 988 MACROAREA_USERMENU = 14, // User menu 989 MACROAREA_SHELLAUTOCOMPLETION = 15, // Autocompletion list in command line 990 MACROAREA_DIALOGAUTOCOMPLETION = 16, // Autocompletion list in dialogs 991 MACROAREA_GRABBER = 17, // Mode of copying text from the screen 992 MACROAREA_DESKTOP = 18, // Desktop 993 994 MACROAREA_COMMON = 255, 995 } 996 997 enum FARMACROSTATE 998 { 999 MACROSTATE_NOMACRO = 0, 1000 MACROSTATE_EXECUTING = 1, 1001 MACROSTATE_EXECUTING_COMMON = 2, 1002 MACROSTATE_RECORDING = 3, 1003 MACROSTATE_RECORDING_COMMON = 4, 1004 } 1005 1006 enum FARMACROPARSEERRORCODE 1007 { 1008 MPEC_SUCCESS = 0, 1009 MPEC_ERROR = 1, 1010 } 1011 1012 struct MacroParseResult 1013 { 1014 size_t StructSize; 1015 DWORD ErrCode; 1016 COORD ErrPos; 1017 const(wchar)* ErrSrc; 1018 } 1019 1020 struct MacroSendMacroText 1021 { 1022 size_t StructSize; 1023 FARKEYMACROFLAGS Flags; 1024 INPUT_RECORD AKey; 1025 const(wchar)* SequenceText; 1026 } 1027 1028 alias FARADDKEYMACROFLAGS = ulong; 1029 const FARADDKEYMACROFLAGS AKMFLAGS_NONE = 0UL; 1030 1031 alias FARMACROCALLBACK = extern (Windows) intptr_t function(void* Id, FARADDKEYMACROFLAGS Flags); 1032 1033 struct MacroAddMacro 1034 { 1035 size_t StructSize; 1036 void* Id; 1037 const(wchar)* SequenceText; 1038 const(wchar)* Description; 1039 FARKEYMACROFLAGS Flags; 1040 INPUT_RECORD AKey; 1041 FARMACROAREA Area; 1042 FARMACROCALLBACK Callback; 1043 intptr_t Priority; 1044 } 1045 1046 enum FARMACROVARTYPE 1047 { 1048 FMVT_UNKNOWN = 0, 1049 FMVT_INTEGER = 1, 1050 FMVT_STRING = 2, 1051 FMVT_DOUBLE = 3, 1052 FMVT_BOOLEAN = 4, 1053 FMVT_BINARY = 5, 1054 FMVT_POINTER = 6, 1055 FMVT_NIL = 7, 1056 FMVT_ARRAY = 8, 1057 FMVT_PANEL = 9, 1058 FMVT_ERROR = 10, 1059 } 1060 1061 struct FarMacroValueBinary 1062 { 1063 void* Data; 1064 size_t Size; 1065 } 1066 1067 struct FarMacroValueArray 1068 { 1069 FarMacroValue* Values; 1070 size_t Count; 1071 } 1072 1073 struct FarMacroValue 1074 { 1075 FARMACROVARTYPE Type = FARMACROVARTYPE.FMVT_NIL; 1076 union 1077 { 1078 long Integer; 1079 long Boolean; 1080 double Double; 1081 const(wchar)* String; 1082 void* Pointer; 1083 FarMacroValueBinary Binary; 1084 FarMacroValueArray Array; 1085 } 1086 1087 this(int v) { Type=FARMACROVARTYPE.FMVT_INTEGER; Integer=v; } 1088 this(uint v) { Type=FARMACROVARTYPE.FMVT_INTEGER; Integer=v; } 1089 this(long v) { Type=FARMACROVARTYPE.FMVT_INTEGER; Integer=v; } 1090 this(ulong v) { Type=FARMACROVARTYPE.FMVT_INTEGER; Integer=v; } 1091 this(bool v) { Type=FARMACROVARTYPE.FMVT_BOOLEAN; Boolean=v; } 1092 this(double v) { Type=FARMACROVARTYPE.FMVT_DOUBLE; Double=v; } 1093 this(const(wchar)* v) { Type=FARMACROVARTYPE.FMVT_STRING; String=v; } 1094 this(void* v) { Type=FARMACROVARTYPE.FMVT_POINTER; Pointer=v; } 1095 this(ref const GUID v) { Type=FARMACROVARTYPE.FMVT_BINARY; Binary.Data=cast(void*)&v; Binary.Size=GUID.sizeof; } 1096 this(FarMacroValue* arr,size_t count) { Type=FARMACROVARTYPE.FMVT_ARRAY; Array.Values=arr; Array.Count=count; } 1097 } 1098 1099 struct FarMacroCall 1100 { 1101 size_t StructSize; 1102 size_t Count; 1103 FarMacroValue* Values; 1104 extern (Windows) void function(void* CallbackData, FarMacroValue* Values, size_t Count) Callback; 1105 void* CallbackData; 1106 } 1107 1108 struct FarGetValue 1109 { 1110 size_t StructSize; 1111 intptr_t Type; 1112 FarMacroValue Value; 1113 } 1114 1115 struct MacroExecuteString 1116 { 1117 size_t StructSize; 1118 FARKEYMACROFLAGS Flags; 1119 const(wchar)* SequenceText; 1120 size_t InCount; 1121 FarMacroValue* InValues; 1122 size_t OutCount; 1123 const(FarMacroValue)* OutValues; 1124 } 1125 1126 struct FarMacroLoad 1127 { 1128 size_t StructSize; 1129 const(wchar)* Path; 1130 ulong Flags; 1131 } 1132 1133 alias FARSETCOLORFLAGS = ulong; 1134 const FARSETCOLORFLAGS 1135 FSETCLR_REDRAW = 0x0000000000000001UL, 1136 FSETCLR_NONE = 0UL; 1137 1138 struct FarSetColors 1139 { 1140 size_t StructSize; 1141 FARSETCOLORFLAGS Flags; 1142 size_t StartIndex; 1143 size_t ColorsCount; 1144 FarColor* Colors; 1145 } 1146 1147 enum WINDOWINFO_TYPE 1148 { 1149 WTYPE_UNKNOWN = -1, 1150 WTYPE_DESKTOP = 0, 1151 WTYPE_PANELS = 1, 1152 WTYPE_VIEWER = 2, 1153 WTYPE_EDITOR = 3, 1154 WTYPE_DIALOG = 4, 1155 WTYPE_VMENU = 5, 1156 WTYPE_HELP = 6, 1157 WTYPE_COMBOBOX = 7, 1158 WTYPE_GRABBER = 8, 1159 WTYPE_HMENU = 9, 1160 } 1161 1162 alias WINDOWINFO_FLAGS = ulong; 1163 const WINDOWINFO_FLAGS 1164 WIF_MODIFIED = 0x0000000000000001UL, 1165 WIF_CURRENT = 0x0000000000000002UL, 1166 WIF_MODAL = 0x0000000000000004UL, 1167 WIF_NONE = 0; 1168 1169 struct WindowInfo 1170 { 1171 size_t StructSize; 1172 intptr_t Id; 1173 wchar* TypeName; 1174 wchar* Name; 1175 intptr_t TypeNameSize; 1176 intptr_t NameSize; 1177 intptr_t Pos; 1178 WINDOWINFO_TYPE Type; 1179 WINDOWINFO_FLAGS Flags; 1180 } 1181 1182 struct WindowType 1183 { 1184 size_t StructSize; 1185 WINDOWINFO_TYPE Type; 1186 } 1187 1188 enum TASKBARPROGRESSTATE 1189 { 1190 TBPS_NOPROGRESS =0x0, 1191 TBPS_INDETERMINATE=0x1, 1192 TBPS_NORMAL =0x2, 1193 TBPS_ERROR =0x4, 1194 TBPS_PAUSED =0x8, 1195 } 1196 1197 struct ProgressValue 1198 { 1199 size_t StructSize; 1200 ulong Completed; 1201 ulong Total; 1202 } 1203 1204 enum VIEWER_CONTROL_COMMANDS 1205 { 1206 VCTL_GETINFO = 0, 1207 VCTL_QUIT = 1, 1208 VCTL_REDRAW = 2, 1209 VCTL_SETKEYBAR = 3, 1210 VCTL_SETPOSITION = 4, 1211 VCTL_SELECT = 5, 1212 VCTL_SETMODE = 6, 1213 VCTL_GETFILENAME = 7, 1214 } 1215 1216 alias VIEWER_OPTIONS = ulong; 1217 const VIEWER_OPTIONS 1218 VOPT_SAVEFILEPOSITION = 0x0000000000000001UL, 1219 VOPT_AUTODETECTCODEPAGE = 0x0000000000000002UL, 1220 VOPT_SHOWTITLEBAR = 0x0000000000000004UL, 1221 VOPT_SHOWKEYBAR = 0x0000000000000008UL, 1222 VOPT_SHOWSCROLLBAR = 0x0000000000000010UL, 1223 VOPT_QUICKVIEW = 0x0000000000000020UL, 1224 VOPT_NONE = 0UL; 1225 1226 enum VIEWER_SETMODE_TYPES 1227 { 1228 VSMT_VIEWMODE = 0, 1229 VSMT_WRAP = 1, 1230 VSMT_WORDWRAP = 2, 1231 } 1232 1233 alias VIEWER_SETMODEFLAGS_TYPES = ulong; 1234 const VIEWER_SETMODEFLAGS_TYPES 1235 VSMFL_REDRAW = 0x0000000000000001UL, 1236 VSMFL_NONE = 0; 1237 1238 struct ViewerSetMode 1239 { 1240 size_t StructSize; 1241 VIEWER_SETMODE_TYPES Type; 1242 union 1243 { 1244 intptr_t iParam; 1245 wchar* wszParam; 1246 } 1247 VIEWER_SETMODEFLAGS_TYPES Flags; 1248 } 1249 1250 struct ViewerSelect 1251 { 1252 size_t StructSize; 1253 long BlockStartPos; 1254 long BlockLen; 1255 } 1256 1257 alias VIEWER_SETPOS_FLAGS = ulong; 1258 const VIEWER_SETPOS_FLAGS 1259 VSP_NOREDRAW = 0x0000000000000001UL, 1260 VSP_PERCENT = 0x0000000000000002UL, 1261 VSP_RELATIVE = 0x0000000000000004UL, 1262 VSP_NORETNEWPOS = 0x0000000000000008UL, 1263 VSP_NONE = 0; 1264 1265 struct ViewerSetPosition 1266 { 1267 size_t StructSize; 1268 VIEWER_SETPOS_FLAGS Flags; 1269 long StartPos; 1270 long LeftPos; 1271 } 1272 1273 alias VIEWER_MODE_FLAGS = ulong; 1274 const VIEWER_MODE_FLAGS 1275 VMF_WRAP = 0x0000000000000001UL, 1276 VMF_WORDWRAP = 0x0000000000000002UL, 1277 VMF_NONE = 0; 1278 1279 enum VIEWER_MODE_TYPE 1280 { 1281 VMT_TEXT =0, 1282 VMT_HEX =1, 1283 VMT_DUMP =2, 1284 } 1285 1286 struct ViewerMode 1287 { 1288 uintptr_t CodePage; 1289 VIEWER_MODE_FLAGS Flags; 1290 VIEWER_MODE_TYPE ViewMode; 1291 } 1292 1293 struct ViewerInfo 1294 { 1295 size_t StructSize; 1296 intptr_t ViewerID; 1297 intptr_t TabSize; 1298 ViewerMode CurMode; 1299 long FileSize; 1300 long FilePos; 1301 long LeftPos; 1302 VIEWER_OPTIONS Options; 1303 intptr_t WindowSizeX; 1304 intptr_t WindowSizeY; 1305 } 1306 1307 enum VIEWER_EVENTS 1308 { 1309 VE_READ =0, 1310 VE_CLOSE =1, 1311 1312 VE_GOTFOCUS =6, 1313 VE_KILLFOCUS =7, 1314 } 1315 1316 enum EDITOR_EVENTS 1317 { 1318 EE_READ =0, 1319 EE_SAVE =1, 1320 EE_REDRAW =2, 1321 EE_CLOSE =3, 1322 1323 EE_GOTFOCUS =6, 1324 EE_KILLFOCUS =7, 1325 EE_CHANGE =8, 1326 } 1327 1328 enum DIALOG_EVENTS 1329 { 1330 DE_DLGPROCINIT =0, 1331 DE_DEFDLGPROCINIT =1, 1332 DE_DLGPROCEND =2, 1333 } 1334 1335 enum SYNCHRO_EVENTS 1336 { 1337 SE_COMMONSYNCHRO =0, 1338 } 1339 1340 const EEREDRAW_ALL = cast(void*)0; 1341 const CURRENT_EDITOR = -1; 1342 1343 enum EDITOR_CONTROL_COMMANDS 1344 { 1345 ECTL_GETSTRING = 0, 1346 ECTL_SETSTRING = 1, 1347 ECTL_INSERTSTRING = 2, 1348 ECTL_DELETESTRING = 3, 1349 ECTL_DELETECHAR = 4, 1350 ECTL_INSERTTEXT = 5, 1351 ECTL_GETINFO = 6, 1352 ECTL_SETPOSITION = 7, 1353 ECTL_SELECT = 8, 1354 ECTL_REDRAW = 9, 1355 ECTL_TABTOREAL = 10, 1356 ECTL_REALTOTAB = 11, 1357 ECTL_EXPANDTABS = 12, 1358 ECTL_SETTITLE = 13, 1359 ECTL_READINPUT = 14, 1360 ECTL_PROCESSINPUT = 15, 1361 ECTL_ADDCOLOR = 16, 1362 ECTL_GETCOLOR = 17, 1363 ECTL_SAVEFILE = 18, 1364 ECTL_QUIT = 19, 1365 ECTL_SETKEYBAR = 20, 1366 1367 ECTL_SETPARAM = 22, 1368 ECTL_GETBOOKMARKS = 23, 1369 ECTL_DELETEBLOCK = 25, 1370 ECTL_ADDSESSIONBOOKMARK = 26, 1371 ECTL_PREVSESSIONBOOKMARK = 27, 1372 ECTL_NEXTSESSIONBOOKMARK = 28, 1373 ECTL_CLEARSESSIONBOOKMARKS = 29, 1374 ECTL_DELETESESSIONBOOKMARK = 30, 1375 ECTL_GETSESSIONBOOKMARKS = 31, 1376 ECTL_UNDOREDO = 32, 1377 ECTL_GETFILENAME = 33, 1378 ECTL_DELCOLOR = 34, 1379 ECTL_SUBSCRIBECHANGEEVENT = 36, 1380 ECTL_UNSUBSCRIBECHANGEEVENT = 37, 1381 ECTL_GETTITLE = 38, 1382 } 1383 1384 enum EDITOR_SETPARAMETER_TYPES 1385 { 1386 ESPT_TABSIZE = 0, 1387 ESPT_EXPANDTABS = 1, 1388 ESPT_AUTOINDENT = 2, 1389 ESPT_CURSORBEYONDEOL = 3, 1390 ESPT_CHARCODEBASE = 4, 1391 ESPT_CODEPAGE = 5, 1392 ESPT_SAVEFILEPOSITION = 6, 1393 ESPT_LOCKMODE = 7, 1394 ESPT_SETWORDDIV = 8, 1395 ESPT_GETWORDDIV = 9, 1396 ESPT_SHOWWHITESPACE = 10, 1397 ESPT_SETBOM = 11, 1398 } 1399 1400 struct EditorSetParameter 1401 { 1402 size_t StructSize; 1403 EDITOR_SETPARAMETER_TYPES Type; 1404 union 1405 { 1406 intptr_t iParam; 1407 wchar* wszParam; 1408 intptr_t Reserved; 1409 } 1410 ulong Flags; 1411 size_t Size; 1412 } 1413 1414 enum EDITOR_UNDOREDO_COMMANDS 1415 { 1416 EUR_BEGIN = 0, 1417 EUR_END = 1, 1418 EUR_UNDO = 2, 1419 EUR_REDO = 3, 1420 } 1421 1422 struct EditorUndoRedo 1423 { 1424 size_t StructSize; 1425 EDITOR_UNDOREDO_COMMANDS Command; 1426 } 1427 1428 struct EditorGetString 1429 { 1430 size_t StructSize; 1431 intptr_t StringNumber; 1432 intptr_t StringLength; 1433 const(wchar)* StringText; 1434 const(wchar)* StringEOL; 1435 intptr_t SelStart; 1436 intptr_t SelEnd; 1437 } 1438 1439 struct EditorSetString 1440 { 1441 size_t StructSize; 1442 intptr_t StringNumber; 1443 intptr_t StringLength; 1444 const(wchar)* StringText; 1445 const(wchar)* StringEOL; 1446 } 1447 1448 enum EXPAND_TABS 1449 { 1450 EXPAND_NOTABS = 0, 1451 EXPAND_ALLTABS = 1, 1452 EXPAND_NEWTABS = 2, 1453 } 1454 1455 enum EDITOR_OPTIONS 1456 { 1457 EOPT_EXPANDALLTABS = 0x00000001, 1458 EOPT_PERSISTENTBLOCKS = 0x00000002, 1459 EOPT_DELREMOVESBLOCKS = 0x00000004, 1460 EOPT_AUTOINDENT = 0x00000008, 1461 EOPT_SAVEFILEPOSITION = 0x00000010, 1462 EOPT_AUTODETECTCODEPAGE= 0x00000020, 1463 EOPT_CURSORBEYONDEOL = 0x00000040, 1464 EOPT_EXPANDONLYNEWTABS = 0x00000080, 1465 EOPT_SHOWWHITESPACE = 0x00000100, 1466 EOPT_BOM = 0x00000200, 1467 EOPT_SHOWLINEBREAK = 0x00000400, 1468 EOPT_SHOWTITLEBAR = 0x00000800, 1469 EOPT_SHOWKEYBAR = 0x00001000, 1470 EOPT_SHOWSCROLLBAR = 0x00002000, 1471 } 1472 1473 enum EDITOR_BLOCK_TYPES 1474 { 1475 BTYPE_NONE = 0, 1476 BTYPE_STREAM = 1, 1477 BTYPE_COLUMN = 2, 1478 } 1479 1480 enum EDITOR_CURRENTSTATE 1481 { 1482 ECSTATE_MODIFIED = 0x00000001, 1483 ECSTATE_SAVED = 0x00000002, 1484 ECSTATE_LOCKED = 0x00000004, 1485 } 1486 1487 struct EditorInfo 1488 { 1489 size_t StructSize; 1490 intptr_t EditorID; 1491 intptr_t WindowSizeX; 1492 intptr_t WindowSizeY; 1493 intptr_t TotalLines; 1494 intptr_t CurLine; 1495 intptr_t CurPos; 1496 intptr_t CurTabPos; 1497 intptr_t TopScreenLine; 1498 intptr_t LeftPos; 1499 intptr_t Overtype; 1500 intptr_t BlockType; 1501 intptr_t BlockStartLine; 1502 uintptr_t Options; 1503 intptr_t TabSize; 1504 size_t BookmarkCount; 1505 size_t SessionBookmarkCount; 1506 uintptr_t CurState; 1507 uintptr_t CodePage; 1508 } 1509 1510 struct EditorBookmarks 1511 { 1512 size_t StructSize; 1513 size_t Size; 1514 size_t Count; 1515 intptr_t* Line; 1516 intptr_t* Cursor; 1517 intptr_t* ScreenLine; 1518 intptr_t* LeftPos; 1519 } 1520 1521 struct EditorSetPosition 1522 { 1523 size_t StructSize; 1524 intptr_t CurLine; 1525 intptr_t CurPos; 1526 intptr_t CurTabPos; 1527 intptr_t TopScreenLine; 1528 intptr_t LeftPos; 1529 intptr_t Overtype; 1530 } 1531 1532 struct EditorSelect 1533 { 1534 size_t StructSize; 1535 intptr_t BlockType; 1536 intptr_t BlockStartLine; 1537 intptr_t BlockStartPos; 1538 intptr_t BlockWidth; 1539 intptr_t BlockHeight; 1540 } 1541 1542 struct EditorConvertPos 1543 { 1544 size_t StructSize; 1545 intptr_t StringNumber; 1546 intptr_t SrcPos; 1547 intptr_t DestPos; 1548 } 1549 1550 1551 alias EDITORCOLORFLAGS = ulong; 1552 const EDITORCOLORFLAGS 1553 ECF_TABMARKFIRST = 0x0000000000000001UL, 1554 ECF_TABMARKCURRENT = 0x0000000000000002UL, 1555 ECF_AUTODELETE = 0x0000000000000004UL, 1556 ECF_NONE = 0; 1557 1558 struct EditorColor 1559 { 1560 size_t StructSize; 1561 intptr_t StringNumber; 1562 intptr_t ColorItem; 1563 intptr_t StartPos; 1564 intptr_t EndPos; 1565 uintptr_t Priority; 1566 EDITORCOLORFLAGS Flags; 1567 FarColor Color; 1568 GUID Owner; 1569 } 1570 1571 struct EditorDeleteColor 1572 { 1573 size_t StructSize; 1574 GUID Owner; 1575 intptr_t StringNumber; 1576 intptr_t StartPos; 1577 } 1578 1579 const EDITOR_COLOR_NORMAL_PRIORITY = 0x80000000U; 1580 1581 struct EditorSaveFile 1582 { 1583 size_t StructSize; 1584 const(wchar)* FileName; 1585 const(wchar)* FileEOL; 1586 uintptr_t CodePage; 1587 } 1588 1589 enum EDITOR_CHANGETYPE 1590 { 1591 ECTYPE_CHANGED = 0, 1592 ECTYPE_ADDED = 1, 1593 ECTYPE_DELETED = 2, 1594 } 1595 1596 struct EditorChange 1597 { 1598 size_t StructSize; 1599 EDITOR_CHANGETYPE Type; 1600 intptr_t StringNumber; 1601 } 1602 1603 struct EditorSubscribeChangeEvent 1604 { 1605 size_t StructSize; 1606 GUID PluginId; 1607 } 1608 1609 alias INPUTBOXFLAGS = ulong; 1610 const INPUTBOXFLAGS 1611 FIB_ENABLEEMPTY = 0x0000000000000001UL, 1612 FIB_PASSWORD = 0x0000000000000002UL, 1613 FIB_EXPANDENV = 0x0000000000000004UL, 1614 FIB_NOUSELASTHISTORY = 0x0000000000000008UL, 1615 FIB_BUTTONS = 0x0000000000000010UL, 1616 FIB_NOAMPERSAND = 0x0000000000000020UL, 1617 FIB_EDITPATH = 0x0000000000000040UL, 1618 FIB_EDITPATHEXEC = 0x0000000000000080UL, 1619 FIB_NONE = 0UL; 1620 1621 alias FARAPIINPUTBOX = extern (Windows) intptr_t function( 1622 in GUID* PluginId, 1623 in GUID* Id, 1624 in wchar* Title, 1625 in wchar* SubTitle, 1626 in wchar* HistoryName, 1627 in wchar* SrcText, 1628 wchar* DestText, 1629 size_t DestSize, 1630 in wchar* HelpTopic, 1631 INPUTBOXFLAGS Flags); 1632 1633 enum FAR_PLUGINS_CONTROL_COMMANDS 1634 { 1635 PCTL_LOADPLUGIN = 0, 1636 PCTL_UNLOADPLUGIN = 1, 1637 PCTL_FORCEDLOADPLUGIN = 2, 1638 PCTL_FINDPLUGIN = 3, 1639 PCTL_GETPLUGININFORMATION = 4, 1640 PCTL_GETPLUGINS = 5, 1641 } 1642 1643 enum FAR_PLUGIN_LOAD_TYPE 1644 { 1645 PLT_PATH = 0, 1646 } 1647 1648 enum FAR_PLUGIN_FIND_TYPE 1649 { 1650 PFM_GUID = 0, 1651 PFM_MODULENAME = 1, 1652 } 1653 1654 alias FAR_PLUGIN_FLAGS = ulong; 1655 const FAR_PLUGIN_FLAGS 1656 FPF_LOADED = 0x0000000000000001UL, 1657 FPF_ANSI = 0x1000000000000000UL, 1658 FPF_NONE = 0UL; 1659 1660 enum FAR_FILE_FILTER_CONTROL_COMMANDS 1661 { 1662 FFCTL_CREATEFILEFILTER = 0, 1663 FFCTL_FREEFILEFILTER = 1, 1664 FFCTL_OPENFILTERSMENU = 2, 1665 FFCTL_STARTINGTOFILTER = 3, 1666 FFCTL_ISFILEINFILTER = 4, 1667 } 1668 1669 enum FAR_FILE_FILTER_TYPE 1670 { 1671 FFT_PANEL = 0, 1672 FFT_FINDFILE = 1, 1673 FFT_COPY = 2, 1674 FFT_SELECT = 3, 1675 FFT_CUSTOM = 4, 1676 } 1677 1678 enum FAR_REGEXP_CONTROL_COMMANDS 1679 { 1680 RECTL_CREATE = 0, 1681 RECTL_FREE = 1, 1682 RECTL_COMPILE = 2, 1683 RECTL_OPTIMIZE = 3, 1684 RECTL_MATCHEX = 4, 1685 RECTL_SEARCHEX = 5, 1686 RECTL_BRACKETSCOUNT = 6, 1687 } 1688 1689 struct RegExpMatch 1690 { 1691 intptr_t start,end; 1692 } 1693 1694 struct RegExpSearch 1695 { 1696 const(wchar)* Text; 1697 intptr_t Position; 1698 intptr_t Length; 1699 RegExpMatch* Match; 1700 intptr_t Count; 1701 void* Reserved; 1702 } 1703 1704 enum FAR_SETTINGS_CONTROL_COMMANDS 1705 { 1706 SCTL_CREATE = 0, 1707 SCTL_FREE = 1, 1708 SCTL_SET = 2, 1709 SCTL_GET = 3, 1710 SCTL_ENUM = 4, 1711 SCTL_DELETE = 5, 1712 SCTL_CREATESUBKEY = 6, 1713 SCTL_OPENSUBKEY = 7, 1714 } 1715 1716 enum FARSETTINGSTYPES 1717 { 1718 FST_UNKNOWN = 0, 1719 FST_SUBKEY = 1, 1720 FST_QWORD = 2, 1721 FST_STRING = 3, 1722 FST_DATA = 4, 1723 } 1724 1725 enum FARSETTINGS_SUBFOLDERS 1726 { 1727 FSSF_ROOT = 0, 1728 FSSF_HISTORY_CMD = 1, 1729 FSSF_HISTORY_FOLDER = 2, 1730 FSSF_HISTORY_VIEW = 3, 1731 FSSF_HISTORY_EDIT = 4, 1732 FSSF_HISTORY_EXTERNAL = 5, 1733 FSSF_FOLDERSHORTCUT_0 = 6, 1734 FSSF_FOLDERSHORTCUT_1 = 7, 1735 FSSF_FOLDERSHORTCUT_2 = 8, 1736 FSSF_FOLDERSHORTCUT_3 = 9, 1737 FSSF_FOLDERSHORTCUT_4 = 10, 1738 FSSF_FOLDERSHORTCUT_5 = 11, 1739 FSSF_FOLDERSHORTCUT_6 = 12, 1740 FSSF_FOLDERSHORTCUT_7 = 13, 1741 FSSF_FOLDERSHORTCUT_8 = 14, 1742 FSSF_FOLDERSHORTCUT_9 = 15, 1743 FSSF_CONFIRMATIONS = 16, 1744 FSSF_SYSTEM = 17, 1745 FSSF_PANEL = 18, 1746 FSSF_EDITOR = 19, 1747 FSSF_SCREEN = 20, 1748 FSSF_DIALOG = 21, 1749 FSSF_INTERFACE = 22, 1750 FSSF_PANELLAYOUT = 23, 1751 } 1752 1753 enum FAR_PLUGIN_SETTINGS_LOCATION 1754 { 1755 PSL_ROAMING = 0, 1756 PSL_LOCAL = 1, 1757 } 1758 1759 struct FarSettingsCreate 1760 { 1761 size_t StructSize; 1762 GUID Guid; 1763 HANDLE Handle; 1764 } 1765 1766 struct FarSettingsItemData 1767 { 1768 size_t Size; 1769 const(void)* Data; 1770 } 1771 1772 struct FarSettingsItem 1773 { 1774 size_t StructSize; 1775 size_t Root; 1776 const(wchar)* Name; 1777 FARSETTINGSTYPES Type; 1778 union 1779 { 1780 ulong Number; 1781 const(wchar)* String; 1782 FarSettingsItemData Data; 1783 } 1784 } 1785 1786 struct FarSettingsName 1787 { 1788 const(wchar)* Name; 1789 FARSETTINGSTYPES Type; 1790 } 1791 1792 struct FarSettingsHistory 1793 { 1794 const(wchar)* Name; 1795 const(wchar)* Param; 1796 GUID PluginId; 1797 const(wchar)* File; 1798 FILETIME Time; 1799 BOOL Lock; 1800 } 1801 1802 struct FarSettingsEnum 1803 { 1804 size_t StructSize; 1805 size_t Root; 1806 size_t Count; 1807 union 1808 { 1809 const(FarSettingsName)* Items; 1810 const(FarSettingsHistory)* Histories; 1811 } 1812 } 1813 1814 struct FarSettingsValue 1815 { 1816 size_t StructSize; 1817 size_t Root; 1818 const(wchar)* Value; 1819 } 1820 1821 alias FARAPIPANELCONTROL = extern (Windows) intptr_t function(HANDLE hPanel, FILE_CONTROL_COMMANDS Command, intptr_t Param1, void* Param2); 1822 1823 alias FARAPIADVCONTROL = extern (Windows) intptr_t function( 1824 in GUID* PluginId, 1825 ADVANCED_CONTROL_COMMANDS Command, 1826 intptr_t Param1, 1827 void* Param2); 1828 1829 alias FARAPIVIEWERCONTROL = extern (Windows) intptr_t function(intptr_t ViewerID, VIEWER_CONTROL_COMMANDS Command, intptr_t Param1, void* Param2); 1830 1831 alias FARAPIEDITORCONTROL = extern (Windows) intptr_t function(intptr_t EditorID, EDITOR_CONTROL_COMMANDS Command, intptr_t Param1, void* Param2); 1832 1833 alias FARAPIMACROCONTROL = extern (Windows) intptr_t function( 1834 in GUID* PluginId, 1835 FAR_MACRO_CONTROL_COMMANDS Command, 1836 intptr_t Param1, 1837 void* Param2); 1838 1839 alias FARAPIPLUGINSCONTROL = extern (Windows) intptr_t function(HANDLE hHandle, FAR_PLUGINS_CONTROL_COMMANDS Command, intptr_t Param1, void* Param2); 1840 1841 alias FARAPIFILEFILTERCONTROL = extern (Windows) intptr_t function(HANDLE hHandle, FAR_FILE_FILTER_CONTROL_COMMANDS Command, intptr_t Param1, void* Param2); 1842 1843 alias FARAPIREGEXPCONTROL = extern (Windows) intptr_t function(HANDLE hHandle, FAR_REGEXP_CONTROL_COMMANDS Command, intptr_t Param1, void* Param2); 1844 1845 alias FARAPISETTINGSCONTROL = extern (Windows) intptr_t function(HANDLE hHandle, FAR_SETTINGS_CONTROL_COMMANDS Command, intptr_t Param1, void* Param2); 1846 1847 enum FARCLIPBOARD_TYPE 1848 { 1849 FCT_ANY=0, 1850 FCT_STREAM=1, 1851 FCT_COLUMN=2 1852 } 1853 1854 alias FARSTDSPRINTF = extern (C) int function(wchar* Buffer, in wchar* Format, ...); 1855 1856 alias FARSTDSNPRINTF = extern (C) int function(wchar* Buffer, size_t Sizebuf, in wchar* Format, ...); 1857 1858 alias FARSTDSSCANF = extern (C) int function(in wchar* Buffer, in wchar* Format, ...); 1859 1860 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); 1861 1862 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); 1863 1864 alias FARSTDGETFILEOWNER = extern (Windows) size_t function(in wchar* Computer, in wchar* Name, wchar* Owner, size_t Size); 1865 1866 alias FARSTDGETNUMBEROFLINKS = extern (Windows) size_t function(in wchar* Name); 1867 1868 alias FARSTDATOI = extern (Windows) int function(in wchar* s); 1869 1870 alias FARSTDATOI64 = extern (Windows) long function(in wchar* s); 1871 1872 alias FARSTDITOA64 = extern (Windows) wchar* function(long value, wchar* Str, int radix); 1873 1874 alias FARSTDITOA = extern (Windows) wchar* function(int value, wchar* Str, int radix); 1875 1876 alias FARSTDLTRIM = extern (Windows) wchar* function(wchar* Str); 1877 1878 alias FARSTDRTRIM = extern (Windows) wchar* function(wchar* Str); 1879 1880 alias FARSTDTRIM = extern (Windows) wchar* function(wchar* Str); 1881 1882 alias FARSTDTRUNCSTR = extern (Windows) wchar* function(wchar* Str, intptr_t MaxLength); 1883 1884 alias FARSTDTRUNCPATHSTR = extern (Windows) wchar* function(wchar* Str, intptr_t MaxLength); 1885 1886 alias FARSTDQUOTESPACEONLY = extern (Windows) wchar* function(wchar* Str); 1887 1888 alias FARSTDPOINTTONAME = extern (Windows) const(wchar)* function(in wchar* Path); 1889 1890 alias FARSTDADDENDSLASH = extern (Windows) BOOL function(wchar* Path); 1891 1892 alias FARSTDCOPYTOCLIPBOARD = extern (Windows) BOOL function(FARCLIPBOARD_TYPE Type, in wchar* Data); 1893 1894 alias FARSTDPASTEFROMCLIPBOARD = extern (Windows) size_t function(FARCLIPBOARD_TYPE Type, wchar* Data, size_t Size); 1895 1896 alias FARSTDLOCALISLOWER = extern (Windows) int function(wchar Ch); 1897 1898 alias FARSTDLOCALISUPPER = extern (Windows) int function(wchar Ch); 1899 1900 alias FARSTDLOCALISALPHA = extern (Windows) int function(wchar Ch); 1901 1902 alias FARSTDLOCALISALPHANUM = extern (Windows) int function(wchar Ch); 1903 1904 alias FARSTDLOCALUPPER = extern (Windows) wchar function(wchar LowerChar); 1905 1906 alias FARSTDLOCALLOWER = extern (Windows) wchar function(wchar UpperChar); 1907 1908 alias FARSTDLOCALUPPERBUF = extern (Windows) void function(wchar* Buf, intptr_t Length); 1909 1910 alias FARSTDLOCALLOWERBUF = extern (Windows) void function(wchar* Buf, intptr_t Length); 1911 1912 alias FARSTDLOCALSTRUPR = extern (Windows) void function(wchar* s1); 1913 1914 alias FARSTDLOCALSTRLWR = extern (Windows) void function(wchar* s1); 1915 1916 deprecated 1917 alias FARSTDLOCALSTRICMP = extern (Windows) int function(in wchar* s1, in wchar* s2); 1918 1919 deprecated 1920 alias FARSTDLOCALSTRNICMP = extern (Windows) int function(in wchar* s1, in wchar* s2, intptr_t n); 1921 1922 alias FARSTDFARCLOCK = extern (Windows) ulong function(); 1923 1924 alias FARSTDCOMPARESTRINGS = extern (Windows) int function(in wchar* Str1, size_t Size1, in wchar* Str2, size_t Size2); 1925 1926 alias PROCESSNAME_FLAGS = ulong; 1927 const PROCESSNAME_FLAGS 1928 // 0xFFFF - length 1929 // 0xFF0000 - mode 1930 // 0xFFFFFFFFFF000000 - flags 1931 PN_CMPNAME = 0x0000000000000000UL, 1932 PN_CMPNAMELIST = 0x0000000000010000UL, 1933 PN_GENERATENAME = 0x0000000000020000UL, 1934 PN_CHECKMASK = 0x0000000000030000UL, 1935 PN_SKIPPATH = 0x0000000001000000UL, 1936 PN_SHOWERRORMESSAGE = 0x0000000002000000UL, 1937 PN_NONE = 0; 1938 1939 alias FARSTDPROCESSNAME = extern (Windows) size_t function( 1940 in wchar* param1, 1941 wchar* param2, 1942 size_t size, 1943 PROCESSNAME_FLAGS flags); 1944 1945 alias FARSTDUNQUOTE = extern (Windows) void function(wchar* Str); 1946 1947 alias XLAT_FLAGS = ulong; 1948 const XLAT_FLAGS 1949 XLAT_SWITCHKEYBLAYOUT = 0x0000000000000001UL, 1950 XLAT_SWITCHKEYBBEEP = 0x0000000000000002UL, 1951 XLAT_USEKEYBLAYOUTNAME = 0x0000000000000004UL, 1952 XLAT_CONVERTALLCMDLINE = 0x0000000000010000UL, 1953 XLAT_NONE = 0UL; 1954 1955 alias FARSTDINPUTRECORDTOKEYNAME = extern (Windows) size_t function( 1956 in INPUT_RECORD* Key, 1957 wchar* KeyText, 1958 size_t Size); 1959 1960 alias FARSTDXLAT = extern (Windows) wchar* function(wchar* Line, intptr_t StartPos, intptr_t EndPos, XLAT_FLAGS Flags); 1961 1962 alias FARSTDKEYNAMETOINPUTRECORD = extern (Windows) BOOL function( 1963 in wchar* Name, 1964 INPUT_RECORD* Key); 1965 1966 alias FRSUSERFUNC = extern (Windows) int function( 1967 in PluginPanelItem* FData, 1968 in wchar* FullName, 1969 void* Param); 1970 1971 alias FRSMODE = ulong; 1972 const FRSMODE 1973 FRS_RETUPDIR = 0x0000000000000001UL, 1974 FRS_RECUR = 0x0000000000000002UL, 1975 FRS_SCANSYMLINK = 0x0000000000000004UL, 1976 FRS_NONE = 0; 1977 1978 alias FARSTDRECURSIVESEARCH = extern (Windows) void function( 1979 in wchar* InitDir, 1980 in wchar* Mask, 1981 FRSUSERFUNC Func, 1982 FRSMODE Flags, 1983 void* Param); 1984 1985 alias FARSTDMKTEMP = extern (Windows) size_t function( 1986 wchar* Dest, 1987 size_t DestSize, 1988 in wchar* Prefix); 1989 1990 alias FARSTDGETPATHROOT = extern (Windows) size_t function( 1991 in wchar* Path, 1992 wchar* Root, 1993 size_t DestSize); 1994 1995 enum LINK_TYPE 1996 { 1997 LINK_HARDLINK = 1, 1998 LINK_JUNCTION = 2, 1999 LINK_VOLMOUNT = 3, 2000 LINK_SYMLINKFILE = 4, 2001 LINK_SYMLINKDIR = 5, 2002 LINK_SYMLINK = 6, 2003 } 2004 2005 alias MKLINK_FLAGS = ulong; 2006 const MKLINK_FLAGS 2007 MLF_SHOWERRMSG = 0x0000000000010000UL, 2008 MLF_DONOTUPDATEPANEL = 0x0000000000020000UL, 2009 MLF_HOLDTARGET = 0x0000000000040000UL, 2010 MLF_NONE = 0UL; 2011 2012 alias FARSTDMKLINK = extern (Windows) BOOL function( 2013 in wchar* Src, 2014 in wchar* Dest, 2015 LINK_TYPE Type, 2016 MKLINK_FLAGS Flags); 2017 2018 alias FARGETREPARSEPOINTINFO = extern (Windows) size_t function( 2019 in wchar* Src, 2020 wchar* Dest, 2021 size_t DestSize); 2022 2023 enum CONVERTPATHMODES 2024 { 2025 CPM_FULL = 0, 2026 CPM_REAL = 1, 2027 CPM_NATIVE = 2, 2028 } 2029 2030 alias FARCONVERTPATH = extern (Windows) size_t function( 2031 CONVERTPATHMODES Mode, 2032 in wchar* Src, 2033 wchar* Dest, 2034 size_t DestSize); 2035 2036 alias FARGETCURRENTDIRECTORY = extern (Windows) size_t function(size_t Size, wchar* Buffer); 2037 2038 alias FARFORMATFILESIZEFLAGS = ulong; 2039 const FARFORMATFILESIZEFLAGS 2040 FFFS_COMMAS = 0x0100000000000000UL, 2041 FFFS_FLOATSIZE = 0x0200000000000000UL, 2042 FFFS_SHOWBYTESINDEX = 0x0400000000000000UL, 2043 FFFS_ECONOMIC = 0x0800000000000000UL, 2044 FFFS_THOUSAND = 0x1000000000000000UL, 2045 FFFS_MINSIZEINDEX = 0x2000000000000000UL, 2046 FFFS_MINSIZEINDEX_MASK = 0x0000000000000003UL, 2047 FFFS_NONE = 0; 2048 2049 alias FARFORMATFILESIZE = extern (Windows) size_t function(ulong Size, intptr_t Width, FARFORMATFILESIZEFLAGS Flags, wchar* Dest, size_t DestSize); 2050 2051 struct FarStandardFunctions 2052 { 2053 size_t StructSize; 2054 FARSTDATOI atoi; 2055 FARSTDATOI64 atoi64; 2056 FARSTDITOA itoa; 2057 FARSTDITOA64 itoa64; 2058 FARSTDSPRINTF sprintf; 2059 FARSTDSSCANF sscanf; 2060 FARSTDQSORT qsort; 2061 FARSTDBSEARCH bsearch; 2062 FARSTDSNPRINTF snprintf; 2063 FARSTDLOCALISLOWER LIsLower; 2064 FARSTDLOCALISUPPER LIsUpper; 2065 FARSTDLOCALISALPHA LIsAlpha; 2066 FARSTDLOCALISALPHANUM LIsAlphanum; 2067 FARSTDLOCALUPPER LUpper; 2068 FARSTDLOCALLOWER LLower; 2069 FARSTDLOCALUPPERBUF LUpperBuf; 2070 FARSTDLOCALLOWERBUF LLowerBuf; 2071 FARSTDLOCALSTRUPR LStrupr; 2072 FARSTDLOCALSTRLWR LStrlwr; 2073 deprecated FARSTDLOCALSTRICMP LStricmp; 2074 deprecated FARSTDLOCALSTRNICMP LStrnicmp; 2075 FARSTDUNQUOTE Unquote; 2076 FARSTDLTRIM LTrim; 2077 FARSTDRTRIM RTrim; 2078 FARSTDTRIM Trim; 2079 FARSTDTRUNCSTR TruncStr; 2080 FARSTDTRUNCPATHSTR TruncPathStr; 2081 FARSTDQUOTESPACEONLY QuoteSpaceOnly; 2082 FARSTDPOINTTONAME PointToName; 2083 FARSTDGETPATHROOT GetPathRoot; 2084 FARSTDADDENDSLASH AddEndSlash; 2085 FARSTDCOPYTOCLIPBOARD CopyToClipboard; 2086 FARSTDPASTEFROMCLIPBOARD PasteFromClipboard; 2087 FARSTDINPUTRECORDTOKEYNAME FarInputRecordToName; 2088 FARSTDKEYNAMETOINPUTRECORD FarNameToInputRecord; 2089 FARSTDXLAT XLat; 2090 FARSTDGETFILEOWNER GetFileOwner; 2091 FARSTDGETNUMBEROFLINKS GetNumberOfLinks; 2092 FARSTDRECURSIVESEARCH FarRecursiveSearch; 2093 FARSTDMKTEMP MkTemp; 2094 FARSTDPROCESSNAME ProcessName; 2095 FARSTDMKLINK MkLink; 2096 FARCONVERTPATH ConvertPath; 2097 FARGETREPARSEPOINTINFO GetReparsePointInfo; 2098 FARGETCURRENTDIRECTORY GetCurrentDirectory; 2099 FARFORMATFILESIZE FormatFileSize; 2100 FARSTDFARCLOCK FarClock; 2101 FARSTDCOMPARESTRINGS CompareStrings; 2102 } 2103 alias FARSTANDARDFUNCTIONS = FarStandardFunctions; 2104 2105 struct PluginStartupInfo 2106 { 2107 size_t StructSize; 2108 const(wchar)* ModuleName; 2109 FARAPIMENU Menu; 2110 FARAPIMESSAGE Message; 2111 FARAPIGETMSG GetMsg; 2112 FARAPIPANELCONTROL PanelControl; 2113 FARAPISAVESCREEN SaveScreen; 2114 FARAPIRESTORESCREEN RestoreScreen; 2115 FARAPIGETDIRLIST GetDirList; 2116 FARAPIGETPLUGINDIRLIST GetPluginDirList; 2117 FARAPIFREEDIRLIST FreeDirList; 2118 FARAPIFREEPLUGINDIRLIST FreePluginDirList; 2119 FARAPIVIEWER Viewer; 2120 FARAPIEDITOR Editor; 2121 FARAPITEXT Text; 2122 FARAPIEDITORCONTROL EditorControl; 2123 FARSTANDARDFUNCTIONS* FSF; 2124 FARAPISHOWHELP ShowHelp; 2125 FARAPIADVCONTROL AdvControl; 2126 FARAPIINPUTBOX InputBox; 2127 FARAPICOLORDIALOG ColorDialog; 2128 FARAPIDIALOGINIT DialogInit; 2129 FARAPIDIALOGRUN DialogRun; 2130 FARAPIDIALOGFREE DialogFree; 2131 FARAPISENDDLGMESSAGE SendDlgMessage; 2132 FARAPIDEFDLGPROC DefDlgProc; 2133 FARAPIVIEWERCONTROL ViewerControl; 2134 FARAPIPLUGINSCONTROL PluginsControl; 2135 FARAPIFILEFILTERCONTROL FileFilterControl; 2136 FARAPIREGEXPCONTROL RegExpControl; 2137 FARAPIMACROCONTROL MacroControl; 2138 FARAPISETTINGSCONTROL SettingsControl; 2139 const(void)* Private; 2140 void* Instance; 2141 FARAPIFREESCREEN FreeScreen; 2142 } 2143 2144 alias FARAPICREATEFILE = extern (Windows) HANDLE function( 2145 in wchar* Object, 2146 DWORD DesiredAccess, 2147 DWORD ShareMode, 2148 LPSECURITY_ATTRIBUTES SecurityAttributes, 2149 DWORD CreationDistribution, 2150 DWORD FlagsAndAttributes, 2151 HANDLE TemplateFile); 2152 2153 alias FARAPIGETFILEATTRIBUTES = extern (Windows) DWORD function(in wchar* FileName); 2154 2155 alias FARAPISETFILEATTRIBUTES = extern (Windows) BOOL function( 2156 in wchar* FileName, 2157 DWORD dwFileAttributes); 2158 2159 alias FARAPIMOVEFILEEX = extern (Windows) BOOL function( 2160 in wchar* ExistingFileName, 2161 in wchar* NewFileName, 2162 DWORD dwFlags); 2163 2164 alias FARAPIDELETEFILE = extern (Windows) BOOL function(in wchar* FileName); 2165 2166 alias FARAPIREMOVEDIRECTORY = extern (Windows) BOOL function(in wchar* DirName); 2167 2168 alias FARAPICREATEDIRECTORY = extern (Windows) BOOL function( 2169 in wchar* PathName, 2170 LPSECURITY_ATTRIBUTES lpSecurityAttributes); 2171 2172 struct ArclitePrivateInfo 2173 { 2174 size_t StructSize; 2175 FARAPICREATEFILE CreateFile; 2176 FARAPIGETFILEATTRIBUTES GetFileAttributes; 2177 FARAPISETFILEATTRIBUTES SetFileAttributes; 2178 FARAPIMOVEFILEEX MoveFileEx; 2179 FARAPIDELETEFILE DeleteFile; 2180 FARAPIREMOVEDIRECTORY RemoveDirectory; 2181 FARAPICREATEDIRECTORY CreateDirectory; 2182 } 2183 2184 struct NetBoxPrivateInfo 2185 { 2186 size_t StructSize; 2187 FARAPICREATEFILE CreateFile; 2188 FARAPIGETFILEATTRIBUTES GetFileAttributes; 2189 FARAPISETFILEATTRIBUTES SetFileAttributes; 2190 FARAPIMOVEFILEEX MoveFileEx; 2191 FARAPIDELETEFILE DeleteFile; 2192 FARAPIREMOVEDIRECTORY RemoveDirectory; 2193 FARAPICREATEDIRECTORY CreateDirectory; 2194 } 2195 2196 struct MacroPluginReturn 2197 { 2198 intptr_t ReturnType; 2199 size_t Count; 2200 FarMacroValue* Values; 2201 } 2202 2203 alias FARAPICALLFAR = extern (Windows) intptr_t function(intptr_t CheckCode, FarMacroCall* Data); 2204 2205 struct MacroPrivateInfo 2206 { 2207 size_t StructSize; 2208 FARAPICALLFAR CallFar; 2209 } 2210 2211 alias PLUGIN_FLAGS = ulong; 2212 const PLUGIN_FLAGS 2213 PF_PRELOAD = 0x0000000000000001UL, 2214 PF_DISABLEPANELS = 0x0000000000000002UL, 2215 PF_EDITOR = 0x0000000000000004UL, 2216 PF_VIEWER = 0x0000000000000008UL, 2217 PF_FULLCMDLINE = 0x0000000000000010UL, 2218 PF_DIALOG = 0x0000000000000020UL, 2219 PF_NONE = 0UL; 2220 2221 struct PluginMenuItem 2222 { 2223 const(GUID)* Guids; 2224 const(wchar*)* Strings; 2225 size_t Count; 2226 } 2227 2228 enum VERSION_STAGE 2229 { 2230 VS_RELEASE = 0, 2231 VS_ALPHA = 1, 2232 VS_BETA = 2, 2233 VS_RC = 3, 2234 VS_SPECIAL = 4, 2235 VS_PRIVATE = 5, 2236 } 2237 2238 struct VersionInfo 2239 { 2240 DWORD Major; 2241 DWORD Minor; 2242 DWORD Revision; 2243 DWORD Build; 2244 VERSION_STAGE Stage; 2245 } 2246 2247 BOOL CheckVersion(in VersionInfo* Current, in VersionInfo* Required) 2248 { 2249 return (Current.Major > Required.Major) 2250 || (Current.Major == Required.Major && Current.Minor > Required.Minor) 2251 || (Current.Major == Required.Major && Current.Minor == Required.Minor && Current.Revision > Required.Revision) 2252 || (Current.Major == Required.Major && Current.Minor == Required.Minor && Current.Revision == Required.Revision && Current.Build >= Required.Build); 2253 } 2254 2255 VersionInfo MakeFarVersion(DWORD Major, DWORD Minor, DWORD Revision, DWORD Build, VERSION_STAGE Stage) 2256 { 2257 return VersionInfo(Major, Minor, Revision, Build, Stage); 2258 } 2259 auto FARMANAGERVERSION() { return MakeFarVersion(FARMANAGERVERSION_MAJOR, FARMANAGERVERSION_MINOR, FARMANAGERVERSION_REVISION, FARMANAGERVERSION_BUILD, FARMANAGERVERSION_STAGE); } 2260 2261 struct GlobalInfo 2262 { 2263 size_t StructSize; 2264 VersionInfo MinFarVersion; 2265 VersionInfo Version; 2266 GUID Guid; 2267 const(wchar)* Title; 2268 const(wchar)* Description; 2269 const(wchar)* Author; 2270 void* Instance; 2271 } 2272 2273 struct PluginInfo 2274 { 2275 size_t StructSize; 2276 PLUGIN_FLAGS Flags; 2277 PluginMenuItem DiskMenu; 2278 PluginMenuItem PluginMenu; 2279 PluginMenuItem PluginConfig; 2280 const(wchar)* CommandPrefix; 2281 void* Instance; 2282 } 2283 2284 struct FarGetPluginInformation 2285 { 2286 size_t StructSize; 2287 const(wchar)* ModuleName; 2288 FAR_PLUGIN_FLAGS Flags; 2289 PluginInfo* PInfo; 2290 GlobalInfo* GInfo; 2291 } 2292 2293 alias INFOPANELLINE_FLAGS = ulong; 2294 const INFOPANELLINE_FLAGS 2295 IPLFLAGS_SEPARATOR = 0x0000000000000001UL, 2296 IPLFLAGS_NONE = 0; 2297 2298 struct InfoPanelLine 2299 { 2300 const(wchar)* Text; 2301 const(wchar)* Data; 2302 INFOPANELLINE_FLAGS Flags; 2303 } 2304 2305 alias PANELMODE_FLAGS = ulong; 2306 const PANELMODE_FLAGS 2307 PMFLAGS_FULLSCREEN = 0x0000000000000001UL, 2308 PMFLAGS_DETAILEDSTATUS = 0x0000000000000002UL, 2309 PMFLAGS_ALIGNEXTENSIONS = 0x0000000000000004UL, 2310 PMFLAGS_CASECONVERSION = 0x0000000000000008UL, 2311 PMFLAGS_NONE = 0; 2312 2313 struct PanelMode 2314 { 2315 const(wchar)* ColumnTypes; 2316 const(wchar)* ColumnWidths; 2317 const(wchar*)* ColumnTitles; 2318 const(wchar)* StatusColumnTypes; 2319 const(wchar)* StatusColumnWidths; 2320 PANELMODE_FLAGS Flags; 2321 } 2322 2323 alias OPENPANELINFO_FLAGS = ulong; 2324 const OPENPANELINFO_FLAGS 2325 OPIF_DISABLEFILTER = 0x0000000000000001UL, 2326 OPIF_DISABLESORTGROUPS = 0x0000000000000002UL, 2327 OPIF_DISABLEHIGHLIGHTING = 0x0000000000000004UL, 2328 OPIF_ADDDOTS = 0x0000000000000008UL, 2329 OPIF_RAWSELECTION = 0x0000000000000010UL, 2330 OPIF_REALNAMES = 0x0000000000000020UL, 2331 OPIF_SHOWNAMESONLY = 0x0000000000000040UL, 2332 OPIF_SHOWRIGHTALIGNNAMES = 0x0000000000000080UL, 2333 OPIF_SHOWPRESERVECASE = 0x0000000000000100UL, 2334 OPIF_COMPAREFATTIME = 0x0000000000000400UL, 2335 OPIF_EXTERNALGET = 0x0000000000000800UL, 2336 OPIF_EXTERNALPUT = 0x0000000000001000UL, 2337 OPIF_EXTERNALDELETE = 0x0000000000002000UL, 2338 OPIF_EXTERNALMKDIR = 0x0000000000004000UL, 2339 OPIF_USEATTRHIGHLIGHTING = 0x0000000000008000UL, 2340 OPIF_USECRC32 = 0x0000000000010000UL, 2341 OPIF_USEFREESIZE = 0x0000000000020000UL, 2342 OPIF_SHORTCUT = 0x0000000000040000UL, 2343 OPIF_NONE = 0UL; 2344 2345 struct KeyBarLabel 2346 { 2347 FarKey Key; 2348 const(wchar)* Text; 2349 const(wchar)* LongText; 2350 } 2351 2352 struct KeyBarTitles 2353 { 2354 size_t CountLabels; 2355 KeyBarLabel* Labels; 2356 } 2357 2358 struct FarSetKeyBarTitles 2359 { 2360 size_t StructSize; 2361 KeyBarTitles* Titles; 2362 } 2363 2364 alias OPERATION_MODES = ulong; 2365 const OPERATION_MODES 2366 OPM_SILENT =0x0000000000000001UL, 2367 OPM_FIND =0x0000000000000002UL, 2368 OPM_VIEW =0x0000000000000004UL, 2369 OPM_EDIT =0x0000000000000008UL, 2370 OPM_TOPLEVEL =0x0000000000000010UL, 2371 OPM_DESCR =0x0000000000000020UL, 2372 OPM_QUICKVIEW =0x0000000000000040UL, 2373 OPM_PGDN =0x0000000000000080UL, 2374 OPM_COMMANDS =0x0000000000000100UL, 2375 OPM_NONE =0UL; 2376 2377 struct OpenPanelInfo 2378 { 2379 size_t StructSize; 2380 HANDLE hPanel; 2381 OPENPANELINFO_FLAGS Flags; 2382 const(wchar)* HostFile; 2383 const(wchar)* CurDir; 2384 const(wchar)* Format; 2385 const(wchar)* PanelTitle; 2386 const(InfoPanelLine)* InfoLines; 2387 size_t InfoLinesNumber; 2388 const(wchar*)* DescrFiles; 2389 size_t DescrFilesNumber; 2390 const(PanelMode)* PanelModesArray; 2391 size_t PanelModesNumber; 2392 intptr_t StartPanelMode; 2393 OPENPANELINFO_SORTMODES StartSortMode; 2394 intptr_t StartSortOrder; 2395 const(KeyBarTitles)* KeyBar; 2396 const(wchar)* ShortcutData; 2397 ulong FreeSize; 2398 UserDataItem UserData; 2399 void* Instance; 2400 } 2401 2402 struct AnalyseInfo 2403 { 2404 size_t StructSize; 2405 const(wchar)* FileName; 2406 void* Buffer; 2407 size_t BufferSize; 2408 OPERATION_MODES OpMode; 2409 void* Instance; 2410 } 2411 2412 struct OpenAnalyseInfo 2413 { 2414 size_t StructSize; 2415 AnalyseInfo* Info; 2416 HANDLE Handle; 2417 } 2418 2419 struct OpenMacroInfo 2420 { 2421 size_t StructSize; 2422 size_t Count; 2423 FarMacroValue* Values; 2424 } 2425 2426 alias FAROPENSHORTCUTFLAGS = ulong; 2427 const FAROPENSHORTCUTFLAGS 2428 FOSF_ACTIVE = 0x0000000000000001UL, 2429 FOSF_NONE = 0; 2430 2431 struct OpenShortcutInfo 2432 { 2433 size_t StructSize; 2434 const(wchar)* HostFile; 2435 const(wchar)* ShortcutData; 2436 FAROPENSHORTCUTFLAGS Flags; 2437 } 2438 2439 struct OpenCommandLineInfo 2440 { 2441 size_t StructSize; 2442 const(wchar)* CommandLine; 2443 } 2444 2445 enum OPENFROM 2446 { 2447 OPEN_LEFTDISKMENU = 0, 2448 OPEN_PLUGINSMENU = 1, 2449 OPEN_FINDLIST = 2, 2450 OPEN_SHORTCUT = 3, 2451 OPEN_COMMANDLINE = 4, 2452 OPEN_EDITOR = 5, 2453 OPEN_VIEWER = 6, 2454 OPEN_FILEPANEL = 7, 2455 OPEN_DIALOG = 8, 2456 OPEN_ANALYSE = 9, 2457 OPEN_RIGHTDISKMENU = 10, 2458 OPEN_FROMMACRO = 11, 2459 OPEN_LUAMACRO = 100, 2460 } 2461 2462 enum MACROCALLTYPE 2463 { 2464 MCT_MACROPARSE = 0, 2465 MCT_LOADMACROS = 1, 2466 MCT_ENUMMACROS = 2, 2467 MCT_WRITEMACROS = 3, 2468 MCT_GETMACRO = 4, 2469 MCT_RECORDEDMACRO = 5, 2470 MCT_DELMACRO = 6, 2471 MCT_RUNSTARTMACRO = 7, 2472 MCT_EXECSTRING = 8, 2473 MCT_PANELSORT = 9, 2474 MCT_GETCUSTOMSORTMODES = 10, 2475 MCT_ADDMACRO = 11, 2476 MCT_KEYMACRO = 12, 2477 MCT_CANPANELSORT = 13, 2478 } 2479 2480 enum MACROPLUGINRETURNTYPE 2481 { 2482 MPRT_NORMALFINISH = 0, 2483 MPRT_ERRORFINISH = 1, 2484 MPRT_ERRORPARSE = 2, 2485 MPRT_KEYS = 3, 2486 MPRT_PRINT = 4, 2487 MPRT_PLUGINCALL = 5, 2488 MPRT_PLUGINMENU = 6, 2489 MPRT_PLUGINCONFIG = 7, 2490 MPRT_PLUGINCOMMAND = 8, 2491 MPRT_USERMENU = 9, 2492 MPRT_HASNOMACRO = 10, 2493 } 2494 2495 struct OpenMacroPluginInfo 2496 { 2497 MACROCALLTYPE CallType; 2498 FarMacroCall* Data; 2499 MacroPluginReturn Ret; 2500 } 2501 2502 enum FAR_EVENTS 2503 { 2504 FE_CHANGEVIEWMODE =0, 2505 FE_REDRAW =1, 2506 FE_IDLE =2, 2507 FE_CLOSE =3, 2508 FE_BREAK =4, 2509 FE_COMMAND =5, 2510 2511 FE_GOTFOCUS =6, 2512 FE_KILLFOCUS =7, 2513 FE_CHANGESORTPARAMS =8, 2514 } 2515 2516 struct OpenInfo 2517 { 2518 size_t StructSize; 2519 OPENFROM OpenFrom; 2520 const(GUID)* Guid; 2521 intptr_t Data; 2522 void* Instance; 2523 } 2524 2525 struct SetDirectoryInfo 2526 { 2527 size_t StructSize; 2528 HANDLE hPanel; 2529 const(wchar)* Dir; 2530 intptr_t Reserved; 2531 OPERATION_MODES OpMode; 2532 UserDataItem UserData; 2533 void* Instance; 2534 } 2535 2536 struct SetFindListInfo 2537 { 2538 size_t StructSize; 2539 HANDLE hPanel; 2540 const(PluginPanelItem)* PanelItem; 2541 size_t ItemsNumber; 2542 void* Instance; 2543 } 2544 2545 struct PutFilesInfo 2546 { 2547 size_t StructSize; 2548 HANDLE hPanel; 2549 PluginPanelItem* PanelItem; 2550 size_t ItemsNumber; 2551 BOOL Move; 2552 const(wchar)* SrcPath; 2553 OPERATION_MODES OpMode; 2554 void* Instance; 2555 } 2556 2557 struct ProcessHostFileInfo 2558 { 2559 size_t StructSize; 2560 HANDLE hPanel; 2561 PluginPanelItem* PanelItem; 2562 size_t ItemsNumber; 2563 OPERATION_MODES OpMode; 2564 void* Instance; 2565 } 2566 2567 struct MakeDirectoryInfo 2568 { 2569 size_t StructSize; 2570 HANDLE hPanel; 2571 const(wchar)* Name; 2572 OPERATION_MODES OpMode; 2573 void* Instance; 2574 } 2575 2576 struct CompareInfo 2577 { 2578 size_t StructSize; 2579 HANDLE hPanel; 2580 const(PluginPanelItem)* Item1; 2581 const(PluginPanelItem)* Item2; 2582 OPENPANELINFO_SORTMODES Mode; 2583 void* Instance; 2584 } 2585 2586 struct GetFindDataInfo 2587 { 2588 size_t StructSize; 2589 HANDLE hPanel; 2590 PluginPanelItem* PanelItem; 2591 size_t ItemsNumber; 2592 OPERATION_MODES OpMode; 2593 void* Instance; 2594 } 2595 2596 struct FreeFindDataInfo 2597 { 2598 size_t StructSize; 2599 HANDLE hPanel; 2600 PluginPanelItem* PanelItem; 2601 size_t ItemsNumber; 2602 void* Instance; 2603 } 2604 2605 struct GetFilesInfo 2606 { 2607 size_t StructSize; 2608 HANDLE hPanel; 2609 PluginPanelItem* PanelItem; 2610 size_t ItemsNumber; 2611 BOOL Move; 2612 const(wchar)* DestPath; 2613 OPERATION_MODES OpMode; 2614 void* Instance; 2615 } 2616 2617 struct DeleteFilesInfo 2618 { 2619 size_t StructSize; 2620 HANDLE hPanel; 2621 PluginPanelItem* PanelItem; 2622 size_t ItemsNumber; 2623 OPERATION_MODES OpMode; 2624 void* Instance; 2625 } 2626 2627 struct ProcessPanelInputInfo 2628 { 2629 size_t StructSize; 2630 HANDLE hPanel; 2631 INPUT_RECORD Rec; 2632 void* Instance; 2633 } 2634 2635 struct ProcessEditorInputInfo 2636 { 2637 size_t StructSize; 2638 INPUT_RECORD Rec; 2639 void* Instance; 2640 } 2641 2642 alias PROCESSCONSOLEINPUT_FLAGS = ulong; 2643 const PROCESSCONSOLEINPUT_FLAGS 2644 PCIF_NONE = 0; 2645 2646 struct ProcessConsoleInputInfo 2647 { 2648 size_t StructSize; 2649 PROCESSCONSOLEINPUT_FLAGS Flags; 2650 INPUT_RECORD Rec; 2651 void* Instance; 2652 } 2653 2654 struct ExitInfo 2655 { 2656 size_t StructSize; 2657 void* Instance; 2658 } 2659 2660 struct ProcessPanelEventInfo 2661 { 2662 size_t StructSize; 2663 intptr_t Event; 2664 void* Param; 2665 HANDLE hPanel; 2666 void* Instance; 2667 } 2668 2669 struct ProcessEditorEventInfo 2670 { 2671 size_t StructSize; 2672 intptr_t Event; 2673 void* Param; 2674 intptr_t EditorID; 2675 void* Instance; 2676 } 2677 2678 struct ProcessDialogEventInfo 2679 { 2680 size_t StructSize; 2681 intptr_t Event; 2682 FarDialogEvent* Param; 2683 void* Instance; 2684 } 2685 2686 struct ProcessSynchroEventInfo 2687 { 2688 size_t StructSize; 2689 intptr_t Event; 2690 void* Param; 2691 void* Instance; 2692 } 2693 2694 struct ProcessViewerEventInfo 2695 { 2696 size_t StructSize; 2697 intptr_t Event; 2698 void* Param; 2699 intptr_t ViewerID; 2700 void* Instance; 2701 } 2702 2703 struct ClosePanelInfo 2704 { 2705 size_t StructSize; 2706 HANDLE hPanel; 2707 void* Instance; 2708 } 2709 2710 struct CloseAnalyseInfo 2711 { 2712 size_t StructSize; 2713 HANDLE Handle; 2714 void* Instance; 2715 } 2716 2717 struct ConfigureInfo 2718 { 2719 size_t StructSize; 2720 const(GUID)* Guid; 2721 void* Instance; 2722 } 2723 2724 struct GetContentFieldsInfo 2725 { 2726 size_t StructSize; 2727 size_t Count; 2728 const(wchar*)* Names; 2729 void* Instance; 2730 } 2731 2732 struct GetContentDataInfo 2733 { 2734 size_t StructSize; 2735 const(wchar)* FilePath; 2736 size_t Count; 2737 const(wchar*)* Names; 2738 const(wchar)** Values; 2739 void* Instance; 2740 } 2741 2742 struct ErrorInfo 2743 { 2744 size_t StructSize; 2745 const(wchar)* Summary; 2746 const(wchar)* Description; 2747 } 2748 2749 GUID FarGuid = {0x00000000, 0x0000, 0x0000, [0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00]}; 2750 2751 // Exported Functions 2752 2753 extern (Windows) HANDLE AnalyseW(in AnalyseInfo* Info); 2754 2755 extern (Windows) void CloseAnalyseW(in CloseAnalyseInfo* Info); 2756 2757 extern (Windows) void ClosePanelW(in ClosePanelInfo* Info); 2758 2759 extern (Windows) intptr_t CompareW(in CompareInfo* Info); 2760 2761 extern (Windows) intptr_t ConfigureW(in ConfigureInfo* Info); 2762 2763 extern (Windows) intptr_t DeleteFilesW(in DeleteFilesInfo* Info); 2764 2765 extern (Windows) void ExitFARW(in ExitInfo* Info); 2766 2767 extern (Windows) void FreeFindDataW(in FreeFindDataInfo* Info); 2768 2769 extern (Windows) intptr_t GetFilesW(GetFilesInfo* Info); 2770 2771 extern (Windows) intptr_t GetFindDataW(GetFindDataInfo* Info); 2772 2773 extern (Windows) void GetGlobalInfoW(GlobalInfo* Info); 2774 2775 extern (Windows) void GetOpenPanelInfoW(OpenPanelInfo* Info); 2776 2777 extern (Windows) void GetPluginInfoW(PluginInfo* Info); 2778 2779 extern (Windows) intptr_t MakeDirectoryW(MakeDirectoryInfo* Info); 2780 2781 extern (Windows) HANDLE OpenW(in OpenInfo* Info); 2782 2783 extern (Windows) intptr_t ProcessDialogEventW(in ProcessDialogEventInfo* Info); 2784 2785 extern (Windows) intptr_t ProcessEditorEventW(in ProcessEditorEventInfo* Info); 2786 2787 extern (Windows) intptr_t ProcessEditorInputW(in ProcessEditorInputInfo* Info); 2788 2789 extern (Windows) intptr_t ProcessPanelEventW(in ProcessPanelEventInfo* Info); 2790 2791 extern (Windows) intptr_t ProcessHostFileW(in ProcessHostFileInfo* Info); 2792 2793 extern (Windows) intptr_t ProcessPanelInputW(in ProcessPanelInputInfo* Info); 2794 2795 extern (Windows) intptr_t ProcessConsoleInputW(ProcessConsoleInputInfo* Info); 2796 2797 extern (Windows) intptr_t ProcessSynchroEventW(in ProcessSynchroEventInfo* Info); 2798 2799 extern (Windows) intptr_t ProcessViewerEventW(in ProcessViewerEventInfo* Info); 2800 2801 extern (Windows) intptr_t PutFilesW(in PutFilesInfo* Info); 2802 2803 extern (Windows) intptr_t SetDirectoryW(in SetDirectoryInfo* Info); 2804 2805 extern (Windows) intptr_t SetFindListW(in SetFindListInfo* Info); 2806 2807 extern (Windows) void SetStartupInfoW(in PluginStartupInfo* Info); 2808 2809 extern (Windows) intptr_t GetContentFieldsW(in GetContentFieldsInfo* Info); 2810 2811 extern (Windows) intptr_t GetContentDataW(GetContentDataInfo* Info); 2812 2813 extern (Windows) void FreeContentDataW(in GetContentDataInfo* Info);