Aktuelle Zeit: 19.10.2018 01:56

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 19 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags: Re: Webgadget und window.print
BeitragVerfasst: 12.01.2018 11:41 
Offline
Benutzeravatar

Registriert: 09.09.2004 07:07
Wohnort: Süddeutschland
Hast Du meinen Trick weiter oben mal versucht?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Webgadget und window.print
BeitragVerfasst: 12.01.2018 11:55 
Offline
Benutzeravatar

Registriert: 08.03.2013 14:27
Wohnort: ERB
Interessant. Da scheint es wohl keine Konsequente Linie zu geben. Bei dem einen scheint es zu gehen. Beim anderen nicht. Aber sowas habe ich schon vermutet. Musste ja auch feststellen, das die meisten Möglichkeiten mit dem Webgadget auch nur unter Windows funktionieren (Navigation-Callback, Kontext-Menü blockieren usw.).

Dann muss es am Ende eben wieder mal Windows Only sein.

@Kukulkan: Dein Trick beschreibt nur, wie du aus deiner Pure-Basic Anwendung heraus den Druckdialog des Gadgets triggern kannst. Der Kern des Dialogs liegt in der Javascript-Funktion window.print(). Ob du diese Funktion jetzt wie du erst in das Markup einsetzt und neu lädst oder du die Funktion mit einem Klick auf den Link ausführst, macht keinen Unterschied. In beiden Fällen soll der Dialog öffnen. Bei #NULL funktioniert dies aber nicht ;)

_________________
PBExpress
Lightweight PureBasic FastCGI Framework

Github: https://github.com/reVerBxTc/PBExpress
Wiki: https://github.com/reVerBxTc/PBExpress/wiki


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Webgadget und window.print
BeitragVerfasst: 12.01.2018 12:11 
Offline
Benutzeravatar

Registriert: 09.09.2004 07:07
Wohnort: Süddeutschland
Eventuell ist unter Linux noch immer JS as default deaktiviert...

Code:
CompilerIf #PB_Compiler_Version > 540
    ImportC "-lwebkitgtk-3.0"
CompilerElse
    ImportC "-lwebkitgtk-1.0"
CompilerEndIf   
    webkit_web_settings_new()
    webkit_web_view_set_settings(*WebkitWebView, *WebkitSettings)
EndImport
 
Procedure EnableJSforWebGadget(WebgadgetID.i)
    ; Enable JavaScript support in GTK3 WebGadgets
    Protected WebkitSettings.i
    ; ----- Get Webkit's default setting (with scripting languages enabled by default)
    WebkitSettings = webkit_web_settings_new()
    ; ----- Store Webkit's default settings in WebGadget
    webkit_web_view_set_settings(GadgetID(WebgadgetID.i), WebkitSettings)
EndProcedure


Aus diesem Thread:
http://www.purebasic.fr/english/viewtopic.php?f=13&t=68507

__________________________________________________
Domain angepasst
Bild
12.01.2018
RSBasic


Zuletzt geändert von Kukulkan am 12.01.2018 13:22, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Webgadget und window.print
BeitragVerfasst: 12.01.2018 13:22 
Offline
Benutzeravatar

Registriert: 08.03.2013 14:27
Wohnort: ERB
Danke aber leider kann ich das zur Zeit selber nicht testen. Am WE wird jetzt erstmal der Silent-Webserver als Handler für das Gadget geschrieben.Dann scheue ich mal weiter ^^

_________________
PBExpress
Lightweight PureBasic FastCGI Framework

Github: https://github.com/reVerBxTc/PBExpress
Wiki: https://github.com/reVerBxTc/PBExpress/wiki


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Webgadget und window.print
BeitragVerfasst: 12.01.2018 13:44 
Offline
Benutzeravatar

Registriert: 20.04.2006 09:50
mit EnableJSforWebGadget() funktioniert sowohl der alert() als auch der Druckdialog. :allright:
Code:
CompilerIf #PB_Compiler_Version > 540
    ImportC "-lwebkitgtk-3.0"
CompilerElse
    ImportC "-lwebkitgtk-1.0"
CompilerEndIf   
    webkit_web_settings_new()
    webkit_web_view_set_settings(*WebkitWebView, *WebkitSettings)
EndImport
 
Procedure EnableJSforWebGadget(WebgadgetID.i)
    ; Enable JavaScript support in GTK3 WebGadgets
    Protected WebkitSettings.i
    ; ----- Get Webkit's default setting (with scripting languages enabled by default)
    WebkitSettings = webkit_web_settings_new()
    ; ----- Store Webkit's default settings in WebGadget
    webkit_web_view_set_settings(GadgetID(WebgadgetID.i), WebkitSettings)
EndProcedure

html.s = ""
html + "<!DOCTYPE html>" + #CRLF$
html + "<html>" + #CRLF$
html + "   <head>" + #CRLF$
html + ~"      <script type=\"text/javascript\">" + #CRLF$
html + ~"         //alert(\"js\");" + #CRLF$
html + "         window.print();" + #CRLF$
html + "      </script>" + #CRLF$
html + "   </head>" + #CRLF$
html + "   " + #CRLF$
html + "   <body>" + #CRLF$
html + "      <h1>xxxxxxxxxx</h1>" + #CRLF$
html + "   </body>" + #CRLF$
html + "</html>" + #CRLF$

filename.s = GetTemporaryDirectory() + "webGadgetTest.html"
fileproto.s = "file:///" + filename
Debug "filename: " + filename
Debug "fileproto: " + fileproto

