Page 12 of 18

Re: FarNet — .NET Far API and .NET module manager

Posted: Sun 20 Mar, 2011 13:06
by NightRoman

Latest post of the previous page:

= 4.4.5 =

*) Explorer arguments
Removed the Panel property. Instead, most of explorer methods are called via
virtual panel methods, so that panels have a chance to do something before or
after. There is also the Parameter property, explorers and callers may use it.

*) Explorer methods
- Renamed a few methods (see the forum discussion)
- AcceptFilesEventArgs: Delete -> ToDeleteFiles

*) Explorers and panels
- Added RenameFile() to rename a file
- Added ExportFiles() to copy/move module files to native destinations
- Super panel supports ExportFiles (actually it depends on explorers of files)

*) Misc
- FarFile class is abstract

Re: FarNet — .NET Far API and .NET module manager

Posted: Sun 27 Mar, 2011 13:19
by NightRoman

= 4.4.6 =

*) Panels & explorers
- ImportFiles supports the FilesToStay list and selection recovery.
- ExportFiles: target panel is updated to show new items without a delay.
- New *CloneFile* family of methods for [ShiftF5] in panels.
- New method Navigate(), only for the same type explorers ~ same virtual FS.
- Removed the dialog from UIRename() and NewName from RenameFileEventArgs, it
is completely up to panels and explorers what they do and show on operations.
- Select|UnselectNames parameter is IEnumerable now (and ToString() is used).

*) UI menu: .NET \ Panels
- New commands "Decrease left column", "Increase left column" work for module
panel if its current view has two columns. The vertical column separator is
moved left and right on these commands. Use [Space] to repeat the menu.
- For example it works in super panels, including search result panels.
- They are candidates for macros, e.g. for CtrlAltLeft/Right.

*) UI menu: .NET \ Console \ Decrease|Increase font size
- [Space] is used to invoke commands and repeat the menu.

*) Misc
- New property IPanel.ViewPlan - info about column kinds and widths.

*) Bugs
- Native panel state was not restored in some cases.

Re: FarNet — .NET Far API and .NET module manager

Posted: Sun 03 Apr, 2011 14:16
by NightRoman

= 4.4.7 =

*) Panel
Converted some more internal methods & events into public virtual:
- WorksClosed -> UIClosed
- WorksClosing -> UIClosing
NOTE: UIClosing is useful but buggy:

Re: FarNet — .NET Far API and .NET module manager

Posted: Sun 10 Apr, 2011 16:27
by NightRoman

= 4.4.8 =

*) Panel
Converted some more internal methods into public virtual:
- WorksCtrlBreak -> UICtrlBreak
- WorksGotFocus -> UIGotFocus
- WorksLosingFocus -> UILosingFocus
- WorksRedrawing -> UIRedrawing
- WorksUpdateInfo -> UIUpdateInfo

Re: FarNet — .NET Far API and .NET module manager

Posted: Mon 18 Apr, 2011 19:16
by NightRoman

= 4.4.9 =

*) Panel
Converted one more internal method into public virtual:
- WorksViewChanged -> UIViewChanged

Re: FarNet — .NET Far API and .NET module manager

Posted: Sun 24 Apr, 2011 09:30
by NightRoman

= 4.4.10 =

*) XPath queries in file searches and related tools
- Added parameters XFile, XPath to the Explore module 'explore:' command.
- Extended the XPath engine with custom helper functions:
* equals(p1, p2) : string.Equals(p1, p2, StringComparison.OrdinalIgnoreCase)
* compare(p1, p2) : string.string.CompareOrdinal(p1, p2)
* is-match(p1, p2) : Regex.IsMatch(p1, p2)

See some examples of XPath queries in Readme.txt of the Explore module.

HINT: use .xq extensions for files with XPath expressions, so that Colorer
processes them as xquery. This is not the same, indeed, but it's quite fine.

Re: FarNet — .NET Far API and .NET module manager

Posted: Tue 03 May, 2011 02:32
by NightRoman

= 4.4.11 =

*) XPath searches
- Optimized the XPath navigator (performance gain is about 30%).
- Changed File and Directory attributes: boolean flags (ReadOnly, Archive, ...)
always exist, their values are 0 (false) and 1 (true).
- XPath files (.xq) can contain comments and variable declarations with defined
values or external. In the latter case an input box is shown in order to input
values. All this stuff has to be placed before the XPath expression.
Demo XPath file: ... ile.xq.htm

*) SearchFileCommand
- New property XVariables allow to perform XPath queries with variables.

Re: FarNet — .NET Far API and .NET module manager

Posted: Sat 07 May, 2011 17:41
by NightRoman

= 4.4.12 =

*) XPath searches
- Fixed occasional error messages on stopping a search.
- Optimized memory use during search (weak references allows to discard some of
not used data). This introduces a little overhead but on large data sets saves
a lot of memory, avoids out of memory cases, and even may work faster.

Re: FarNet — .NET Far API and .NET module manager

Posted: Tue 24 May, 2011 08:02
by NightRoman

= 4.4.13 =
= 4.4.14 =

### No official Windows registry support for modules

Modules should use new standard FarNet settings (see ModuleSettings from new
FarNet.Settings.dll) or take care of settings on their own. In the latter case
it is recommended to use files in local or roaming folders (see IModuleManager
GetFolderPath()). Note: all names like FarNet.* are reserved.

*) New .NET menu item "Settings..."
Shows modules with at least one settings set implemented and opens the settings
panel for a selected module settings set. Use [F1] for help. The panel UI is
rather simple but it is quite enough. To be improved when needed/requested.

*) FarNet module cache (just in case of problems):
%LOCALAPPDATA%\Far Manager\FarNet\Cache.binary

These old registry data can be removed manually:

FarNet itself does not use registry when deals with modules. But it still uses
registry because Far 2 does. Thus, FarNet.Works.Registry.dll still exits and
IFar.OpenRegistryKey(), too, just in case if some module needs registry data.

*) Modules with old FarNet registry tools should be updated and some settings
migrated. PowerShellFar, RightControl, and Vessel use new settings approach, so
that their settings can be viewed/modified in the new module settings panel.

### Other changes

*) Panels
- Removed KeyPressing event (Far 3 is going to drop it, perhaps).

*) 4.4.14
Fix for localized modules.

Re: FarNet — .NET Far API and .NET module manager

Posted: Sun 29 May, 2011 15:05
by NightRoman

= 4.4.15 =

*) IFar
- All Post*(EventHandler) methods are replaced with Post*(Action). Practice
shows that EventHandler is redundant. This change is breaking but not many
modules should be affected (the latest PowerShellFar is updated).

*) IModuleManager.GetFolderPath()
- Added the 'bool create' parameter, so that creation is now optional and
it is requested only when it is really needed (on writing files). Thus:
-- Better performance (some expensive checks of existance are avoided)
-- No more empty profile sub-directories (you can remove them now)

*) Module settings engine
- Binary serialization should work fine now (with usual caveats).
- Saves one file if just one of Local and Roaming sets is dirty.
- Other tweaks.

*) Module settings panel
- Better validation of entered values (consider to [F2] before closing editors).
- Values serialized as XML can be edited as XML. Normally such data should be
[Browsable(false)] (excluded from UI) but it's up to a developer, after all.

*) Sample modules in FarNet\Modules
Replaced sample modules Tutorial-Command, Tutorial-Filer, Tutorial-Host with
one module FarNet.Demo with its Visual Studio solution/project. Features:
* Host class (not pre-loaded)
* Menu tool class (all areas)
* Command class (prefix `Demo:`)
* Filer class (`*.resources` files)
* Explorer class (used by the filer)
* Settings classes (various settings)
* Localized module resources (English and Russian)

*) Misc
- IFar.PostJob uses delegate chains instead of job queues.
- Cache.binary does not use FarNet types (bullet-proof and effective way).

