forked from Mirrors/apostrophe
initial port to gresources
parent
b7c9eafbdb
commit
3af59e2c1d
|
@ -14,6 +14,7 @@ desktop_file = i18n.merge_file(
|
|||
install: true,
|
||||
install_dir: get_option('datadir') / 'applications'
|
||||
)
|
||||
|
||||
# Validate Desktop File
|
||||
desktop_file_validate = find_program('desktop-file-validate', required: false)
|
||||
if desktop_file_validate.found()
|
||||
|
@ -57,6 +58,33 @@ install_data(
|
|||
rename: '@0@.gschema.xml'.format(application_id)
|
||||
)
|
||||
|
||||
# Resources
|
||||
ui_config = configuration_data()
|
||||
ui_config.set('app-id', application_id)
|
||||
ui_config.set('version', meson.project_version() + version_suffix)
|
||||
ui_config.set('package_url', 'http://uberwriter.github.io/uberwriter/')
|
||||
ui_preconfigured_files = files(
|
||||
'ui/About.ui.in'
|
||||
)
|
||||
ui_dependencies = []
|
||||
foreach ui_file: ui_preconfigured_files
|
||||
ui_dependencies += configure_file(
|
||||
input: ui_file,
|
||||
output: '@BASENAME@',
|
||||
configuration: ui_config
|
||||
)
|
||||
endforeach
|
||||
|
||||
resources = gnome.compile_resources(
|
||||
meson.project_name(),
|
||||
meson.project_name() + '.gresource.xml',
|
||||
gresource_bundle: true,
|
||||
install:true,
|
||||
install_dir: join_paths(datadir, meson.project_name()),
|
||||
dependencies: ui_dependencies
|
||||
)
|
||||
message('datadir')
|
||||
message(datadir)
|
||||
subdir('icons')
|
||||
|
||||
install_subdir(
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<gresources>
|
||||
<gresource prefix="/de/wolfvollprecht/UberWriter/">
|
||||
<file compressed="true">media/css/gtk/base.css</file>
|
||||
<file compressed="true" preprocess="xml-stripblanks">ui/Export.ui</file>
|
||||
<file compressed="true" preprocess="xml-stripblanks">ui/Menu.ui</file>
|
||||
<file compressed="true" preprocess="xml-stripblanks">ui/Preferences.ui</file>
|
||||
<file compressed="true" preprocess="xml-stripblanks">ui/Preview.ui</file>
|
||||
<file compressed="true" preprocess="xml-stripblanks">ui/Recents.ui</file>
|
||||
<file compressed="true" preprocess="xml-stripblanks">ui/Shortcuts.ui</file>
|
||||
<file compressed="true" preprocess="xml-stripblanks">ui/Window.ui</file>
|
||||
<file compressed="true" preprocess="xml-stripblanks">About.ui</file>
|
||||
</gresource>
|
||||
</gresources>
|
|
@ -8,9 +8,9 @@
|
|||
<property name="window_position">center</property>
|
||||
<property name="type_hint">dialog</property>
|
||||
<property name="program_name">Uberwriter</property>
|
||||
<property name="version">2.1.5</property>
|
||||
<property name="version">@version@</property>
|
||||
<property name="copyright" translatable="yes">Copyright (C) 2018, Wolf Vollprecht</property>
|
||||
<property name="website">http://uberwriter.github.io/uberwriter</property>
|
||||
<property name="website">@package_url@</property>
|
||||
<property name="website_label" translatable="yes">Uberwriter website</property>
|
||||
<property name="authors">Wolf Vollprecht <w.vollprecht@gmail.com>
|
||||
Manuel Genovés <manuel.genoves@gmail.com></property>
|
||||
|
@ -25,7 +25,7 @@ naxuroqa (German)
|
|||
Wolf
|
||||
Manuel (Spanish, Catalan)</property>
|
||||
<property name="artists">Tobias Bernard <hi@tobiasbernard.com></property>
|
||||
<property name="logo_icon_name">image-missing</property>
|
||||
<property name="logo_icon_name">@app-id@</property>
|
||||
<property name="license_type">gpl-3-0</property>
|
||||
<child type="titlebar">
|
||||
<placeholder/>
|
|
@ -0,0 +1,28 @@
|
|||
#!/bin/bash
|
||||
|
||||
# freely based on https://gitlab.gnome.org/World/lollypop/blob/master/generate_data.sh
|
||||
|
||||
function generate_resource()
|
||||
{
|
||||
# TODO: package css styles too
|
||||
echo '<?xml version="1.0" encoding="UTF-8"?>'
|
||||
echo '<gresources>'
|
||||
echo ' <gresource prefix="/de/wolfvollprecht/UberWriter/">'
|
||||
for file in ../data/media/css/gtk/*.css
|
||||
do
|
||||
echo -n ' <file compressed="true">'
|
||||
echo -n ${file#*/*/}
|
||||
echo '</file>'
|
||||
done
|
||||
for file in ../data/ui/*.ui About.ui
|
||||
do
|
||||
echo -n ' <file compressed="true" preprocess="xml-stripblanks">'
|
||||
echo -n ${file#*/*/}
|
||||
echo '</file>'
|
||||
done
|
||||
echo ' </gresource>'
|
||||
echo '</gresources>'
|
||||
}
|
||||
|
||||
generate_resource > ../data/uberwriter.gresource.xml
|
||||
|
|
@ -25,20 +25,15 @@ import pkg_resources
|
|||
import gettext
|
||||
import locale
|
||||
|
||||
from gi.repository import Gio
|
||||
|
||||
# Add project root directory (enable symlink and trunk execution)
|
||||
PROJECT_ROOT_DIRECTORY = os.path.abspath(
|
||||
os.path.dirname(os.path.dirname(os.path.realpath(sys.argv[0]))))
|
||||
|
||||
# Set the path if needed. This allows uberwriter to run without installing it :)
|
||||
python_path = []
|
||||
if os.path.abspath(__file__).startswith('/opt'):
|
||||
gettext.bindtextdomain('uberwriter', '/opt/extras.ubuntu.com/uberwriter/share/locale')
|
||||
syspath = sys.path[:] # copy to avoid infinite loop in pending objects
|
||||
for path in syspath:
|
||||
opt_path = path.replace('/usr', '/opt/extras.ubuntu.com/uberwriter')
|
||||
python_path.insert(0, opt_path)
|
||||
sys.path.insert(0, opt_path)
|
||||
os.putenv("XDG_DATA_DIRS", "%s:%s" % ("/opt/extras.ubuntu.com/uberwriter/share/", os.getenv("XDG_DATA_DIRS", "/usr/local/share/:/usr/share/")))
|
||||
|
||||
if (os.path.exists(os.path.join(PROJECT_ROOT_DIRECTORY, 'uberwriter'))
|
||||
and PROJECT_ROOT_DIRECTORY not in sys.path):
|
||||
python_path.insert(0, PROJECT_ROOT_DIRECTORY)
|
||||
|
@ -48,12 +43,21 @@ if python_path:
|
|||
|
||||
import uberwriter
|
||||
|
||||
locale_dir = os.path.abspath(os.path.join(os.path.dirname(uberwriter.__file__),'../po/'))
|
||||
|
||||
localedir = '@LOCALE_DIR@'
|
||||
pkgdatadir = '@DATA_DIR@'
|
||||
|
||||
|
||||
#locale_dir = os.path.abspath(os.path.join(os.path.dirname(uberwriter.__file__),'../po/'))
|
||||
|
||||
# L10n
|
||||
locale.textdomain('uberwriter')
|
||||
locale.bindtextdomain('uberwriter', locale_dir)
|
||||
locale.bindtextdomain('uberwriter', localedir)
|
||||
gettext.textdomain('uberwriter')
|
||||
gettext.bindtextdomain('uberwriter', locale_dir)
|
||||
gettext.bindtextdomain('uberwriter', localedir)
|
||||
|
||||
resource = Gio.resource_load(os.path.join(pkgdatadir, 'uberwriter/uberwriter.gresource'))
|
||||
Gio.Resource._register(resource)
|
||||
|
||||
|
||||
uberwriter.main()
|
||||
|
|
|
@ -24,7 +24,7 @@ from uberwriter import main_window
|
|||
from uberwriter.settings import Settings
|
||||
from uberwriter.helpers import set_up_logging
|
||||
from uberwriter.preferences_dialog import PreferencesDialog
|
||||
from uberwriter.helpers import get_builder, get_media_path
|
||||
from uberwriter.helpers import get_media_path
|
||||
|
||||
|
||||
class Application(Gtk.Application):
|
||||
|
@ -247,7 +247,9 @@ class Application(Gtk.Application):
|
|||
PreferencesDialog(self.settings).show(self.window)
|
||||
|
||||
def on_shortcuts(self, _action, _param):
|
||||
builder = get_builder('Shortcuts')
|
||||
builder = Gtk.Builder()
|
||||
builder.add_from_resource(
|
||||
"/de/wolfvollprecht/UberWriter/ui/Shortcuts.ui")
|
||||
builder.get_object("shortcuts").set_transient_for(self.window)
|
||||
builder.get_object("shortcuts").show()
|
||||
|
||||
|
@ -255,14 +257,11 @@ class Application(Gtk.Application):
|
|||
self.window.open_uberwriter_markdown()
|
||||
|
||||
def on_about(self, _action, _param):
|
||||
builder = get_builder('About')
|
||||
builder = Gtk.Builder()
|
||||
builder.add_from_resource("/de/wolfvollprecht/UberWriter/About.ui")
|
||||
about_dialog = builder.get_object("AboutDialog")
|
||||
about_dialog.set_transient_for(self.window)
|
||||
|
||||
logo_file = get_media_path("de.wolfvollprecht.UberWriter.svg")
|
||||
logo = GdkPixbuf.Pixbuf.new_from_file(logo_file)
|
||||
|
||||
about_dialog.set_logo(logo)
|
||||
about_dialog.present()
|
||||
|
||||
def on_quit(self, _action, _param):
|
||||
|
|
|
@ -28,7 +28,6 @@ from gi.repository import Gtk
|
|||
|
||||
from uberwriter import helpers
|
||||
from uberwriter.theme import Theme
|
||||
from uberwriter.helpers import get_builder
|
||||
|
||||
LOGGER = logging.getLogger('uberwriter')
|
||||
|
||||
|
@ -150,7 +149,9 @@ class Export:
|
|||
|
||||
def __init__(self, filename):
|
||||
"""Set up the about dialog"""
|
||||
self.builder = get_builder('Export')
|
||||
self.builder = Gtk.Builder()
|
||||
self.builder.add_from_resource(
|
||||
"/de/wolfvollprecht/UberWriter/ui/Export.ui")
|
||||
self.dialog = self.builder.get_object("Export")
|
||||
self.stack = self.builder.get_object("export_stack")
|
||||
self.stack_switcher = self.builder.get_object("format_switcher")
|
||||
|
|
|
@ -23,7 +23,6 @@ import gi
|
|||
|
||||
gi.require_version('Gtk', '3.0')
|
||||
from gi.repository import Gtk
|
||||
from uberwriter.helpers import get_builder
|
||||
from uberwriter.helpers import get_descendant
|
||||
|
||||
|
||||
|
@ -141,13 +140,17 @@ def main_buttons(app):
|
|||
Gtk.IconSize.BUTTON),
|
||||
Gtk.MenuButton().new())
|
||||
|
||||
builder_window_menu = get_builder('Menu')
|
||||
builder_window_menu = Gtk.Builder()
|
||||
builder_window_menu.add_from_resource(
|
||||
"/de/wolfvollprecht/UberWriter/ui/Menu.ui")
|
||||
model = builder_window_menu.get_object("Menu")
|
||||
|
||||
open_button = Gtk.Button().new_with_label(_("Open"))
|
||||
open_button.set_action_name("app.open")
|
||||
|
||||
recents_builder = get_builder('Recents')
|
||||
recents_builder = Gtk.Builder()
|
||||
recents_builder.add_from_resource(
|
||||
"/de/wolfvollprecht/UberWriter/ui/Recents.ui")
|
||||
recents = recents_builder.get_object("recent_md_popover")
|
||||
|
||||
recents_treeview = get_descendant(recents, "recent_view", level=0)
|
||||
|
|
|
@ -35,22 +35,6 @@ from uberwriter.config import get_data_file
|
|||
from uberwriter.builder import Builder
|
||||
|
||||
|
||||
def get_builder(builder_file_name):
|
||||
"""Return a fully-instantiated Gtk.Builder instance from specified ui
|
||||
file
|
||||
|
||||
:param builder_file_name: The name of the builder file, without extension.
|
||||
Assumed to be in the 'ui' directory under the data path.
|
||||
"""
|
||||
# Look for the ui file that describes the user interface.
|
||||
ui_filename = get_data_file('ui', '%s.ui' % (builder_file_name,))
|
||||
if not os.path.exists(ui_filename):
|
||||
ui_filename = None
|
||||
|
||||
builder = Builder()
|
||||
builder.set_translation_domain()
|
||||
builder.add_from_file(ui_filename)
|
||||
return builder
|
||||
|
||||
|
||||
@contextmanager
|
||||
|
|
|
@ -36,7 +36,6 @@ import cairo
|
|||
|
||||
from uberwriter import helpers
|
||||
from uberwriter.theme import Theme
|
||||
from uberwriter.helpers import get_builder
|
||||
|
||||
from uberwriter.sidebar import Sidebar
|
||||
from uberwriter.search_and_replace import SearchAndReplace
|
||||
|
@ -72,7 +71,9 @@ class MainWindow(StyledWindow):
|
|||
self.get_style_context().add_class('uberwriter-window')
|
||||
|
||||
# Set UI
|
||||
builder = get_builder('Window')
|
||||
builder = Gtk.Builder()
|
||||
builder.add_from_resource(
|
||||
"/de/wolfvollprecht/UberWriter/ui/Window.ui")
|
||||
root = builder.get_object("FullscreenOverlay")
|
||||
self.connect("delete-event", self.on_delete_called)
|
||||
self.add(root)
|
||||
|
|
|
@ -27,7 +27,6 @@ from gi.repository import Gtk, Pango, GLib # pylint: disable=E0611
|
|||
import logging
|
||||
logger = logging.getLogger('uberwriter')
|
||||
|
||||
from uberwriter.helpers import get_builder
|
||||
|
||||
|
||||
class PreferencesDialog:
|
||||
|
@ -64,7 +63,9 @@ class PreferencesDialog:
|
|||
|
||||
def __init__(self, settings):
|
||||
self.settings = settings
|
||||
self.builder = get_builder("Preferences")
|
||||
self.builder = Gtk.Builder()
|
||||
self.builder.add_from_resource(
|
||||
"/de/wolfvollprecht/UberWriter/ui/Preferences.ui")
|
||||
|
||||
self.dark_mode_auto_switch = self.builder.get_object("dark_mode_auto_switch")
|
||||
self.dark_mode_auto_switch.set_active(self.settings.get_value("dark-mode-auto"))
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
from queue import Queue
|
||||
from threading import Thread
|
||||
import os
|
||||
|
||||
from gi.repository import GLib
|
||||
|
||||
|
|
|
@ -4,12 +4,11 @@ from enum import auto, IntEnum
|
|||
|
||||
import gi
|
||||
|
||||
from uberwriter.helpers import get_builder
|
||||
from uberwriter.preview_renderer import PreviewRenderer
|
||||
from uberwriter.settings import Settings
|
||||
|
||||
gi.require_version('WebKit2', '4.0')
|
||||
from gi.repository import WebKit2, GLib
|
||||
from gi.repository import WebKit2, GLib, Gtk
|
||||
|
||||
from uberwriter.preview_converter import PreviewConverter
|
||||
from uberwriter.preview_web_view import PreviewWebView
|
||||
|
@ -33,7 +32,9 @@ class PreviewHandler:
|
|||
self.web_view = None
|
||||
self.web_view_pending_html = None
|
||||
|
||||
builder = get_builder("Preview")
|
||||
builder = Gtk.Builder()
|
||||
builder.add_from_resource(
|
||||
"/de/wolfvollprecht/UberWriter/ui/Preview.ui")
|
||||
preview = builder.get_object("preview")
|
||||
mode_button = builder.get_object("preview_mode_button")
|
||||
self.mode_revealer = builder.get_object("preview_mode_revealer")
|
||||
|
|
|
@ -4,7 +4,7 @@ from uberwriter import helpers
|
|||
from uberwriter.theme import Theme
|
||||
|
||||
gi.require_version('Gtk', '3.0')
|
||||
from gi.repository import Gtk, GLib
|
||||
from gi.repository import Gtk, GLib, Gio
|
||||
|
||||
|
||||
class StyledWindow(Gtk.ApplicationWindow):
|
||||
|
@ -27,8 +27,10 @@ class StyledWindow(Gtk.ApplicationWindow):
|
|||
GLib.Variant("b", theme.is_dark))
|
||||
|
||||
# Set theme css
|
||||
css_provider_file = Gio.File.new_for_uri(
|
||||
"resource:///de/wolfvollprecht/UberWriter/media/css/gtk/base.css")
|
||||
style_provider = Gtk.CssProvider()
|
||||
style_provider.load_from_path(helpers.get_css_path("gtk/base.css"))
|
||||
style_provider.load_from_file(css_provider_file)
|
||||
Gtk.StyleContext.add_provider_for_screen(
|
||||
self.get_screen(), style_provider,
|
||||
Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
|
||||
|
|
Loading…
Reference in New Issue