Texteditor programmieren
-
Hi!
Ich muss für meine Diplomarbeit einen Texteditor mit bestimmten
Features programmieren. Die wichtigsten Features sollten sein:
Zeilennummerierung, Syntax-Coloring, und Background-Coloring eines
bestimmten Bereiches.
Ich hab es zuerst mit MFC probiert, aber deren Steuerelemente bieten
mir einfach zu wenig Möglichkeiten (Background-Coloring ist z.B. erst
gar nicht möglich). Die Programmiersprache spielt keine Rolle, ich wäre
bereit, auch was Neues zu lernen. Wichtig wäre mir nur, dass ich die
genannten Dinge sauber implementieren kann.
Ich wünsche allen schöne Weihnachten
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum Andere GUIs - Qt, GTK+, wxWidgets verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Martin13 schrieb:
Hi!
Ich muss für meine Diplomarbeit einen Texteditor mit bestimmten
Features programmieren.Texteditor programmieren macht Spaß, wirklich. Vermutlich hat fast jeder schon mal einen gemacht.
Ich hab es zuerst mit MFC probiert, aber deren Steuerelemente bieten
mir einfach zu wenig Möglichkeiten (Background-Coloring ist z.B. erst
gar nicht möglich).Kann ich mir zwar nicht vorstellen, aber ich hab auch keine Ahnung von MFC.
Die Programmiersprache spielt keine Rolle, ich wäre bereit, auch was Neues zu lernen.
Was kannst du denn? Also außer C++ ?
Prinzipiell sind deine Anforderungen nicht sehr hoch, denn das dürfte jedes halbwegs gute GUI-Toolkit beherrschen. Mit GTK+ bzw. gtkmm geht es auf jeden Fall, da habe ich das schon selber gemacht. Mit Swing geht es auch, da hab ich auch schon 'n Editor geschrieben.
wxWidgets bietet dir ebenfalls diese Möglichkeiten, also im Prinzip, ja, im Prinzip kannst du das mit (fast) jedem Toolkit machen.Ich wünsche allen schöne Weihnachten
Dito. :xmas1:
MfG
GPC
-
Hi!
Danke für die schnelle Antwort!
Außer C++ kann ich Java und Delphi.
Kennst du ein paar gute Links für Tutorials?
Oder könntest du mir ein paar Tipps für die Genierung von Zeilennummern geben?
Ich habe das bis jetzt folgendermaßen gemacht: Ich warte auf die Eingabe der
Return-Taste und füge dann einen String an die Position ein, auf der momentan Cursor steht. Blöd wird die ganze Sache, wenn ich mitten im Text eine Zeilennummer einfügen möchte. Dann muss ich alle folgenden Zeilennummern aktualisieren, also den gesamten Text solange durchgehen, bis eine Zeilennummer gefunden und dann die Nummern aktualisieren. Das ist nicht besonders elegant und bei längerem Text wird die ganze Sache vorallem ziemlich langsam, weil dann entsprechend viele Zeilennummern überprüft und aktualisiert werden müssen.
Also wie auch immer, wenn du einen besseren Vorschlag hast, wäre ich dir sehr dankbar.
-
Wenn du das "sauber" implementieren willst, solltest du schon deinen Textbuffer selber rendern. Ich bin mir nicht ganz sicher, ob man irgendwelche vorgefertigten Textboxen so anpassen kann, dass sie deinen Text so rendern, wie du es haben willst.
-
Danke für den Tip, aber das klingt etwas zu umständlich. Da greif ich doch lieber auf ein Framework zurück und verwende dessen Funktionalität.
-
Hallo,
Martin13 schrieb:
Außer C++ kann ich Java und Delphi.
okay, jetzt kommt's drauf an, wie gut du in den Sprachen bist. Wenn du überall ungefähr gleich gut bist, rate ich dir zu Java. Erstens weil man schnell in der API ist und Swing (die Java Oberfläche) einfach traumhaft zu programmieren ist.
Bei C++ würde sich sonst wxWidgets, GTK+, gtkmm oder Qt als "neues" Toolkit anbieten. Oder eben die MFC.
Die Entscheidung musst du treffen.
Kennst du ein paar gute Links für Tutorials?
Zu was genau? "Wie schreib ich meinen Texteditor?" ? Leider nein.
Aber was ich dir empfehlen kann ist, in OpenSource Texteditoren nachzuschauen, wie die das gelöst haben.Oder könntest du mir ein paar Tipps für die Genierung von Zeilennummern geben?
Spontaner Ansatz: KeyHandler auf Textfeld setzen, wenn Return gedrückt wurde sich vom Textfeld die aktuelle Anzahl Zeilen geben lassen und links in ein weiteres Control runterschreiben (kann man auch eingrenzen, sodass nur der aktuelle Bereich neu berechnet wird, dann muss man aber auch auf Scrolling und so reagieren).
Oder eben mal bei bekannten Vertretern wie jEdit schauen. jEdit ist ein wirklich feiner Texteditor, der in Java geschrieben wurde. Dort kannst du dir ansehen, wie die das Syntaxcoloring, die Zeilennummerierung usw. gemacht haben.
MfG
GPC
-
Martin13 schrieb:
Danke für den Tip, aber das klingt etwas zu umständlich. Da greif ich doch lieber auf ein Framework zurück und verwende dessen Funktionalität.
Ganz ohne GUI Framework wirst du auch wohl kaum sehr weit kommen und ich hab auch nicht gesagt, dass du auf ein Framework verzichten solltest, aber du solltest dir bei deinem Framework mal anschauen, wie man neue Controls/Widgets implementiert, sonst kann ich mir eine "saubere" Lösung kaum vorstellen.
Wenn das natürlich zu viel Arbeit ist, dann kannst du ja auch schon ein fertiges Control nehemen. Z.B. Scintilla
-
Okay danke für die Tipps, ich werd mir mal alles anschauen und dann entscheiden.
Danke euch allen!