From: jpablo <jpablo.lucero@gmail.com>
Subject: Re: gtksourceview for gtkada
Date: Thu, 16 Jul 2009 07:47:23 -0700 (PDT)
Date: 2009-07-16T07:47:23-07:00 [thread overview]
Message-ID: <94bcf77a-cca0-4091-886b-c42d75df4536@c2g2000yqi.googlegroups.com> (raw)
In-Reply-To: bfd9d9ff-112c-423e-a91e-6ca699bf71e1@a26g2000yqn.googlegroups.com
Oh, thanks for your answer, but it's for a large work and it must be
done in GTK.
On Jul 14, 4:29 pm, Vadim Godunko <vgodu...@gmail.com> wrote:
> On Jul 14, 10:09 pm, jpablo <jpablo.luc...@gmail.com> wrote:> Hi,
>
> > I'm trying to make a simple text editor with syntax highlighting for a
> > specific language, and I'm using gtkada2 for it. The problem is that
> > gtkada2 doesn't seem to have the gtksourceview widget, that exists for
> > C, C++, python, etc.
>
> > Does anyone knows if that widget has been added by someone to the
> > usual widgets of the gtkada2 package?
>
> Alternatively, you can use QtAda and its QPlainTextEditor class. All
> you will need to do is provide your own subclass from
> QSyntaxHighlighter:
>
> 1 with Qt4.Objects;
> 2 with Qt4.Strings;
> 3 with Qt4.Syntax_Highlighters.Impl;
> 4 with Qt4.Text_Documents;
> 5
> 6 package Ada_Syntax_Highlighters is
> 7
> 8 type Ada_Syntax_Highlighter is new
> 9 Qt4.Syntax_Highlighters.Impl.Q_Syntax_Highlighter_Impl with
> null record;
> 10
> 11 overriding
> 12 procedure Highlight_Block
> 13 (Self : not null access Ada_Syntax_Highlighter;
> 14 Text : in Qt4.Strings.Q_String);
> 15
> 16 type Ada_Syntax_Highlighter_Access is access
> Ada_Syntax_Highlighter;
> 17
> 18 function Create
> 19 (Parent : access Qt4.Text_Documents.Q_Text_Document'Class :=
> null)
> 20 return not null Ada_Syntax_Highlighter_Access;
> 21
> 22 end;
>
> 1 with Qt4.Colors;
> 2 with Ada_Syntax_Highlighters.Moc;
> 3 with Ada.Wide_Text_IO;
> 4
> 5 with Asis.Extensions.Syntax_Highlight;
> 6
> 7 package body Ada_Syntax_Highlighters is
> 8
> 9 ---------------------
> 10 -- Highlight_Block --
> 11 ---------------------
> 12
> 13 procedure Highlight_Block
> 14 (Self : not null access Ada_Syntax_Highlighter;
> 15 Text : in Qt4.Strings.Q_String)
> 16 is
> 17 use type Qt4.Q_Integer;
> 18 use Asis.Extensions.Syntax_Highlight;
> 19
> 20 -- Length : constant Qt4.Q_Integer := Qt4.Strings.Length
> (Text);
> 21
> 22 Colors : constant array (Token_Kinds) of
> Qt4.Colors.Q_Color :=
> 23 (Comment => Qt4.Colors.Create (0, 128, 128),
> 24 Identifier => Qt4.Colors.Create (0, 0, 128),
> 25 Literal => Qt4.Colors.Create (0, 128, 0),
> 26 Delimiter => Qt4.Colors.Create (128, 128, 0),
> 27 Keyword => Qt4.Colors.Create (128, 0, 128),
> 28 Error => Qt4.Colors.Create (255, 0, 0));
> 29
> 30 procedure Set_Token
> 31 (From : Positive;
> 32 Count : Positive;
> 33 Kind : Token_Kinds) is
> 34 begin
> 35 Set_Format (Self,
> 36 Qt4.Q_Integer (From) - 1, -- zero based index
> 37 Qt4.Q_Integer (Count),
> 38 Colors (Kind));
> 39 end Set_Token;
> 40
> 41 procedure Go is new Parse (Set_Token);
> 42
> 43 State : Integer := Integer (Previous_Block_State (Self));
> 44 begin
> 45 if State = -1 then
> 46 State := Default_State;
> 47 end if;
> 48
> 49 Go (Qt4.Strings.To_Utf_16 (Text), State);
> 50
> 51 Set_Current_Block_State (Self, Qt4.Q_Integer (State));
> 52 Ada.Wide_Text_IO.Put_Line (">" & Qt4.Strings.To_Utf_16
> (Text));
> 53 end Highlight_Block;
> 54
> 55 ------------
> 56 -- Create --
> 57 ------------
> 58
> 59 function Create
> 60 (Parent : access Qt4.Text_Documents.Q_Text_Document'Class :=
> null)
> 61 return not null Ada_Syntax_Highlighter_Access
> 62 is
> 63 Self : constant not null Ada_Syntax_Highlighter_Access
> 64 := new Ada_Syntax_Highlighter;
> 65
> 66 begin
> 67 Qt4.Syntax_Highlighters.Impl.Constructors.Initialize (Self,
> Parent);
> 68
> 69 return Self;
> 70 end Create;
> 71
> 72 end Ada_Syntax_Highlighters;
>
> And attach it to QPlainTextEditor
>
> 23 with Qt_Ada.Application;
> 24 with Qt4.Core_Applications;
> 25 with Qt4.Fonts;
> 26 with Qt4.Objects;
> 27 with Qt4.Plain_Text_Edits.Constructors;
> 28 with Qt4.Strings;
> 29
> 30 with Ada_Syntax_Highlighters;
> 31
> 32 procedure Main is
> 33 Editor : Qt4.Plain_Text_Edits.Q_Plain_Text_Edit_Access;
> 34 Highlighter :
> Ada_Syntax_Highlighters.Ada_Syntax_Highlighter_Access;
> 35
> 36 begin
> 37 Qt_Ada.Application.Initialize;
> 38
> 39 Editor :=
> 40 Qt4.Plain_Text_Edits.Constructors.Create
> 41 (Qt4.Strings.From_Utf_16 ("Quit"));
> 42 Highlighter := Ada_Syntax_Highlighters.Create (Editor.Document);
> 43
> 44 Editor.Resize (800, 600);
> 45 Editor.Show;
> 46
> 47 Qt_Ada.Application.Execute;
> 48 end Main;
>
> That's all... ;-)
next prev parent reply other threads:[~2009-07-16 14:47 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-07-14 18:09 gtksourceview for gtkada jpablo
2009-07-14 19:29 ` Vadim Godunko
2009-07-16 14:47 ` jpablo [this message]
2009-07-16 17:47 ` Dmitry A. Kazakov
2009-07-17 17:17 ` jpablo
2009-08-05 13:54 ` jpablo
2009-08-05 14:33 ` Dmitry A. Kazakov
2009-08-07 14:17 ` Dmitry A. Kazakov
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox