BlitzMax (Linux) nutzt Dillo Webbrowser?

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Blacal

Betreff: BlitzMax (Linux) nutzt Dillo Webbrowser?

BeitragDo, Nov 17, 2005 23:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Servus

Ich hab selbst keine BlitzMax-Gui, aber kann des sein, das der für die html-View den Dillo Webbrowser nutzt?
Denn wenn ja, würde es kein Problem darstellen, die Docu unter Linux ansehnlich zu machen. Man müsst nur des css-Zeug rausbringen, und die Tabellen "direk" über html eine Farbe (oder gscheide größenangaben) geben.

Würd mich mal interessieren. Denn wenn ja, schreib ich mal den bbdoc Befehl etwas um, damits unter Linux auch was gscheids ausspuckt.

Mfg Blacal

rema

BeitragFr, Nov 18, 2005 0:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Wäre eine gescheite Lösung, da die Ansicht der Hilfe unter Linux nicht zu gebrauchen ist. Auch die Suche nach Befehlen (etc) funzt überhaupt nicht.

Habe mir auch schon überlegt die bbdoc um zumodelieren, obwohl mit TheShadow seinem Tool bin ich ganz und gar zufrieden, da es noch einige Hilfestellungen mehr gibt. Nur leider gibts diese für andere User nur zu kaufen.

Blacal

BeitragFr, Nov 18, 2005 11:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab den source heute mal kurz überflogen. Dürft eigendlich kein Problem sein.

Ich setzt mich da übers Wochenende mal drann.

Ahja, bevor ichs vergesse: Wleche symlinks brauchtn der BlitzMax-Compiler unter Linux?
der will ja en gcc-3.3 und ich hab gcc-3.3.5
Ich hab da mal probiert ein paar symlinks in /usr/bin reinzupacken, hattnen aber nicht sonderlich gefalln.

Freeman

BeitragFr, Nov 18, 2005 12:31
Antworten mit Zitat
Benutzer-Profile anzeigen
du musst
Code: [AUSKLAPPEN]

sudo link /usr/bin/gcc /usr/bin/gcc-3.3
sudo link /usr/bin/g++ /usr/bin/g++-3.3

So müsste es gehen. Ja das mit der Docu finde ich auch sehr trauig, da gibt es mehrere dinge die ich echt blöd finde.Naja gut

Fr3eMaN
MacBook | MacOSX 10.5 | 80GB HDD | 1GB | BlitzMax 1.28

Blacal

BeitragFr, Nov 18, 2005 14:24
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm...

sudo kennt mein Gentoo nicht, muss ich wohl mal emergen

aber ln -s /usr/bin.... müsst doch es selbe sein, oder?
wenn ich des mit ln mache, spuckter in der MaxIDE das da aus: gcc-config error: Could not run/locate "gcc-3.3"

Freeman

BeitragFr, Nov 18, 2005 16:02
Antworten mit Zitat
Benutzer-Profile anzeigen
oda mach einfach su, so auf jeden Fall musst du dich als root anmelden,dann gehts

Fr3eMaN
MacBook | MacOSX 10.5 | 80GB HDD | 1GB | BlitzMax 1.28

Blacal

BeitragFr, Nov 18, 2005 16:18
Antworten mit Zitat
Benutzer-Profile anzeigen
he, is mir klar
Wenn ich das nicht wüsste, hätt ich gentoo erst garnicht zum laufen gebracht Wink

Ower is ja auch mal wurscht. Ich kann ja des docmods erstma unter Windows compilieren, und dann die Docu unter Linux anschaun.

trotzdem danke für die Antwort.

Mfg Blacal

Freeman

BeitragFr, Nov 18, 2005 16:33
Antworten mit Zitat
Benutzer-Profile anzeigen
oder du erstellst den link in deinem home Verzeichnis und kopierst ihn per Midnight Commander als root nach /usr/bin

