Reaktiver Tisch mit reaktiver Banane und gtk2hs

8

Ich habe eine kleine Anwendung geschrieben, die meine Fortschritte in der TV-Serie verfolgt. Die Anwendung ist in Haskell mit funktionaler reaktiver Programmierung (FRP) mit reaktiven Bananen geschrieben.

Die Anwendung kann:

  • Hinzufügen / Entfernen einer neuen TV-Serie zur Tabelle
  • Ändern Sie die Saison und Episode einer Serie

Ich habe Probleme, den Code zu schreiben, der eine neue TV-Serie zur Tabelle hinzufügt und die neuen Ereignisse verdrahtet. Das CRUD-Beispiel von hier hat nicht ganz geholfen Ich, weil ich mehr Anforderungen habe als nur ein Element aus der Liste auswählen.

Wie schreibe ich eine Funktion reactiveTable wie die Funktion reactiveListDisplay aus dem CRUD Beispiel in einer FRP-Weise? Wie können Ereignisse hinzugefügt werden, nachdem das Netzwerk kompiliert wurde?

%Vor%

Ich möchte die insertIntoTable-Methode so umgestalten, dass sie Ereignisse und Verhaltensweisen anstelle einfacher Rückrufe verwendet.

BEARBEITEN:

Ich habe versucht, die gtk TreeView mit einem ListStore Backend. In diesem Szenario benötigen Sie keinen dynamischen Ereigniswechsel. Ich habe die Funktion reactiveList geschrieben, um ein Listenverhalten aus dem Einfügen zu erhalten, Ereignisse zu ändern und zu entfernen. Es funktioniert ^^

%Vor%

Ich bin offen für Kommentare und Vorschläge.

    
SvenK 10.05.2013, 13:06
quelle

1 Antwort

3

Es klingt, als ob Ihr Problem viel näher an der Bar liegt Tab Beispiel als die CRUD ein.

Die Grundidee für das Hinzufügen neuer Widgets - zusammen mit neuen Verhaltensweisen und Ereignissen - ist das sogenannte "dynamische Ereigniswechsel". Im Wesentlichen ist dies eine Möglichkeit, neu erstellte Ereignisse und Verhaltensweisen wieder in Ihr Netzwerk zu integrieren.

Die Aktion zum Erstellen eines neuen Widgets besteht aus zwei Teilen. Der erste Teil besteht darin, das Widget mit liftIO zu erstellen. Der zweite ist, seine Eingaben zu erhalten und trimE oder trimB gegebenenfalls. Wenn ich die meisten GTK-spezifischen Details weglasse (ich weiß nicht, wie man GTK verwendet: P), sieht es ungefähr so ​​aus:

%Vor%

Diese Funktion erstellt also ein neues Widget, "trimmt" ihre Eingaben und gibt die Werte an Sie zurück. Jetzt müssen Sie diese Werte tatsächlich verwenden:

%Vor%

hier nameEvents sollte ein Event String sein, das jedes Mal ein Ereignis mit dem Namen der neuen Serie enthält, wenn Sie es hinzufügen möchten.

Nun, da Sie einen Stream aller neuen Staffeln haben, können Sie alles zu einem einzigen Verhalten einer Liste von Einträgen kombinieren, die etwas wie stepper verwenden.

Weitere Einzelheiten - einschließlich Informationen zum Abrufen der Aggregatdaten aus allen Ihren Widgets - finden Sie im aktuellen Beispielcode.

    
Tikhon Jelvis 10.05.2013, 18:09
quelle