Einheitliches Aktionensystem

Aus TCWikide
Wechseln zu: Navigation, Suche

Es gibt derzeit im Total Commander kein einheitliches System zum Verwalten von Kommandos. Kommandos sind interne Kommandos (cm_*) und benutzerdefinierte Kommandos. Das funktioniert auch alles gut, aber es ist aus meiner Sicht kein einheitliches intuitives System, sondern ein mit der Zeit Gewachsenes. Ich bin der Meinung hier sollte ein Redesign gemacht werden. Die folgende Liste vergleicht das aktuelle System mit einem möglichen neuen System.

Das aktuelle System - Nachteile des aktuellen Systems:

  • Benutzerdefinierte Kommandos sind von Startermenüeinträgen abhängig.
  • Es besteht eine Hierarchie zwischen Menütastenkobinationen und benutzerdefinierten Tastenkombinationen.
  • Tastenkombinationen in Menüs werden nicht automatisch aktualisiert. Dies muss man manuell machen.
  • Kontrollkästchenzustände in Menüs scheinen nicht Teil eines einheitlichen Systems zu sein, welches automatische Aktualisierung von Zuständen ermöglichen würde.
  • Zustände für Schaltflächen fehlen vollständig.
  • Es gibt keine Trennung zwischen struktur- und sprachabhängigen Informationen. Dies führt zu Redundanzen und vielen anderen Problemen. Beispiel: Der Austausch von Menüdateien zwischen verschiedenen Benutzer funktioniert nicht gerade gut. Sie enthalten sprchabhängige Beschriftungen und Tastenkobinationen.
  • Die Leiste Funktionstastenknöpfe zeigt immer die Standardkommandos für die Funktionstasten. Neuzuordnungen werden nicht berücksichtigt.

Vorzüge eines einheitlichen Aktionensystems

  • Ein zentraler Zugriffspunkt (der Kommando-Manager) wird dem Benutzer dargeboten.
  • Kommandos sind steuerelementunabhängig. Ein Kommando kann zu so vielen Steuelementen zugewiesen werden, wie es der Benutzer möchte.
  • Ein System auf der Basis des Beobachter-Entwurfsmusters wird das Aktualisierungsproblem für Zustände und Beschriftungen und alle anderen Eigenschaften aller Steuerelemente lösen.
  • Der Austausch von benutzerdefinierten Menüs würde ganz ohne oder mit wesentlich weniger Übersetzungsarbeit auskommen als bisher.

Szenarios neues gegen altes System

Die Tastenkombinationspriorität

Wenn man beispielsweise eine Tastenkombination für einen Startermenü-Eintrag (Strg+Alt+F7) vergibt und dann anschließend das selbe Kürzel unter "Tastenkombinationen umdefinieren" einer Funktion zuweist, so hat der Menüeintrag eine höhere Priorität. Die Neuzuweisung war ineffektiv.

Ein einheitliches Aktionensystem würde dieses Problem lösen. Ein Benutzer weist hier ein Tastenkobinationen einem Kommando zu und nicht zu einem Steuerelement. So kann man einen Schalter, einen Menüeintrag oder was auch immer für das Kommando erstellen, aber man muss nicht, wenn man lediglich eine Tastenkombinationen für das Kommando benutzen möchte.

Die träge Funktionstastenknöpfe-Leiste

Die so genannte Funktionstastenknöpfe-Leiste ist eigentlich keine Funktionstastenknöpfe-Leiste. Eine solche Leiste sollte die Kommandos anbieten, die augenblicklich zu den jeweiligen Funktionstastenknöpfen auf der Tastatur des Benutzers zugewiesen sind. Momentan fehlen die Tasten F1, F2, F9, F10, F11 und F12. Anstattdessen wird der überflüssige "Exit"-Schalter angeboten, der noch nicht einmal lokalisiert ist. Modifizierungstasten wie Steuerung, Alt und Umschalt sollten jeden Schalter auf das passende Kommando ändern.

Kommandos verwalten

Der Benutzer kann das aktuelle Menü aus einer Liste von Strukturdateien zusammenstellen. Zum Beispiel könnte man eine benutzerdefinierte Strukturdatei in das Standard-Menü einfügen und so weiter. Solche Zusammenstellungen können dann für alle verfügbaren Elemente der Benutzerschnittstelle gemacht werden.

Kommandos transparent erzeugen

Wenn man einen neuen Schalter erzeugt, der in ein anderes Verzeichnis wechselt wird automatisch ein neues Kommando erstellt. Dieses neue Kommando wird automatisch in die passende Kategorie eingefügt. In diesem Fall wäre es "Navigation". Der Name des Kommandos sollte vom Verzeichnisnamen abgeleitet sein. Dieses Kommando kann nun für andere Elemente der Benutzeroberfläche wie z.B. Menüeinträge oder eine Tastenkombination wiederbenutzt werden. Andere Klassen von Benutzerkommandos könnten "Benutzerprogramme" oder Benutzerdokumente" sein. Diese Kategorien enthalten Kommandos zum Starten von Programmen und Dokumenten. Der Kommando-Manager sollte eine Möglichkeit bieten unbenutzte (keinem Element der Oberfläche oder einer Tastenkobination zugewiesene) Einträge zu löschen. Außerdem sollte der Kommando-Manager nach ungültigen Einträgen in Benutzerkommandos suchen können.

Eigenschaften eines Kommandos

Ein Kommando sollte die folgenden Eigenschaften haben:

  • Name: Ein eindeutiger Name (Bezeichner) für das Kommando.
  • Beschriftung: Eine Beschriftung die in Elementen gezeigt wird, in denen die Aktion benutzt wird.
  • Symbol: Ein Pfad zu einem Symbol.
  • Tastenkobination(en): Ein oder mehrere Tastenkobinationen, die benutzt werden können, um das Kommando auszuführen.
  • Hinweis: Ein Hinweis der gezeigt werden kann, um mehr Information über die Aktion zu geben.
  • Kategorie: Jedes Kommando sollte einer Kategorie zugewiesen sein.
  • Parameter: Manche Kommandos können Parameter verarbeiten.
  • Startpfad: Für manche Kommandos wird ein Startpfad benötigt.
  • Fensterstatus: Für manche Kommandos macht ein Fensterstatus Sinn (minimiert, maximiert, normal).
  • Ausführen als: Ein Kommando als anderer Benutzer ausführen (Ja/Nein).

Design von beteiligten Dateien

Strukturdateien

Vordefinierte Kommandodateien

Benutzerdefinierte Kommandodateien

Vordefinierte Sprachdateien

Benutzerdefinierte Sprachdateien

Links zu diesem Thema





->Zurück zu Interne Funktionen