FarNet — .NET Far API and .NET module manager

Анонсы новых плагинов. Обсуждение плагинов ведется ниже.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Post by NightRoman »

Latest post of the previous page:

http://code.google.com/p/farnet/

3.3.22

- Fixed most (all?) of x64 issues. Sources are ready for x64. Currently binaries
are provided for x32 only, sorry for inconvenience.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Post by NightRoman »

http://code.google.com/p/farnet/

3.3.23

- New methods IFar.{Get|Set}PluginValue(string pluginName, string valueName,
object {default|new}Value) to {get|set} a plugin value stored in the registry,
usually at "Software\Far\Plugins" (or "Software\Far\Users\user1\Plugins" if FAR
is started started with '/u user1' parameter). "pluginName" defines a subkey
there; the subkey is created if it does not exist even if you only get a value.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Post by NightRoman »

http://code.google.com/p/farnet/

3.3.25 (and updated CHM documentation)

OBSOLETE
- IFar.UnregisterPluginsDiskItem, IFar.UnregisterPluginsMenuItem are obsolete
and will be removed because they are not really effective: registration is done
only when Connect() is called and it cannot be 'undone'. Besides, when FAR.NET
is disconnected all registered items are 'unregistered' automatically. Example
plugin sources are already updated, you may have to update your existing
plugins too: simply remove calls of these methods. Bonus: you don't have to keep
menu item references waiting for Disconnect() to be unregistered, and in most
cases a plugin does not have to implement Disconnect() at all.

PLUGIN CONFIGURATION
- New method RegisterPluginsConfigItem(): adds "Plugin configuration" item.

WINDOWS
- New property IFar.WindowCount {get}.
- New interface IWindowInfo and enum WindowType.
- New methods IFar: GetWindowInfo(), SetCurrentWindow(), Commit().

DIALOGS
New features mostly simplifying creation of a dialog and especially future
modifications of it (Test-Dialog-.ps1 in PowerShellFar shows them all):
- IDialog.AddBox(): if a parameter right\bottom is 0 then it is calculated;
- New properties IDialog.Rect, IControl.Rect (useful for relative positions);
- New property IDialog.NoSmartCoords. By default coordinates are "smart", i.e.
not positive Top is subtracted from the previous control Top: (0) - the same
line, (-1) - the next line, and so on. See more in help.
- New property IDialog.Cancel:IButton - if it is set and the button is pushed
then Selected is set to this button as usually, but Show() returns false now.

PLUGIN PANELS
- REMOVED property IPanelPluginInfo.ConfirmClose because of FE_CLOSE issues: it
may not happen or it may happen when a panel is not about to close.
- New methods IPanel.Close() and IPanel.Close(string path).
- REMOVED method IFar.ClosePanel(), instead of it use IPanel.Close() (also for
IPanelPlugin), i.e. call Far.Panel.Close() to close an active panel,
Far.AnotherPanel.Close() to close a passive panel, <IPluginPanel>.Close() to
close a plugin panel (active or passive).
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Post by NightRoman »

http://code.google.com/p/farnet/

3.3.26

PLUGIN PANELS
- New property IPanelPlugin.StartDirectory (current directory when it starts).

REMOVED
- Removed IFar.UnregisterPluginsDiskItem, IFar.UnregisterPluginsMenuItem, see
explanation in history 3.3.25.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Post by NightRoman »

http://code.google.com/p/farnet/

3.3.28

- Added property IMenu.Sender:object; this object is passed in event handler as
a sender. By default IMenuItem is a sender.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Post by NightRoman »

http://code.google.com/p/farnet/

3.3.30

NEW

- IAnyMenu - any menu interface; IMenu is now derived from it.
- IListMenu, Far.CreateListMenu() - new style menu with extra features, e.g.
incremental filter on typing (substring/prefix/wildcard). It is ready to use,
but further changes are very possible.
- Far.CodeToChar() - converts internal key code to char (20h-FFh).
- KeyCode - helper constants for internal key codes (subject to change).

REMOVED
(these changes are unlikely breaking, but...)

- Removed IListItem, use IMenuItem instead (items of combo and list boxes).
In other words property Items of IMenu, IListMenu, IComboBox, IListBox is a
collection of IMenuItem's. If you used IListItem directly, just rename it.
- Removed IMenu.OnClick - it turned out that it was declared but not really
implemented or used. Looks like it was declared by mistake.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Post by NightRoman »

http://code.google.com/p/farnet/

3.3.31

NEW

- IFar.LoadMacros(), IFar.SaveMacros().

REVISION: IMenu, IListMenu

- IMenu does not support filters any more, it is now pure MENU OF COMMANDS, as
simple and effective as possible. If your menu is rather a LIST OF OBJECTS for
selection than use IListMenu, which provides filters: permanent and incremental,
both with variety of PatternOptions.

- Migration from IMenu to IListMenu (if you really need it) is simple: semantics
is the same, just rename IMenu and CreateMenu to IListMenu and CreateListMenu;
actually only keys are different: IMenu uses virtual key codes, IListMenu uses
internal key codes added by AddKey() with optional handlers.

- If you use permanent filter than, to enable it, now you have to define
IListMenu.FilterOption according to your preferences, not FilterKey, which is
now set to default (CtrlDown) and you don't have to fuss about internal codes,
at least for this.

- [F1] in list menus and input filter dialogs opens basic Far.NET help about
predefined and recommended list menu keys and about patterns used for filters.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Post by NightRoman »

http://code.google.com/p/farnet/

3.3.32

FIXED/IMPROVED

- Fixed memory leaks on panel operations.
- Optimized memory use on panel operations.
- Avoided redundant panel updates in some cases.

NEW

- IAnyEditor.EditText() - simple way to edit text in a modal editor.
- IFar.PostMacro()

OBSOLETE/CHANGED/REMOVED

- IFar.AnotherPanel will be removed, use IFar.Panel2 instead.
- Methods IFar.CreateKeySequence() and IFar.PostKeySequence() work with int[],
not IList<int>.
- Removed IPluginMenuItem and CreatePluginsMenuItem, RegisterPlugins*Item. Use
methods RegisterPlugins*Item(string, handler) instead.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Post by NightRoman »

http://farnet.googlecode.com/files/Far.NET.3.3.32.1.rar

3.3.32.1 (fix)

- Fixed IPanelPlugin.PuttingFiles Event. (if you do not use this event then you do not need this patch)
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Post by NightRoman »

http://code.google.com/p/farnet/

3.3.33

NEW

- You can now open as many panels as you want (or keep one invisible for later
use). Of course, only two of them can be shown but the others can be pushed to
the stack by IPanelPlugin.Push so that later you can IPanelPlugin.Open them.
Another new related methods: IFar.ShowPanelMenu() - panel menu where you can
push a panel or open pushed panels (it is included in plugins and disk menus);
IFar.PushedPanels() - array of pushed panels, IPanelPlugin.Post*() - used
internally to remember and restore the current file in a pushed panel.
- IPanelPlugin.DotsDescription (used together with AddDots).
- IPanelPluginInfo.InfoItems allows to set custom info panel items.
- IPanelPluginInfo.SetKeyBar*() allows to set custom key bar labels.
- IFar.{Register|Unregister}OpenFile() implements OpenFilePlugin FAR API.
- VKeyCode - some of virtual key codes.

BREAKING CHANGES

- Property AddDots moved from IPanelPluginInfo to IPanelPlugin, i.e. item dots
now is rather panel data than info.
- StringDelegate was removed, RegisterPrefix uses now another type of handler:
EventHandler<ExcutingEventArgs>. This way is more flexible for future changes
and allows to RegisterPrefix from PowerShell.
- Removed obsolete IFar.AnotherPanel; use IFar.Panel2 instead.
- Renamed OpenPluginMenuItemEventArgs into PluginMenuEventArgs.

