Linux & WebGadget & Monaco Editor

In dieser Linux-Ecke dürfen nur Themen rund um Linux geschrieben werden.
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
Kiffi
Beiträge: 10620
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Linux & WebGadget & Monaco Editor

Beitrag von Kiffi »

ich werd hier noch bekloppt. :freak:

Ich möchte gerne den Monaco-Editor im WebGadget laufen lassen (simpler Beispielcode s.u.). Unter Windows mit dem Sorgenkind IE gibt es witzigerweise überhaupt keine Probleme damit.

Naiv, wie ich bin, dachte ich, dass es dann unter Linux (mit WebKit) erst recht funktionieren würde. Aber Pustekuchen! Da funktioniert so gut wie gar nichts. Und im PB-Log-Fenster knattern nur so die Warnungen und Fehlermeldungen durch. Wenn man Glück hat, gibt es noch einen Invalid Memory Access obendrauf.

Wer wissen möchte, wie Monaco korrekt funktioniert, ruft einfach https://microsoft.github.io/monaco-edit ... round.html mit einem vernünftigen Browser auf und tippt beispielsweise console. in eines der Textboxen ein. Da erscheint dann ein schickes Intellisense-Menü.

Bild

Code: Alles auswählen

CompilerIf #PB_Compiler_OS = #PB_OS_Linux
  
  ImportC "-lwebkitgtk-3.0"
    webkit_web_settings_new()
    webkit_web_view_set_settings(*WebkitWebView, *WebkitSettings)
  EndImport
  
  Procedure EnableJSforWebGadget(WebgadgetID.i)
    Protected WebkitSettings.i
    WebkitSettings = webkit_web_settings_new()
    webkit_web_view_set_settings(GadgetID(WebgadgetID.i), WebkitSettings)
  EndProcedure
  
CompilerEndIf

