From 1f5f7996527a2c6d8af4ba211554079b62ea49f9 Mon Sep 17 00:00:00 2001 From: Sonny Piers Date: Sun, 6 Aug 2023 23:51:26 +0200 Subject: [PATCH] Improve Vala previewer --- src/Previewer/previewer.vala | 75 +++++++++++++---------------------- src/Previewer/previewer.xml | 3 -- src/langs/vala/Compiler.js | 11 +---- src/langs/vala/workbench.vala | 8 ++-- 4 files changed, 32 insertions(+), 65 deletions(-) diff --git a/src/Previewer/previewer.vala b/src/Previewer/previewer.vala index b5ae8a9a2..6e54adf3c 100644 --- a/src/Previewer/previewer.vala +++ b/src/Previewer/previewer.vala @@ -122,68 +122,42 @@ namespace Workbench { Gtk.StyleContext.add_provider_for_display (Gdk.Display.get_default (), this.css , Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION); } - // filename to loadable module or empty string ("") to just run it again - // also builder_symbol can be empty. Then the builder object is not handed over to the module - public void run (string filename, string run_symbol, string builder_symbol, string window_symbol, string uri) { - void* function; - - if (filename == "") { - if (this.module == null) { - stderr.printf ("No Module specified yet.\n"); - return; - } - } else { - if (!Module.supported ()) { - stderr.printf ("This system does not support loadable modules.\n"); - return; - } + public void run (string filename, string uri) { + if (this.module != null) { + this.module.close (); + } - if (this.module != null) - this.module.close (); - this.module = Module.open (filename, ModuleFlags.LAZY); - if (this.module == null) { - stderr.printf ("Module loading failed.\n"); - return; - } + this.module = Module.open (filename, ModuleFlags.LAZY); + if (this.module == null) { + stderr.printf ("Module loading failed.\n"); + return; } + void* function; + this.module.symbol ("set_base_uri", out function); var set_base_uri = (BaseUriFunction) function; set_base_uri (uri); - if (builder_symbol != "") { - if (this.builder == null) { - stderr.printf ("No UI definition loaded yet.\n"); - return; - } - - this.module.symbol (builder_symbol, out function); - if (function == null) { - stderr.printf (@"Module does not contain symbol '$builder_symbol'.\n"); - return; - } - - var set_builder = (BuilderFunction) function; + this.module.symbol ("set_builder", out function); + var set_builder = (BuilderFunction) function; + if (this.builder != null) { set_builder (this.builder); + } - this.module.symbol (window_symbol, out function); - if (function == null) { - stderr.printf (@"Module does not contain symbol '$window_symbol'.\n"); - return; - } - - var set_window = (WindowFunction) function; + this.module.symbol ("set_window", out function); + var set_window = (WindowFunction) function; + if (this.window != null) { set_window (this.window); } - this.module.symbol (run_symbol, out function); + this.module.symbol ("main", out function); if (function == null) { - stderr.printf (@"Function '$run_symbol' not found.\n"); + stderr.printf (@"Function 'main' not found.\n"); return; } - - var run = (RunFunction) function; - run (); + var main_function = (MainFunction) function; + main_function (); } public void close_window () { @@ -211,7 +185,7 @@ namespace Workbench { public signal void css_parser_error (string message, int start_line, int start_char, int end_line, int end_char); [CCode (has_target=false)] - private delegate void RunFunction (); + private delegate void MainFunction (); [CCode (has_target=false)] private delegate void BuilderFunction (Gtk.Builder builder); @@ -231,6 +205,11 @@ namespace Workbench { } void main (string[] args) { + if (!Module.supported ()) { + stderr.printf ("This system does not support loadable modules.\n"); + Process.exit (1); + } + var loop = new MainLoop(); Adw.init(); diff --git a/src/Previewer/previewer.xml b/src/Previewer/previewer.xml index 40488d955..a5cdfedd1 100644 --- a/src/Previewer/previewer.xml +++ b/src/Previewer/previewer.xml @@ -10,9 +10,6 @@ - - - diff --git a/src/langs/vala/Compiler.js b/src/langs/vala/Compiler.js index dbe723cc8..9e7e4a4c9 100644 --- a/src/langs/vala/Compiler.js +++ b/src/langs/vala/Compiler.js @@ -1,5 +1,4 @@ import Gio from "gi://Gio"; -import GLib from "gi://GLib"; import dbus_previewer from "../../Previewer/DBusPreviewer.js"; import { decode } from "../../util.js"; @@ -21,8 +20,6 @@ export default function Compiler({ session }) { return; } - await module_file.delete_async(GLib.PRIORITY_DEFAULT, null).catch(() => {}); - const valac_launcher = new Gio.SubprocessLauncher(); valac_launcher.set_cwd(file.get_path()); const valac = valac_launcher.spawnv([ @@ -52,13 +49,7 @@ export default function Compiler({ session }) { async function run() { try { const proxy = await dbus_previewer.getProxy(); - await proxy.RunAsync( - module_file.get_path(), - "main", - "set_builder", - "set_window", - session.file.get_uri(), - ); + await proxy.RunAsync(module_file.get_path(), session.file.get_uri()); } catch (err) { logError(err); return false; diff --git a/src/langs/vala/workbench.vala b/src/langs/vala/workbench.vala index 51d88af97..dfb3a301b 100644 --- a/src/langs/vala/workbench.vala +++ b/src/langs/vala/workbench.vala @@ -7,12 +7,12 @@ namespace workbench { } } -public void set_builder (Gtk.Builder b) { - workbench.builder = b; +public void set_builder (Gtk.Builder builder) { + workbench.builder = builder; } -public void set_window (Gtk.Window w) { - workbench.window = w; +public void set_window (Gtk.Window window) { + workbench.window = window; } public void set_base_uri (string uri) {