Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
2a34eec
Prepare for next release
teamcons Feb 25, 2026
d307017
Extend StatusCode and let it handle explanations
teamcons Feb 25, 2026
b6c3b69
refresh codestyle for dropdown model
teamcons Feb 25, 2026
623fd53
Display which item is already selected
teamcons Feb 26, 2026
7f28477
nicer checked element
teamcons Feb 26, 2026
e2ba44b
refine presentation and avoid double language
teamcons Feb 26, 2026
e24977b
sensitive clear button
teamcons Feb 26, 2026
028bc16
cancellable actions
teamcons Feb 26, 2026
e7e63f0
add undo to toasts
teamcons Feb 26, 2026
63487e0
introduce initial zooming support (very initial)
teamcons Feb 28, 2026
39de32c
Use a different approach for editing the UI and shit
teamcons Feb 28, 2026
eeb2233
undo draggable dd
teamcons Feb 28, 2026
4da5af2
More zoom for your zoom
teamcons Feb 28, 2026
1eea656
margins for the api level
teamcons Feb 28, 2026
5b174a2
Refine UI and fix zoom
teamcons Feb 28, 2026
a93c4e1
do not use a stack for the spinner/refresh combo
teamcons Feb 28, 2026
8fba77b
allow having a devel version
teamcons Mar 1, 2026
749bf6c
allow having a devel version
teamcons Mar 1, 2026
e4f26db
nicer looking warning color
teamcons Mar 1, 2026
415d204
Set more for devel
teamcons Mar 1, 2026
0cbf1d0
fix a slight mistake and add a devel manifest
teamcons Mar 2, 2026
4123457
Allow building a devel version aside from the standard one
teamcons Mar 2, 2026
c20ad25
oops i forgot this one
teamcons Mar 2, 2026
7696222
heads up in manifest
teamcons Mar 2, 2026
7857e2c
avoid losing gettext
teamcons Mar 2, 2026
369b027
correct another miss
teamcons Mar 2, 2026
a9f40b1
Include gschema for the windows build (oooops!)
teamcons Mar 2, 2026
0bfaddd
include app name
teamcons Mar 2, 2026
0feaf94
proper gettext
teamcons Mar 2, 2026
78d39fc
make sure we do not lose PO files in the devel
teamcons Mar 2, 2026
c222930
Refine dev builds and add a dev icon
teamcons Mar 3, 2026
12cf3b2
refine devel
teamcons Mar 3, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 37 additions & 2 deletions data/Application.css
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,11 @@
/*
Picked: #2c3944d9
Base from wpkelso: #33434eff

@define-color accent_color #33434eff;
*/

@define-color accent_color #33434e;