file = CreateFile(#PB_Any, filename)
Debug "CreateFile: " + file
If file
  WriteString(file, html, #PB_UTF8)
  CloseFile(file)
Else
  MessageRequester("error","can't write to file '" + outfile + "'")
EndIf

OpenWindow(0,50,50,800,600,"WebPrintTest")
WebGadget(1,0,0,800,600,fileproto)
EnableJSforWebGadget(1)
SetGadgetText(1, fileproto)
;EnableJSforWebGadget(1)
Repeat
  Event = WindowEvent()
Until Event = #PB_Event_CloseWindow

del = DeleteFile(filename)
Debug "DeleteFile: " + del

_________________
my pb stuff..
Bild..jedenfalls war das mal so.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Webgadget und window.print
BeitragVerfasst: 12.01.2018 15:01 
Offline
Benutzeravatar

Registriert: 08.03.2013 14:27
Wohnort: ERB
Klasse vielen Dank ^^

_________________
PBExpress
Lightweight PureBasic FastCGI Framework

Github: https://github.com/reVerBxTc/PBExpress
Wiki: https://github.com/reVerBxTc/PBExpress/wiki


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Webgadget und window.print
BeitragVerfasst: 12.01.2018 17:18 
Offline
Benutzeravatar

Registriert: 25.01.2005 12:19
TroaX hat geschrieben:
Musste ja auch feststellen, das die meisten Möglichkeiten mit dem Webgadget auch nur unter Windows funktionieren (Navigation-Callback, Kontext-Menü blockieren usw.).

Ich habe bereits 2013 im englischen Forum unter Feature Requests and Wishlists den Vorschlag gemacht, den Navigation-Callback auch unter Linux und MacOS zu implementieren und dort auch gleich die Lösung für Linux und MacOS gezeigt. Technisch ist es mit WebKit kein Problem, alle bisher nur in Windows implementierten Funktionen auch für Linux und MacOS nachzurüsten, aber die Entwickler haben sich bisher leider nie die Mühe gemacht, dies auch mit WebKit zu implementieren, noch nicht einmal, wenn ich dies - wie in diesem und einigen anderen Fällen - bereits demonstriert hatte und ihnen damit den größten Teil der Arbeit (das Zusammensuchen der API-Funktionen und den Funktionstest als Proof of Concept) abgenommen habe.

Hier hatte ich 2015 schon einmal zusammengefasst, welche in Windows vorhandenen WebGadget-Features in Linux und MacOS fehlen und wie man in Linux und MacOS HTML-Code ins WebGadget lädt und einen Klick auf einen HTML-Button erkennt.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Webgadget und window.print
BeitragVerfasst: 12.01.2018 23:13 
Offline
Benutzeravatar

Registriert: 08.03.2013 14:27
Wohnort: ERB
Shardik hat geschrieben:
Hier hatte ich 2015 schon einmal zusammengefasst, welche in Windows vorhandenen WebGadget-Features in Linux und MacOS fehlen und wie man in Linux und MacOS HTML-Code ins WebGadget lädt und einen Klick auf einen HTML-Button erkennt.

Es geht nicht darum, das klicken eines Buttons auszuwerten. Es geht darum, die Submit-Frequenz an das Gadget zu schicken, damit es ein Formular abschickt. Dadurch kann es die Daten an den Silent-Server (oder Schattenserver) senden und die Daten an Purebasic weitergeben. Das Navigation-Callback will ich nutzen, damit das Gadget immer im Kontext dieses Schattenservers bleibt. Der Schattenserver selbst soll das ganze herumgeplänkel mit HTML als Datei speichern und über Gadget aufrufen aushebeln und kann gleichzeitig größere Textmengen aus dem Gadget entgegennehmen (was ich früher mit dem Navigation-Callback, einem GET-Formular und den URL-Prozeduren gelöst habe, aber nur eine relativ kleine Datenmenge verarbeiten konnte). Man könnte es auch realisieren, in dem man einen HTML-Button nutzt. Aber dann müsste der komplette Dialog in selbigen sein. Eigentlich wollte ich das Gadget als Host für TinyMCE nutzen und Richtext mit allem, was möglich ist (Tabellen, Bildimport usw.), realisieren. So könnte man alle anderen Eingaben in nativen Gadgets machen und nur der Richtext kommt aus dem Wegbadget.

Vielleicht ist es so besser erklärt ;)

_________________
PBExpress
Lightweight PureBasic FastCGI Framework

Github: https://github.com/reVerBxTc/PBExpress
Wiki: https://github.com/reVerBxTc/PBExpress/wiki


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Webgadget und window.print
BeitragVerfasst: 13.01.2018 21:22 
Offline
Benutzeravatar

Registriert: 08.03.2013 14:27
Wohnort: ERB
Soo auch das letzte Problem ist gelöst. Ich mache das zwar über Javascript. Aber trotzdem kann man es triggern, in dem man über das Javascript den Wechsel des Anchor-Hashes abfängt. Diesen kann man sich direkt auch ausgeben lassen oder auswerten. Wenn der Hash stimmt, dann wird das Formular mit Javascript einfach abgesendet, der Schattenserver nimmt die Daten an und gibt sie an PB weiter.

PB:
Code:
OpenWindow(0,100,100,800,650,"TEST")
WebGadget(1,0,0,800,600,"file://D:/test.html")
ButtonGadget(2,5,605,150,40,"Klick")

Repeat
  Event = WindowEvent()
  Button = EventGadget()
 
  If Button = 2
    SetGadgetText(1,"file://D:/test.html#test")
  EndIf
 
Until Event = #PB_Event_CloseWindow


test.html:
Code:
<!DOCTYPE html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
  <title>Beispiel: beforeunload Event</title>
</head>
<body>
  <h1>Beispiel: beforeunload Event</h1>
  <main>
    <p>Verlassen Sie die Seite, damit der beforeunload-Event-Handler ausgelöst wird.</p>
  </main>
<script async>
  document.addEventListener('DOMContentLoaded', function () {
    window.addEventListener('hashchange', function() {
      alert(location.hash);
    },false);
  });
</script>
</body>
</html>


Damit sollte das, was ich vorhabe, problemlos funlktionieren ^^

_________________
PBExpress
Lightweight PureBasic FastCGI Framework

Github: https://github.com/reVerBxTc/PBExpress
Wiki: https://github.com/reVerBxTc/PBExpress/wiki


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 19 Beiträge ]  Gehe zu Seite Vorherige  1, 2

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye