TED dient als Vorlage für einen Linux-Editor. Wie der Windows-Editor ED ist TED in C geschrieben, aber nutzt statt Win-API GTK.
Im Gegensatz zu früheren GTK-Initialisierungen à la
int main(int argc, char *argv[])
{
GtkWidget *win;
gtk_init(&argc, &argv);
win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
g_signal_connect(win, "destroy", G_CALLBACK(gtk_main_quit), NULL);
...
gtk_widget_show_all(win);
gtk_main();
return 0;
}
nutzt TED GtkApplication
:
int main(int argc, char **argv)
{
int ret;
GtkApplication *app;
app = gtk_application_new(NULL, G_APPLICATION_HANDLES_OPEN);
...
ret = g_application_run(G_APPLICATION(app), argc, argv);
g_object_unref(app);
return ret;
}
GtkApplication
erledigt die Initialisierung von GTK (gtk_init
), unterstützt die Möglichkeit, Programme bei Mehrfachstart nur einmal im Speicher vorzuhalten, ein Sitzungs-Management, Desktop-Integration, die Anmeldung beim D-Bus etc.
In Abgrenzung zu diesem Entwicklungstrend verwendet TED jedoch nicht wie die neueren Gnome-Anwendungen ein Applikationsmenü, sondern ein klassisches Menü und unterstützt als SDI-Programm den Mehrfachstart von Instanzen. Für 3 Dokumente werden also 3 Programminstanzen aufgerufen. Dialogbasiertes Laden und Speichern einer Datei, Drag and Drop von einem Datei-Manager wie z. B. Nautilus, ein Vollbild-Modus sowie das Laden einer Datei von der Kommandozeile (G_APPLICATION_HANDLES_OPEN
) sind implementiert. Nicht implementiert sind z. B. Druck, Suchfunktionen oder benutzereinstellbare Fensterfarben. Da das Programm auf das GTK-eigene Textview-Widget (bzw. Control) zurückgreift, läßt sich das Erscheinungsbild jedoch durch das Setzen der Umgebungsvariable beim Start ändern:
$ GTK_THEME=Mint-Dark-Orange ted
Benötigt wird das Betriebssystem Linux. Getestet wurde die Einsatzfähigkeit von TED unter Linux Mint 21 und 22. Die Lauffähigkeit unter WIN/GTK wurde nicht getestet.
Der Quelltext ist als didaktische Vorlage mit ca. 300 Zeilen bewußt kurz: ted.c.