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