gtk demo

¿Has encontrado un error? ¿Tienes la solución? Deja 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 estudiante con únicamente conocimiento básico del lenguaje, no de programación.

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
 
}

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.

Deja un comentario

Suscribirse a los comentarios.