Scripting-Hilfe: Buttons ver- und entriegeln

So umfangreich die Funktionen in mAirList auch sind, so fehlt doch immer wieder mal das eine oder andere Feature für den gewünschten Zweck. Macht aber nichts, denn genau zu diesem Zweck gibt es die Scripting-Engine , mit welcher die Möglichkeiten in mAirList noch wesentlich umfangreicher werden als ohnehin schon. Also:

Klicksicherung – Buttons sichern und freischalten:

Man stelle sich eine Reihe Schalter oder Tasten (= Buttons) vor, die verschiedene Streams auf- und wieder abschalten. Sie versehentlich anzuklicken, kann widrige Folgen für die Sendung haben, es muß also eine Sicherung her. Wer noch eine Taste auf seiner Tastatur frei hat, ist fein raus: Die arrangieren wir so, daß erst diese eine Taste gedrückt werden muß, und dann hat man eine gewisse Zeit, den zutreffenden Button zu klicken – nach deren Ablauf werden die Buttons automatisch wieder entschärft. Klicken ohne Taste vorher wird stets ignoriert.

Für das Beispiel seien drei Tasten BUTTON.1 bis BUTTON.3 derart konfiguriert, daß sie deutlich zwischen gesperrt und nicht gesperrt zu unterscheiden sind. Zum Beispiel sei bei gesperrt die Schrift grau, sonst farbig. Für aktiv und inaktiv seien entsprechende Hintergründe zu wählen. Jetzt brauchen wir noch eine Taste, sie bekommt den Befehl, öhm …, MACH SIE SCHARF.*

Hier kommt der Code:

var
  i: integer;

const
  Freigabe = 3500;   // <-- Hier die Haltezeit in Millisekunden eingeben.

procedure OnLoad;
begin
  for i := 1 to 3 do
    begin
      ExecuteCommand('BUTTON.' + IntToStr(i) + ' OFF');
      ExecuteCommand('BUTTON.' + IntToStr(i) + ' DISABLE');
    end;
end;

procedure OnExecuteCommand(Command: string);
begin
  if Command = 'MACH SIE SCHARF' then begin
    for i := 1 to 3 do
      ExecuteCommand('BUTTON.' + IntToStr(i) + ' ENABLE');
    ExecuteCommand('BUTTON.4 ON');
    EnableTimer(Freigabe);
  end;
end;

procedure OnTimer;
begin
  for i := 1 to 3 do
    ExecuteCommand('BUTTON.' + IntToStr(i) + ' DISABLE');
  ExecuteCommand('BUTTON.4 OFF');
  DisableTimer;
end;

begin
end.

BUTTON.4 ist noch aus der Testphase und zeigt an, daß die anderen Buttons jetzt freigeschaltet sind. Ich habe ihn dringelassen, weil er so schön leuchtet.

Zum Programmstart werden die Tasten abgeschaltet und verriegelt. (Was es mit der for … do-Anweisung auf sich hat, ist an anderer Stelle beschrieben.) Wird der Befehl zur Freischaltung gegeben, werden die Tasten 1 bis 3 freigegeben und der Timer startet. Ist die eingestellte Zeit abgelaufen, werden die Buttons gesperrt, und der Timer wird wieder abgeschaltet. Diese Mimik läßt sich einfach an Eure eigenen Bedürfnisse anpassen, ich brauche das vermutlich nicht näher erläutern.

Gesicherte Grüße

TSD


* Man verzeihe mir bitte diesen uralten Kalauer, pardon! Wer dessen Herkunft erforschen möchte, der beginne seine Suche bei Polydor 52 252.

Wer brauchen ohne zu gebraucht … Ich bitte eventuell mitlesende Germanisten über diesen Lapsus hinwegzusehen.

Gebrauchte Grüße

TSD

1 Like

Huhu Ihr Moderatoren,
Ich würde es ausgesprochen hilfreich finden, wenn wir im Forum unter „Scripts“ eine Unterrubrik „Tutorials“ (oder wie auch immer benannt) einrichten könnten, wohin diese Hilfen verschoben werden könnten. Ich bin absolut dankbar, dass Ihr Euch diese Arbeit macht und nutze sie sehr gerne als Nachschlagewerk.
Und für die Übersichtlichkeit im Forum wäre es auch nicht schlecht…
Was meint Ihr dazu?
Gruß von der mAirList-Baustelle, der Tom

Diese Funktion ist den Administratoren (wir haben ja so viele davon hier :rofl:) vorbehalten.
Hinsichtlich des Verwaltungsaufwands müsste @Torben mal was dazu sagen - eigentlich wollen wir alle ihn hier ja entlasten.

Was etwas einfacher ginge: Eine entsprechende Ecke im deutschen Bereich des mAirList-Wiki einzurichten.
Das Wiki ist zwar eigentlich als grundsätzlich in englischer Sprache verfasste Anlaufstelle gedacht, aber so ein paar Anleitungen in deutsch passen da natürlich auch rein.
Stellenweise ist das sogar erwünscht.

Wenn Torben mal Zeit hat … haha, guter Witz.
Nein, im Ernst: Ist 'ne grundsätzliche Frage, da braucht’s mal ein Machtwort des Chefs über die generelle Strategie.

Ich komme selber auch nicht mehr mit, jeden neuen Thread zu diesem Bereich in diese Übersicht einzupflegen (die leider auch irgendwie untergegangen ist, trotz anpinnen).

Kommt Zeit, kommt Antwort. :slightly_smiling_face:

1 Like

Das kenne ich aus verschiedenen anderen Foren, Uli. :wink:
Aber dafür bräuchte es ja „nur mal fix“ eine neue Unterrubrik…
Bin gespannt - und versuche, solange diese Tipps & Trick selbst im Auge zu behalten… :wink:

Hallo Tom, hallo Uli,

in der Tat, diesen hilfreichen Thread finde ich auch immer nur über die Suchfunktion. Bis zur möglichen Ordnung: Nicht ohne Grund poste ich diese Beiträge unter gleichbleibendem Obertitel.

Zusammengefaßte Grüße

TSD

1 Like

Kleiner Tipp für euch: ihr könnt für jeden Thread, der euch als “lesenswert” erscheint, ein…

Forum%20Lesezeichen%20setzen

Das erleichtert das Auffinden gewisser Themen auf die Schnelle. :wink:

1 Like

Hey! :+1:




1 Like

Ins Wiki soll nur “offizielle” Dokumentation.

Gerade bei den Scripts ist es so, dass hier viele gepostet werden, die augenscheinlich gut funktionieren, dennoch aber nicht ganz so “what would Torben do?” sind. Also teilweise umständlich realisiert, wenig elegant geschrieben, etc. - das ist dann absolut kein Vorwurf an die Autoren, aber dennoch sind jene Scripts nicht unbedingt in einem Zustand, wo man sie in eine offizielle Dokumentation holen würde.

Daher sollte jeder “Community-Inhalt” hier im Forum verbleiben. Das mit der “kuratierten Linkliste” finde ich dabei erstmal praktikabler als ein eigenes Unterforum, wo dann alles noch mehr zerklüftet wird. Alternativ könnten wir auch darüber nachdenken, solche “lesenswerten” Beiträge irgendwie mit einem Tag zu versehen (Discourse unterstützt das).

Ich finde auch, daß, und ich kann jetzt nur von mir ausgehen, diese Scripting-Beiträge inhaltlich womöglich für das Wiki geeignet sein mögen, u. a. aber wegen meines doch sehr populärwissenschaftlichen Schreibstils (MACH SIE …) tatsächlich nicht dort hineinpassen. Es müßte also alles umgeschrieben werden, wozu ich aber keine Lust habe und ich es auch schade fände. (Allfällige englische Adaptionen werden noch genug Arbeit machen.) Und selbst dann sollte man zwischen Menüreferenz, Bedienungshandbuch und Programmierhandbuch unterscheiden. Die beiden ersteren werden mit der Software mitgeliefert (→ Wiki), letzteres kauft man eher in der Buchhandlung* (→ Forum). Wir sollten das ganze Zeug also tatsächlich hierorts irgendwie stapeln. Vielleicht findet Uli ja einen Weg, den nützliche-Dinge-Thread ja etwas prominenter anzupinnen, ansonsten ist hier ja auch eine leistungsfähige Suchfunktion vertreten.

Aufgeräumte Grüße

TSD


* Für die jüngeren Mitleser: Das ist so etwas wie ein manuelles Amazon.

Was haltet ihr denn davon, solche Scripts und deren Tutorials auf Github zu hosten? Darauf kann man verweisen, ggf. auch im offiziellen Wiki, das Github selber aber eben eher als Community Projekt, wo dann selbstverständlich auch ein lockerer Schreibstil erlaubt ist.
Es bringt ja dann ein eigenes Wiki mit, je Projekt.

Bringt auch gleich eine Versionierung mit.
Ich habe sowas mit dem Radio-Zoom Git mal angefangen, da finden sich auch ein paar Sachen rund um mAirlist. Das könnten wir aufbohren oder ein eigenes mAirlist Community Repository erstellen. Oder erst das eine, schauen wie es läuft und dann ggf. ein eigens oder oder…

Da könnte man auch sehr schön Skin.inis sammeln.