Fr3eMaN
MacBook | MacOSX 10.5 | 80GB HDD | 1GB | BlitzMax 1.28

Blacal

BeitragFr, Nov 18, 2005 23:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Servus

Quelle: http://www.fltk.org/doc-1.1/Fl_Help_View.html
Zitat:
The Fl_Help_View widget displays HTML text. Most HTML 2.0 elements are supported, as well as a primitive implementation of tables. GIF, JPEG, and PNG images are displayed inline.


Da hab ich wohl die Antwort auf meine Frage gefunden. BlitzMax nutzt wohl dieses HelpView da, und nicht den Dillo.
Wohl aber eher noch nicht, denn in meiner Linuxinstallation war schon ein "Dillo Webbrowser"-Modul drinne. Nur halt ohne Source und all dem. Und bei ersten docmods warer wieder weg Wink

rema

BeitragSa, Nov 19, 2005 8:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Blacal hat Folgendes geschrieben:
hmm...

sudo kennt mein Gentoo nicht, muss ich wohl mal emergen

aber ln -s /usr/bin.... müsst doch es selbe sein, oder?
wenn ich des mit ln mache, spuckter in der MaxIDE das da aus: gcc-config error: Could not run/locate "gcc-3.3"


Mach mal:

# emerge app-admin/sudo

Und unter /etc/sudoers kannst du deine Programme eintragen die normalerweise nur mit Adminrecht auszufrühren sind. Aber vorsichtig, nicht alles eintragen.

zbsp:

myusername ALL=NOPASSWD: /usr/bin/emerge

So kannst du auch als User mal emerge ausführen. Einfach:

sudo emerge meinprgramme

//EDIT//

Achja: wegen Linken unter Gentoo. Bei mir hat folgendes geklappt:

link /usr/i686-pc-linux-gnu/gcc-bin/3.3.6/i686-pc-linux-gnu-g++ /usr/bin/g++-3.3
link /usr/i686-pc-linux-gnu/gcc-bin/3.3.6/i686-pc-linux-gnu-gcc /usr/bin/gcc-3.3

Blacal

BeitragSa, Nov 19, 2005 11:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Servus

Danke rema, so gehts.

So, um mal den Stand der Dinge zu posten, so siehts bei mir aktuell aus:
http://blacal.bl.funpic.de/test.png

Aber ich glaub, so wie ich des angefangen hab, wird des nichts. Umso mehr tabellen da in einer html-Datei drinne sind, umso mehr spinnt der. Beim Max2D-Modul z. B. stürzter bei mir jetzt immer ab.

Muss ich wohl so machen, dass der für für jede Funktion / Methode ne extra Datei macht

rema

BeitragSa, Nov 19, 2005 13:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Geb mal den Quellcode, dann kann ich ja mittesten und rumwerkeln.

Blacal

BeitragSa, Nov 19, 2005 13:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]


Strict
Import BRL.MaxUtil
Import "bmxtoker.bmx"

'*******************************************************************************************
'
Function FindIdent( pre$,text$,i Var,e Var )

   i=text.Find( pre,i )
   
   If i=-1 Return False
   
   If i>0 And text[i-1]>32 Return False
   
   e=i+1
   While e<text.length
      Local c=text[e]
      If c=Asc(".") And e+1<text.length And IsAlpha( text[e+1] )
         e:+2
         Continue
      EndIf
      If c<>Asc("_") And Not IsAlphaNumeric(c) Exit
      e:+1
   Wend
   Return True
End Function

Function FormatText( t$ Var )

   If t.length And IsAlphaNumeric( t[t.length-1] ) t:+"."

   Local i,e

   i=0
   While FindIdent( "#",t,i,e )
   
      While e<t.length-1 And t[e]=Asc(".") And IsAlpha( t[e+1] )
         e:+2
         While e<t.length And IsAlpha(t[e])
            e:+1
         Wend
      Wend
      
      Local id$=t[i+1..e],q=id.Find("."),ln$

      If q=-1
         ln="<a href=#"+id+">"+id+"</a>"
      Else
         ln="<a href=../../../"
         Repeat
            ln:+id[..q]+".mod/"
            id=id[q+1..]
            q=id.Find(".")
         Until q=-1
         ln:+"doc/commands.html#"+id+">"+id+"</a>"
      EndIf
         
      t=t[..i]+ln+t[e..]
      i:+ln.length
   Wend

   i=0
   While FindIdent( "@",t,i,e )
      Local p$="<b>"+t[i+1..e]+"</b>"
      t=t[..i]+p+t[e..]
      i:+p.length
   Wend

End Function

'*******************************************************************************************

Type TDocs

   Field kind                       'T_CONST, T_GLOBAL etc
   Field ident$                    'identifier
   Field proto$                    'Global/Function etc text
   Field bbdoc$                    'rem/endrem bbdoc: text
   Field infos:TList=New TList      'ModuleInfo's
   
   Field kids:TList=New TList     '
   
   Method Sort()
      kids.Sort
      For Local t:TDocs=EachIn kids
         t.Sort
      Next
   End Method
   
   Method Compare( with:Object )
      Local t:TDocs=TDocs(with)

      If kind=t.kind
         If kind=T_MODULE
            Return bbdoc.ToLower().Compare( t.bbdoc.ToLower() )
         EndIf
         Return ident.ToLower().Compare( t.ident.ToLower() )
      EndIf

      If kind=T_MODULE Return -1
      If t.kind=T_MODULE Return 1
      
      If kind=T_CONST Return -1
      If t.kind=T_CONST Return 1

      If kind=T_GLOBAL Return -1
      If t.kind=T_GLOBAL Return 1
      
      If kind=T_FIELD Return -1
      If t.kind=T_FIELD Return 1

      If kind=T_METHOD Return -1
      If t.kind=T_METHOD Return 1

      If kind=T_FUNCTION Return -1
      If t.kind=T_FUNCTION Return 1
      
      If kind=T_TYPE Return -1
      If t.kind=T_TYPE Return 1
      
      If kind=T_EOL Return -1
      If t.kind=T_EOL Return 1
      
      Throw "OOps!"
      
   End Method
   
   Method EmitHtml$()
   
      Local returns$
      Local keyword$
      Local shortdesc$
      Local longdesc$
      Local example$
      
      Local d$=bbdoc
      
      Local i=d.Find("~n")
      If i=-1 i=d.length
      shortdesc=d[6..i].Trim()
      d=d[i+1..].Trim()
      If kind<>T_MODULE
         FormatText shortdesc
      EndIf
      
      If d.Find( "returns:" )=0
         Local i=d.Find("~n")
         If i=-1 i=d.length
         returns=d[8..i].Trim()
         d=d[i+1..].Trim()
         FormatText returns
      Else If d.Find( "keyword:" )=0
         Local i=d.Find("~n")
         If i=-1 i=d.length
         keyword=d[8..i].Trim()
         d=d[i+1..].Trim()
         FormatText keyword
      EndIf
      If d.Find( "about:" )=0
         longdesc=d[6..].Trim()
         FormatText longdesc
      EndIf
      Local stream:TStream=ReadStream( ident+".bmx" )
      If stream
         While Not stream.Eof()
            example:+stream.ReadLine()+"~n"
         Wend
         stream.Close
         example=example.Trim()
      EndIf
      
      Select kind
      Case 0
      Case T_MODULE
         Print "<html><head><title>"+shortdesc+" reference</title>"
         Print "</head><body>"
         Local n_consts
         Local n_globals
         Local n_functions
         Local n_types
         For Local t:TDocs=EachIn kids
            Select t.kind
            Case T_CONST n_consts:+1
            Case T_GLOBAL n_globals:+1
            Case T_FUNCTION n_functions:+1
            Case T_TYPE n_types:+1
            End Select
         Next
         
         
         'Schreibt den Kopf der Moduldokumentation
         Local t$=ModuleSource( ident.ToLower() )
         Local i=t.Find( "/mod/" )

         Print " <center><b>"+ident+": &nbsp;&nbsp;"
         If n_consts Then Print "<a href=#consts>Constants</a> &nbsp;&nbsp;"
         If n_globals Then Print "<a href=#globals>Globals</a> &nbsp;&nbsp;"
         If n_functions Then Print "<a href=#functions>Functions</a> &nbsp;&nbsp;"
         If n_types Then Print "<a href=#types>Types</a> &nbsp;&nbsp;"
         If Not infos.IsEmpty() Then Print "<a href=#modinfo>Modinfo</a> &nbsp;&nbsp;"
         If i<>-1
            t="../../../.."+t[i..]
            Print "<a href='"+t+"'>Source</a>"
         EndIf
         Print " </b></center>"

         Local stream:TStream=ReadStream( "intro.bbdoc" )
         
         If stream
            Print "<h1>"+shortdesc+"</h1>"
            If longdesc Print longdesc.Trim()
         Else
            stream=ReadStream( "intro.html" )
            If Not stream
               Print "<h1>"+shortdesc+"</h1>"
               If longdesc Print longdesc.Trim()
            EndIf
         EndIf
         
         If stream
            Local intro$
            While Not stream.Eof()
               intro:+stream.ReadLine()+"~n"
            Wend
            Local i=intro.Find("<body>")
            If i<>-1
               intro=intro[i+6..]
               i=intro.find("</body>")
               If i<>-1 intro=intro[..i]
            EndIf
            stream.close
            intro=intro.Trim()
            FormatText intro
            Print intro
         EndIf
         
         Print "<center><table width=80% border=1 cellpadding=4 cellspacing=5>"
      Case T_TYPE
      
         Print "</table></center><br>"
         Print "<center><b>Type "+proto+"</b></center>"
         Print "<center><table width=90% border=1 cellpadding=4 cellspacing=5 id="+ident+">"
         If returns
            Print " <tr><td valign=top width=150><b>Returns</b></td><td width=100%>"+returns+"</td></tr>"
         EndIf
         If shortdesc
            Print " <tr><td valign=top width=150><b>Description</b></td><td width=100%>"+shortdesc+"</td></tr>"
         EndIf
         If longdesc
            Print " <tr><td valign=top width=150><b>Information</b></td><td width=100%>"+longdesc+"</td></tr>"
         EndIf
         If example
            Print " <tr><td valign=top width=150><a href="+ident+".bmx class=small>Example</a></td><td width=100%><font face=curier>"+example+"</font></td></tr>"
         EndIf
            
      Case T_METHOD
      
         Print "<tr>"
         Print " <td valign=top width=150><b>Method:</b></td>"
         Print " <td width=100%>"
         Print "  <a href=test.htm>"+proto.Replace("Method","")+"</a><br>"
         Print "  "+shortdesc
         Print "  </td>"
         Print " </tr>"
   
      Case T_FIELD
      
         Print "<tr>"
         Print " <td valign=top width=150><b>Field:</b></td>"
         Print " <td width=100%>"
         Print "  <a href=test.htm>"+proto.Replace("Field","")+"</a><br>"
         Print "  "+shortdesc
         Print "  </td>"
         Print " </tr>"

      Case T_CONST
      
         Print "<tr>"
         Print " <td valign=top width=150><b>Constant:</b></td>"
         Print " <td width=100%>"
         Print "  <a href=test.htm>"+proto.Replace("Const","")+"</a><br>"
         Print "  "+shortdesc
         Print "  </td>"
         Print " </tr>"

      Case T_GLOBAL

         Print "<tr>"
         Print " <td valign=top width=150><b>Global:</b></td>"
         Print " <td width=100%>"
         Print "  <a href=test.htm>"+proto.Replace("Global","")+"</a><br>"
         Print "  "+shortdesc
         Print "  </td>"
         Print " </tr>"      
                                 
      Case T_FUNCTION

         Print "<tr>"
         Print " <td valign=top width=150><b>Function:</b></td>"
         Print " <td width=100%>"
         Print "  <a href=test.htm>"+proto.Replace("Function","")+"</a><br>"
         Print "  "+shortdesc
         Print " </td>"
         Print "</tr>"
      
