Request: Unified command system

English support forum

Moderators: white, Hacker, petermad, Stefan2

User avatar
Lefteous
Power Member
Power Member
Posts: 9535
Joined: 2003-02-09, 01:18 UTC
Location: Germany
Contact:

Request: Unified command system

Post by *Lefteous »

2all
I have posted my concept of a unified action system a while ago on the german user board. A translation has been requested.
I will add some more ideas from time to time. Your good ideas are welcome of course.
If you have questions don't hesitate to ask.

Unified command system

There is currently no unified system to manage commands in Total Commander. Commands are internal commands (cm_*) and user-defined commands. The current system works but it's quite difficult to handle. A redesign should be made. The following list compares the current and a possible new system.

The current system - Disadvantages of the current system:
  • User defined commands depend on start menu entries.
  • There is a hierarchy between menu hotkeys and user defined hotkeys.
  • Hotkeys in menus are not updated automatically. You have to do this manually.
  • Checkbox states in menus seems not to be part of an embedded system which enables automatic updating.
  • Check states for buttons are completely missing.
  • No separation between structure and language dependant information. This leads to redundancies and many other problems. Example: Exchanging of menu files doesn’t work very well. They contain language dependant captions and hotkeys.
Benefits of a unified command system
  • A single point of access (the command manager) is presented to the user.
  • Commands are control independent. A command can be assigned to as many control as the user wants.
  • Implementing a system based on the observer pattern will solve the updating problem for all checkboxes, captions and all other properties in all controls.
  • Exchanging of user defined menus would be possible without or with much less translation.
Example:
For example when I create a hotkey for a start menu entry (Ctrl+Alt+F7) and use the same entry for a hotkey assignment in configuration the start menu entry has a higher priority.
A unified command system solves this problem. A user assigns a value to a command not to a control. This way hotkeys would be unique. Every time a user presses the hotkey the command is invoked. You may create a button, a menu item or whatever for the command but you don't have to if you just want a hotkey.

The command manager

I will add ideas and a prototype for a command manager here.
  • The user can compose the current menu from a list of menus. For example. A user defined menu is appended to the default menu and so on.

Command properties
A command should have the following properties:
  • Name - A unique name (identifier) for the command.
  • Caption: A caption which is shown in a control where the action is used.
  • Icon: A path to an icon.
  • Hotkey(s): One or more hotkeys which can be used to call the command.
  • Hint: A hint which can be shown to give more information about the action.
  • Category: Each command is assigned to a category.
  • Parameter: Some commands can have parameters.
  • Start path: For some commands a start path is required.
  • Window mode: For some commands a window mode makes sense (minimized, maximized, normal).
  • Run As: Executing a command as a diffrent user (Yes/no).
Design of involved files
Menu file. Example

Code: Select all

[CTG_MARK] 
MENUITEM cm_spreadselection 
MENUITEM cm_shrinkselection 
[END_CTG]
A menu starts with a category identifier. It ends with [END_CTG]. This only change from current to the new solution is that CTG is used instead of POPUP.
Inside these markers we have the menu items. They just point to command identifiers. Language dependant captions and hotkeys are removed.

Predefined commands file. Example:

Code: Select all

[cm_SpreadSelection] 
ID=521 
Category=CTG_MARK

[cm_ShrinkSelection] 
ID=522 
Category=CTG_MARK
Predefined commands have a static numeric ID. A category is assigned to a command as well.
Categories in a menu or commands file can be the same but they don’t have to. It’s possible to add new categories in the menu file or use categories defined in the action file.

Userdefined command file. Example:

Code: Select all

[cm_CD_Pictures] 
Category=CTG_NAVIGATION 
Icon=%WINDIR%\System32\Shell32.dll,127
The example shown above is a user defined action. It could have been created automatically by TC as the user created a directory menu item for example. Of course it has been sorted into the appropriate category CTG_NAVIGATION automatically.
Please note that there is no ID set for the user defined command. Why? One aim of the unified command system is to make it easier to exchange user defined files like menu files, command files and others. Total Commander has to assign a ID dynamically for user defined commands. This has also the advantage that the user cannot assign an already assigned. This should be possible without huge speed problems.

Predefined Language file. Example:

Code: Select all

[CTG_MARK] 
Caption=&Mark
Hint=Mark

[cm_SpreadSelection] 
Caption=&Select group 
Hint=Select group
Description= Selects a group of files and folders based on a filter.
I used caption and hint as two different properties as they are used in Delphi. This leads to a lot of redundancy. A good solution could be make hint optional and use the caption (without the ampersand) instead. This way you won’t get redundancies but still the opportunity to enter longer hints. On the other hand the description could be used for longer hints too.
Maybe the hotkey can be moved to the language file. Why? Maybe English users prefare Ctrl+Q for “quick view” and german users want to use Ctrl+ S (Schnellansicht). There are pros and cons for this and can be discussed endlessly.

Userdefined language file. Example:

Code: Select all

[cm_CD_Pictures] 
Caption=&My Pictures
Hint=My Pictures
Description=
The user defined language has the same structure as the predefined language file but contains translations for user defined commands.
Last edited by Lefteous on 2005-02-10, 09:51 UTC, edited 1 time in total.
User avatar
Xyzzy
Junior Member
Junior Member
Posts: 54
Joined: 2004-11-24, 09:25 UTC
Location: Poland

Post by *Xyzzy »

What major problems does it solve?
Do I understand it right, that 'command manager' is intended just for better menu creation/management?

X.
User avatar
Lefteous
Power Member
Power Member
Posts: 9535
Joined: 2003-02-09, 01:18 UTC
Location: Germany
Contact:

Post by *Lefteous »

2Xyzzy
What major problems does it solve?
Well the first part of my article deals with "The current system - Disadvantages of the current system" and "Benefits of a unified command system". That should be enough answers. Of course more benefits are likely.
Do I understand it right, that 'command manager' is intended just for better menu creation/management?
It would be much more than that.
icfu
Power Member
Power Member
Posts: 6052
Joined: 2003-09-10, 18:33 UTC

Post by *icfu »

Excellent structured proposal, so everyone who takes some minutes to understand the concept will know what it's all about. It can't be made much better honestly, thumbs up! :)

I sincerely hope that the next major update will include it. No more fiddling around, just pure effectiveness.

Icfu
This account is for sale
User avatar
Xyzzy
Junior Member
Junior Member
Posts: 54
Joined: 2004-11-24, 09:25 UTC
Location: Poland

Re: Request: Unified command system

Post by *Xyzzy »

[*]User defined commands depend on start menu entries.
You mean Start menu in TCmd? I do not see any dependency here???
[*]There is a hierarchy between menu hotkeys and user defined hotkeys.
What's wrong about it?
[*]Hotkeys in menus are not updated automatically. You have to do this manually.
When such hotkey should be updated? I would not like to mess my menu by changing some hotkey.
[*]Checkbox states in menus seems not to be part of an embedded system which enables automatic updating.
If I change view with menu shortcut or my 'user-defined' shortcut the tickmark in View menu is changed accordingly...? What checkboxes are you talking about?
[*]Check states for buttons are completely missing.
That means what?
[*]No separation between structure and language dependant information. This leads to redundancies and many other problems. Example: Exchanging of menu files doesn’t work very well. They contain language dependant captions and hotkeys.

As you can see in LNG file there is no info on structure there. And how often do you change menu to different language version?

Benefits of a unified command system
  • A single point of access (the command manager) is presented to the user.
  • Commands are control independent. A command can be assigned to as many control as the user wants.

    I can now assign the same command to button, shortcut and menu item.
  • Implementing a system based on the observer pattern will solve the updating problem for all checkboxes, captions and all other properties in all controls.

    You mean activating/deactivating options based on info that they are unavailable in current context?
  • Exchanging of user defined menus would be possible without or with much less translation.

    User defined menus are no traslated, as every user makes up his/her own.

    Frankly, I do not get the whole idea.

    X.
icfu
Power Member
Power Member
Posts: 6052
Joined: 2003-09-10, 18:33 UTC

Post by *icfu »

[*]User defined commands depend on start menu entries.
You mean Start menu in TCmd? I do not see any dependency here???
You have to use the start menu to define commands you can use afterwards in your menu file: cm_usermenux.
That is called a dependancy!
This results in a start menu being completely useless for people creating lots of user defined commands. Furthermore you musn't sort the start menu afterwards because this will corrupt your menu entries.
[*]There is a hierarchy between menu hotkeys and user defined hotkeys.
What's wrong about it?
The hotkeys shouldn't have a hierarchical order but be levelled equally to prevent collisions.
[*]Hotkeys in menus are not updated automatically. You have to do this manually.
When such hotkey should be updated? I would not like to mess my menu by changing some hotkey.
That's exactly what this thread is about and that will be solved by Lefteous idea. Right now YOU HAVE TO change the menu files manually if you want to use your own commands in the menu because the menu files CONTAIN the hotkeys.
[*]Checkbox states in menus seems not to be part of an embedded system which enables automatic updating.
If I change view with menu shortcut or my 'user-defined' shortcut the tickmark in View menu is changed accordingly...? What checkboxes are you talking about?
The keyword is embedded. You can't understand that if you are missing basic concepts of TC.
[*]Check states for buttons are completely missing.
That means what?
It means that there is no hint for the user if a button has been pressed or not.
[*]No separation between structure and language dependant information. This leads to redundancies and many other problems. Example: Exchanging of menu files doesn’t work very well. They contain language dependant captions and hotkeys.

As you can see in LNG file there is no info on structure there. And how often do you change menu to different language version?
Obviously you don't change anything at all otherwise you'd know at least one of the problems being mentioned here. The problem is that there is no exchangability.
Benefits of a unified command system
  • A single point of access (the command manager) is presented to the user.
  • Commands are control independent. A command can be assigned to as many control as the user wants.

    I can now assign the same command to button, shortcut and menu item.
But you can't assign hotkeys to buttons, for example. Problems like that would all be solved.
[*]Exchanging of user defined menus would be possible without or with much less translation.

User defined menus are no traslated, as every user makes up his/her own.
Have you ever used or at least looked INTO a different .mnu or .lng file?

Icfu
This account is for sale
User avatar
Xyzzy
Junior Member
Junior Member
Posts: 54
Joined: 2004-11-24, 09:25 UTC
Location: Poland

Post by *Xyzzy »

Well, I must say that my work with TCmd is 95% or so keyboard driven. After setting up everthing I do not see any need to make any big changes and small are easy to handle.
With such approach, sacrificing human resources (=Christian) for work that seems to be one-time job for most of TCmd users seems inefficient to me.

The keyword is embedded. You can't understand that if you are missing basic concepts of TC.
I am sure that basic concepts are covered by help. Could you point me to the right topic?

[*]Check states for buttons are completely missing.
That means what?
It means that there is no hint for the user if a button has been pressed or not.
Give some example. Buttons by default return to 'rised' position after clicking them.
Obviously you don't change anything at all otherwise you'd know at least one of the problems being mentioned here. The problem is that there is no exchangability.

[*]Exchanging of user defined menus would be possible without or with much less translation.
Is this a real world problem- ppl extensively exchanging configs???
User defined menus are no traslated, as every user makes up his/her own.
Have you ever used or at least looked INTO a different .mnu or .lng file?
I have my own I think that everyone uses what one has set up for himself.

The presented solution seems to be worth spending time only for people extensively changing their configurations or exchanging them with other ppl. Are there so many of them?

X.
icfu
Power Member
Power Member
Posts: 6052
Joined: 2003-09-10, 18:33 UTC

Post by *icfu »

I am sure that basic concepts are covered by help. Could you point me to the right topic?
There is no entry in help about "basic concepts", I am sure you know what I mean. I told you the keyword is "embedded" which you have chosen to ignore. Please read again what Lefteous has written:
Checkbox states in menus seems not to be part of an embedded system which enables automatic updating.
Give some example. Buttons by default return to 'rised' position after clicking them.
That's exactly the problem... If the button is set to a toggle command there is no clue if the command is set active or inactive.
Is this a real world problem- ppl extensively exchanging configs???
You got it again... Because it is so complicated with all the dependancies it's very complicated to do it and that's why we want to make it better.
As the standard menu used by TC is completely useless for advanced users it is definetely a "real world problem", strange questions, honestly.
I have my own I think that everyone uses what one has set up for himself.
You are using your own customized menu and still ask those questions about what dependancies the start menu has and stuff like that I have tried to answer for you? I am rather confused now, sorry...
The presented solution seems to be worth spending time only for people extensively changing their configurations or exchanging them with other ppl. Are there so many of them?
The point is that TC needs to become more user friendly. Right now it still is a toy for freaks having too much time.

If you take a look at the competitors you will maybe recognize that it's a good thing that commands and hotkeys can be exchanged on the fly without having to manually edit files and stuff like that.

Many people looking at TC for the first time are annoyed by the antique GUI and missing usability features. It's completely irrelevant if you are using TC by keyboard or by mouse. I am using both and if there was a speech recognition engine like Opera has I would use voice commands as well. Everything that can save our time is appreciated and needed, be it sooner or later.

With such an excellent system TC will strenghten its position on the OFM market and new users can feel "at home" much faster.

Icfu
This account is for sale
User avatar
Sheepdog
Power Member
Power Member
Posts: 5150
Joined: 2003-12-18, 21:44 UTC
Location: Berlin, Germany
Contact:

Post by *Sheepdog »

2Lefteous

Nice to see your concept once again. Hope this time with more success.
Fully support for your system as you probably know.
Xyzzy wrote: The presented solution seems to be worth spending time only for people extensively changing their configurations or exchanging them with other ppl. Are there so many of them?
The solution helps to create your own menu with very own commands without to have to open three different files for adding one Command (Wincmd.ini for the usercommand; Totalcmd.inc for implementing the usercommand and *mnu file to put the command to your menu). And it helps to minimize the time you need to find out, why the h*** your new menu does not work (probably a typo in one of the three files) or why the hotkey does not work (because it is already assigned to anohter command in another wincmd.ini-section).

And:Yes there are lots of people who want to share their menus and lots of lots of people who are interested in other people menus.

sheepdog
"A common mistake that people make when trying to design something
completely foolproof is to underestimate the ingenuity of complete fools."
Douglas Adams
User avatar
Lefteous
Power Member
Power Member
Posts: 9535
Joined: 2003-02-09, 01:18 UTC
Location: Germany
Contact:

Post by *Lefteous »

2icfu
2Sheepdog
Thanks a lot for supporting my wish :D
User avatar
Sheepdog
Power Member
Power Member
Posts: 5150
Joined: 2003-12-18, 21:44 UTC
Location: Berlin, Germany
Contact:

Post by *Sheepdog »

Thanks for presenting your excellent concept. ;) :lol:

sheepdog
"A common mistake that people make when trying to design something
completely foolproof is to underestimate the ingenuity of complete fools."
Douglas Adams
User avatar
Xyzzy
Junior Member
Junior Member
Posts: 54
Joined: 2004-11-24, 09:25 UTC
Location: Poland

Post by *Xyzzy »

Generally I believe that whole idea is very profound and stuff, but for a man with maybe a bit different view and not acquainted with discussions on the subject, the presented concept is NOT clear.
Checkbox states in menus seems not to be part of an embedded system which enables automatic updating.
Automatic updating of WHAT? WHAT is being updated?
Give some example. Buttons by default return to 'rised' position after clicking them.
That's exactly the problem... If the button is set to a toggle command there is no clue if the command is set active or inactive.
Oh, so you probably talking about TOOLBAR buttons? Not all buttons, looking and acting like these with OK or Cancel?
You are using your own customized menu and still ask those questions about what dependancies the start menu has and stuff like that I have tried to answer for you? I am rather confused now, sorry...
I use rather keys, but regardless of what I use, this setup is done only ONCE. Better write detailed guide in Help that implement a new program feature with exactly the same purpose.
And why wonder? I made my setup long ago, if there were any problems, they were overcame long ago.
The point is that TC needs to become more user friendly. Right now it still is a toy for freaks having too much time.
Yes, TCmd is not that user friendly. No, it is used by people who have a lot of work and want it to be done effectively.

[/quote]Many people looking at TC for the first time are annoyed by the antique GUI and missing usability features. It's completely irrelevant if you are using TC by keyboard or by mouse. I am using both and if there was a speech recognition engine like Opera has I would use voice commands as well. Everything that can save our time is appreciated and needed, be it sooner or later.[/quote]

Fine, but TCmd should maintain the idea "do not pay for what you do not use". GUI and everything must be configurable - OK. But what's the cost in program size, speed of operations, reliability.

X.
User avatar
Lefteous
Power Member
Power Member
Posts: 9535
Joined: 2003-02-09, 01:18 UTC
Location: Germany
Contact:

Post by *Lefteous »

2Xyzzy
Yes, TCmd is not that user friendly. No, it is used by people who have a lot of work and want it to be done effectively.
iso wrote:usability: The extent to which a product can be used by specified users to achieve specified goals with effectiveness, efficiency and satisfaction in a specified context of use.
User avatar
Xyzzy
Junior Member
Junior Member
Posts: 54
Joined: 2004-11-24, 09:25 UTC
Location: Poland

Post by *Xyzzy »

Lefteous wrote:2Xyzzy
Yes, TCmd is not that user friendly. No, it is used by people who have a lot of work and want it to be done effectively.
iso wrote:usability: The extent to which a product can be used by specified users to achieve specified goals with effectiveness, efficiency and satisfaction in a specified context of use.
So? TCmd has steeper learning curve and is not as flexible as some of similar applications (so also less user friendly).
However, according to the definition you presented, it has very high usability: is effective, efficient and satisfying in use.
_Setting up commands_ I see rather as quite marignal feature, not affecting much, if at all, usability ranking, according to the definition.

Also, I would like Unified command system description more detailed in concepts. As I wrote, for not acquainted with subject it is NOT clear.

X.
icfu
Power Member
Power Member
Posts: 6052
Joined: 2003-09-10, 18:33 UTC

Post by *icfu »

Automatic updating of WHAT? WHAT is being updated?
Hotkeys for example. If you change the hotkey for a command you have assigned to a button, for example "cm_usermenuX" it will not only be changed on the button but also in the menu and all other places you have used that command. You change the hotkey ONCE and all other places where this command is used will be automatically updated to reflect the changes. Right now you have to update several files manually!
Oh, so you probably talking about TOOLBAR buttons? Not all buttons, looking and acting like these with OK or Cancel?
Indeed, we are talking about toolbar buttons. You can't assign icons to OK and Cancel buttons, right?
I use rather keys, but regardless of what I use, this setup is done only ONCE. Better write detailed guide in Help that implement a new program feature with exactly the same purpose.
And why wonder? I made my setup long ago, if there were any problems, they were overcame long ago.
As new hotkeys and commands are constantly added an old setup is what it is: old. If you want to use the new features, new plugins, commands, new tools, new hotkeys, etc... you need to update your config regularly and this task is complicated, read Sheepdog's posting please.
If you doubt that it is complicated you haven't changed too much till now.

Anyway, asking for more detailed help for new features INSTEAD OF inventing a better GUI interface is ignorant. Open a separate thread for that, please, it has nothing to do with the discussion here.
Yes, TCmd is not that user friendly. No, it is used by people who have a lot of work and want it to be done effectively.
Yeah, exactly, and it will be even more effective with this system been implemented.
Fine, but TCmd should maintain the idea "do not pay for what you do not use". GUI and everything must be configurable - OK. But what's the cost in program size, speed of operations, reliability.
Well, if one thing is clear it's that ghisler won't integrate fancy stuff so you don't have to worry about that. These features will remove the clutter from all the different config dialogs and files and therefore will lead to effective workflow without any hassle.

Icfu
This account is for sale
Post Reply