Zurck zur Homepage

Einführung

Wenn auch Ruby ein ausgezeichneter Tool für die Programmierung von "low-level" Skripts für die Systemadministration ist, ist die Sprache genauso für die Programmierung von Anwendungsprogramme anzuwenden. Und weil fenstergesteurte Programme (graphical user interfaces) ein "Muss" für moderne Anwendungsprogramme sind, sollten Sie sich beibringen, wie man GUI's mit Ruby entwickelt. Ein von mehreren Vorteilen der Rubyprogrammierung ist es, Sie kriegen es zu spüren, dass es möglich ist, die Entwicklungszeit eines gewnschten Programmes zu reduzieren(rapid application development, RAD). Im Gegensatz zum zeitaufwendigen Verfahren wie "code compile test"("Codieren Compilieren Testen") Zyklus einer traditionellen Programmiersprache, können Sie schnell Änderungen vornehmen in Ihrem Rubyskript,um neue Ideen auszuprobieren. Dieser Vorteil wird ganz mehr offensichtlicher, wenn Sie anfangen, GUI- Applicationen mit Ruby zu entwicklen. Schrittweise grafische Öberfläche zu entwicklen, Hinzufügen eines neuen Elements und Restarting des Programmes um ein sofortiges Resultat zu sehen, wie GUI sich verändert, kann man das alles schnell lernen.

Sie dürfen bereits wissen, dass Standard Ruby Distribution eine Schnittstelle zu TK beinhaltet, einer Schnittstelle, die schon längst al ein "cross-platform" GUI Toolkit gilt. When Sie sich jedoch in Ruby Application Archive(RAA) nachsehen, würden Sie sich schnell entdecken, dass es mehrere GUI Toolkits für Ruby gibt.RAA Warum sollte man sich nicht nur mit TK beschätigen obwohl der ein Standard ist? Ja nun, während Sie dieses Kapitel durcharbeiten, würden Sie sich es überlegen, dass man auch weitere Alternativen anwenden kann.Diese GUI Toolkits befinden sich in mehreren Stadien der Entwicklung. Einige sind neue und unstabil, während andere sind alt und ganz robust, jedoch in meisten Fällen irgendwo dazwischen. Meistens sind GUI Toolkits für Ruby cross-plattformig, gemeint wird es damit, dass die Programme so aufgebaut sind, dass sie auf Multi-User-Plattform laufen, während andere auf Singl-User-Plattform laufen.

Jeder GUI Toolkit bringt mit sich eigene einzigartige Eingenschaften und Besonderheiten, jedoch es gibt einige Merkmale, die in fast allen GUI Toolkits vorhanden sind, mit denen Sie arbeiten würden. GUI- Applicationen sind "Ereignisgesteuert". Viele Programme werden Sie fortfahrend von Start bis Ende schreiben, dabei wissen Sie, was Sie vom Programm wollen , das eine festgesetzte Menge der Information einnimmt(Input)und gleiche Menge von Output erzeugt mit wenigem oder gar keinem Eingreifen von Anwender(User). Zum Beispiel, betrachtet man ein Rubyskript das zum Verarbeiten grossen Anzahl von Textdateien in der Stapelverarbeitung geschrieben wurde, eventuell auch "updating" eines ausgewählten Abschnittes in diesen Dateien und das auch ohne Eingreifen vom User. Im Gegensatz zu solchen Programmen verbringen "event-driven" Applicationen ihre meiste Zeit im "Nichtstun", bis der Anwender was unternimmt bzw. ein Input erzeugt, was das Fortfahren des Programms veranlässt. Jeder Toolkit realisiert auf seine eigene Art die Kommunikation zwischen einem Ereignis, welches ein Anwender auslöst, und einem Programmecode, welcher mit einer bestimmter Funktion festgeknüpft ist. Somit ist eine gewisse Kommunikation miteinanderer gewährleistet. GUI Toolkits bestehen aus grosser Anzahl von elementaren Objekten, sogenannten "Widgets" wie "Schaltflächen", "Beschriftungen", und "Textfelden", als auch aus noch mehr vielseitigen Widgets, wie "Tabellen", "Kalender" oder "Texteditoren". Der Aufbau von grafischen Öberflächen erfolgt auf dem Basis "Vater-Kind"-Beziehung. Es gibt einen Toplevel-Widget, der als "Main-Window" bezeichnet wird, und der beheimatet ein odere mehrere "Kind" Fenster . Jedes "Kind" Fenster kann auch weitere "Kind" Fenster enthalten und so geht's weiter. Das Prinzip somit ist eine Verwendung solchen "Zusammengesetzen Muster" und die Handhabung ist zu den "Vater-Fenster" andwendbar, welches gewöhnlich "Kind-Fenster" beinflüssen wird. GUI Toolkits bieten mehrere Optionen für die Gestaltung "Kind-Fenster" innerhalb des "Behälterfensters" an.

Das Ziel dieses Kapitels ist es, einige von meist populären GUI Toolkits für Ruby vorzustellen, wie man häufige Sprachelemente anwenden kann, eine Erklärung daüber wie man es benutzt und bei der Entscheidung zu helfen, welcher von GUI Toolkits am besten Ihren Vorstellungen entspricht. Um das zu machen, werden wir zuerst ein einfaches Programm beschreiben das eine Menge von Merkmalen und Funktionen hat, was Sie in anderen GUI Programmen anwenden würden. Danach werden wir einen Blick darauf werfen, wie Sie dieses Programm mit jeder von diesen Toolkits entwickeln könnten. Weiter werden wir einige andere Themen besprechen, wie man diese GUI Toolkits an Ihrem System herunterladen,installieren und kompilieren kann und auch zusätzliche Tools(solche wie GUI Builder), mit denen man die Entwicklung bequemer und schneller machen kann. Eine Quelle für weitere zusätzliche Informationen und Ressoursen kann in einem Forum des jeweiligen GUI Toolkits gefunden werden.

Verwendung unseres Beispielprogrammes

Für jeden von diesen vier größten Tools(Tk, GTK+, FOX und SWin/VRuby) werden wir ein kleines gleiches Programm entwickeln, so dass Sie schnell Ähnlichkeiten und Unterschiede zwischen Toolkits erkennen können, dadurch werden Sie lernen, wie man sie benutzen kann. Das Programm ist ein einfacher XML Betrachter, das NQXML Modules von Jim Menard verwendet als seine Dokumentvorlage, also Sie müssen sich Erweiterungen verschaffen und sie installieren, bevor Sie eingentlich das Beispielprogramm auf Ihrem System laufen lassen können. Um Ihnen das benötigte Wissen zu übermitteln, damit Sie Ihre eigene Programme entwickeln können, werden am Beispiel dieses XML-Betrachters folgende allgemeine Merkmale gezeigt:

  • Anzeige Menüleiste, mit verschiedenen Pulldownmenüs z.B. zum Öffnen XML Dateien oder zum Verlassen des Programmes
  • Verwendung des allgemeinen Dialogboxes, wie z.B. "Datein-Öffnen" Dialog
  • Verwendung des Gestaltungsmanagers zur automatischen Anordunung von Widgets
  • Verwendung verschiedenen Widgets zum Zeigen XML-Dokumentknotes und ihren Attributen
Valid XHTML 1.1! Valid CSS!