Rem         Print " <br>"
         Print " <center><b>"+proto+"</b></center>"
         
         Print " <center><table width=90% border=1 cellpadding=4 cellspacing=5 id="+ident+">"
         If returns
            Print "  <tr><td valign=top width=150><b>Returns</b></td><td width=100%>"+returns+"</td></tr>"
         EndIf
         If shortdesc
            Print "  <tr><td valign=top width=150><b>Description</b></td><td width=100%>"+shortdesc+"</td></tr>"
         EndIf
         If longdesc
            Print "  <tr><td valign=top width=150><b>Information</b></td><td width=100%>"+longdesc+"</td></tr>"
         EndIf
         If example
            Print "  <tr><td valign=top width=150><a href="+ident+".bmx class=small>Example</a></td><td width=100%><font face=curier>"+example+"</font></td></tr>"
         EndIf
         Print " </table></center>"
EndRem
         
      End Select
      
      If Not kids.IsEmpty()
         Local tkind=0
         For Local doc:TDocs=EachIn kids
            If kind<>T_TYPE And doc.kind<>tkind
               Print "</table></center><h2"
               Select doc.kind
               Case T_CONST Print " id=consts>Constants"
               Case T_GLOBAL Print " id=globals>Globals"
               Case T_FUNCTION Print " id=functions>Functions"
               Case T_TYPE Print " id=types>Types"
               Case T_FIELD Print ">Fields"
               Case T_METHOD Print ">Methods"
               Case T_EOL Print ">Keywords"
               End Select
               Print "</h2>"
               Print "<center><table width=90% border=1 cellpadding=4 cellspacing=5>"
               tkind=doc.kind
            EndIf
            doc.EmitHtml
            If kind<>T_TYPE Print "<br>"
         Next
      EndIf
      
      Select kind
      Case T_MODULE
         If Not infos.IsEmpty()
            Print "</table></center>"
            Print "<h2 id=modinfo>Module Information</h2>"
            Print "<center><table width=90% border=1 cellspacing=5 cellpadding=4>"
            For Local t$=EachIn infos
               t=t[1..t.length-1]
               If Not t Continue
               Local i=t.Find(":")
               If i=-1 Continue
               Local key$=t[..i].Trim()
               Local val$=t[i+1..].Trim()
               Print "<tr><th width=150 valign=top>"+key+"</th><td width=100%>"+val+"</td></tr>"
            Next
            Print "</table></center>"
         EndIf
         Print "</body></html>"
      End Select
      
   End Method

