alternative to assert
[gtkD.git] / gtkD / demos / sourceView / SVTest.d
blob6263849893232ea88cb1938af2aa954e5ff66b10
1 /*
2 * This file is part of gtkD.
4 * gtkD is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser General Public License as published by
6 * the Free Software Foundation; either version 2.1 of the License, or
7 * (at your option) any later version.
9 * gtkD is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public License
15 * along with gtkD; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 module sourceView.SVTest;
22 private import gtk.MainWindow;
23 private import gtk.GtkD;
24 private import gtk.ScrolledWindow;
25 private import gtk.Widget;
27 private import glib.ListSG;
29 private import gsv.SourceView;
30 private import gsv.SourceBuffer;
31 private import gsv.SourceLanguage;
32 private import gsv.SourceLanguagesManager;
34 private import gsvc.gsvtypes;
36 private import gsv.SourceBuffer;
38 private import std.stdio;
39 private import std.file;
42 /**
43 * Demos for SourceView.
44 * TODO on gsv: override methods from TextView, TextBuffer, etc
47 class HelloWorld : MainWindow
50 SourceView sourceView;
52 this()
54 super("GtkD SourceView");
55 setBorderWidth(10);
56 add(getSourceView());
57 setDefaultSize(640,400);
58 showAll();
61 private char[] getDemoText()
63 char[] text = "";
64 try
66 version(Win32) text = cast(char[])std.file.read("demos\\sourceView\\SVTest.d");
67 else text = cast(char[])std.file.read("demos/sourceView/SVTest.d");
69 catch ( FileException fe )
73 return text;
76 private Widget getSourceView()
78 sourceView = new SourceView();
79 sourceView.setShowLineNumbers(true);
81 sourceView.setInsertSpacesInsteadOfTabs(false);
82 sourceView.setTabsWidth(4);
83 sourceView.setHighlightCurrentLine(true);
85 SourceBuffer sb = sourceView.getBuffer();
86 sb.setText(getDemoText());
88 ScrolledWindow scWindow = new ScrolledWindow();
89 scWindow.add(sourceView);
92 SourceLanguagesManager slm = new SourceLanguagesManager();
93 ListSG list = slm.getAvailableLanguages();
95 writefln("%s available languages", list.length());
97 SourceLanguage dLang;
99 for(int i=0 ; i<list.length() ; i++ )
101 SourceLanguage sl = new SourceLanguage(cast(GtkSourceLanguage*)list.nthData(i));
102 char[] name = sl.gtkSourceLanguageGetName();
103 if ( "D" == name )
105 dLang = sl;
107 writefln("\t[%s] %s", i, name);
111 if ( dLang !is null )
113 writefln("Setting language to D");
114 sb.setLanguage(dLang);
115 sb.setHighlight(true);
118 //sourceView.modifyFont("Courier", 9);
119 sourceView.setMargin(72);
120 sourceView.setShowMargin(true);
121 sourceView.setAutoIndent(true);
124 return scWindow;
128 private import gtkc.Loader;
130 void main(char[][] args)
133 Gtk.init(args);
134 new HelloWorld();
135 Gtk.main();