xboard-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[XBoard-devel] file associations / positional arguments


From: h.g. muller
Subject: [XBoard-devel] file associations / positional arguments
Date: Sun, 16 Sep 2012 11:16:35 +0200

I had an idea:

Currently WinBoard/XBoard are installed with 3 file-type associations, basically through the following commands:
PGN: winboard -ncp -lgf CLICKEDFILE
FEN: winboard -ncp -lpf CLICKEDFILE
TRN: winboard -mm -tf CLICKEDFILE
(in practice I also include an indirection to a settings file, to make it easier for users to configure the commands, like @viewer.ini for the PGN.)

It occurred to me that we could also associate it to the file type of settings files. The current convention is to name these .INI, but in Windows this file type is already heavily overloaded, so we could change it to something unique (e.g. WSF for WinBoard Settings File), and give it its own icon (also the black Knight, orperhaps a white one?) Clicking such a file would then invoke the command
WSF: winboard @CLICKEDFILE

This would make it completely unnecessary to distribute WinBoard with shortcuts, as every settings file would automatically behave as a shortcut. Currently the installer puts a lot of shortcuts in the WinBoard folder, which all take their command-line options from a indirection file. Like FICS.lnk being a shortcut with target line "winboard @FICS.ini". A problem, however, is that the shortcuts are not "portable": rename the WinBoard folder after install, and they cease to work.

Another, related idea:

WinBoard still has the (deprecated?) feature of 'positional arguments', where a first argument that is not an option name (i.e. does not start with a dash) is taken to be a -loadGameFile.

People that naively make file association between PGN and WinBoard through the Windows Properties dialog will stumble onto this, as Windows will associate the command "winboard CLICKEDFILE". (User do this, for instance, because they use several Chess GUIs, and want to dynamically alter the association of PGN to fit what they are using at the moment.) This is not really what they intended, and the -ncp option is missing, so that they will still get the startup dialog. But if they make the naive association with the FEN or TRN type, they not only get to the startup dialog, but after they okay it, they run into the error message that the file contains no games.

So I am thinking of reviving and revamping this mechansim of positional arguments in a slightly more polished way: WinBoard could examine the argument it is going to use as filename, to see what extension it has, and decide based on that if it is going to treat it as a game, position, tournament or settings file. (i.e. imply the options -lgf, -lpf, -tf or @ for it). As additional side effect it can set the default mode to -ncp, in order to suppress the startup dialog (or -mm for TRN files). The latter would be new, and break strict backward compatibility with the use of a positional argument for the PGN case. Are here any iportant considerations I overlooked, which would make this a bad idea?

Finally:

In the latest XBoard I added a new 'major mode': -viewer. This is a bit of a kludgy construct, where there is a string option -viewerOptions, and starting in -viewer mode would parse the -viewerOptions string as if it were command line. So in a sense -viewer is equivalent to @viewerOptions.ini, except that the inserted options are not coming from an ini file, but from a string, which itself is a persistent option (and thus stored in the main ini file). In a sense this is like adding a "section" to the ini file that will only apply in -viewer mode. The reason for doing it this way, is that it would be easy for the user to 'edit' the viewerOptions, by providing a control for it in a menu dialog. (And this would automatically make it a private user option, rather than a global setting, so each user could, say, configure his own favorite analysis engine in viewer mode, associated with PGN files.) The /firstChessProgramNames can actually be considered a precedent of this, where each line in it is processed as an command-line option string in case the engine is selected from the startup or load engine dialog.

The reason I bring this up here is that it would be even more versatile to not force -ncp with a positionally selected PGN file, but in stead force -viewer mode. This way a 'naive' association could be made totally equivalent to the association "winboard @viewer -lgf CLICKEDFILE" that the installer creates now. Of course the @viewer options are no good for a tourney file, but a similar options -tourneyOptions could be created, to be parsed for a positional TRN argument.

Is this a good idea, or does this just advance us further on the path of hideous kludges?

To elaborate on this scheme even more: with -viewer you would force WinBoard to insert the -viewerOptions string, but there is no way to force insertion of a line in the -firstChessProgramNames list option into the command line (other than using the startup-dialog comboboxes). You can specify an engine with -fcp, but you would not automatically activate all options that were installed with it (if it was installed). So we could provide an option -ficp (-firstInstalledChessProgram) that is to -fcp what -viewer is to -ncp: -ficp NAME would search the engine (by 'tidy name') in the -firstChessProgramNames list, and then insert that entire line (prefixed with -fcp) at that point into the command line (like -viewer would insert -viewerOptions into the command line).





reply via email to

[Prev in Thread] Current Thread [Next in Thread]