If OpenWindow(0, 0, 0, 1000, 800, "WebGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  WebGadget(0, 0, 0, 1000, 800, "")
  CompilerIf #PB_Compiler_OS = #PB_OS_Linux
    EnableJSforWebGadget(0)
  CompilerEndIf
  SetGadgetText(0, "https://microsoft.github.io/monaco-editor/playground.html")
  Repeat
  Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Gibt es da vielleicht irgendwelche Schrauben, an denen man noch drehen könnte, damit Monaco auch unter Linux funktioniert?

Danke im Voraus & Grüße ... Peter (Linux Mint 18.3 Cinnamon 64-bit)
Hygge
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Linux & WebGadget & Monaco Editor

Beitrag von ccode_new »

Hallo Kiffi,

also so läuft es bei mir stabil ohne Absturz:

Code: Alles auswählen

CompilerIf #PB_Compiler_OS = #PB_OS_Linux
  
  ImportC ""
    g_object_set(*object, *name, *para1, *para2)
  EndImport
  
  ImportC "libwebkit2gtk-4.0.so.37.24.9";"-lwebkitgtk-3.0"
    webkit_web_settings_new()
    webkit_web_view_set_settings(*WebkitWebView, *WebkitSettings)
  EndImport
  
  Procedure EnableJSforWebGadget(WebgadgetID.i)
    Protected WebkitSettings.i
    WebkitSettings = webkit_web_settings_new()
    webkit_web_view_set_settings(GadgetID(WebgadgetID.i), WebkitSettings)
    
    g_object_set(WebkitSettings, "enable-developer-extras", #True, #Null)
    g_object_set(WebkitSettings, "enable-java-applet", #True, #Null)
    g_object_set(WebkitSettings, "enable-plugins", #True, #Null)
    g_object_set(WebkitSettings, "enable-scripts", #True, #Null)
    g_object_set(WebkitSettings, "enable-file-access-from-file-uris", #True, #Null)
    g_object_set(WebkitSettings, "enable-private-browsing", #True, #Null)
    g_object_set(WebkitSettings, "enable-spell-checking", #True, #Null)
    g_object_set(WebkitSettings, "enable-universal-access-from-file-uris", #True, #Null)
    g_object_set(WebkitSettings, "enable-dns-prefetching", #True, #Null)
    g_object_set(WebkitSettings, "enable-webaudio", #True, #Null)
    g_object_set(WebkitSettings, "enable-webgl", #True, #Null)
    g_object_set(WebkitSettings, "enable-fullscreen", #True, #Null)
    g_object_set(WebkitSettings, "enable-xss-auditor", #True, #Null)
    g_object_set(WebkitSettings, "javascript-can-access-clipboard", #True, #Null)
    g_object_set(WebkitSettings, "javascript-can-open-windows-automatically", #True, #Null)
    webkit_web_view_set_settings(GadgetID(0), WebkitSettings)
  EndProcedure
  
CompilerEndIf

If OpenWindow(0, 0, 0, 1000, 800, "WebGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  WebGadget(0, 0, 0, 1000, 800, "")
  CompilerIf #PB_Compiler_OS = #PB_OS_Linux
    EnableJSforWebGadget(0)
  CompilerEndIf
  SetGadgetText(0, "https://microsoft.github.io/monaco-editor/playground.html")
  Repeat
  Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Aber sehr viel Funktionalität existiert nicht.
Da erscheint dann ein schickes Intellisense-Menü.
Leider nein!

Der Cursor wird auch immer nur an den Anfang gesetzt
,... und weitere unschöne Kleinigkeiten

.....
Leider steht ja auch auf der "Microsoft"-Seite folgendes:
About

The Monaco Editor is the code editor that powers VS Code. A good page describing the code editor's features is here.

It is licensed under the MIT License and supports IE 11, Edge, Chrome, Firefox, Safari and Opera.

The Monaco editor is not supported in mobile browsers or mobile web frameworks.

Find more information at the Monaco Editor repo.
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Benutzeravatar
Kiffi
Beiträge: 10620
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Linux & WebGadget & Monaco Editor

Beitrag von Kiffi »

@ccode_new: Erstmal :allright:, dass Du Dich der Sache angenommen hast!

Leider stürzt Dein Code beim mir auch ab. Ich muss nur mit der Maus über 'language' fahren, dann kracht es.
ccode_new hat geschrieben:Leider steht ja auch auf der "Microsoft"-Seite folgendes:
About

The Monaco Editor is the code editor that powers VS Code. A good page describing the code editor's features is here.

It is licensed under the MIT License and supports IE 11, Edge, Chrome, Firefox, Safari and Opera.

The Monaco editor is not supported in mobile browsers or mobile web frameworks.

Find more information at the Monaco Editor repo.
ich könnte ja noch verstehen, dass es nicht klappt, wenn ich mit meinem Handy die Seite ansurfe. Ich sitze allerdings an einem Desktop-Linux.

Nochmals Danke & Grüße ... Peter
Hygge
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Re: Linux & WebGadget & Monaco Editor

Beitrag von edel »

Wenn man das Webkit Widget selber erstellt funktioniert es

Code: Alles auswählen

ImportC "/usr/lib/x86_64-linux-gnu/libwebkit2gtk-4.0.so"
  webkit_web_view_new()
  webkit_web_view_load_uri(webView, url.p-ascii)
EndImport  

EnableExplicit

Define window  = OpenWindow(0, 0, 0, 1000, 800, "WebGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
Define webView = webkit_web_view_new()

Define parent  = g_list_nth_data_(gtk_container_get_children_(WindowID(0)), 0) 
parent = g_list_nth_data_(gtk_container_get_children_(parent), 0) 

webkit_web_view_load_uri(webView, "https://microsoft.github.io/monaco-editor/playground.html");

gtk_widget_set_size_request_(webView, 1000, 800)

gtk_container_add_(parent, webView)
gtk_widget_grab_focus_(webView)
gtk_widget_show_all_(Window)

Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
Benutzeravatar
Kiffi
Beiträge: 10620
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Linux & WebGadget & Monaco Editor

Beitrag von Kiffi »

:allright:

Bild

Dafür gebe ich Dir ein SchniBrö aus! :D
Hygge
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Linux & WebGadget & Monaco Editor

Beitrag von ccode_new »

Hallo edel!

Sehr komisch!

Bei mir stürzt dein Code ständig ab.

Es ist dabei egal welche Lib (ob über deinen Pfad /direkt /etc.) angebe. (Die Lib findet Purebasic ja auch.)

Die einzige Meldung ist:

[WARNING] webtest.pb (Zeile: 18)
[WARNING] Gtk (CRITICAL): gtk_scrolled_window_add: assertion 'child_widget == NULL' failed
Die Programmausführung ist abgeschlossen.

Weiter passiert bei mir da nichts.

System: Linux Mint 18.3 Cinnamon
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Re: Linux & WebGadget & Monaco Editor

Beitrag von edel »

Ist Parent bei dir leer? Hast du vielleicht irgendwelche Shell plugins laufen (ist das überhaupt noch gnome?)?
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Linux & WebGadget & Monaco Editor

Beitrag von ccode_new »

edel hat geschrieben:Ist Parent bei dir leer? Hast du vielleicht irgendwelche Shell plugins laufen (ist das überhaupt noch gnome?)?
Nichts von alledem.

Parent ist nicht leer!

Was für "shell plugins" ?

ist das überhaupt noch gnome?

Jein!
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Re: Linux & WebGadget & Monaco Editor

Beitrag von edel »

Bau einfach mal ein weiteres

Code: Alles auswählen

parent = g_list_nth_data_(gtk_container_get_children_(parent), 0) 
ein. Bis es null ist, dann das letzte loeschen.
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Linux & WebGadget & Monaco Editor

Beitrag von ccode_new »

:allright:

+1

Passt!

Bild
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Antworten