Richmemo unter Linux

Rund um die LCL und andere Komponenten
Antworten
Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1617
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Richmemo unter Linux

Beitrag von corpsman »

Servus,

Ich bastle gerade an einem Kleinen Programm, in welchem ich Frei Formatierten Text ddastellen will. Das Richmemo kann das im Prinzip alles wunderbar. Unter Windows läuft mein Code ansich recht gut. Auf meinem Odroid rechner.
odroid@odroid:~$ uname -a
Linux odroid 3.8.13.16 #1 SMP PREEMPT Tue Feb 11 10:47:21 BRST 2014 armv7l armv7l armv7l GNU/Linux
habe ich fpc 2.6.2-5 drauf und lasse damit Lazarus SVN Revision 44586 (Aktueller Stand 02.04.14) laufen.

Wenn ich nun gemäs des Wiki eintrages die Sourcen aus dem SVN ziehe und als Packet installieren will bekomme ich stets diese Fehlermeldung :
Unable to find file "gtk2/gtk2richmemo.pas".
If it belongs to your project, check search path in
Project -> Compiler Options -> Search Paths -> Other Unit Files.
If this file belongs to a package, check the appropriate package
compiler options. If this file belongs to Lazarus, make sure
compiling clean. If the file belongs to FPC then check fpc.cfg.
If unsure, check Project -> CompilerOptions -> Test
Im Nachrichtenfenster steht allerdings
gtk2/gtk2richmemo.pas(34,3) Fatal: Can't find unit GtkDef used by Gtk2RichMemo
Wenn ich mittels STRG+Linke Maus, in der gtk2richmemo.pas auf GTKdef klicke öffnet der Editor mit eine Datei die mehr nach einem Programm aussieht.

Code: Alles auswählen

{$mode objfpc}{$h+}
program GtkDef;
 
uses sysutils,  // exception
     FPgtkExt,  // Application, TFPgtkApplication
     settingsrec,
     GTKEditor;  // Mainwindow: TGtkEditorWindow
 
begin
  try      
..
Nun habe ich 2 Fragen
1. Kann mir jemand helfen das Richmemo unter minem Linux läuft oder
2. Kennt jemand eine Komponente mit der ich Texte so formatiert wie in TRichmemo anzeigen kann und die auf Win32/64, Linux läuft ?

Gruß

Corpsman

[Edit]

So selber Fehler läßt sich auch unter :
corpsman@virtualbox:~/lazarus$ uname -a
Linux virtualbox 3.11.0-14-generic #21-Ubuntu SMP Tue Nov 12 17:07:40 UTC 2013 i686 i686 i686 GNU/Linux
corpsman@virtualbox:~/lazarus$ fpc
Free Pascal Compiler version 2.6.2-5 [2013/07/25] for i386
Nachstellen.
--
Just try it

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Re: Richmemo unter Linux

Beitrag von theo »

corpsman hat geschrieben: 2. Kennt jemand eine Komponente mit der ich Texte so formatiert wie in TRichmemo anzeigen kann und die auf Win32/64, Linux läuft ?
http://code.google.com/p/lazarus-br/dow ... p&can=2&q=
Hat auch Macken, ist aber mMn leicht besser.

Oder nur anzeigen mit TIpHTMLPanel von iPro (ist bei Lazarus dabei)

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1617
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Richmemo unter Linux

Beitrag von corpsman »

nach all der Google suche, denke ich ist das Problem mit GTK2, und hat nichts mit der eigentlichen Komponente zu tun.

siehe : http://comments.gmane.org/gmane.comp.id ... eral/42054
oder : http://galfar.vevb.net/imaging/smf/inde ... opic=316.0

nur leider posten die da die Lösung nicht.

Wäre schon toll, wenn das wieder ginge. Bzw. läufts bei dir ? dann könnten wir unterschiede zwischen unseren Systemen suchen..
--
Just try it

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Re: Richmemo unter Linux

Beitrag von theo »

corpsman hat geschrieben:nach all der Google suche, denke ich ist das Problem mit GTK2, und hat nichts mit der eigentlichen Komponente zu tun.

siehe : http://comments.gmane.org/gmane.comp.id ... eral/42054
oder : http://galfar.vevb.net/imaging/smf/inde ... opic=316.0

nur leider posten die da die Lösung nicht.
Die Links sind ja steinalt. Es sollt längstens wieder gehen.
RichMemo benutze ich nicht.

wp_xyz
Beiträge: 5139
Registriert: Fr 8. Apr 2011, 09:01

Re: Richmemo unter Linux

Beitrag von wp_xyz »

denke ich ist das Problem mit GTK2
Poste das Problem doch mal im englischen Lazarus-Forum. Da sind einige GTK2-Gurus unterwegs (ich denke an den Transparency-Bug)...

Ich habe gestern ebenfalls versucht, das RichMemo unter Ubuntu zu installieren und bin auf denselben Fehler gestoßen, natürlich auch ohne eine Lösung zu finden.

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Re: Richmemo unter Linux

Beitrag von theo »

OK, ihr Hilflosen. :wink:
Ich hab's kurz gezogen.
Die Lösung zum kompilieren ist ganz einfach.
Überall wo der Compiler meckert aus Gtk -> Gtk2 machen. Seit an GTK3 entwickelt wird, unterscheidet man das.

Code: Alles auswählen

Gtk2Def,
GTK2WinApiWindow, Gtk2Globals, Gtk2Proc, InterfaceBase,
Gtk2WSControls,      
...
TGtk2WSWinControl
 
 
Dann läufts. Aber ich weiss nicht wie gut...

Ein Problem ergibt sich, wenn man in der Demo gleich "Make Bold and Red" auf unformatiertem Text macht.
Da keine Fontgrösse definiert ist, wird dort einfach eine Riesenzahl genommen.
Das kann man durch explizites Setzen der Fontgrösse beheben:

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
var
  fp   :  TFontParams;
begin
  Caption := Format('sel start %d,  sel length %d', [RichMemo1.SelStart, RichMemo1.SelLength]);
  RichMemo1.GetTextAttributes(RichMemo1.SelStart, fp);
  fp.Color := clRed;
  fp.Style := [fsBold];
  fp.Size := 10; <------------
  RichMemo1.SetTextAttributes(RichMemo1.SelStart, RichMemo1.SelLength, fp);
end;

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1617
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Richmemo unter Linux

Beitrag von corpsman »

Danke Theo,

nun die Frage wie kontaktiert man Dmitry 'skalogryz' Boyarintsev, damit das auch im SVN gepatcht wird. Oder haben auch noch andere Zugriff auf den SVN ?
--
Just try it

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Re: Richmemo unter Linux

Beitrag von theo »

corpsman hat geschrieben: nun die Frage wie kontaktiert man Dmitry 'skalogryz' Boyarintsev, damit das auch im SVN gepatcht wird. Oder haben auch noch andere Zugriff auf den SVN ?
Ich vermute, dass es mit der letzen Release Version noch geht. Deshalb wird er es wohl erst ändern, wenn die nächste Version rauskommt.
Als Komponentenentwickler muss man ja nicht dauernd der trunk Version hinterhercoden.

knight
Beiträge: 802
Registriert: Mi 13. Sep 2006, 22:30

Re: Richmemo unter Linux

Beitrag von knight »

corpsman hat geschrieben:Danke Theo,

nun die Frage wie kontaktiert man Dmitry 'skalogryz' Boyarintsev, damit das auch im SVN gepatcht wird. Oder haben auch noch andere Zugriff auf den SVN ?
skalogryz.lists at gmail.com

knight

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1617
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Richmemo unter Linux

Beitrag von corpsman »

Hat noch jemand eine Idee warum folgender Code unter Linux nicht geht ?

Code: Alles auswählen

procedure TForm1.Button6Click(Sender: TObject);
var
  ofs, len  : Integer;
begin
  len := length(RichMemo1.Text);
  RichMemo1.GetStyleRange( RichMemo1.SelStart, ofs, len );
  if (ofs = RichMEmo1.SelStart) and (len = RichMemo1.SelLength) then begin
    ofs := ofs + len;
    RichMemo1.GetStyleRange( ofs, ofs, len );
  end;
  RichMemo1.SelStart := ofs;
  RichMemo1.SelLength := len;
end;
Ist aus dem Sample, unter Windows selektiert die Anwendung dort nach einander alle Ranges, unter Xubuntu leider nicht. Was ich machen will ist die Ranges + Settings der Ranges alle Exportieren.
--
Just try it

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1617
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Richmemo unter Linux

Beitrag von corpsman »

So diese Lösung funktioniert auf Linux, Windows und Arm :

Code: Alles auswählen

 
 Procedure AddRange(start, len: integer; style: TFontParams);  
begin
end;
..
  j := 0;
  RichMemo.GetTextAttributes(0, fp);
  For i := 1 To length(RichMemo.Text) - 1 Do Begin
    RichMemo.GetTextAttributes(i, fpn);
    If (fp.Color <> fpn.Color) Or
      (fp.Name <> fpn.Name) Or
      (fp.Size <> fpn.Size) Or
      (fp.Style <> fpn.Style) Then Begin
      AddRange(j, i - j, fp);
      fp := fpn;
      j := i;
    End;
  End;
  i := length(RichMemo.Text) - 1;
  AddRange(j, i - j, fpn);
 
--
Just try it

Antworten