Add most of the first tutorial

Signed-off-by: David Boddie <david.boddie@puri.sm>
This commit is contained in:
David Boddie 2019-04-05 17:19:09 +02:00
commit 065649aaad
8 changed files with 127 additions and 0 deletions

13
build-aux/meson/postinstall.py Executable file
View file

@ -0,0 +1,13 @@
#!/usr/bin/env python3
from os import environ, path
from subprocess import call
prefix = environ.get('MESON_INSTALL_PREFIX', '/usr/local')
datadir = path.join(prefix, 'share')
destdir = environ.get('DESTDIR', '')
# Package managers set this so we don't need to run
if not destdir:
print('Updating icon cache...')
call(['gtk-update-icon-cache', '-qtf', path.join(datadir, 'icons', 'hicolor')])

View file

@ -0,0 +1,38 @@
{
"app-id": "com.example.first_application",
"runtime": "org.gnome.Platform",
"runtime-version": "master",
"sdk": "org.gnome.Sdk",
"command": "your-first-application",
"finish-args": [
"--socket=wayland"
],
"build-options": {
"env": {
"V": "1"
}
},
"cleanup": [
"/lib/pkgconfig",
"/man",
"/share/doc",
"/share/gtk-doc",
"/share/man",
"/share/pkgconfig"
],
"modules": [
{
"name": "first-application",
"buildsystem": "meson",
"builddir": true,
"subdir": "First_Application",
"sources": [
{
"branch": "master",
"type": "git",
"url": "https://source.puri.sm/david.boddie/tutorials.git"
}
]
}
]
}

View file

@ -0,0 +1,8 @@
[Desktop Entry]
Name=Your First Application
Icon=com.example.first_application
Exec=your-first-application
Terminal=false
Type=Application
Categories=
StartupNotify=false

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<svg xmlns="http://www.w3.org/2000/svg" height="64" version="1.1" width="64"
viewBox="0 0 100 100">
<rect x="0" y="0" width="100" height="100" stroke="none" fill="#8080c0" />
<rect x="0" y="60" width="100" height="40" stroke="none" fill="#80c080" />
<circle cx="70" cy="30" r="20" stroke="none" fill="#f0f080" />
</svg>

After

Width:  |  Height:  |  Size: 388 B

10
data/meson.build Normal file
View file

@ -0,0 +1,10 @@
configure_file(
input: 'com.example.first_application.desktop',
output: 'com.example.first_application.desktop',
copy: true,
install: true,
install_dir: join_paths(get_option('datadir'), 'applications')
)
install_data('com.example.first_application.svg',
install_dir: join_paths(get_option('datadir'), 'icons', 'hicolor', 'scalable', 'apps'))

9
meson.build Normal file
View file

@ -0,0 +1,9 @@
project('first-application',
version: '0.1.0',
meson_version: '>= 0.40.0',
)
subdir('data')
subdir('src')
meson.add_install_script('build-aux/meson/postinstall.py')

34
src/main.py Executable file
View file

@ -0,0 +1,34 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Copyright (C) 2018 Purism SPC
# SPDX-License-Identifier: GPL-3.0+
# Author: David Boddie <david.boddie@puri.sm>
import sys
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import GLib, Gtk
class Application(Gtk.Application):
def __init__(self):
super().__init__(application_id='com.example.first_application')
GLib.set_application_name('Your First Application')
def do_activate(self):
window = Gtk.ApplicationWindow(application=self)
window.set_icon_name('com.example.first_application')
label = Gtk.Label()
label.set_markup('<span font="40">Hello World!</span>')
window.add(label)
window.show_all()
if __name__ == "__main__":
app = Application()
result = app.run(sys.argv)
sys.exit(result)

7
src/meson.build Normal file
View file

@ -0,0 +1,7 @@
configure_file(
input: 'main.py',
output: 'your-first-application',
copy: true,
install: true,
install_dir: get_option('bindir')
)