On Mon, 27 Feb 2006 18:28:04 +0200
"A.J. Venter" <[EMAIL PROTECTED]> wrote:
>
> > >
> > > If this is possible, then this is *the* way to go.
> >
> > At least I know it is possible for gtk2 - I implemented dynamic fonts in
> > one of my (C++, unfortunately) programs. The documentation seems to talk
> > about the font code as something New and Improved (tm), so I'd say it's
> > quite hard in gtk1.
> Well I could find the documentation on how to do it, but the actual method
>
> isn't implemented somewhere, it is not impossible that the PLACE where it
> is missing is in the FPC units, but since those were autogenerated my
> gutt tells me that it is more likely to be somewhere in the LCL.
>
> I am not exactly sure how the GTK2 objects were turned into OP classes for
> the LCL, I would have to look at the wrapper code first, my feeling
> however is that the likely scenario is that somewhere an external
> declaration needs to be added that can enable GTKWidget.Modify_font from
> the GTK2 libs.
>
> GTK1 already has support for this, and if I I didn't REALLY need UTF-8
> support for text-out I would have just compiled my app for GTK1 instead
> but since I don't know how, and it would be GREAT if this works, I am
> happy to help write code to make it happen, if I can get help from some
> of the gtk2 guru's it would just happen faster.
>
> My current code:
> In gtk2object.inc add this (I put mine just above TGTKWidget.SetCallBack):
> Procedure TGTK2WidgetSet.SetWidgetFont(const AWidget: PGTK2Widget; const
> Afont: tFont);
> Var
> PangoDescStr,DescOpts : String;
> NewFontDescription : PPangoFontDescription;
>
> Begin
> {$IFDEF GTK2}
> PangoDescStr := AFont.Name;
> DescOpts := '';
> If FSBold in AFont.Style then
> DescOpts := DescOpts + ' bold';
> If FSItalic in AFont.Style then
> DescOpts := DescOpts + ' italic';
> If FSUnderline in AFont.Style then
> DescOpts := DescOpts + ' underline';
> If FSStrikeOut in AFont.Style then
> DescOpts := DescOpts + ' strikethrough';
>
> PangoDescStr := PangoDescStr+DescOpts+' '+intToStr(Afont.Size);
> //Pango does not appear to have a way to set the character set in the
> //font description but seems to default to UTF-8 this probably
> //requires some or other todo item.
> try
> NewFontDescription := PPangoFontDescription(PangoDescStr);
> AWidget.Modify_Font(NewFontDescription);
I will take a look ...
Mattias
>
> except
> debugln('COULD NOT SET FONT');
> end;
> {$ENDIF}
> end;
>
>
> In GTK2Int.pas change
> protected
> procedure AppendText(Sender: TObject; Str: PChar);
> to:
> protected
> procedure SetWidgetFont(const AWidget: PGTK2Widget; const Afont:
> tFont); procedure AppendText(Sender: TObject; Str: PChar);
>
> Note that the current code DOES NOT COMPILE due to the missing
> Modify_Font.
>
> PS. Thanks Darek, I managed to get THIS far by studying your patch and
> will look at it again when doing the per-widget bits.
>
> PPS. As you can see, right now tfont.color is NOT yet handled at all.
>
> Ciao
> A.J.
>
_________________________________________________________________
To unsubscribe: mail [EMAIL PROTECTED] with
"unsubscribe" as the Subject
archives at http://www.lazarus.freepascal.org/mailarchives