FIXED/IMPROVED

- Fixed IPanelPlugin.PuttingFiles Event.
- Fixed (or, say, implemented) processing of AddDots in panels.
- Avoided redundant internal memory allocations on GetPluginInfo().
- IFar.Plugin bug when two plugin panels are opened and one of them is under
the info panel.
- Restored removed by mistake IFar.Unregister* methods.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Post by NightRoman »

http://code.google.com/p/farnet/

3.3.34

MAIN CHANGES (BREAKING) AND NEW FEATURES
(result of all recent forum discussions)

- IFar.Register*|Unregister* methods are quite different, see .CHM and updated
examples. BasePlugin class can be used as usual with new Register*|Unregister*
methods. There is also a new simpler helper ToolPlugin - all you need is to
implement a single method (other stuff is up to you).
- FAR.NET provides some configuration tools for all its plugins: 1) you can edit
plugin menu strings in different areas (Panels, Editor, Viewer..); 2) you can
edit all prefixes according to your preferences or to resolve conflicts; plugins
may do not care of prefixes in their configurations.
- Removed IFar.From as not really important. Plugin handlers have this info.
Besides, new IFar.GetWindowType() gets almost the same information.
- Slightly changed rules of loading plugins, see Readme.txt.

HOTKEYS

- You have to reset your hotkeys. It is recommended to set the main FAR.NET
hotkey as usual by F4 and set other FAR.NET hotkeys by ampersands in Options \
Plugins configuration \ .NET \ Panels tools, Editor tools, Viewer tools (yes,
.NET plugins may have different hotkeys in different areas).

NEW

- Button [Copy Info] in error dialog copies the error info to the clipboard.
- IFar.PostStep() returns control to FAR and after that invokes a step handler.

FIXED

- "Index out of range" in IListMenu when a key handler changes menu items.

CHANGED

- IFar.Msg(string) and IFar.Msg(string, string) return void. Other Msg methods
as usual return pressed button index or -1 on Escape.
- VKeyCode: some keys were renamed according to .NET naming guidelines.

OBSOLETE

- Property IFar.Clipboard will be removed, use methods CopyToClipboard and
PasteFromClipboard. Property is sometimes triggered when it is not really
wanted: e.g. in debugger, in PowerShell member list and etc.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Post by NightRoman »

http://code.google.com/p/farnet/

3.3.35

NEW

- CommandPlugin, FilerPlugin classes - two more plugin helpers, see .CHM help
and Plugins.NET examples.
- ToolPlugin, CommandPlugin, FilerPlugin are normally not preloaded, i.e.
information is read from the registry cache only and an assembly is loaded only
when a plugin feature is invoked.
- FAR.NET config allows to edit file masks of file plugins.
- FAR.NET features are described in .hlf topics (also opened on F1).
- Loading plugins: if a DLL has nothing to load an exception is thrown. This DLL
has to be removed from a plugin folder or a .cfg file has to be used to define
what DLLs and classes are loaded exactly.
- New information in Readme.txt.

FIXED

- Recent bug: can't not open a panel when two panels are already opened.
- Command prefixes were case sensitive.
- IEdit.Line.Insert() did not work.
- A few x64 issues.

CHANGED
- Removed obsolete IFar.Clipboard, use CopyToClipboard and PasteFromClipboard.
- A few breaking renamings in the recent features for the sake of common names
style: RegisterPrefix -> RegisterCommand (actually we register a command, prefix
is only a default suggestion); UnregisterPrefix -> UnregisterCommand;
ExecutingEventArgs -> CommandEventArgs (for plugin); RegisterFile ->
RegisterFiler; UnregisterFile -> UnregisterFiler; OpenFileEventArgs ->
FilerEventArgs.
- RegisterFiler has two more parameters: 'mask' and 'creates'.
- FilerEventArgs.Data type changed from byte[] to System.IO.Stream (to avoid
redundant data copy), see example in Plugins.NET.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Post by NightRoman »