/* Used in the OrientationsBox for the preview icon */
.rotated * {
-gtk-icon-transform: rotate(90deg);
Expand All @@ -50,4 +51,38 @@ Base from wpkelso: #33434eff
/* Pretend the log textview is a console */
.console {
background-color: #002B36;
}

/* Used for labels in the popover */
.bold {
font-weight: bold;
}

/* Font zooms */
.s20 {font-size: 20%;}
.s40 {font-size: 40%;}
.s60 {font-size: 60%;}
.s80 {font-size: 80%;}
.s100 {font-size: 100%;}
.s120 {font-size: 120%;}
.s140 {font-size: 140%;}
.s160 {font-size: 160%;}
.s180 {font-size: 180%;}
.s200 {font-size: 200%;}
.s220 {font-size: 220%;}
.s240 {font-size: 240%;}
.s260 {font-size: 260%;}
.s280 {font-size: 280%;}
.s300 {font-size: 300%;}
.s320 {font-size: 320%;}
.s340 {font-size: 340%;}
.s360 {font-size: 360%;}
.s380 {font-size: 380%;}
.s400 {font-size: 400%;}

/* Devel builds get these. Libadwaita has that too, but we do not use it. */
window.devel {
border-style: solid;
border-width: 3px;
border-color: @warning_color;
}
354 changes: 354 additions & 0 deletions data/icons/dev.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@
Version=1.0
Type=Application

Name=Inscriptions
Name=@APP_NAME@
GenericName=Text translator
Comment=Translate text elegantly
Icon=io.github.elly_code.inscriptions
Exec=io.github.elly_code.inscriptions %U
Icon=@APP_ID@
Exec=@APP_ID@ %U

Categories=Office;Education;GTK;
Keywords=text;translate;translation;translator;deepl;NMT;lang;localize;l10n;i18n;localization;internationalization;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<schemalist>
<enum id="io.github.elly_code.inscriptions.formality">
<enum id="@APP_ID@.formality">
<value value='0' nick="more"/>
<value value='1' nick="prefer-more"/>
<value value='2' nick="default"/>
<value value='3' nick="prefer-less"/>
<value value='4' nick="less"/>
</enum>

<schema path="/io/github/elly_code/inscriptions/" id="io.github.elly_code.inscriptions">
<schema path="/io/github/elly_code/inscriptions/" id="@APP_ID@">
<key name="window-height" type="i">
<default>320</default>
<summary>Most recent window height</summary>
Expand Down Expand Up @@ -49,7 +49,7 @@
<summary>context for translations</summary>
<description>Passed as context parameter to the DeepL API</description>
</key>
<key enum="io.github.elly_code.inscriptions.formality" name="formality">
<key enum="@APP_ID@.formality" name="formality">
<default>'default'</default>
<summary>Level of formality</summary>
<description>For supported languages, how format the output should be</description>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop-application">
<id>io.github.elly_code.inscriptions</id>
<launchable type="desktop-id">io.github.elly_code.inscriptions.desktop</launchable>
<translation type="gettext">io.github.elly_code.inscriptions</translation>
<id>@APP_ID@</id>
<launchable type="desktop-id">@APP_ID@.desktop</launchable>
<translation type="gettext">@GETTEXT_PACKAGE@</translation>
<metadata_license>CC-BY-4.0</metadata_license>
<project_license>GPL-3.0-or-later</project_license>
<provides>
<binary>io.github.elly_code.inscriptions</binary>
</provides>

<name>Inscriptions</name>
<name>@APP_NAME@</name>
<summary>Translate text elegantly</summary>
<description>
<p>A fast, pretty, and ready translation app using DeepL free and paid API</p>
Expand Down Expand Up @@ -49,8 +49,8 @@
<url type="vcs-browser">https://github.com/elly-code/inscriptions</url>

<branding>
<color type="primary" scheme_preference="light">#95a3ab</color>
<color type="primary" scheme_preference="dark">#0e141f</color>
<color type="primary" scheme_preference="light">#3557082</color>
<color type="primary" scheme_preference="dark">#33434e</color>
</branding>

<keywords>
Expand Down Expand Up @@ -79,6 +79,16 @@
</recommends>

<releases>
<release version="1.0.1" date="2026-03-16" urgency="medium">
<description>
<p>Touchups and enhancements</p>
<ul>
<li>Minor design changes. Lets do refined shit.</li>
<li>Updated and extended screenshots</li>
<li>Some work into cleaner code</li>
</ul>
</description>
</release>
<release version="1.0.0" date="2026-02-16" urgency="medium">
<description>
<p>🚀 1.0.0 Initial release!</p>
Expand Down
107 changes: 83 additions & 24 deletions data/meson.build
Original file line number Diff line number Diff line change
@@ -1,45 +1,104 @@


gschema_conf = configuration_data()
gschema_conf.set('APP_ID', app_id)
gschema_file = configure_file(
input: 'inscriptions.gschema.xml.in',
output: '@0@.gschema.xml'.format(app_id),
configuration: gschema_conf,
)

install_data(
'inscriptions.gschema.xml',
gschema_file,
install_dir: get_option('datadir') / 'glib-2.0' / 'schemas',
rename: meson.project_name() + '.gschema.xml'
)

compile_schemas = find_program('glib-compile-schemas', required: false, disabler: true)
test('Validate schema file',
compile_schemas,
args: ['--strict', '--dry-run', meson.current_source_dir()],
)

# metainfo confuses windows, and icons are
if not windows_build

icon_sizes = ['16', '32', '48', '64', '128']
# Install the standard icons in standard build
if not get_option('development')

icon_sizes = ['16', '32', '48', '64', '128']

foreach i : icon_sizes
install_data(
'icons' / 'hicolor' / i + '.png',
install_dir: get_option('datadir') / 'icons' / 'hicolor' / i + 'x' + i / 'apps',
rename: app_id + '.png'
)
install_data(
'icons' / 'hicolor@2' / i + '@2.png',
install_dir: get_option('datadir') / 'icons' / 'hicolor' / i + 'x' + i + '@2' / 'apps',
rename: app_id + '.png'
)
endforeach

foreach i : icon_sizes
install_data(
'icons' / 'hicolor' / i + '.png',
install_dir: get_option('datadir') / 'icons' / 'hicolor' / i + 'x' + i / 'apps',
rename: meson.project_name() + '.png'
# Install the dev icon in development builds
else
install_data(
'icons' / 'dev.svg',
install_dir: get_option('datadir') / 'icons' / 'hicolor' / 'scalable' / 'apps',
rename: app_id + '.svg'
)
endif


# Inject some variables into the desktop file before merging in the translations
desktop_conf = configuration_data()
desktop_conf.set('APP_NAME', app_name)
desktop_conf.set('APP_ID', app_id)
desktop_file_in = configure_file(
input: 'inscriptions.desktop.in.in',
output: '@0@.desktop.in'.format(app_id),
configuration: desktop_conf,
)
install_data(
'icons' / 'hicolor@2' / i + '@2.png',
install_dir: get_option('datadir') / 'icons' / 'hicolor' / i + 'x' + i + '@2' / 'apps',
rename: meson.project_name() + '.png'

desktop_file = i18n.merge_file(
input: desktop_file_in,
output: '@0@.desktop'.format(app_id),
po_dir: meson.project_source_root() / 'po',
type: 'desktop',
install: true,
install_dir: get_option('datadir') / 'applications',
)
endforeach


# Inject some variables into the metainfo file before merging in the translations
appstream_conf = configuration_data()
appstream_conf.set('APP_ID', app_id)
appstream_conf.set('GETTEXT_PACKAGE', meson.project_name())
appstream_file_in = configure_file(
input: 'inscriptions.metainfo.xml.in.in',
output: '@0@.metainfo.xml.in'.format(app_id),
configuration: appstream_conf,
)

i18n.merge_file(
input: 'inscriptions.desktop.in',
output: meson.project_name() + '.desktop',
appstream_file = i18n.merge_file(
input: appstream_file_in,
output: '@0@.metainfo.xml'.format(app_id),
po_dir: meson.project_source_root() / 'po',
type: 'desktop',
install: true,
install_dir: get_option('datadir') / 'applications'
install_dir: get_option('datadir') / 'metainfo',
)

i18n.merge_file(
input: 'inscriptions.metainfo.xml.in',
output: meson.project_name() + '.metainfo.xml',
po_dir: meson.project_source_root() / 'po',
install: true,
install_dir: get_option('datadir') / 'metainfo'
# Test definitions
desktop_utils = find_program('desktop-file-validate', required: false)
if desktop_utils.found()
test('Validate desktop file', desktop_utils, args: [desktop_file])
endif

appstreamcli = find_program('appstreamcli', required: false, disabler: true)
test('Validate appstream file',
appstreamcli,
args: ['validate', '--no-net', '--explain', appstream_file],
)


endif
43 changes: 43 additions & 0 deletions io.github.elly_code.inscriptions.devel.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
#
# This is danger
#
id: io.github.elly_code.inscriptions.devel
# elementary SDK is not available on Flathub, so use the elementary BaseApp instead
base: io.elementary.BaseApp
base-version: 'circe-25.08'
runtime: org.gnome.Platform
runtime-version: '49'
sdk: org.gnome.Sdk
command: io.github.elly_code.inscriptions.devel

tags: ['devel']
desktop-file-name-suffix: ' (Development)'

finish-args:
- '--share=ipc'
- '--device=dri'
- '--socket=fallback-x11'
- '--socket=wayland'
# Required for communication with DeepL API
- '--share=network'

cleanup:
- '/include'
- '/lib/pkgconfig'
- '/man'
- '/share/doc'
- '/share/gtk-doc'
- '/share/man'
- '/share/pkgconfig'
- '/share/installed-tests'
- '*.la'
- '*.a'

modules:
- name: inscriptions
buildsystem: meson
config-opts:
- -Ddevelopment=true
sources:
- type: dir
path: .
27 changes: 22 additions & 5 deletions meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,33 @@
project(
'io.github.elly_code.inscriptions',
'vala', 'c',
version: '1.0.0'
version: '1.1.0'
)

app_name = 'Inscriptions'
app_id = meson.project_name()
app_version = meson.project_version()

#================================
# Include Gnome and the translations module
gnome = import('gnome')
i18n = import('i18n')

# Set our translation domain
add_global_arguments('-DGETTEXT_PACKAGE="@0@"'.format (meson.project_name()), language:'c')
windows_build = build_machine.system() == 'windows'

vala_flags = []
if get_option('development')
app_id += '.devel'
vcs_tag = run_command('git', 'rev-parse', '--short', 'HEAD').stdout().strip()
app_version += '-@0@'.format (vcs_tag)
vala_flags += ['--define', 'DEVEL']

endif

# Set our translation domain
add_global_arguments('-DGETTEXT_PACKAGE="@0@"'.format (app_id), language:'c')

# Windows needs icons, special arguments, and skip libportal
windows_build = build_machine.system() == 'windows'
if windows_build
vala_flags += ['--define', 'WINDOWS']
endif
Expand All @@ -27,7 +40,11 @@ add_project_arguments(vala_flags, language: 'vala')
config_data = configuration_data()
config_data.set('version', meson.project_version())
config_data.set_quoted('LOCALEDIR', get_option('prefix') / get_option('localedir'))
config_data.set_quoted('GETTEXT_PACKAGE', meson.project_name())
config_data.set_quoted('GETTEXT_PACKAGE', app_id)
config_data.set_quoted('APP_NAME', app_name)
config_data.set_quoted('APP_ID', app_id)
config_data.set_quoted('APP_VERSION', app_version)

config_file = configure_file(
input: 'src/Config.vala.in',
output: '@BASENAME@',
Expand Down
1 change: 1 addition & 0 deletions meson_options.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
option('development', type: 'boolean', value: false, description: 'If this is a development build')
1 change: 1 addition & 0 deletions po/POTFILES
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ src/Windows/MainWindow.vala
src/Views/TranslationView.vala
src/Widgets/HeaderBar.vala
src/Views/ErrorView.vala
src/Enums/StatusCode.vala
src/Widgets/ErrorBonusBox.vala
src/Views/LogView.vala
src/Widgets/PopoverWidgets/ApiEntry.vala
Expand Down
2 changes: 1 addition & 1 deletion po/meson.build
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
i18n.gettext(meson.project_name(),
i18n.gettext(app_id,
args: '--directory=' + meson.project_source_root(),
preset: 'glib'
)
Expand Down
5 changes: 4 additions & 1 deletion src/Config.vala.in
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
public const string GETTEXT_PACKAGE = @GETTEXT_PACKAGE@;
public const string LOCALEDIR = @LOCALEDIR@;
public const string LOCALEDIR = @LOCALEDIR@;
public const string APP_NAME = @APP_NAME@;
public const string APP_ID = @APP_ID@;
public const string APP_VERSION = @APP_VERSION@;
Loading
Loading