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