gtk demo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 | { $Id: gtkdemo.pp,v 1.4 2005/02/14 17:13:17 peter Exp $ GTK (demo) implementation for shedit Copyright (C) 1999-2000 by Sebastian Guenther (sg@freepascal.org) See the file COPYING.FPC, included in this distribution, for details about the copyright. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. } {$MODE objfpc}{$H+} program GTKDemo; uses SysUtils, Classes, Doc_text, shedit, sh_pas, sh_xml, GDK, GTK, GtkSHEdit; function CreateTextEditWidget(ADoc: TTextDoc): TGtkSHWidget;begin Result := TGtkSHWidget.Create(ADoc, TSHTextEdit); end; function CreatePasEditWidget(ADoc: TTextDoc): TGtkSHWidget;var e: TSHPasEdit; begin Result := TGtkSHWidget.Create(ADoc, TSHPasEdit); e := Result.Edit as TSHPasEdit; e.shSymbol := Result.AddSHStyle('Symbol', colBrown, colDefault, fsNormal); e.shKeyword := Result.AddSHStyle('Keyword', colBlack, colDefault, fsBold); e.shComment := Result.AddSHStyle('Comment', colDarkCyan, colDefault, fsItalics); e.shDirective := Result.AddSHStyle('Directive', colRed, colDefault, fsItalics); e.shNumbers := Result.AddSHStyle('Numbers', colDarkMagenta, colDefault, fsNormal); e.shCharacters := Result.AddSHStyle('Characters', colDarkBlue, colDefault, fsNormal); e.shStrings := Result.AddSHStyle('Strings', colBlue, colDefault, fsNormal); e.shAssembler := Result.AddSHStyle('Assembler', colDarkGreen, colDefault, fsNormal); end; function CreateXMLEditWidget(ADoc: TTextDoc): TGtkSHWidget; var e: TSHXMLEdit; begin Result := TGtkSHWidget.Create(ADoc, TSHXMLEdit); e := Result.Edit as TSHXMLEdit; e.shTag := Result.AddSHStyle('Tag', colBlack, colDefault, fsBold); e.shTagName := Result.AddSHStyle('Tag Name', colBlack, colDefault, fsBold); e.shDefTagName := Result.AddSHStyle('Definition Tag Name', colDarkGreen, colDefault, fsBold); e.shArgName := Result.AddSHStyle('Argument Name', colBrown, colDefault, fsNormal); e.shString := Result.AddSHStyle('String', colBlue, colDefault, fsNormal); e.shReference := Result.AddSHStyle('Reference', colDarkMagenta, colDefault, fsNormal); e.shInvalid := Result.AddSHStyle('Invalid', colRed, colDefault, fsNormal); e.shComment := Result.AddSHStyle('Comment', colDarkCyan, colDefault, fsItalics); e.shCDATA := Result.AddSHStyle('CDATA', colDarkGreen, colDefault, fsNormal); end; var MainWindow, Notebook: PGtkWidget; Pages: array[0..2] of TGtkSHWidget; PasDoc, XMLDoc, TxtDoc: TTextDoc; procedure OnMainWindowDestroyed; cdecl; begin gtk_main_quit; end; begin gtk_init(@argc, @argv); // Create main window MainWindow := gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_widget_set_usize(MainWindow, 600, 400); gtk_window_set_title(PGtkWindow(MainWindow), 'FPC SHEdit GTK Demo'); gtk_signal_connect(PGtkObject(MainWindow), 'destroy', GTK_SIGNAL_FUNC(@OnMainWindowDestroyed), nil); // Set up documents PasDoc := TTextDoc.Create; PasDoc.LoadFromFile('gtkdemo.pp'); XMLDoc := TTextDoc.Create; XMLDoc.LoadFromFile('simple.xml'); TxtDoc := TTextDoc.Create; TxtDoc.LoadFromFile('gtkshedit.pp'); // Create notebook pages (editor widgets) Pages[0] := CreatePasEditWidget (PasDoc); Pages[1] := CreateXMLEditWidget (XMLDoc); Pages[2] := CreateTextEditWidget(TxtDoc); // Create notebook Notebook := gtk_notebook_new; gtk_notebook_append_page(PGtkNotebook(Notebook), Pages[0].Widget, gtk_label_new('Pascal')); gtk_notebook_append_page(PGtkNotebook(Notebook), Pages[1].Widget, gtk_label_new('XML')); gtk_notebook_append_page(PGtkNotebook(Notebook), Pages[2].Widget, gtk_label_new('Text')); gtk_container_add(PGtkContainer(MainWindow), Notebook); gtk_widget_show(Notebook); gtk_widget_show(MainWindow); Pages[0].SetFocus; gtk_main; Pages[2].Free; Pages[1].Free; Pages[0].Free; end. { $Log: gtkdemo.pp,v $ Revision 1.4 2005/02/14 17:13:17 peter * truncate log } |
¿Has encontrado algún error? ¿Tienes la solución? Dejame tu correción ;-)
Antes de comentar: Gran parte de los ejercicios propuestos no tienen librerías debido a que Wordpress las eliminó al verlas como etiquetas HTML. Si sabes/tienes/conoces las librerías que hacen falta, déjalo en los comentarios. Y lo mas importante: Todos los ejemplos fueron realizados por personas con únicamente conocimiento básico del lenguaje, no de programación.
Otro punto importante: Si vas a sugerir un segmento de código en algún lenguaje debes hacerlo así:
- Si es lenguaje C <code lang="c">Código en C</code>
- Si es lenguaje Pascal <code lang="pascal">Aquí dentro el código de Pascal</code>.
De esta manera el código coloreas el código.
Otro punto importante para muchos que crees que te he ignorado: Todos los comentarios los reviso y en su debido momento los apruebo, pero ojo con el con lo siguiente:Me reservo el derecho de alterar, publicar o no los comentarios así como también cambiar mis condiciones en el momento que yo lo requiera.
¿Si estas de acuerdo? Adelante! que ya te he quitado bastante tiempo leyendo esta basura :)