Re: FarNet — .NET Far API and .NET module manager

Posted: Tue 31 May, 2011 02:15
by NightRoman

= 4.4.16 =

*) New FarNet module file structure and loading rules

Simplified the module file structure. See Readme.txt for details. It is now
mandatory that the module directory and the base assembly names are the same
(just like it is for Windows PowerShell modules).

Modules may have any other .dll files in their directories. There is no need in
using .CFG files in order to tell the core what .dll should be loaded exactly.
Thus, .CFG files are not used now.

Review your modules and make sure they follow these new rules.

*) Bugs in the module settings panel (but settings work fine)
- Some default values were shown empty.
- Settings were not saved if only reset to defaults was used ([Del] or [F8]).

Re: FarNet — .NET Far API and .NET module manager

Posted: Sun 05 Jun, 2011 14:26
by NightRoman

= 4.4.17 =

*) Module settings panel and engine

Default setting names start with '-'. Ever edited setting names start with '+'.
See more about defaults in the panel help [F1].

Reset to defaults ([Del], [F8]) works for all settings, with or without default
values explicitly defined by settings attributes.

[CtrlF11] in settings shows default / edited (- / +) data sorted separately.

For developers: see ModuleSettingsProvider API docs for some technical details.

*) FarNet.Demo module (included as sources)

Though it is a demo module it includes tools that can be useful for developers:

`Tracing` tool shows the menu that allows to change the level of tracing used
by the core and to turn tracing to the file on/off. It can be handy if you do
not have or use DebugView.exe from Sysinternals or similar diagnostics tools.

`demo: process` command shows some useful info about the current process.

`demo: assembly` command shows currently loaded .NET assemblies.

HINT: Tracing level and listeners can be set permanently in Far.exe.config,
for example in order to trace loading of preloadable modules. FarNet.Demo
allows to do that temporary for the already started session.

Re: FarNet — .NET Far API and .NET module manager

Posted: Sun 19 Jun, 2011 13:16
by NightRoman

= 4.4.18 =

*) Help helpers

New IFar.GetHelpTopic() helps to format strings for HelpTopic properties like
"<C:\...\MyModule\\>Topic" (but in fact format details are hidden in this way).

New IFar.ShowHelpTopic() is a simple method for simple cases. The old and not
quite simple ShowHelp() still works as usual. But it is kind of deprecated now.

*) FarNet.Demo module
Added two help files (en, ru) and examples of using help files in the code:
a) HelpTopic property of the menu;
b) explicit call of ShowHelpTopic().

*) Module setting
- Added remarks about recommended data types to ModuleSettingsProvider.
- Module settings panel is not closed (by pressing [Esc]) if data are invalid
and Save() throws an exception. Forced close (open another panel) is allowed.

*) IEditor
New ConvertPointEditorToScreen(), in addition to ConvertPointScreenToEditor().

Re: FarNet — .NET Far API and .NET module manager

Posted: Tue 21 Jun, 2011 08:31
by NightRoman

= 4.4.19 =

*) Bug
Fixed DirectoryNotFoundException on reading the module cache at start.

Re: FarNet — .NET Far API and .NET module manager

Posted: Fri 24 Jun, 2011 06:35
by NightRoman

= 4.4.20 =

*) Editor color API
This API is experimental and not yet recommended for public use, it is added
for the RightWords module for highlighting of misspelled words in editors.
- IEditor: new methods GetColor(), SetColor(); new class LineColor.
- New EditorRedrawMode enum, EditorRedrawingEventArgs uses it.

Re: FarNet — .NET Far API and .NET module manager

Posted: Mon 27 Jun, 2011 07:35
by NightRoman

= 4.4.21 =

*) Editor color API (revised)
- IEditor: GetColors(), AddColor() work with the ColorSpan class.

*) Not standard FarNet late loading
Fixed a few issues in cases when FarNet is loaded after opening editors.