Ich hatte eine dumme Idee die aber vieleicht möglich wäre:
Könnte man bzw. wer würde sich die mühe machen aus dem Modul Tkinter (Canvas) und re einen Internet Browser zu schreiben?
Allein alle (X)HTML, CSS Befehle und eine gesamte Javascript Engine einzubauen wäre wahrscheihnlich ungeheure Programmierarbeit, na ja wozu gibt es DLL's
Browser aus Tkinter und re (nur eine dumme Idee)
- krisi12345
- User
- Beiträge: 205
- Registriert: Mittwoch 4. März 2009, 16:56
- Wohnort: Das schöne München
- Kontaktdaten:
[url=http://www.pc-tutos.de/Tutorials/Tutorials.htm]Wie verändert man Spiele oder Computer nach Wunsch? www.PC-Tutos.de[/url]
- krisi12345
- User
- Beiträge: 205
- Registriert: Mittwoch 4. März 2009, 16:56
- Wohnort: Das schöne München
- Kontaktdaten:
Ich habe nicht gesagt das das jemand machen soll!Das will nur sicher niemand für dich übernehmen.
[url=http://www.pc-tutos.de/Tutorials/Tutorials.htm]Wie verändert man Spiele oder Computer nach Wunsch? www.PC-Tutos.de[/url]
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Und warum sollte man das wollen?
Sofern du bei RegExp bleibst, und keinen echten Parser benutzt/implementierst, wuerde ich aber auch die Machbarkeit anzweifeln und gerade wenn man sich die Massen, an nicht-standardkonformen Websites anschaut, stellt sich auch die Frage, ob man den Teil selbst uebernehmen will.
Sofern du bei RegExp bleibst, und keinen echten Parser benutzt/implementierst, wuerde ich aber auch die Machbarkeit anzweifeln und gerade wenn man sich die Massen, an nicht-standardkonformen Websites anschaut, stellt sich auch die Frage, ob man den Teil selbst uebernehmen will.
Ich hoffe du meinst mit DLLs Module ?krisi12345 hat geschrieben:Allein alle (X)HTML, CSS Befehle und eine gesamte Javascript Engine einzubauen wäre wahrscheihnlich ungeheure Programmierarbeit, na ja wozu gibt es DLL's
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Gibts doch schon, nennt sich Grail und wurde unter anderem von Fred L. Drake (bekannt von der Python-Dokumentation) geschrieben.krisi12345 hat geschrieben:Könnte man bzw. wer würde sich die mühe machen aus dem Modul Tkinter (Canvas) und re einen Internet Browser zu schreiben?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
... Welcher aber mit modernen Pythonversionen (2.4, 2.5, 2.6, 3.*) nicht ausführbar istLeonidas hat geschrieben:Gibts doch schon, nennt sich Grail und wurde unter anderem von Fred L. Drake (bekannt von der Python-Dokumentation) geschrieben.krisi12345 hat geschrieben:Könnte man bzw. wer würde sich die mühe machen aus dem Modul Tkinter (Canvas) und re einen Internet Browser zu schreiben?
@OP: Ich würde einen in Python geschriebenen webbrowser Interessant finden, vorallem da man es sicher durch skripte erweitern kann - gute Code-basis vorrausgesetzt. Aber Tk, geschweige denn reguläre ausdrücke würd ich dafür nicht verwenden, sondern eher Webkit.
Natürlich kann man prinzipiell einen XHTML-Parser und -Renderer bauen. Das wäre noch nicht einmal sonderlich schwer, wenn man nicht die vielen in der Praxis vorkommenden Abweichungen und "Quirks" zur Kompatibilität mit Fehlern diverser anderer Browser (sprich IE) berücksichtigt, sondern exakt den Standard implementiert. Lässt man auch noch CSS weg, ist das Projekt übersichtlich (will sagen, habe ich schon mal vor einigen Jahren für ein Hilfesystem in Java gemacht).
Stefan
Stefan
- krisi12345
- User
- Beiträge: 205
- Registriert: Mittwoch 4. März 2009, 16:56
- Wohnort: Das schöne München
- Kontaktdaten:
Man könnte ja eine Datei/Modul schreiben das sich um die GUI Basis und um das downloden und zerlegen der Seite kümmert. Die HTML/CSS Befehle werden in Strings unterteilt, weitere Dateien/Module in der jede Funktion ein HTML/CSS Befehl ist könnten dann die Strings ausernander nehmen und GUI Befehle ausgeben.
Der Vorteil dieses Vorgehens wäre das man/Welt immer eine HTML/CSS Funktion nach der anderen in die Module einbaut.
Der Vorteil dieses Vorgehens wäre das man/Welt immer eine HTML/CSS Funktion nach der anderen in die Module einbaut.
[url=http://www.pc-tutos.de/Tutorials/Tutorials.htm]Wie verändert man Spiele oder Computer nach Wunsch? www.PC-Tutos.de[/url]
"Befehle in Strings unterteilen" klingt falsch. Lassen wir CSS außer Acht, kannst du XHTML mit einem XML-Parser in einen DOM verwandeln. Aus
wird dann
Mein Ziel ist, dass jedes Objekt seine eigene Größe bestimmen kann und weiß, wie seine Kinder angeordnet werden müssen. HTML kennt zwei Arten von Elementen: Block-Elemente und Inline-Elemente. Erstere werden bei vorgegebener Breite einfach untereinander dargestellt und sind so hoch, wie sie eben sein müssen. Letztere sind in Block-Elementen enthalten und passen sich in ihrer Höhe an die Zeilenhöhe an, sind so breit wie sie es eben sein müssen und brechen außerdem in der durch das Block-Element vorgegebenen Breite um. H1 und P sind Block-Elemente, Text und Strong Inline-Elemente und Body ein Container für Block-Elemente.
Damit ich den Umbruch abbilden kann, definiere ich noch Line-Elemente. Angenommen, die vorgegebene Breite wäre so, dass das "etwas", nicht aber das "Fettschrift" in die erste Zeile passen würde. Dann muss der Umbruch folgende Objekte erzeugen:
Möglicherweise wäre es einfacher, jedes Wort als Objekt zu repräsentieren und es nur noch wissen zu lassen, ob hinter ihm ein Umbruch möglich ist oder nicht. In HTML (außer bei PRE) werden ja beliebig viele Leerzeichen und Leerzeilen zu nur einem Leerzeichen zusammengefasst.
Wenn ich eine Funktion "text_width(font, text)" habe, mit der ich unter Angabe eines Fonts die Breite eines Textes in Pixeln berechnen kann, dann kann ich damit aus der ersten direkt aus dem XML abgeleiteten Form die zweite Zeilenform berechnen.
Danach kann ich einen relativ einfachen Layout-Algorithmus auf das Objektmodell loslassen. Ein Text-Elemente definiert seine Höhe und Breite durch die Schrift und den Text. Ein Line-Element und jedes Inline-Element, das selbst wieder Kinder hat wie z.B. Strong, ordnet seine Kinder von links nach rechts nebeneinander an und bestimmt seine Breite also als Summe aller Breiten und seine Höhe als das Maximum der vorgegebenen Höhe oder der Höhen der Kinder. Bei der Position ist noch die Grundlinie zu berücksichtigen. Block-Elemente ordnen ihre Line-Elemente nun untereinander an. Die Breite ist das Maximum aller Breiten und die Höhe die Summe aller Höhen. Und das Body-Container-Element macht das selbe für seine Kinder.
Stefan
Code: Alles auswählen
<body>
<h1>Überschrift</h1>
<p>Absatz mit <strong>etwas Fettschrift</strong>.</p>
</body>
Code: Alles auswählen
Body(
H1(Text("Überschrift")),
P(Text("Absatz mit "), Strong(Text("etwas Fettschrift")), Text(".")))
Damit ich den Umbruch abbilden kann, definiere ich noch Line-Elemente. Angenommen, die vorgegebene Breite wäre so, dass das "etwas", nicht aber das "Fettschrift" in die erste Zeile passen würde. Dann muss der Umbruch folgende Objekte erzeugen:
Code: Alles auswählen
Lines(
Line(Text("Absatz mit "), Strong(Text("etwas"))),
Line(Strong(Text("Fettschrift")), Text(".")))
Wenn ich eine Funktion "text_width(font, text)" habe, mit der ich unter Angabe eines Fonts die Breite eines Textes in Pixeln berechnen kann, dann kann ich damit aus der ersten direkt aus dem XML abgeleiteten Form die zweite Zeilenform berechnen.
Danach kann ich einen relativ einfachen Layout-Algorithmus auf das Objektmodell loslassen. Ein Text-Elemente definiert seine Höhe und Breite durch die Schrift und den Text. Ein Line-Element und jedes Inline-Element, das selbst wieder Kinder hat wie z.B. Strong, ordnet seine Kinder von links nach rechts nebeneinander an und bestimmt seine Breite also als Summe aller Breiten und seine Höhe als das Maximum der vorgegebenen Höhe oder der Höhen der Kinder. Bei der Position ist noch die Grundlinie zu berücksichtigen. Block-Elemente ordnen ihre Line-Elemente nun untereinander an. Die Breite ist das Maximum aller Breiten und die Höhe die Summe aller Höhen. Und das Body-Container-Element macht das selbe für seine Kinder.
Stefan
Interessant ist in diesem Zusammenhang vielleicht auch:
http://webkit.org/blog/114/webcore-rend ... he-basics/
http://webkit.org/blog/114/webcore-rend ... he-basics/