http://code.google.com/p/farnet/

3.3.36

Requires FAR 1.71 alpha 4 (build 2309)
http://forum.farmanager.com/viewtopic.php?p=29848#29848

NEW IN FAR.NET
- EditorPlugin - yet another plugin helper, see help and examples.

NEW IN FAR API AND FAR.NET
- Support of FAR plugins menu in dialogs.
- IEdit.NoAutoComplete ~ DIF_NOAUTOCOMPLETE.
- Events GotFocus and LosingFocus in plugin panels and editor instances.
- Enum FarMacroState, property IFar.MacroState ~ FARMACROSTATE, MCMD_GETSTATE.

FIXED
- Memory was not freed on PasteFromClipboard().

CHANGED
- Moved property WordDiv from IFar to IAnyEditor.
- Converted property IFar.Editors into method Editors(), it returns an array of
opened editors.

OBSOLETE
- Property BreakCode in menus (IListMenu and IMenu) will be removed, use the new
property BreakKey instead. For IListMenu it is simply renaming; for IMenu it is
not an index of a break key but a key code itself - this way looks more natural
and makes coding and changes easier.

--
Happy New Year!
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Post by NightRoman »

http://code.google.com/p/farnet/

3.3.37

Recommended FAR 1.71.2315

NEW
- IFar.Redraw() for FAR 1.71.2315
- IMenuItem.Disabled works in menus.
- IMenuItem.Text + IsSeparator is shown in menus.
- IMenuItem.From enables\disables a menu item "automatically".
- IMenu: item properties (except Text) can be changed in locked mode.
- BasePlugin.Invoking(): rarely needed, but sometimes useful, see help.
- IUserControl - currently it is not really a user defined control with custom
drawing, but it still can be used to receive some events where other controls
are not suitable.

OBSOLETE
- REMOVED property BreakCode from menus, see 3.3.36 notes.
- Editor and viewer properties Async and IsModal WILL BE REMOVED. Use new method
Open( OpenMode ) with OpenMode enum. Old method Open() with no parameter is also
obsolete for now, don't use it for this transition period; but it will not be
removed, later it will work as Open( OpenMode.None ).
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Far.Net — плагин для написания плагинов на .NET языках

Post by NightRoman »

http://code.google.com/p/farnet/

3.3.38

NEW
- Many new features in IViewer and new interface IAnyViewer. In short, viewer
management is now similar to editor management (but features are different).
- Minor changes in IEditor and replacements for obsoletes (see below).
- IFar: TempName(), TempFolder().

FIX
- Improved error detection on Open() in editor and viewer (it used to throw a
false error in some rare special cases).

OBSOLETE\CHANGED
- Removed editor and viewer properties Async and IsModal. Use new method Open(
OpenMode ). Old method Open() with no parameter works as Open( OpenMode.None ).
- Editor and viewer properties DeleteOnClose and DeleteOnlyFileOnClose will be
removed, use new property and enum DeleteSource.
- Editor events AfterOpen, AfterClose, BeforeSave will be removed because their
names violate .NET naming guidelines; use new events: Opened, Closed, Saving.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Far.Net — плагин для написания плагинов на .NET языках

Post by NightRoman »

http://code.google.com/p/farnet/

3.3.39

CHANGED
- VKeyCode names was made compatible with System.ConsoleKey names.

OBSOLETE
- Removed obsolete editor and viewer properties DeleteOnClose and
DeleteOnlyFileOnClose. Use new property DeleteSource (enum DeleteSource).
- Removed obsolete editor events AfterOpen, AfterClose, BeforeSave. Use new
events: Opened, Closed, Saving. Updated demo plugin Plugins.NET \ TrimSaving.
Post Reply

Return to “Анонсы новых плагинов”