Login
Newsletter
Werbung

Do, 16. März 2000, 00:00

GTK-Workshop VI: Scrollbars und Textboxes

Vorwort

Im letzten Teil des GTK-Workshops ging es um Adjustments. In diesem Kapitel kamen aber auch schon Widgets zur Sprache, von denen noch keine Rede war. Das waren Textboxen und Scrollbars. Ich werde beide in einem Teil erklären, da sie eng miteinander zu tun haben, oder können Sie eine Textbox gebrauchen, wo keine Scrollbar dran ist? Also! In diesem Teil werden wir uns zuerst mit den Textboxen beschäftigen.

Textboxen erstellen

Wie immer werde ich Ihnen erst einmal sagen, wie das Widget erstellt wird, über das wir gerade reden. Dazu ist folgende Funktion nicht schlecht:

GtkWidget* gtk_text_new (GtkAdjustment *hadj,
 GtkAdjustment *vadj);

hadj ist der Parameter, wo das Adjustment angegeben wird, welches für das horizontale Scrollen zuständig ist. Hier kann NULL angegeben werden, um die Textbox dazu zu veranlassen, ihr eigenes Adjustment zu erstellen. An dieses kann dann evtl. eine Scrollbar oder ein Spinbutton angehängt werden, um das Adjustment zu regulieren und somit die Textbox zu scrollen. Das gleiche gilt für den vadj-Parameter, nur ist er für das Scrollen in vertikaler Richtung zuständig.

Einstellungen für die Textbox

Es stehen viele Dinge zur Verfügung, um eine Textbox zu konfigurieren. Ein Blick in /usr/inlcude/gtk/gtktext.h vermag fast Schrecken aufkommen zu lassen, wieviele verschiedene Funktionen es gibt. Hinweis: es lassen sich zu jedem Widget viele Funktionen herausfinden, indem man einen Blick in /usr/include/gtk/gtk[widgetname].h wirft. Jetzt wieder zurück zum Thema:

Es läßt sich für Textboxen ändern, ob sie editierbar sind oder nicht, was nützlich sein kann, wenn eine Textbox nur zur Anzeige von z.B. einer Hilfedatei da ist und der User dort nichts reinschreiben soll. Das bewirkt man mit folgender Funktion:

void gtk_text_set_editable (GtkText *text,
 gboolean editable);

wobei text natürlich die Textbox ist, für die die Einstellung geändert werden soll, und editable entweder TRUE, für editierbar, oder FALSE, für nicht-editierbar, sein kann.

Es ist auch möglich, bei einer Textbox zu ändern, ob irgendwo im Text umgebrochen werden soll, oder ob dabei Wörter beachtet werden und erst nach ihnen umgebrochen wird. Dazu ist folgende Funktion da:

void gtk_text_set_word_wrap (GtkText *text,
 gint word_wrap);

Hier gilt wieder: text ist die Textbox und word_wrap ist entweder TRUE, wobei auf Wörter geachtet wird, oder FALSE, wobei auch in den Wörtern umgebrochen wird.

Weiterhin ist änderbar, ob überhaupt ein Umbruch stattfindet. Dies wird mit folgender Funktion verwirklicht:

void gtk_text_set_line_wrap (GtkText *text,
 gint line_wrap);

text ist wieder die Textbox und line_wrap ist wieder entweder TRUE, wobei umgebrochen wird, oder FALSE, womit Sie die Textbox nie und nimmer zum Umbrechen bringen werden, es sei denn, Sie wenden diese Funktion wieder an und benutzen TRUE *g*.

Nun kann es auch ausgesprochen nützlich sein, von der Textbox die Adjustments zu ändern. Sie möchten zum Beispiel die Textbox von einer Scrollbar scrollen lassen, und wenn der User es in den Einstellungen ändert, soll die Textbox über eine andere Scrollbar gescrollt werden. Die Funktion kann auch Nutzen erweisen, wenn Sie die Textbox ihre eigenen Adjustments erstellen lassen und danach richtige Widgets dafür festlegen. Hier jedenfalls kommt die Funktion:

void gtk_text_set_adjustments (GtkText *text,
 GtkAdjustment *hadj,
 GtkAdjustment *vadj);

text ist die Textbox, von der die Adjustments geändert werden sollen, hadj ist das für das horizontale Scrollen zuständige Adjustment und vadj ist für das vertikale Scrollen zuständig. Wenn Sie nur ein Adjustment neu vergeben möchten, dann können Sie für das andere einfach NULL einsetzen.

Man kann auch die Position der Eingabemarke verändern, vielleicht um den Benutzer zu ärgern, indem sie, wenn er die Eingabemarke mit der Tastatur oder Maus verrückt, von dem Programm in die genau entgegengesetzte Richtung geschoben wird. :-) Und hier ist die Funktion:

void gtk_text_set_point (GtkText *text,
 guint index);

text ist die Textbox und index ist die Position, an die der Cursor geschoben werden soll.

Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung