Skip to content

Commit

Permalink
Use gjspack (workbenchdev#160)
Browse files Browse the repository at this point in the history
  • Loading branch information
sonnyp authored Oct 1, 2022
1 parent 5989dde commit b39633c
Show file tree
Hide file tree
Showing 28 changed files with 197 additions and 163 deletions.
2 changes: 1 addition & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[submodule "troll"]
path = src/troll
path = troll
url = https://github.com/sonnyp/troll.git
[submodule "src/blueprint-compiler"]
path = blueprint-compiler
Expand Down
14 changes: 4 additions & 10 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,12 @@ lint:
./node_modules/.bin/eslint --cache --max-warnings=0 src/

test: lint
./src/troll/tst/bin.js test/*.test.js
./troll/tst/bin.js test/*.test.js
# https://github.com/ximion/appstream/issues/398#issuecomment-1129454985
# flatpak run org.freedesktop.appstream.cli validate --override=release-time-missing=info --no-net data/re.sonny.Workbench.metainfo.xml
desktop-file-validate --no-hints data/re.sonny.Workbench.desktop
# flatpak run org.freedesktop.appstream.cli validate --override=release-time-missing=info --no-net data/app.metainfo.xml
# desktop-file-validate --no-hints data/app.desktop
# https://discourse.gnome.org/t/gtk-builder-tool-requires-and-libraries/9222
# gtk-builder-tool validate src/*.ui
flatpak-builder --show-manifest re.sonny.Workbench.json > /dev/null
flatpak-builder --show-manifest re.sonny.Workbench.Devel.json > /dev/null
find po/ -type f -name "*po" -print0 | xargs -0 -n1 msgfmt -o /dev/null --check

pot:
# https://github.com/mesonbuild/meson/blob/cc8e67ce59c3b0274bc9f10cb287d5254aa74166/mesonbuild/modules/i18n.py#L97
@find data src -path src/lib -prune -o -type f \( -iname \*.blp -o -iname \*.js -o -iname \*.xml -o -iname \*.desktop \) -print0 | xargs -0 xgettext --from-code=UTF-8 --no-wrap --add-comments --sort-by-file --package-name=re.sonny.Workbench --copyright-holder="Sonny Piers" --keyword="_" --keyword="C_" --output po/re.sonny.Workbench.pot 2>/dev/null
@echo "Pot file updated"
# https://gitlab.com/freedesktop-sdk/freedesktop-sdk/-/issues/1427
# flatpak run --filesystem=$PWD --devel --command="sh" org.gnome.Sdk//42 -c 'make pot'
7 changes: 7 additions & 0 deletions data/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,13 @@ appstream_file = i18n.merge_file(
install_dir: join_paths(get_option('datadir'), 'metainfo')
)

appstream_cli = find_program('appstreamcli', required: false)
if appstream_cli.found()
test('Validate metainfo file', appstream_util,
args: ['validate', '--override=release-time-missing=info', '--no-net', appstream_file]
)
endif

configure_file(
input: 'app.service',
output: '@[email protected]'.format(app_id),
Expand Down
2 changes: 1 addition & 1 deletion meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ if get_option('profile') == 'development'
if vcs_tag == ''
version_suffix = '-devel'
else
version_suffix = '-@0@'.format (vcs_tag)
version_suffix = '-@0@'.format(vcs_tag)
endif
else
app_id = 're.sonny.Workbench'
Expand Down
41 changes: 41 additions & 0 deletions po/POTFILES
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
data/app.desktop
data/app.gschema.xml
data/app.metainfo.xml

src/log_handler.js
src/lib/ltx.js
src/xml.js
src/lsp/LSP.js
src/util.js
troll/src/util.js
src/Document.js
src/lsp/LSPClient.js
src/WorkbenchHoverProvider.js
src/PanelUI.js
src/PanelCode.js
src/PanelStyle.js
src/TermConsole.js
src/Devtools.js
src/lib/prettier.js
src/lib/prettier-babel.js
src/lib/prettier-postcss.js
src/Library/Library.js
src/lib/postcss.js
src/Previewer/Internal.js
src/Previewer/DBusPreviewer.js
src/Previewer/External.js
src/overrides.js
src/Previewer/utils.js
src/Previewer/Previewer.js
src/Compiler.js
src/ThemeSelector.js
src/window.js
src/about.js
src/shortcutsWindow.js
src/actions.js
src/application.js
src/main.js
src/window.blp
src/ThemeSelector.blp
src/shortcutsWindow.blp
src/Library/Library.blp
2 changes: 1 addition & 1 deletion re.sonny.Workbench.json
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,8 @@
},
{
"name": "blueprint-compiler",
"buildsystem": "meson",
"builddir": true,
"buildsystem": "meson",
"sources": [
{
"type": "git",
Expand Down
4 changes: 2 additions & 2 deletions src/Compiler.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import Gio from "gi://Gio";
import GLib from "gi://GLib";
import DBusPreviewer from "./Previewer/DBusPreviewer.js";
import { promiseTask } from "./troll/src/util.js";
import { promiseTask } from "../troll/src/util.js";

const proxy = DBusPreviewer();

Expand All @@ -13,7 +13,7 @@ export default function Compiler(data_dir) {
GLib.build_filenamev([data_dir, "libworkbenchcode.so"])
);
const api_file = Gio.File.new_for_path(
GLib.build_filenamev(["/app/share", "workbench-api.vala"])
GLib.build_filenamev([pkg.pkgdatadir, "workbench-api.vala"])
);

async function compile(code) {
Expand Down
9 changes: 4 additions & 5 deletions src/Document.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import Source from "gi://GtkSource?version=5";
import Gio from "gi://Gio";
import GLib from "gi://GLib";
import { replaceBufferText } from "./util.js";
import { promiseTask } from "./troll/src/util.js";
import { promiseTask } from "../troll/src/util.js";

export default function Document({
data_dir,
Expand Down Expand Up @@ -99,7 +99,6 @@ async function loadSourceBuffer({ file, buffer }) {
}

const language_manager = new Source.LanguageManager();
language_manager.set_search_path([
...language_manager.get_search_path(),
"resource:///re/sonny/Workbench/language-specs",
]);
language_manager.append_search_path(
"resource:///re/sonny/Workbench/language-specs"
);
4 changes: 3 additions & 1 deletion src/Library/Library.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,16 @@ import Gtk from "gi://Gtk";

import { decode } from "../util.js";

import resource from "./Library.blp";

const prefix = "/re/sonny/Workbench/Library";

export default function Library({
openDemo,
window: appliation_window,
application,
}) {
const builder = Gtk.Builder.new_from_resource(`${prefix}/Library.ui`);
const builder = Gtk.Builder.new_from_resource(resource);
const window = builder.get_object("library");
window.set_transient_for(appliation_window);

Expand Down
2 changes: 1 addition & 1 deletion src/PanelUI.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import {
getItersAtRange,
} from "./util.js";

import { getPid, once } from "./troll/src/util.js";
import { getPid, once } from "../troll/src/util.js";
import WorkbenchHoverProvider from "./WorkbenchHoverProvider.js";

const { addSignalMethods } = imports.signals;
Expand Down
9 changes: 8 additions & 1 deletion src/Previewer/Internal.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import Xdp from "gi://Xdp";
import XdpGtk from "gi://XdpGtk4";
import GObject from "gi://GObject";
import Adw from "gi://Adw";
import Gio from "gi://Gio";

import { portal } from "../util.js";

Expand Down Expand Up @@ -281,7 +282,13 @@ function screenshot({ widget, window, data_dir }) {
Xdp.OpenUriFlags.NONE, // flags
null, // cancellable
(self, result) => {
portal.open_uri_finish(result);
try {
portal.open_uri_finish(result);
} catch (err) {
if (err.code !== Gio.IOErrorEnum.CANCELLED) {
logError(err);
}
}
}
);
}
Expand Down
2 changes: 1 addition & 1 deletion src/ThemeSelector.blp
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ using Gtk 4.0;

// Adapted to Blueprint from https://gitlab.gnome.org/GNOME/gnome-text-editor/-/blob/cd6e111e3142a80f509684e65c104c8b3a097761/src/editor-theme-selector.ui

template ThemeSelector1 : Widget {
template ThemeSelector : Widget {
hexpand: true;

Box box {
Expand Down
4 changes: 3 additions & 1 deletion src/ThemeSelector.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ import GObject from "gi://GObject";
import Gtk from "gi://Gtk";
import Adw from "gi://Adw";

import Template from "./ThemeSelector.blp" assert { type: "uri" };

// Adapted to JavaScript from https://gitlab.gnome.org/GNOME/gnome-text-editor/-/blob/cd6e111e3142a80f509684e65c104c8b3a097761/src/editor-theme-selector.c

const style_manager = Adw.StyleManager.get_default();
Expand Down Expand Up @@ -37,7 +39,7 @@ class ThemeSelector extends Gtk.Widget {
export default GObject.registerClass(
{
GTypeName: "ThemeSelector",
Template: "resource:///re/sonny/Workbench/ThemeSelector.ui",
Template,
CssName: "themeselector",
InternalChildren: ["follow"],
Properties: {
Expand Down
2 changes: 1 addition & 1 deletion src/about.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {
getGIRepositoryVersion,
getGjsVersion,
getGLibVersion,
} from "./troll/src/util.js";
} from "../troll/src/util.js";
import { getFlatpakInfo } from "./util.js";

export default function About({ application }) {
Expand Down
44 changes: 2 additions & 42 deletions src/app.gresource.xml
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
<?xml version="1.0" encoding="UTF-8" ?>
<gresources>
<gresource prefix="/re/sonny/Workbench">
<file>window.ui</file>
<file>ThemeSelector.ui</file>
<file>shortcutsWindow.ui</file>
<file>style.css</file>
<file>Library/Library.ui</file>
<file>language-specs/blueprint.lang</file>
<file>icon-development-kit.json</file>
<file>Library/demos/Notifications/main.js</file>
<file>Library/demos/Notifications/main.json</file>
<file>Library/demos/Notifications/main.blp</file>
Expand Down Expand Up @@ -41,44 +39,6 @@
<file>Library/demos/Custom widget/main.ui</file>
<file>Library/demos/Custom widget/main.js</file>
<file>Library/demos/Custom widget/main.json</file>
<file>language-specs/blueprint.lang</file>
<file>icon-development-kit.json</file>
</gresource>
<gresource prefix="/re/sonny/Workbench/js">
<file>lib/ltx.js</file>
<file>lib/postcss.js</file>
<file>lib/prettier-babel.js</file>
<file>lib/prettier-postcss.js</file>
<file>lib/prettier-xml.js</file>
<file>lib/prettier.js</file>
<file>lsp/LSPClient.js</file>
<file>lsp/LSP.js</file>
<file>troll/src/util.js</file>
<file>about.js</file>
<file>actions.js</file>
<file>application.js</file>
<file>TermConsole.js</file>
<file>Devtools.js</file>
<file>Document.js</file>
<file>log_handler.js</file>
<file>PanelUI.js</file>
<file>PanelCode.js</file>
<file>Library/Library.js</file>
<file>PanelStyle.js</file>
<file>Previewer/Previewer.js</file>
<file>Previewer/Internal.js</file>
<file>Previewer/External.js</file>
<file>Previewer/DBusPreviewer.js</file>
<file>Previewer/utils.js</file>
<file>main.js</file>
<file>overrides.js</file>
<file>shortcutsWindow.js</file>
<file>util.js</file>
<file>window.js</file>
<file>Compiler.js</file>
<file>ThemeSelector.js</file>
<file>WorkbenchHoverProvider.js</file>
<file>xml.js</file>
</gresource>
<gresource prefix="/re/sonny/Workbench/icons/scalable/actions">
<file
Expand Down
80 changes: 38 additions & 42 deletions src/application.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,53 +4,49 @@ import Adw from "gi://Adw";
import Window from "./window.js";
import Actions from "./actions.js";
import { settings } from "./util.js";
import { overrides } from "./overrides.js";

const application = new Adw.Application({
application_id: pkg.name,
flags: Gio.ApplicationFlags.HANDLES_OPEN,
// Defaults to /re/sonny/Workbench/Devel
// if pkg.name is re.sonny.Workbench.Devel
resource_base_path: "/re/sonny/Workbench",
});

let window;
application.connect("open", (self, files, hint) => {
if (!window) return;

for (const file of files) {
window.openFile(file).catch(logError);
}
});

application.connect("activate", () => {
if (!window) {
window = Window({
application,
});
}
window.window.present();
});

application.set_option_context_description("<https://workbench.sonny.re>");
application.set_option_context_parameter_string("[files…]");
// TODO: Add examples
application.set_option_context_summary("");

Actions({ application });

overrides();

const style_manager = Adw.StyleManager.get_default();

export default function Application() {
const application = new Adw.Application({
application_id: pkg.name,
flags: Gio.ApplicationFlags.HANDLES_OPEN,
// Defaults to /re/sonny/Workbench/Devel
// if pkg.name is re.sonny.Workbench.Devel
resource_base_path: "/re/sonny/Workbench",
});

let window;

application.connect("open", (self, files, hint) => {
if (!window) return;

for (const file of files) {
window.openFile(file).catch(logError);
}
});

application.connect("activate", () => {
if (!window) {
window = Window({
application,
});
}

window.window.present();
});

application.set_option_context_description("<https://workbench.sonny.re>");
application.set_option_context_parameter_string("[files…]");
// TODO: Add examples
// application.set_option_context_summary("");

Actions({ application });

import("./overrides.js").catch(logError);

return application;
}

function setColorScheme() {
const color_scheme = settings.get_int("color-scheme");
style_manager.set_color_scheme(color_scheme);
}
setColorScheme();
settings.connect("changed::color-scheme", setColorScheme);

export default application;
2 changes: 1 addition & 1 deletion src/lsp/LSPClient.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import Gio from "gi://Gio";

import { LSPError } from "./LSP.js";

import { promiseTask, once } from "../troll/src/util.js";
import { promiseTask, once } from "../../troll/src/util.js";

const { addSignalMethods } = imports.signals;

Expand Down
3 changes: 1 addition & 2 deletions src/main.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
import "./log_handler.js";
import Application from "./application.js";
import application from "./application.js";

pkg.initGettext();

export function main(argv) {
const application = Application();
return application.run(argv);
}
Loading

0 comments on commit b39633c

Please sign in to comment.