End Type

Type TDocParser

   Field toker:TBMXToker
   
   Method Close()
      If Not toker Return
      toker.Close
      toker=Null
   End Method

   Method Parse( parent:TDocs )
   
      If Not toker Throw "closed"
   
      While toker.Curr()<>T_EOF
      
         If toker.Curr()=T_ENDTYPE
            If parent.kind=T_TYPE Return
            toker.Bump
            Continue
         EndIf
         
         If toker.Curr()=T_MODULEINFO
            If parent.kind=T_MODULE
               If toker.Bump()=T_STRINGLIT
                  parent.infos.AddLast toker.Text()
               EndIf
            EndIf
            toker.Bump
            Continue
         EndIf
      
         If toker.Curr()<>T_REM
            toker.Bump
            Continue
         EndIf
         
         If toker.Text()[..6]<>"bbdoc:"
            toker.Bump
            Continue
         EndIf
         Local bbdoc$=toker.Text()
         
         Local kind=toker.Bump()
         If kind<>T_CONST And kind<>T_GLOBAL And kind<>T_FUNCTION And kind<>T_METHOD..
         And kind<>T_MODULE And kind<>T_TYPE And kind<>T_FIELD And kind<>T_EOL
            toker.Bump
            Continue
         EndIf
         Local ident$,proto$
         If kind=T_EOL
            Local i=bbdoc.Find( "keyword:" )
            If i=-1 Continue
            ident=bbdoc[i+8..].Replace( "~q","" )
            proto="Keyword "+ident.Trim()
         Else
            proto=toker.Line()
            If toker.Bump()<>T_IDENT Continue
            ident=toker.Text()
            If toker.Bump()=Asc(".") And toker.Bump()=T_IDENT
               ident:+"."+toker.Text()
            EndIf
            toker.Bump
            Select kind
            Case T_CONST,T_GLOBAL
               Local i=proto.Find( "=" )
               If i<>-1 proto=proto[..i]
            Case T_FUNCTION,T_METHOD
               Local i=proto.Find( "=" )
               While i<>-1 And proto.Find( ")",i+1 )<>-1
                  i=proto.Find( "=",i+1 )
               Wend
               If i<>-1 proto=proto[..i]
               
               
               i=proto.toLower().Find( "nodebug" )
               While i<>-1 And proto.Find( ")",i+1 )<>-1
                  i=proto.toLower().Find( "nodebug",i+1 )
               Wend
               If i<>-1 proto=proto[..i]
               
            End Select
         EndIf
         
         'got a valid Doc!
         Local docs:TDocs=New TDocs
         docs.kind=kind
         docs.ident=ident.Trim()
         docs.proto=proto.Trim()
         docs.bbdoc=bbdoc.Trim()
         
         parent.kids.AddLast docs
         
         If kind=T_MODULE Or kind=T_TYPE
            Parse docs
         EndIf
         
      Wend
   
   End Method
   
   Function WithToker:TDocParser( toker:TBmxToker )
   
      Local t:TDocParser=New TDocParser
      t.toker=toker
      Return t

   End Function
   
End Type



Bis jetzt hab ich nur an der docparser.bmx rumgewerkelt. Also im Prinzip nur die Tags ausgestaucht (Ich schau erstmal, was der html-View kann, und was net).

Was ich scho festgestellt habe:
- Farben ignoriert der
- Mehrere Tabellen ineinander stürzt er ab
- border kann nur größe 1 sein
- <img> tag kann man vergessen
- bei <pre> berechnet er die größe falsch (Schreibt außerhalb der Tabelle weiter )
- mit großen Dateien hatter übelste Probleme (Siehe Max2D)
- Bei größeren Inhalten einer Zelle verrechnet der sich auch gerne (aber nicht immer)
- Größen von tabllenzellen würfelt der wie wild durcheinander

so, und was bleibt übrig: Nich viel
Deshalb schau ich grad, wie ich des Zeug ein bisschen auf mehrere Dateien verteilen kann.
  • Zuletzt bearbeitet von Blacal am Sa, Nov 19, 2005 14:51, insgesamt einmal bearbeitet

Blacal

BeitragSa, Nov 19, 2005 14:45
Antworten mit Zitat
Benutzer-Profile anzeigen
So, erstmal sorry für den Doppelpost

Jetzt nimmt des scho eher so gestallt an, wie ich mir des vorgestellt hab
http://blacal.bl.funpic.de/test2.png

Wenn man jetzt dort auf z. B. auf einen Funktionsnamen klickt, soll der dann (auf die leider noch nicht erstellte) extra hilfe datei von dieser Funktion gehen.

Würd aber gern wissen, was ihr von dieser Idee haltet. Übersichtlicher isses ja auf jeden fall.

Den Source (eins oben) update ich gleich. Zwecks verständlichkeit werd ich aber bald eine neue Sourcedatei für docmods machen. Eine, wo das ganze html-zeugs gschrieben wird, und dokumentiert ist. Damit man sich mal auskennt

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group