From 547124605a9f86469a547fcaf38dc18ae57b707f Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Thu, 5 Jan 2023 23:55:02 +0100 Subject: essential structures --- tagit/apps/__init__.py | 10 +++++++++ tagit/apps/desktop.py | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 tagit/apps/__init__.py create mode 100644 tagit/apps/desktop.py (limited to 'tagit/apps') diff --git a/tagit/apps/__init__.py b/tagit/apps/__init__.py new file mode 100644 index 0000000..4c64128 --- /dev/null +++ b/tagit/apps/__init__.py @@ -0,0 +1,10 @@ +""" + +Part of the tagit module. +A copy of the license is provided with the project. +Author: Matthias Baumgartner, 2022 +""" +# inner-module imports +from .desktop import main as desktop + +## EOF ## diff --git a/tagit/apps/desktop.py b/tagit/apps/desktop.py new file mode 100644 index 0000000..67733f0 --- /dev/null +++ b/tagit/apps/desktop.py @@ -0,0 +1,55 @@ +""" + +Part of the tagit module. +A copy of the license is provided with the project. +Author: Matthias Baumgartner, 2022 +""" +# standard imports +import typing + +# kivy imports +from kivy.app import App +from kivy.uix.settings import SettingsWithSidebar + +# tagit imports +from tagit.widgets import desktop + +# exports +__all__: typing.Sequence[str] = ( + 'main', + ) + + +## code ## + +class TagitApp(App): + """The tagit main application.""" + + def build(self): + # set settings panel style + self.settings_cls = SettingsWithSidebar + + # set title + self.title = 'tagit v2.0' + + # create widget + return desktop.MainWindow() + + def on_start(self): + # trigger startup operations + self.root.on_startup() + + +def main(): + """Start the tagit GUI. Opens a window to browse images.""" + # Run the GUI + app = TagitApp() + app.run() + + +## main ## + +if __name__ == '__main__': + main() + +## EOF ## -- cgit v1.2.3 From 11e0cc65dfa7158b987c25557775732c5eafba87 Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Fri, 6 Jan 2023 11:58:55 +0100 Subject: bugfix --- tagit/apps/desktop.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tagit/apps') diff --git a/tagit/apps/desktop.py b/tagit/apps/desktop.py index 67733f0..086a503 100644 --- a/tagit/apps/desktop.py +++ b/tagit/apps/desktop.py @@ -40,7 +40,7 @@ class TagitApp(App): self.root.on_startup() -def main(): +def main(argv): """Start the tagit GUI. Opens a window to browse images.""" # Run the GUI app = TagitApp() -- cgit v1.2.3 From ceaaef069d8ffda23fce320ce66c86e0226f1046 Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Fri, 6 Jan 2023 17:40:25 +0100 Subject: first startup, empty screen --- tagit/apps/desktop.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'tagit/apps') diff --git a/tagit/apps/desktop.py b/tagit/apps/desktop.py index 086a503..21a610c 100644 --- a/tagit/apps/desktop.py +++ b/tagit/apps/desktop.py @@ -32,8 +32,13 @@ class TagitApp(App): # set title self.title = 'tagit v2.0' + # FIXME: mb/port + # load essentials + from tagit.config.loader import load_settings, TAGITRC + cfg = load_settings(TAGITRC, 0) + # create widget - return desktop.MainWindow() + return desktop.MainWindow(cfg, None, None) # FIXME: expects cfg, stor, log arguments def on_start(self): # trigger startup operations -- cgit v1.2.3 From 3aebfcba6afd5a882f02e55e442580fe0290c776 Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Sat, 7 Jan 2023 16:02:33 +0100 Subject: pin to port config --- tagit/apps/desktop.py | 8 +++- tagit/apps/port-config.yaml | 112 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 118 insertions(+), 2 deletions(-) create mode 100644 tagit/apps/port-config.yaml (limited to 'tagit/apps') diff --git a/tagit/apps/desktop.py b/tagit/apps/desktop.py index 21a610c..763439c 100644 --- a/tagit/apps/desktop.py +++ b/tagit/apps/desktop.py @@ -5,6 +5,7 @@ A copy of the license is provided with the project. Author: Matthias Baumgartner, 2022 """ # standard imports +import os import typing # kivy imports @@ -34,8 +35,11 @@ class TagitApp(App): # FIXME: mb/port # load essentials - from tagit.config.loader import load_settings, TAGITRC - cfg = load_settings(TAGITRC, 0) + + #from tagit.config.loader import load_settings, TAGITRC + #cfg = load_settings(TAGITRC, 0) + from tagit.config import Settings + cfg = Settings.Open(os.path.join(os.path.dirname(__file__), 'port-config.yaml')) # create widget return desktop.MainWindow(cfg, None, None) # FIXME: expects cfg, stor, log arguments diff --git a/tagit/apps/port-config.yaml b/tagit/apps/port-config.yaml new file mode 100644 index 0000000..ac0d242 --- /dev/null +++ b/tagit/apps/port-config.yaml @@ -0,0 +1,112 @@ +session: + first_start: false + paths: + searchlog: ~/.tagit.log +storage: + index: + preview_size: + - 50 + - 200 + - 400 +ui: + standalone: + plane: browsing + browser: + maxcols: 8 + maxrows: 8 + buttondocks: + sidebar_left: [] + #- Menu + #- ShowDashboard + #- AddTag + #- EditTag + #- CreateGroup + #- DissolveGroup + #- SelectAll + #- SelectNone + #- SelectInvert + #- SelectAdditive + #- SelectSubtractive + #- SelectSingle + #- SelectMulti + #- SelectRange + context: + app: + - ShowSettings + - ShowHelp + - ShowConsole + - ShowBrowsing + # browser: + # - ZoomIn + # - ZoomOut + # clipboard: + # - ClipboardCopy + # - ClipboardPaste + # grouping: + # - CreateGroup + # - DissolveGroup + # - AddToGroup + # - RepresentGroup + # - RemoveFromGroup + # root: + # - CloseSessionAndExit + # search: + # - ShowSelected + # - RemoveSelected + # select: + # - SelectAll + # - SelectNone + # - SelectInvert + # - SelectSingle + # - SelectMulti + # - SelectRange + # - SelectAdditive + # - SelectSubtractive + # session: + # - SaveSession + # - SaveSessionAs + # - ItemExport + # - ImportObjects + # tagging: + # - AddTag + # - EditTag + # - SetRank1 + # - SetRank3 + # - SetRank5 + search: + sort_blacklist: + - entity + - flash + - latitude + - longitude + - mime + - author + - camera + - attributes + tiledocks: + dashboard: {} + #Buttons: + # buttons: + # - ShowBrowsing + # - CreateSession + # - CreateTempSession + # - LoadSession + # - ReloadSession + # - ImportObjects + # - SaveSession + # - SaveSessionAs + # - ItemExport + # - UpdateSelectedObjects + # - SyncSelectedObjects + # - ShowHelp + # - ShowSettings + #Hints: {} + #LibSummary: {} + #Searchtree: {} + #TagHistogram: {} + #Tagcloud: {} + sidebar_right: {} + #CursorTags: {} + #Info: {} + #Venn: {} + window_size: 1024x768 -- cgit v1.2.3 From 37f1ac3f456b6677d9ce14274f3987ccda752f03 Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Sat, 7 Jan 2023 16:26:26 +0100 Subject: browser and misc actions --- tagit/apps/port-config.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'tagit/apps') diff --git a/tagit/apps/port-config.yaml b/tagit/apps/port-config.yaml index ac0d242..7ca03ae 100644 --- a/tagit/apps/port-config.yaml +++ b/tagit/apps/port-config.yaml @@ -15,9 +15,9 @@ ui: maxcols: 8 maxrows: 8 buttondocks: - sidebar_left: [] - #- Menu - #- ShowDashboard + sidebar_left: + - Menu + - ShowDashboard #- AddTag #- EditTag #- CreateGroup -- cgit v1.2.3 From 7cf03c4de5244e7db3f44362a275f92368fd86ac Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Sun, 8 Jan 2023 14:08:38 +0100 Subject: moved desktop widgets to windows --- tagit/apps/desktop.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tagit/apps') diff --git a/tagit/apps/desktop.py b/tagit/apps/desktop.py index 763439c..65501ad 100644 --- a/tagit/apps/desktop.py +++ b/tagit/apps/desktop.py @@ -13,7 +13,7 @@ from kivy.app import App from kivy.uix.settings import SettingsWithSidebar # tagit imports -from tagit.widgets import desktop +from tagit.windows import desktop # exports __all__: typing.Sequence[str] = ( -- cgit v1.2.3 From 8f2f697f7ed52b7e1c7a17411b2de526b6490691 Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Thu, 12 Jan 2023 17:18:43 +0100 Subject: removed save and sync functionality since they no longer apply --- tagit/apps/port-config.yaml | 5 ----- 1 file changed, 5 deletions(-) (limited to 'tagit/apps') diff --git a/tagit/apps/port-config.yaml b/tagit/apps/port-config.yaml index 7ca03ae..501eacd 100644 --- a/tagit/apps/port-config.yaml +++ b/tagit/apps/port-config.yaml @@ -63,8 +63,6 @@ ui: # - SelectAdditive # - SelectSubtractive # session: - # - SaveSession - # - SaveSessionAs # - ItemExport # - ImportObjects # tagging: @@ -93,11 +91,8 @@ ui: # - LoadSession # - ReloadSession # - ImportObjects - # - SaveSession - # - SaveSessionAs # - ItemExport # - UpdateSelectedObjects - # - SyncSelectedObjects # - ShowHelp # - ShowSettings #Hints: {} -- cgit v1.2.3 From 9c366758665d9cfee7796ee45a8167a5412ae9ae Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Fri, 13 Jan 2023 09:49:10 +0100 Subject: filter early port, parsing adaptions --- tagit/apps/port-config.yaml | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'tagit/apps') diff --git a/tagit/apps/port-config.yaml b/tagit/apps/port-config.yaml index 501eacd..d5c45e9 100644 --- a/tagit/apps/port-config.yaml +++ b/tagit/apps/port-config.yaml @@ -20,6 +20,7 @@ ui: - ShowDashboard #- AddTag #- EditTag + - AddToken #- CreateGroup #- DissolveGroup #- SelectAll @@ -30,6 +31,9 @@ ui: #- SelectSingle #- SelectMulti #- SelectRange + filter: + - AddToken + - EditToken context: app: - ShowSettings -- cgit v1.2.3 From b6a57a3a84bc4ea0b5db33e6c82b30944fad7e54 Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Fri, 13 Jan 2023 10:16:37 +0100 Subject: load bsfs storage --- tagit/apps/desktop.py | 24 +++++++++++++++--- tagit/apps/port-config.yaml | 5 ++++ tagit/apps/port-schema.nt | 62 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 88 insertions(+), 3 deletions(-) create mode 100644 tagit/apps/port-schema.nt (limited to 'tagit/apps') diff --git a/tagit/apps/desktop.py b/tagit/apps/desktop.py index 65501ad..f30b504 100644 --- a/tagit/apps/desktop.py +++ b/tagit/apps/desktop.py @@ -13,6 +13,8 @@ from kivy.app import App from kivy.uix.settings import SettingsWithSidebar # tagit imports +from tagit import config +from tagit.utils import bsfs from tagit.windows import desktop # exports @@ -38,11 +40,23 @@ class TagitApp(App): #from tagit.config.loader import load_settings, TAGITRC #cfg = load_settings(TAGITRC, 0) - from tagit.config import Settings - cfg = Settings.Open(os.path.join(os.path.dirname(__file__), 'port-config.yaml')) + cfg = config.Settings.Open(os.path.join(os.path.dirname(__file__), 'port-config.yaml')) + + # FIXME: mb/port/bsfs + # open BSFS storage + store = bsfs.Open(cfg('session', 'bsfs')) + # check storage schema + # FIXME: Move somewhere else?! + with open(os.path.join(os.path.dirname(__file__), 'port-schema.nt'), 'rt') as ifile: + required_schema = bsfs.schema.from_string(ifile.read()) + + # FIXME: Since the store isn't persistent, we migrate to the required one here. + #if not required_schema <= store.schema: + # raise Exception('') + store.migrate(required_schema) # create widget - return desktop.MainWindow(cfg, None, None) # FIXME: expects cfg, stor, log arguments + return desktop.MainWindow(cfg, store, None) # FIXME: expects cfg, stor, log arguments def on_start(self): # trigger startup operations @@ -55,6 +69,10 @@ def main(argv): app = TagitApp() app.run() +## config + +config.declare(('session', 'bsfs'), config.Any(), {}, + __name__, 'bsfs config', 'Configuration to connect to a BSFS storage.') ## main ## diff --git a/tagit/apps/port-config.yaml b/tagit/apps/port-config.yaml index d5c45e9..76fc580 100644 --- a/tagit/apps/port-config.yaml +++ b/tagit/apps/port-config.yaml @@ -2,6 +2,11 @@ session: first_start: false paths: searchlog: ~/.tagit.log + bsfs: # FIXME: rename to storage, but that space is currently polluted + Graph: + backend: + SparqlStore: {} + user: 'http://example.com/me' storage: index: preview_size: diff --git a/tagit/apps/port-schema.nt b/tagit/apps/port-schema.nt new file mode 100644 index 0000000..ec111d4 --- /dev/null +++ b/tagit/apps/port-schema.nt @@ -0,0 +1,62 @@ +# common external prefixes +prefix rdf: +prefix rdfs: +prefix xsd: +prefix schema: + +# common bsfs prefixes +prefix bsfs: +prefix bse: +prefix bst: + +# essential nodes +bsfs:Entity rdfs:subClassOf bsfs:Node . +bsfs:File rdfs:subClassOf bsfs:Entity . +bsfs:Tag rdfs:subClassOf bsfs:Node . +bsfs:Group rdfs:subClassOf bsfs:Node . + +# common definitions +bsfs:Number rdfs:subClassOf bsfs:Literal . +bsfs:Time rdfs:subClassOf bsfs:Literal . +xsd:string rdfs:subClassOf bsfs:Literal . +xsd:integer rdfs:subClassOf bsfs:Number . + +bse:filename rdfs:subClassOf bsfs:Predicate ; + rdfs:domain bsfs:File ; + rdfs:range xsd:string ; + rdfs:label "File name"^^xsd:string ; + schema:description "Filename of entity in some filesystem."^^xsd:string ; + bsfs:unique "false"^^xsd:boolean . + +bse:filesize rdfs:subClassOf bsfs:Predicate ; + rdfs:domain bsfs:File ; + rdfs:range xsd:integer ; + rdfs:label "File size"^^xsd:string ; + schema:description "File size of entity in some filesystem."^^xsd:string ; + bsfs:unique "false"^^xsd:boolean . + +bse:tag rdfs:subClassOf bsfs:Predicate ; + rdfs:domain bsfs:File ; + rdfs:range bsfs:Tag ; + bsfs:unique "false"^^xsd:boolean . + +bst:label rdfs:subClassOf bsfs:Predicate ; + rdfs:domain bsfs:Tag ; + rdfs:range xsd:string ; + bsfs:unique "true"^^xsd:boolean . + +bse:author rdfs:subClassOf bsfs:Predicate ; + rdfs:domain bsfs:Entity ; + rdfs:range xsd:string ; + bsfs:unique "true"^^xsd:boolean . + +bse:comment rdfs:subClassOf bsfs:Predicate ; + rdfs:domain bsfs:Node ; + rdfs:range xsd:string ; + bsfs:unique "false"^^xsd:boolean . + +bse:group rdfs:subClassOf bsfs:Predicate ; + rdfs:domain bsfs:Entity ; + rdfs:range bsfs:Group ; + bsfs:unique "false"^^xsd:boolean . + -- cgit v1.2.3 From 725921507c04e998c6ce1d4416af97a5e9470443 Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Fri, 13 Jan 2023 10:18:20 +0100 Subject: action replay for development and testing --- tagit/apps/port-config.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'tagit/apps') diff --git a/tagit/apps/port-config.yaml b/tagit/apps/port-config.yaml index 76fc580..d5bad35 100644 --- a/tagit/apps/port-config.yaml +++ b/tagit/apps/port-config.yaml @@ -7,6 +7,9 @@ session: backend: SparqlStore: {} user: 'http://example.com/me' + script: + #- ShowBrowsing + - [AddToken, 'hello'] storage: index: preview_size: @@ -15,7 +18,7 @@ storage: - 400 ui: standalone: - plane: browsing + #plane: browsing browser: maxcols: 8 maxrows: 8 -- cgit v1.2.3 From 20d31b0c4a61b5f026fc8b0ff98c43b8a00bee48 Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Wed, 25 Jan 2023 10:38:00 +0100 Subject: browser folding --- tagit/apps/port-schema.nt | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'tagit/apps') diff --git a/tagit/apps/port-schema.nt b/tagit/apps/port-schema.nt index ec111d4..c3bf237 100644 --- a/tagit/apps/port-schema.nt +++ b/tagit/apps/port-schema.nt @@ -8,6 +8,7 @@ prefix schema: prefix bsfs: prefix bse: prefix bst: +prefix bsg: # essential nodes bsfs:Entity rdfs:subClassOf bsfs:Node . @@ -35,6 +36,16 @@ bse:filesize rdfs:subClassOf bsfs:Predicate ; schema:description "File size of entity in some filesystem."^^xsd:string ; bsfs:unique "false"^^xsd:boolean . +bse:mime rdfs:subClassOf bsfs:Predicate ; + rdfs:domain bsfs:File ; + rdfs:range xsd:string ; + bsfs:unique "true"^^xsd:boolean . + +bse:orientation rdfs:subClassOf bsfs:Predicate ; # FIXME: shouldn't this be part of the preview? + rdfs:domain bsfs:File ; + rdfs:range xsd:integer ; + bsfs:unique "true"^^xsd:boolean . + bse:tag rdfs:subClassOf bsfs:Predicate ; rdfs:domain bsfs:File ; rdfs:range bsfs:Tag ; @@ -57,6 +68,11 @@ bse:comment rdfs:subClassOf bsfs:Predicate ; bse:group rdfs:subClassOf bsfs:Predicate ; rdfs:domain bsfs:Entity ; - rdfs:range bsfs:Group ; - bsfs:unique "false"^^xsd:boolean . + rdfs:range bsfs:Group . + +bsg:represented_by rdfs:subClassOf bsfs:Predicate ; + rdfs:domain bsfs:Group ; + rdfs:range bsfs:File ; + bsfs:unique "true"^^xsd:boolean . + -- cgit v1.2.3 From df9adcb8d55300234d12f6737f9725df3bcfa4b4 Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Wed, 25 Jan 2023 10:44:02 +0100 Subject: port app fixes --- tagit/apps/desktop.py | 41 +++++++++++++++++++++++++-- tagit/apps/port-config.yaml | 67 ++++++++++++++++++++++++++++----------------- tagit/apps/port-schema.nt | 10 +++---- 3 files changed, 85 insertions(+), 33 deletions(-) (limited to 'tagit/apps') diff --git a/tagit/apps/desktop.py b/tagit/apps/desktop.py index f30b504..1412da9 100644 --- a/tagit/apps/desktop.py +++ b/tagit/apps/desktop.py @@ -14,7 +14,8 @@ from kivy.uix.settings import SettingsWithSidebar # tagit imports from tagit import config -from tagit.utils import bsfs +from tagit.utils import bsfs, ns +from tagit.utils.bsfs import URI from tagit.windows import desktop # exports @@ -49,12 +50,48 @@ class TagitApp(App): # FIXME: Move somewhere else?! with open(os.path.join(os.path.dirname(__file__), 'port-schema.nt'), 'rt') as ifile: required_schema = bsfs.schema.from_string(ifile.read()) - # FIXME: Since the store isn't persistent, we migrate to the required one here. #if not required_schema <= store.schema: # raise Exception('') store.migrate(required_schema) + # FIXME: debug: add some data to the storage + t_hello = store.node(ns.bsfs.Tag, URI('http://example.com/me/tag#hello')).set(ns.bst.label, 'hello') + t_world = store.node(ns.bsfs.Tag, URI('http://example.com/me/tag#world')).set(ns.bst.label, 'world') + t_foobar = store.node(ns.bsfs.Tag, URI('http://example.com/me/tag#foobar')).set(ns.bst.label, 'foobar') + grp = store.node(ns.bsfs.Group, URI('http://example.com/me/group#1234')) + + n0 = store.node(ns.bsfs.File, URI('http://example.com/me/entity#01')) \ + .set(ns.bse.filename, 'textfile.t') \ + .set(ns.bse.filesize, 100) \ + .set(ns.bse.tag, t_hello) \ + .set(ns.bse.tag, t_foobar) \ + .set(ns.bse.group, grp) + n1 = store.node(ns.bsfs.File, URI('http://example.com/me/entity#02')) \ + .set(ns.bse.filename, 'document.pdf') \ + .set(ns.bse.filesize, 200) \ + .set(ns.bse.author, 'me') \ + .set(ns.bse.tag, t_world) \ + .set(ns.bse.tag, t_foobar) \ + .set(ns.bse.group, grp) + n2 = store.node(ns.bsfs.File, URI('http://example.com/me/entity#03')) \ + .set(ns.bse.filename, 'document.odt') \ + .set(ns.bse.filesize, 300) \ + .set(ns.bse.author, 'you') \ + .set(ns.bse.tag, t_world) + n3 = store.node(ns.bsfs.File, URI('http://example.com/me/entity#04')) \ + .set(ns.bse.filename, 'image.jpg') \ + .set(ns.bse.comment, 'some image') \ + .set(ns.bse.tag, t_hello) \ + .set(ns.bse.tag, t_foobar) \ + .set(ns.bse.group, grp) + n4 = store.node(ns.bsfs.File, URI('http://example.com/me/entity#05')) \ + .set(ns.bse.filename, 'image.png') \ + .set(ns.bse.comment, 'another image') \ + .set(ns.bse.tag, t_hello) + + grp.set(ns.bsg.represented_by, n0) + # create widget return desktop.MainWindow(cfg, store, None) # FIXME: expects cfg, stor, log arguments diff --git a/tagit/apps/port-config.yaml b/tagit/apps/port-config.yaml index d5bad35..35f524a 100644 --- a/tagit/apps/port-config.yaml +++ b/tagit/apps/port-config.yaml @@ -2,7 +2,7 @@ session: first_start: false paths: searchlog: ~/.tagit.log - bsfs: # FIXME: rename to storage, but that space is currently polluted + bsfs: # FIXME: mb/port: rename to storage, but that space is currently polluted Graph: backend: SparqlStore: {} @@ -18,7 +18,26 @@ storage: - 400 ui: standalone: - #plane: browsing + plane: browsing + keytriggers: + - MoveCursorUp + - MoveCursorDown + - MoveCursorLeft + - MoveCursorRight + - MoveCursorLast + - MoveCursorFirst + - NextPage + - PreviousPage + - ScrollDown + - ScrollUp + - ZoomIn + - ZoomOut + - Select + - SelectAll + - SelectNone + - SelectMulti + - SelectRange + - ShowHelp browser: maxcols: 8 maxrows: 8 @@ -31,14 +50,15 @@ ui: - AddToken #- CreateGroup #- DissolveGroup - #- SelectAll - #- SelectNone - #- SelectInvert - #- SelectAdditive - #- SelectSubtractive - #- SelectSingle - #- SelectMulti - #- SelectRange + - SelectAll + - SelectNone + - SelectInvert + - SelectAdditive + - SelectSubtractive + - SelectSingle + - SelectMulti + - SelectRange + - ShellDrop filter: - AddToken - EditToken @@ -48,9 +68,9 @@ ui: - ShowHelp - ShowConsole - ShowBrowsing - # browser: - # - ZoomIn - # - ZoomOut + browser: + - ZoomIn + - ZoomOut # clipboard: # - ClipboardCopy # - ClipboardPaste @@ -65,18 +85,15 @@ ui: # search: # - ShowSelected # - RemoveSelected - # select: - # - SelectAll - # - SelectNone - # - SelectInvert - # - SelectSingle - # - SelectMulti - # - SelectRange - # - SelectAdditive - # - SelectSubtractive - # session: - # - ItemExport - # - ImportObjects + select: + - SelectAll + - SelectNone + - SelectInvert + - SelectSingle + - SelectMulti + - SelectRange + - SelectAdditive + - SelectSubtractive # tagging: # - AddTag # - EditTag diff --git a/tagit/apps/port-schema.nt b/tagit/apps/port-schema.nt index c3bf237..b18a6ad 100644 --- a/tagit/apps/port-schema.nt +++ b/tagit/apps/port-schema.nt @@ -27,14 +27,14 @@ bse:filename rdfs:subClassOf bsfs:Predicate ; rdfs:range xsd:string ; rdfs:label "File name"^^xsd:string ; schema:description "Filename of entity in some filesystem."^^xsd:string ; - bsfs:unique "false"^^xsd:boolean . + bsfs:unique "true"^^xsd:boolean . bse:filesize rdfs:subClassOf bsfs:Predicate ; rdfs:domain bsfs:File ; rdfs:range xsd:integer ; rdfs:label "File size"^^xsd:string ; schema:description "File size of entity in some filesystem."^^xsd:string ; - bsfs:unique "false"^^xsd:boolean . + bsfs:unique "true"^^xsd:boolean . bse:mime rdfs:subClassOf bsfs:Predicate ; rdfs:domain bsfs:File ; @@ -48,8 +48,7 @@ bse:orientation rdfs:subClassOf bsfs:Predicate ; # FIXME: shouldn't this be part bse:tag rdfs:subClassOf bsfs:Predicate ; rdfs:domain bsfs:File ; - rdfs:range bsfs:Tag ; - bsfs:unique "false"^^xsd:boolean . + rdfs:range bsfs:Tag . bst:label rdfs:subClassOf bsfs:Predicate ; rdfs:domain bsfs:Tag ; @@ -63,8 +62,7 @@ bse:author rdfs:subClassOf bsfs:Predicate ; bse:comment rdfs:subClassOf bsfs:Predicate ; rdfs:domain bsfs:Node ; - rdfs:range xsd:string ; - bsfs:unique "false"^^xsd:boolean . + rdfs:range xsd:string . bse:group rdfs:subClassOf bsfs:Predicate ; rdfs:domain bsfs:Entity ; -- cgit v1.2.3 From 56865c524bddaee9ec86d57e62af9524be80d1b3 Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Wed, 25 Jan 2023 10:55:49 +0100 Subject: first tiles --- tagit/apps/port-config.yaml | 5 +++-- tagit/apps/port-schema.nt | 5 ----- 2 files changed, 3 insertions(+), 7 deletions(-) (limited to 'tagit/apps') diff --git a/tagit/apps/port-config.yaml b/tagit/apps/port-config.yaml index 35f524a..7335c16 100644 --- a/tagit/apps/port-config.yaml +++ b/tagit/apps/port-config.yaml @@ -129,8 +129,9 @@ ui: #Searchtree: {} #TagHistogram: {} #Tagcloud: {} - sidebar_right: {} + sidebar_right: + Info: {} #CursorTags: {} - #Info: {} + BrowserTags: {} #Venn: {} window_size: 1024x768 diff --git a/tagit/apps/port-schema.nt b/tagit/apps/port-schema.nt index b18a6ad..7317496 100644 --- a/tagit/apps/port-schema.nt +++ b/tagit/apps/port-schema.nt @@ -55,11 +55,6 @@ bst:label rdfs:subClassOf bsfs:Predicate ; rdfs:range xsd:string ; bsfs:unique "true"^^xsd:boolean . -bse:author rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsfs:Entity ; - rdfs:range xsd:string ; - bsfs:unique "true"^^xsd:boolean . - bse:comment rdfs:subClassOf bsfs:Predicate ; rdfs:domain bsfs:Node ; rdfs:range xsd:string . -- cgit v1.2.3 From b243b02de05fc247e554723137911f7d05b00b82 Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Wed, 25 Jan 2023 11:10:52 +0100 Subject: more tiles --- tagit/apps/desktop.py | 2 -- tagit/apps/port-config.yaml | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) (limited to 'tagit/apps') diff --git a/tagit/apps/desktop.py b/tagit/apps/desktop.py index 1412da9..94acbf2 100644 --- a/tagit/apps/desktop.py +++ b/tagit/apps/desktop.py @@ -70,14 +70,12 @@ class TagitApp(App): n1 = store.node(ns.bsfs.File, URI('http://example.com/me/entity#02')) \ .set(ns.bse.filename, 'document.pdf') \ .set(ns.bse.filesize, 200) \ - .set(ns.bse.author, 'me') \ .set(ns.bse.tag, t_world) \ .set(ns.bse.tag, t_foobar) \ .set(ns.bse.group, grp) n2 = store.node(ns.bsfs.File, URI('http://example.com/me/entity#03')) \ .set(ns.bse.filename, 'document.odt') \ .set(ns.bse.filesize, 300) \ - .set(ns.bse.author, 'you') \ .set(ns.bse.tag, t_world) n3 = store.node(ns.bsfs.File, URI('http://example.com/me/entity#04')) \ .set(ns.bse.filename, 'image.jpg') \ diff --git a/tagit/apps/port-config.yaml b/tagit/apps/port-config.yaml index 7335c16..872ac29 100644 --- a/tagit/apps/port-config.yaml +++ b/tagit/apps/port-config.yaml @@ -131,7 +131,7 @@ ui: #Tagcloud: {} sidebar_right: Info: {} - #CursorTags: {} + CursorTags: {} BrowserTags: {} #Venn: {} window_size: 1024x768 -- cgit v1.2.3 From 41fdbe254cbfc74896080b9f5820f856067da537 Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Wed, 25 Jan 2023 16:19:03 +0100 Subject: tagging ported --- tagit/apps/port-config.yaml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'tagit/apps') diff --git a/tagit/apps/port-config.yaml b/tagit/apps/port-config.yaml index 872ac29..33afbbd 100644 --- a/tagit/apps/port-config.yaml +++ b/tagit/apps/port-config.yaml @@ -37,6 +37,8 @@ ui: - SelectNone - SelectMulti - SelectRange + - AddTag + - EditTag - ShowHelp browser: maxcols: 8 @@ -45,9 +47,9 @@ ui: sidebar_left: - Menu - ShowDashboard - #- AddTag - #- EditTag - AddToken + - AddTag + - EditTag #- CreateGroup #- DissolveGroup - SelectAll @@ -94,9 +96,9 @@ ui: - SelectRange - SelectAdditive - SelectSubtractive - # tagging: - # - AddTag - # - EditTag + tagging: + - AddTag + - EditTag # - SetRank1 # - SetRank3 # - SetRank5 -- cgit v1.2.3 From cdd1dc960a3da5e73a86dd3ec5412417387c70d6 Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Wed, 25 Jan 2023 17:11:13 +0100 Subject: minor cleanup --- tagit/apps/desktop.py | 3 +++ 1 file changed, 3 insertions(+) (limited to 'tagit/apps') diff --git a/tagit/apps/desktop.py b/tagit/apps/desktop.py index 94acbf2..054002b 100644 --- a/tagit/apps/desktop.py +++ b/tagit/apps/desktop.py @@ -97,6 +97,9 @@ class TagitApp(App): # trigger startup operations self.root.on_startup() + # FIXME: mb/port + #def on_stop(self): + # self.root.session.storage.close() def main(argv): """Start the tagit GUI. Opens a window to browse images.""" -- cgit v1.2.3 From d531555fe3483fac7676aa634f3787e8eab9b67f Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Wed, 25 Jan 2023 17:31:10 +0100 Subject: grouping --- tagit/apps/port-config.yaml | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'tagit/apps') diff --git a/tagit/apps/port-config.yaml b/tagit/apps/port-config.yaml index 33afbbd..6b0b06d 100644 --- a/tagit/apps/port-config.yaml +++ b/tagit/apps/port-config.yaml @@ -20,6 +20,9 @@ ui: standalone: plane: browsing keytriggers: + - CreateGroup + - DissolveGroup + - AddToGroup - MoveCursorUp - MoveCursorDown - MoveCursorLeft @@ -39,6 +42,8 @@ ui: - SelectRange - AddTag - EditTag + - OpenGroup + #- RepresentGroup - ShowHelp browser: maxcols: 8 @@ -50,8 +55,8 @@ ui: - AddToken - AddTag - EditTag - #- CreateGroup - #- DissolveGroup + - CreateGroup + - DissolveGroup - SelectAll - SelectNone - SelectInvert @@ -76,10 +81,10 @@ ui: # clipboard: # - ClipboardCopy # - ClipboardPaste - # grouping: - # - CreateGroup - # - DissolveGroup - # - AddToGroup + grouping: + - CreateGroup + - DissolveGroup + - AddToGroup # - RepresentGroup # - RemoveFromGroup # root: -- cgit v1.2.3 From 4d0ce7fb62eaad3a1f705ec3c77744e3ebc96a9e Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Sun, 29 Jan 2023 11:31:16 +0100 Subject: session actions port --- tagit/apps/port-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'tagit/apps') diff --git a/tagit/apps/port-config.yaml b/tagit/apps/port-config.yaml index 6b0b06d..c4d47dd 100644 --- a/tagit/apps/port-config.yaml +++ b/tagit/apps/port-config.yaml @@ -87,8 +87,8 @@ ui: - AddToGroup # - RepresentGroup # - RemoveFromGroup - # root: - # - CloseSessionAndExit + root: + - LoadSession # search: # - ShowSelected # - RemoveSelected -- cgit v1.2.3 From 0fe45bb93b7a62afa7b8b04145607aca9e57af13 Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Sun, 29 Jan 2023 11:38:22 +0100 Subject: cleanup --- tagit/apps/port-config.yaml | 1 + 1 file changed, 1 insertion(+) (limited to 'tagit/apps') diff --git a/tagit/apps/port-config.yaml b/tagit/apps/port-config.yaml index c4d47dd..9d3d147 100644 --- a/tagit/apps/port-config.yaml +++ b/tagit/apps/port-config.yaml @@ -44,6 +44,7 @@ ui: - EditTag - OpenGroup #- RepresentGroup + - OpenExternal - ShowHelp browser: maxcols: 8 -- cgit v1.2.3 From bfb86bdd23c2fb7211636841545b4e003f07b643 Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Sun, 29 Jan 2023 12:01:11 +0100 Subject: geo tile --- tagit/apps/desktop.py | 2 ++ tagit/apps/port-schema.nt | 9 +++++++++ 2 files changed, 11 insertions(+) (limited to 'tagit/apps') diff --git a/tagit/apps/desktop.py b/tagit/apps/desktop.py index 054002b..89fdce2 100644 --- a/tagit/apps/desktop.py +++ b/tagit/apps/desktop.py @@ -66,6 +66,8 @@ class TagitApp(App): .set(ns.bse.filesize, 100) \ .set(ns.bse.tag, t_hello) \ .set(ns.bse.tag, t_foobar) \ + .set(ns.bse.latitude, 47.374444) \ + .set(ns.bse.longitude, 8.541111) \ .set(ns.bse.group, grp) n1 = store.node(ns.bsfs.File, URI('http://example.com/me/entity#02')) \ .set(ns.bse.filename, 'document.pdf') \ diff --git a/tagit/apps/port-schema.nt b/tagit/apps/port-schema.nt index 7317496..4f9a37c 100644 --- a/tagit/apps/port-schema.nt +++ b/tagit/apps/port-schema.nt @@ -68,4 +68,13 @@ bsg:represented_by rdfs:subClassOf bsfs:Predicate ; rdfs:range bsfs:File ; bsfs:unique "true"^^xsd:boolean . +bse:longitude rdfs:subClassOf bsfs:Predicate ; + rdfs:domain bsfs:File ; + rdfs:range xsd:integer ; + bsfs:unique "true"^^xsd:boolean . + +bse:latitude rdfs:subClassOf bsfs:Predicate ; + rdfs:domain bsfs:File ; + rdfs:range xsd:integer ; + bsfs:unique "true"^^xsd:boolean . -- cgit v1.2.3 From 57327d3df562736cad9e278e13beeb55bf3b52ed Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Sun, 29 Jan 2023 12:23:15 +0100 Subject: cleanup --- tagit/apps/port-config.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'tagit/apps') diff --git a/tagit/apps/port-config.yaml b/tagit/apps/port-config.yaml index 9d3d147..5e874ef 100644 --- a/tagit/apps/port-config.yaml +++ b/tagit/apps/port-config.yaml @@ -141,5 +141,6 @@ ui: Info: {} CursorTags: {} BrowserTags: {} - #Venn: {} + #SelectionTags: {} + #Geo: {} window_size: 1024x768 -- cgit v1.2.3 From c6856aa6fe2ad478dd5bc6285fb2544c150b2033 Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Thu, 2 Feb 2023 10:04:03 +0100 Subject: filter port --- tagit/apps/port-config.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'tagit/apps') diff --git a/tagit/apps/port-config.yaml b/tagit/apps/port-config.yaml index 5e874ef..a9907b7 100644 --- a/tagit/apps/port-config.yaml +++ b/tagit/apps/port-config.yaml @@ -40,10 +40,18 @@ ui: - SelectNone - SelectMulti - SelectRange + - AddToken + - GoBack + - GoForth + - SearchByAddressOnce + - SearchmodeSwitch - AddTag - EditTag - OpenGroup #- RepresentGroup + - Search + - ShowSelected + - RemoveSelected - OpenExternal - ShowHelp browser: -- cgit v1.2.3 From 7bb4c0f40c8666ef94a4dcf7fdf03a9058b64a8e Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Fri, 3 Feb 2023 17:22:05 +0100 Subject: minor changes: port data, misc actions --- tagit/apps/desktop.py | 37 ++----------------------------------- tagit/apps/port_data.py | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 35 deletions(-) create mode 100644 tagit/apps/port_data.py (limited to 'tagit/apps') diff --git a/tagit/apps/desktop.py b/tagit/apps/desktop.py index 89fdce2..7b21336 100644 --- a/tagit/apps/desktop.py +++ b/tagit/apps/desktop.py @@ -56,41 +56,8 @@ class TagitApp(App): store.migrate(required_schema) # FIXME: debug: add some data to the storage - t_hello = store.node(ns.bsfs.Tag, URI('http://example.com/me/tag#hello')).set(ns.bst.label, 'hello') - t_world = store.node(ns.bsfs.Tag, URI('http://example.com/me/tag#world')).set(ns.bst.label, 'world') - t_foobar = store.node(ns.bsfs.Tag, URI('http://example.com/me/tag#foobar')).set(ns.bst.label, 'foobar') - grp = store.node(ns.bsfs.Group, URI('http://example.com/me/group#1234')) - - n0 = store.node(ns.bsfs.File, URI('http://example.com/me/entity#01')) \ - .set(ns.bse.filename, 'textfile.t') \ - .set(ns.bse.filesize, 100) \ - .set(ns.bse.tag, t_hello) \ - .set(ns.bse.tag, t_foobar) \ - .set(ns.bse.latitude, 47.374444) \ - .set(ns.bse.longitude, 8.541111) \ - .set(ns.bse.group, grp) - n1 = store.node(ns.bsfs.File, URI('http://example.com/me/entity#02')) \ - .set(ns.bse.filename, 'document.pdf') \ - .set(ns.bse.filesize, 200) \ - .set(ns.bse.tag, t_world) \ - .set(ns.bse.tag, t_foobar) \ - .set(ns.bse.group, grp) - n2 = store.node(ns.bsfs.File, URI('http://example.com/me/entity#03')) \ - .set(ns.bse.filename, 'document.odt') \ - .set(ns.bse.filesize, 300) \ - .set(ns.bse.tag, t_world) - n3 = store.node(ns.bsfs.File, URI('http://example.com/me/entity#04')) \ - .set(ns.bse.filename, 'image.jpg') \ - .set(ns.bse.comment, 'some image') \ - .set(ns.bse.tag, t_hello) \ - .set(ns.bse.tag, t_foobar) \ - .set(ns.bse.group, grp) - n4 = store.node(ns.bsfs.File, URI('http://example.com/me/entity#05')) \ - .set(ns.bse.filename, 'image.png') \ - .set(ns.bse.comment, 'another image') \ - .set(ns.bse.tag, t_hello) - - grp.set(ns.bsg.represented_by, n0) + from . import port_data + port_data.add_port_data(store) # create widget return desktop.MainWindow(cfg, store, None) # FIXME: expects cfg, stor, log arguments diff --git a/tagit/apps/port_data.py b/tagit/apps/port_data.py new file mode 100644 index 0000000..1d9f4e6 --- /dev/null +++ b/tagit/apps/port_data.py @@ -0,0 +1,48 @@ +import os +from tagit.utils import ns +from tagit.utils.bsfs import URI + +def add_port_data(store): + # tags + t_hello = store.node(ns.bsfs.Tag, URI('http://example.com/me/tag#hello')) \ + .set(ns.bst.label, 'hello') + t_world = store.node(ns.bsfs.Tag, URI('http://example.com/me/tag#world')) \ + .set(ns.bst.label, 'world') + t_foobar = store.node(ns.bsfs.Tag, URI('http://example.com/me/tag#foobar')) \ + .set(ns.bst.label, 'foobar') + + # entities + n0 = store.node(ns.bsfs.File, URI('http://example.com/me/entity#01')) \ + .set(ns.bse.filename, 'textfile.t') \ + .set(ns.bse.filesize, 100) \ + .set(ns.bse.tag, t_hello) \ + .set(ns.bse.tag, t_foobar) \ + .set(ns.bse.latitude, 47.374444) \ + .set(ns.bse.longitude, 8.541111) + n1 = store.node(ns.bsfs.File, URI('http://example.com/me/entity#02')) \ + .set(ns.bse.filename, 'document.pdf') \ + .set(ns.bse.filesize, 200) \ + .set(ns.bse.tag, t_world) \ + .set(ns.bse.tag, t_foobar) + n2 = store.node(ns.bsfs.File, URI('http://example.com/me/entity#03')) \ + .set(ns.bse.filename, 'document.odt') \ + .set(ns.bse.filesize, 300) \ + .set(ns.bse.tag, t_world) + n3 = store.node(ns.bsfs.File, URI('http://example.com/me/entity#04')) \ + .set(ns.bse.filename, 'image.jpg') \ + .set(ns.bse.comment, 'some image') \ + .set(ns.bse.tag, t_hello) \ + .set(ns.bse.tag, t_foobar) + n4 = store.node(ns.bsfs.File, URI('http://example.com/me/entity#05')) \ + .set(ns.bse.filename, 'image.png') \ + .set(ns.bse.comment, 'another image') \ + .set(ns.bse.tag, t_hello) + + # groups + grp = store.node(ns.bsfs.Group, URI('http://example.com/me/group#1234')) + grp.set(ns.bsg.represented_by, n0) + n0.set(ns.bse.group, grp) + n1.set(ns.bse.group, grp) + n3.set(ns.bse.group, grp) + + -- cgit v1.2.3 From e4b98fb261c83588ca1151a1c3f8891965051b2f Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Fri, 3 Feb 2023 17:24:40 +0100 Subject: previews in browser --- tagit/apps/port-schema.nt | 35 ++++++++++++++++++--- tagit/apps/port_data.py | 79 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 110 insertions(+), 4 deletions(-) (limited to 'tagit/apps') diff --git a/tagit/apps/port-schema.nt b/tagit/apps/port-schema.nt index 4f9a37c..2b354e5 100644 --- a/tagit/apps/port-schema.nt +++ b/tagit/apps/port-schema.nt @@ -9,14 +9,18 @@ prefix bsfs: prefix bse: prefix bst: prefix bsg: +prefix bsp: # essential nodes bsfs:Entity rdfs:subClassOf bsfs:Node . +bsfs:Preview rdfs:subClassOf bsfs:Node . bsfs:File rdfs:subClassOf bsfs:Entity . bsfs:Tag rdfs:subClassOf bsfs:Node . bsfs:Group rdfs:subClassOf bsfs:Node . # common definitions +bsfs:Blob rdfs:subClassOf bsfs:Literal . +bsfs:URI rdfs:subClassOf bsfs:Literal . bsfs:Number rdfs:subClassOf bsfs:Literal . bsfs:Time rdfs:subClassOf bsfs:Literal . xsd:string rdfs:subClassOf bsfs:Literal . @@ -41,10 +45,9 @@ bse:mime rdfs:subClassOf bsfs:Predicate ; rdfs:range xsd:string ; bsfs:unique "true"^^xsd:boolean . -bse:orientation rdfs:subClassOf bsfs:Predicate ; # FIXME: shouldn't this be part of the preview? - rdfs:domain bsfs:File ; - rdfs:range xsd:integer ; - bsfs:unique "true"^^xsd:boolean . +bse:preview rdfs:subClassOf bsfs:Predicate ; + rdfs:domain bsfs:Entity ; + rdfs:range bsfs:Preview . bse:tag rdfs:subClassOf bsfs:Predicate ; rdfs:domain bsfs:File ; @@ -78,3 +81,27 @@ bse:latitude rdfs:subClassOf bsfs:Predicate ; rdfs:range xsd:integer ; bsfs:unique "true"^^xsd:boolean . + +## preview nodes + +bsp:width rdfs:subClassOf bsfs:Predicate ; + rdfs:domain bsfs:Preview ; + rdfs:range xsd:integer ; + bsfs:unique "true"^^xsd:boolean . + +bsp:height rdfs:subClassOf bsfs:Predicate ; + rdfs:domain bsfs:Preview ; + rdfs:range xsd:integer ; + bsfs:unique "true"^^xsd:boolean . + +bsp:orientation rdfs:subClassOf bsfs:Predicate ; + rdfs:domain bsfs:Preview ; + rdfs:range xsd:integer ; + bsfs:unique "true"^^xsd:boolean . + +bsp:asset rdfs:subClassOf bsfs:Predicate ; + rdfs:domain bsfs:Preview ; + rdfs:range xsd:string ; # FIXME: mb/port + bsfs:unique "true"^^xsd:boolean . + + diff --git a/tagit/apps/port_data.py b/tagit/apps/port_data.py index 1d9f4e6..56fb522 100644 --- a/tagit/apps/port_data.py +++ b/tagit/apps/port_data.py @@ -45,4 +45,83 @@ def add_port_data(store): n1.set(ns.bse.group, grp) n3.set(ns.bse.group, grp) + # previews + base = os.path.join(os.path.dirname(__file__), 'port-data') + n0.set(ns.bse.preview, + store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent01_w100_h100')) \ + .set(ns.bsp.width, 100) \ + .set(ns.bsp.height, 100) \ + .set(ns.bsp.orientation, 1) \ + .set(ns.bsp.asset, str(os.path.join(base, 'ent01_w100_h100.jpg'))) + ) + n0.set(ns.bse.preview, + store.node(ns.bsfs.Preview, str('http://example.com/me/preview#ent01_w400_h200')) \ + .set(ns.bsp.width, 200) \ + .set(ns.bsp.height, 400) \ + .set(ns.bsp.orientation, 1) \ + .set(ns.bsp.asset, str(os.path.join(base, 'ent01_w400_h200.jpg'))) + ) + n0.set(ns.bse.preview, + store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent01_w400_h400')) \ + .set(ns.bsp.width, 400) \ + .set(ns.bsp.height, 400) \ + .set(ns.bsp.orientation, 1) \ + .set(ns.bsp.asset, str(os.path.join(base, 'ent01_w400_h400.jpg'))) + ) + n1.set(ns.bse.preview, + store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent02_w100_h100')) \ + .set(ns.bsp.width, 100) \ + .set(ns.bsp.height, 100) \ + .set(ns.bsp.orientation, 1) \ + .set(ns.bsp.asset, str(os.path.join(base, 'ent02_w100_h100.jpg'))) + ) + n1.set(ns.bse.preview, + store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent02_w400_h200')) \ + .set(ns.bsp.width, 200) \ + .set(ns.bsp.height, 400) \ + .set(ns.bsp.orientation, 1) \ + .set(ns.bsp.asset, str(os.path.join(base, 'ent02_w400_h200.jpg'))) + ) + n2.set(ns.bse.preview, + store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent03_w100_h100')) \ + .set(ns.bsp.width, 100) \ + .set(ns.bsp.height, 100) \ + .set(ns.bsp.orientation, 1) \ + .set(ns.bsp.asset, str(os.path.join(base, 'ent03_w100_h100.jpg'))) + ) + n2.set(ns.bse.preview, + store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent03_w400_h200')) \ + .set(ns.bsp.width, 200) \ + .set(ns.bsp.height, 400) \ + .set(ns.bsp.orientation, 1) \ + .set(ns.bsp.asset, str(os.path.join(base, 'ent03_w400_h200.jpg'))) + ) + n3.set(ns.bse.preview, + store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent04_w100_h100')) \ + .set(ns.bsp.width, 100) \ + .set(ns.bsp.height, 100) \ + .set(ns.bsp.orientation, 1) \ + .set(ns.bsp.asset, str(os.path.join(base, 'ent04_w100_h100.png'))) + ) + n3.set(ns.bse.preview, + store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent04_w400_h200')) \ + .set(ns.bsp.width, 200) \ + .set(ns.bsp.height, 400) \ + .set(ns.bsp.orientation, 1) \ + .set(ns.bsp.asset, str(os.path.join(base, 'ent04_w400_h200.png'))) + ) + n4.set(ns.bse.preview, + store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent05_w100_h100')) \ + .set(ns.bsp.width, 100) \ + .set(ns.bsp.height, 100) \ + .set(ns.bsp.orientation, 1) \ + .set(ns.bsp.asset, str(os.path.join(base, 'ent05_w100_h100.jpg'))) + ) + n4.set(ns.bse.preview, + store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent05_w400_h200')) \ + .set(ns.bsp.width, 200) \ + .set(ns.bsp.height, 400) \ + .set(ns.bsp.orientation, 1) \ + .set(ns.bsp.asset, str(os.path.join(base, 'ent05_w400_h200.jpg'))) + ) -- cgit v1.2.3 From f39d577421bc2e4b041b5d22e788f4615ef78d77 Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Wed, 8 Feb 2023 21:16:55 +0100 Subject: adapt to upstream changes --- tagit/apps/port-schema.nt | 5 +++-- tagit/apps/port_data.py | 22 +++++++++++----------- 2 files changed, 14 insertions(+), 13 deletions(-) (limited to 'tagit/apps') diff --git a/tagit/apps/port-schema.nt b/tagit/apps/port-schema.nt index 2b354e5..7569052 100644 --- a/tagit/apps/port-schema.nt +++ b/tagit/apps/port-schema.nt @@ -19,10 +19,11 @@ bsfs:Tag rdfs:subClassOf bsfs:Node . bsfs:Group rdfs:subClassOf bsfs:Node . # common definitions -bsfs:Blob rdfs:subClassOf bsfs:Literal . +bsfs:BinaryBlob rdfs:subClassOf bsfs:Literal . bsfs:URI rdfs:subClassOf bsfs:Literal . bsfs:Number rdfs:subClassOf bsfs:Literal . bsfs:Time rdfs:subClassOf bsfs:Literal . +bsfs:JPEG rdfs:subClassOf bsfs:BinaryBlob . xsd:string rdfs:subClassOf bsfs:Literal . xsd:integer rdfs:subClassOf bsfs:Number . @@ -101,7 +102,7 @@ bsp:orientation rdfs:subClassOf bsfs:Predicate ; bsp:asset rdfs:subClassOf bsfs:Predicate ; rdfs:domain bsfs:Preview ; - rdfs:range xsd:string ; # FIXME: mb/port + rdfs:range bsfs:JPEG ; bsfs:unique "true"^^xsd:boolean . diff --git a/tagit/apps/port_data.py b/tagit/apps/port_data.py index 56fb522..cda2d63 100644 --- a/tagit/apps/port_data.py +++ b/tagit/apps/port_data.py @@ -52,76 +52,76 @@ def add_port_data(store): .set(ns.bsp.width, 100) \ .set(ns.bsp.height, 100) \ .set(ns.bsp.orientation, 1) \ - .set(ns.bsp.asset, str(os.path.join(base, 'ent01_w100_h100.jpg'))) + .set(ns.bsp.asset, open(os.path.join(base, 'ent01_w100_h100.jpg'), 'rb').read()) ) n0.set(ns.bse.preview, store.node(ns.bsfs.Preview, str('http://example.com/me/preview#ent01_w400_h200')) \ .set(ns.bsp.width, 200) \ .set(ns.bsp.height, 400) \ .set(ns.bsp.orientation, 1) \ - .set(ns.bsp.asset, str(os.path.join(base, 'ent01_w400_h200.jpg'))) + .set(ns.bsp.asset, open(os.path.join(base, 'ent01_w400_h200.jpg'), 'rb').read()) ) n0.set(ns.bse.preview, store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent01_w400_h400')) \ .set(ns.bsp.width, 400) \ .set(ns.bsp.height, 400) \ .set(ns.bsp.orientation, 1) \ - .set(ns.bsp.asset, str(os.path.join(base, 'ent01_w400_h400.jpg'))) + .set(ns.bsp.asset, open(os.path.join(base, 'ent01_w400_h400.jpg'), 'rb').read()) ) n1.set(ns.bse.preview, store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent02_w100_h100')) \ .set(ns.bsp.width, 100) \ .set(ns.bsp.height, 100) \ .set(ns.bsp.orientation, 1) \ - .set(ns.bsp.asset, str(os.path.join(base, 'ent02_w100_h100.jpg'))) + .set(ns.bsp.asset, open(os.path.join(base, 'ent02_w100_h100.jpg'), 'rb').read()) ) n1.set(ns.bse.preview, store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent02_w400_h200')) \ .set(ns.bsp.width, 200) \ .set(ns.bsp.height, 400) \ .set(ns.bsp.orientation, 1) \ - .set(ns.bsp.asset, str(os.path.join(base, 'ent02_w400_h200.jpg'))) + .set(ns.bsp.asset, open(os.path.join(base, 'ent02_w400_h200.jpg'), 'rb').read()) ) n2.set(ns.bse.preview, store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent03_w100_h100')) \ .set(ns.bsp.width, 100) \ .set(ns.bsp.height, 100) \ .set(ns.bsp.orientation, 1) \ - .set(ns.bsp.asset, str(os.path.join(base, 'ent03_w100_h100.jpg'))) + .set(ns.bsp.asset, open(os.path.join(base, 'ent03_w100_h100.jpg'), 'rb').read()) ) n2.set(ns.bse.preview, store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent03_w400_h200')) \ .set(ns.bsp.width, 200) \ .set(ns.bsp.height, 400) \ .set(ns.bsp.orientation, 1) \ - .set(ns.bsp.asset, str(os.path.join(base, 'ent03_w400_h200.jpg'))) + .set(ns.bsp.asset, open(os.path.join(base, 'ent03_w400_h200.jpg'), 'rb').read()) ) n3.set(ns.bse.preview, store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent04_w100_h100')) \ .set(ns.bsp.width, 100) \ .set(ns.bsp.height, 100) \ .set(ns.bsp.orientation, 1) \ - .set(ns.bsp.asset, str(os.path.join(base, 'ent04_w100_h100.png'))) + .set(ns.bsp.asset, open(os.path.join(base, 'ent04_w100_h100.png'), 'rb').read()) ) n3.set(ns.bse.preview, store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent04_w400_h200')) \ .set(ns.bsp.width, 200) \ .set(ns.bsp.height, 400) \ .set(ns.bsp.orientation, 1) \ - .set(ns.bsp.asset, str(os.path.join(base, 'ent04_w400_h200.png'))) + .set(ns.bsp.asset, open(os.path.join(base, 'ent04_w400_h200.png'), 'rb').read()) ) n4.set(ns.bse.preview, store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent05_w100_h100')) \ .set(ns.bsp.width, 100) \ .set(ns.bsp.height, 100) \ .set(ns.bsp.orientation, 1) \ - .set(ns.bsp.asset, str(os.path.join(base, 'ent05_w100_h100.jpg'))) + .set(ns.bsp.asset, open(os.path.join(base, 'ent05_w100_h100.jpg'), 'rb').read()) ) n4.set(ns.bse.preview, store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent05_w400_h200')) \ .set(ns.bsp.width, 200) \ .set(ns.bsp.height, 400) \ .set(ns.bsp.orientation, 1) \ - .set(ns.bsp.asset, str(os.path.join(base, 'ent05_w400_h200.jpg'))) + .set(ns.bsp.asset, open(os.path.join(base, 'ent05_w400_h200.jpg'), 'rb').read()) ) -- cgit v1.2.3 From 580caf6f5c9b795f9c38b9c970efce12d006ce1d Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Fri, 17 Feb 2023 08:25:44 +0100 Subject: New UI design * Moved style definitions to its own file (themes/default) * Updated the desktop.kv to the new UI design * Removed planes * Adjusted port config --- tagit/apps/port-config.yaml | 79 ++++++++++++++++++++++----------------------- 1 file changed, 38 insertions(+), 41 deletions(-) (limited to 'tagit/apps') diff --git a/tagit/apps/port-config.yaml b/tagit/apps/port-config.yaml index a9907b7..323d616 100644 --- a/tagit/apps/port-config.yaml +++ b/tagit/apps/port-config.yaml @@ -7,9 +7,9 @@ session: backend: SparqlStore: {} user: 'http://example.com/me' - script: + script: [] #- ShowBrowsing - - [AddToken, 'hello'] + #- [AddToken, 'hello'] storage: index: preview_size: @@ -18,8 +18,11 @@ storage: - 400 ui: standalone: - plane: browsing + window_size: [1024, 768] + maximize: True keytriggers: + #- ClipboardCopy + #- ClipboardPaste - CreateGroup - DissolveGroup - AddToGroup @@ -55,17 +58,37 @@ ui: - OpenExternal - ShowHelp browser: + cols: 4 + rows: 3 maxcols: 8 maxrows: 8 + #gridmode: 'list' buttondocks: + navigation_left: + - MoveCursorFirst + - PreviousPage + - ScrollUp + navigation_right: + - NextPage + - ScrollDown + - MoveCursorLast + filter: + - GoBack + - GoForth + status: + - ZoomIn + - ZoomOut + #- RotateLeft + #- DeleteObject + #- RotateRight sidebar_left: - Menu - - ShowDashboard - - AddToken - AddTag - EditTag - - CreateGroup - - DissolveGroup + - ShowSelected + - RemoveSelected + #- CreateGroup + #- DissolveGroup - SelectAll - SelectNone - SelectInvert @@ -74,16 +97,13 @@ ui: - SelectSingle - SelectMulti - SelectRange - - ShellDrop - filter: - - AddToken - - EditToken context: app: - - ShowSettings + - LoadSession - ShowHelp - ShowConsole - - ShowBrowsing + - ShellDrop + - ShowSettings browser: - ZoomIn - ZoomOut @@ -96,11 +116,11 @@ ui: - AddToGroup # - RepresentGroup # - RemoveFromGroup - root: - - LoadSession - # search: - # - ShowSelected - # - RemoveSelected + search: + - ShowSelected + - RemoveSelected + - GoForth + - GoBack select: - SelectAll - SelectNone @@ -127,28 +147,5 @@ ui: - camera - attributes tiledocks: - dashboard: {} - #Buttons: - # buttons: - # - ShowBrowsing - # - CreateSession - # - CreateTempSession - # - LoadSession - # - ReloadSession - # - ImportObjects - # - ItemExport - # - UpdateSelectedObjects - # - ShowHelp - # - ShowSettings - #Hints: {} - #LibSummary: {} - #Searchtree: {} - #TagHistogram: {} - #Tagcloud: {} sidebar_right: Info: {} - CursorTags: {} - BrowserTags: {} - #SelectionTags: {} - #Geo: {} - window_size: 1024x768 -- cgit v1.2.3 From 6889cff096d30e76cc5379ee68da42b555895eed Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Fri, 17 Feb 2023 08:32:27 +0100 Subject: info tile update and port data loading --- tagit/apps/port_data.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'tagit/apps') diff --git a/tagit/apps/port_data.py b/tagit/apps/port_data.py index cda2d63..fc11b4d 100644 --- a/tagit/apps/port_data.py +++ b/tagit/apps/port_data.py @@ -1,8 +1,20 @@ + +# standard imports import os +import pickle + +# tagit imports from tagit.utils import ns from tagit.utils.bsfs import URI +# load data def add_port_data(store): + with open(os.path.join(os.path.dirname(__file__), 'port-data.pkl'), 'rb') as ifile: + for triple in pickle.load(ifile): + store._backend._graph.add(triple) + + +def add_port_data2(store): # tags t_hello = store.node(ns.bsfs.Tag, URI('http://example.com/me/tag#hello')) \ .set(ns.bst.label, 'hello') -- cgit v1.2.3 From 141cfeade2750e0255ca010079421efce4abeca2 Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Sat, 4 Mar 2023 14:16:00 +0100 Subject: namespace updates --- tagit/apps/port-schema.nt | 81 +++++++++++++++++++++++++---------------------- tagit/apps/port_data.py | 40 +++++++++++------------ 2 files changed, 64 insertions(+), 57 deletions(-) (limited to 'tagit/apps') diff --git a/tagit/apps/port-schema.nt b/tagit/apps/port-schema.nt index 7569052..2e70cad 100644 --- a/tagit/apps/port-schema.nt +++ b/tagit/apps/port-schema.nt @@ -5,57 +5,59 @@ prefix xsd: prefix schema: # common bsfs prefixes -prefix bsfs: -prefix bse: -prefix bst: -prefix bsg: -prefix bsp: +prefix bsfs: +prefix bsl: +prefix bsn: +prefix bse: +prefix bst: +prefix bsg: +prefix bsp: # essential nodes -bsfs:Entity rdfs:subClassOf bsfs:Node . -bsfs:Preview rdfs:subClassOf bsfs:Node . -bsfs:File rdfs:subClassOf bsfs:Entity . -bsfs:Tag rdfs:subClassOf bsfs:Node . -bsfs:Group rdfs:subClassOf bsfs:Node . +bsn:Entity rdfs:subClassOf bsfs:Node . +bsn:Preview rdfs:subClassOf bsfs:Node . +bsn:Tag rdfs:subClassOf bsfs:Node . +bsn:Group rdfs:subClassOf bsfs:Node . # common definitions -bsfs:BinaryBlob rdfs:subClassOf bsfs:Literal . -bsfs:URI rdfs:subClassOf bsfs:Literal . -bsfs:Number rdfs:subClassOf bsfs:Literal . -bsfs:Time rdfs:subClassOf bsfs:Literal . -bsfs:JPEG rdfs:subClassOf bsfs:BinaryBlob . +bsl:BinaryBlob rdfs:subClassOf bsfs:Literal . +bsl:URI rdfs:subClassOf bsfs:Literal . +bsl:Number rdfs:subClassOf bsfs:Literal . +bsl:Time rdfs:subClassOf bsfs:Literal . + rdfs:subClassOf bsl:BinaryBlob . xsd:string rdfs:subClassOf bsfs:Literal . -xsd:integer rdfs:subClassOf bsfs:Number . +xsd:integer rdfs:subClassOf bsl:Number . +xsd:float rdfs:subClassOf bsl:Number . bse:filename rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsfs:File ; + rdfs:domain bsn:Entity ; rdfs:range xsd:string ; rdfs:label "File name"^^xsd:string ; schema:description "Filename of entity in some filesystem."^^xsd:string ; bsfs:unique "true"^^xsd:boolean . bse:filesize rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsfs:File ; + rdfs:domain bsn:Entity ; rdfs:range xsd:integer ; rdfs:label "File size"^^xsd:string ; schema:description "File size of entity in some filesystem."^^xsd:string ; bsfs:unique "true"^^xsd:boolean . bse:mime rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsfs:File ; + rdfs:domain bsn:Entity ; rdfs:range xsd:string ; bsfs:unique "true"^^xsd:boolean . bse:preview rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsfs:Entity ; - rdfs:range bsfs:Preview . + rdfs:domain bsn:Entity ; + rdfs:range bsn:Preview . bse:tag rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsfs:File ; - rdfs:range bsfs:Tag . + rdfs:domain bsn:Entity ; + rdfs:range bsn:Tag . bst:label rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsfs:Tag ; + rdfs:domain bsn:Tag ; rdfs:range xsd:string ; bsfs:unique "true"^^xsd:boolean . @@ -64,45 +66,50 @@ bse:comment rdfs:subClassOf bsfs:Predicate ; rdfs:range xsd:string . bse:group rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsfs:Entity ; - rdfs:range bsfs:Group . + rdfs:domain bsn:Entity ; + rdfs:range bsn:Group . + +bsg:label rdfs:subClassOf bsfs:Predicate ; + rdfs:domain bsn:Group ; + rdfs:range xsd:string ; + bsfs:unique "true"^^xsd:boolean . bsg:represented_by rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsfs:Group ; - rdfs:range bsfs:File ; + rdfs:domain bsn:Group ; + rdfs:range bsn:Entity ; bsfs:unique "true"^^xsd:boolean . bse:longitude rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsfs:File ; - rdfs:range xsd:integer ; + rdfs:domain bsn:Entity ; + rdfs:range xsd:float ; bsfs:unique "true"^^xsd:boolean . bse:latitude rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsfs:File ; - rdfs:range xsd:integer ; + rdfs:domain bsn:Entity ; + rdfs:range xsd:float ; bsfs:unique "true"^^xsd:boolean . ## preview nodes bsp:width rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsfs:Preview ; + rdfs:domain bsn:Preview ; rdfs:range xsd:integer ; bsfs:unique "true"^^xsd:boolean . bsp:height rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsfs:Preview ; + rdfs:domain bsn:Preview ; rdfs:range xsd:integer ; bsfs:unique "true"^^xsd:boolean . bsp:orientation rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsfs:Preview ; + rdfs:domain bsn:Preview ; rdfs:range xsd:integer ; bsfs:unique "true"^^xsd:boolean . bsp:asset rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsfs:Preview ; - rdfs:range bsfs:JPEG ; + rdfs:domain bsn:Preview ; + rdfs:range ; bsfs:unique "true"^^xsd:boolean . diff --git a/tagit/apps/port_data.py b/tagit/apps/port_data.py index fc11b4d..11faaef 100644 --- a/tagit/apps/port_data.py +++ b/tagit/apps/port_data.py @@ -16,42 +16,42 @@ def add_port_data(store): def add_port_data2(store): # tags - t_hello = store.node(ns.bsfs.Tag, URI('http://example.com/me/tag#hello')) \ + t_hello = store.node(ns.bsn.Tag, URI('http://example.com/me/tag#hello')) \ .set(ns.bst.label, 'hello') - t_world = store.node(ns.bsfs.Tag, URI('http://example.com/me/tag#world')) \ + t_world = store.node(ns.bsn.Tag, URI('http://example.com/me/tag#world')) \ .set(ns.bst.label, 'world') - t_foobar = store.node(ns.bsfs.Tag, URI('http://example.com/me/tag#foobar')) \ + t_foobar = store.node(ns.bsn.Tag, URI('http://example.com/me/tag#foobar')) \ .set(ns.bst.label, 'foobar') # entities - n0 = store.node(ns.bsfs.File, URI('http://example.com/me/entity#01')) \ + n0 = store.node(ns.bsn.Entity, URI('http://example.com/me/entity#01')) \ .set(ns.bse.filename, 'textfile.t') \ .set(ns.bse.filesize, 100) \ .set(ns.bse.tag, t_hello) \ .set(ns.bse.tag, t_foobar) \ .set(ns.bse.latitude, 47.374444) \ .set(ns.bse.longitude, 8.541111) - n1 = store.node(ns.bsfs.File, URI('http://example.com/me/entity#02')) \ + n1 = store.node(ns.bsn.Entity, URI('http://example.com/me/entity#02')) \ .set(ns.bse.filename, 'document.pdf') \ .set(ns.bse.filesize, 200) \ .set(ns.bse.tag, t_world) \ .set(ns.bse.tag, t_foobar) - n2 = store.node(ns.bsfs.File, URI('http://example.com/me/entity#03')) \ + n2 = store.node(ns.bsn.Entity, URI('http://example.com/me/entity#03')) \ .set(ns.bse.filename, 'document.odt') \ .set(ns.bse.filesize, 300) \ .set(ns.bse.tag, t_world) - n3 = store.node(ns.bsfs.File, URI('http://example.com/me/entity#04')) \ + n3 = store.node(ns.bsn.Entity, URI('http://example.com/me/entity#04')) \ .set(ns.bse.filename, 'image.jpg') \ .set(ns.bse.comment, 'some image') \ .set(ns.bse.tag, t_hello) \ .set(ns.bse.tag, t_foobar) - n4 = store.node(ns.bsfs.File, URI('http://example.com/me/entity#05')) \ + n4 = store.node(ns.bsn.Entity, URI('http://example.com/me/entity#05')) \ .set(ns.bse.filename, 'image.png') \ .set(ns.bse.comment, 'another image') \ .set(ns.bse.tag, t_hello) # groups - grp = store.node(ns.bsfs.Group, URI('http://example.com/me/group#1234')) + grp = store.node(ns.bsn.Group, URI('http://example.com/me/group#1234')) grp.set(ns.bsg.represented_by, n0) n0.set(ns.bse.group, grp) n1.set(ns.bse.group, grp) @@ -60,77 +60,77 @@ def add_port_data2(store): # previews base = os.path.join(os.path.dirname(__file__), 'port-data') n0.set(ns.bse.preview, - store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent01_w100_h100')) \ + store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent01_w100_h100')) \ .set(ns.bsp.width, 100) \ .set(ns.bsp.height, 100) \ .set(ns.bsp.orientation, 1) \ .set(ns.bsp.asset, open(os.path.join(base, 'ent01_w100_h100.jpg'), 'rb').read()) ) n0.set(ns.bse.preview, - store.node(ns.bsfs.Preview, str('http://example.com/me/preview#ent01_w400_h200')) \ + store.node(ns.bsn.Preview, str('http://example.com/me/preview#ent01_w400_h200')) \ .set(ns.bsp.width, 200) \ .set(ns.bsp.height, 400) \ .set(ns.bsp.orientation, 1) \ .set(ns.bsp.asset, open(os.path.join(base, 'ent01_w400_h200.jpg'), 'rb').read()) ) n0.set(ns.bse.preview, - store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent01_w400_h400')) \ + store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent01_w400_h400')) \ .set(ns.bsp.width, 400) \ .set(ns.bsp.height, 400) \ .set(ns.bsp.orientation, 1) \ .set(ns.bsp.asset, open(os.path.join(base, 'ent01_w400_h400.jpg'), 'rb').read()) ) n1.set(ns.bse.preview, - store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent02_w100_h100')) \ + store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent02_w100_h100')) \ .set(ns.bsp.width, 100) \ .set(ns.bsp.height, 100) \ .set(ns.bsp.orientation, 1) \ .set(ns.bsp.asset, open(os.path.join(base, 'ent02_w100_h100.jpg'), 'rb').read()) ) n1.set(ns.bse.preview, - store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent02_w400_h200')) \ + store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent02_w400_h200')) \ .set(ns.bsp.width, 200) \ .set(ns.bsp.height, 400) \ .set(ns.bsp.orientation, 1) \ .set(ns.bsp.asset, open(os.path.join(base, 'ent02_w400_h200.jpg'), 'rb').read()) ) n2.set(ns.bse.preview, - store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent03_w100_h100')) \ + store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent03_w100_h100')) \ .set(ns.bsp.width, 100) \ .set(ns.bsp.height, 100) \ .set(ns.bsp.orientation, 1) \ .set(ns.bsp.asset, open(os.path.join(base, 'ent03_w100_h100.jpg'), 'rb').read()) ) n2.set(ns.bse.preview, - store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent03_w400_h200')) \ + store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent03_w400_h200')) \ .set(ns.bsp.width, 200) \ .set(ns.bsp.height, 400) \ .set(ns.bsp.orientation, 1) \ .set(ns.bsp.asset, open(os.path.join(base, 'ent03_w400_h200.jpg'), 'rb').read()) ) n3.set(ns.bse.preview, - store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent04_w100_h100')) \ + store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent04_w100_h100')) \ .set(ns.bsp.width, 100) \ .set(ns.bsp.height, 100) \ .set(ns.bsp.orientation, 1) \ .set(ns.bsp.asset, open(os.path.join(base, 'ent04_w100_h100.png'), 'rb').read()) ) n3.set(ns.bse.preview, - store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent04_w400_h200')) \ + store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent04_w400_h200')) \ .set(ns.bsp.width, 200) \ .set(ns.bsp.height, 400) \ .set(ns.bsp.orientation, 1) \ .set(ns.bsp.asset, open(os.path.join(base, 'ent04_w400_h200.png'), 'rb').read()) ) n4.set(ns.bse.preview, - store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent05_w100_h100')) \ + store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent05_w100_h100')) \ .set(ns.bsp.width, 100) \ .set(ns.bsp.height, 100) \ .set(ns.bsp.orientation, 1) \ .set(ns.bsp.asset, open(os.path.join(base, 'ent05_w100_h100.jpg'), 'rb').read()) ) n4.set(ns.bse.preview, - store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent05_w400_h200')) \ + store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent05_w400_h200')) \ .set(ns.bsp.width, 200) \ .set(ns.bsp.height, 400) \ .set(ns.bsp.orientation, 1) \ -- cgit v1.2.3 From 02002942a3ea0172538ce3e9a636ea4a089ba870 Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Sat, 4 Mar 2023 15:19:43 +0100 Subject: integrate tagit script into bsfs.apps --- tagit/apps/__init__.py | 43 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) (limited to 'tagit/apps') diff --git a/tagit/apps/__init__.py b/tagit/apps/__init__.py index 4c64128..6b4986c 100644 --- a/tagit/apps/__init__.py +++ b/tagit/apps/__init__.py @@ -1,10 +1,51 @@ -""" +#!/usr/bin/env python3 +"""The tagit applications. Part of the tagit module. A copy of the license is provided with the project. Author: Matthias Baumgartner, 2022 """ +# standard imports +import argparse +import typing + +# tagit imports +import tagit + # inner-module imports from .desktop import main as desktop +# exports +__all__: typing.Sequence[str] = ( + 'desktop', + ) + +# config +apps = { + 'desktop' : desktop, + } + + +## code ## + +def main(argv=None): + """The BSFS browser, focused on image tagging.""" + parser = argparse.ArgumentParser(description=main.__doc__, prog='tagit') + # version + parser.add_argument('--version', action='version', + version='%(prog)s {}.{}.{}'.format(*tuple(tagit.version_info))) # pylint: disable=C0209 + # application selection + parser.add_argument('app', choices=apps.keys(), nargs='?', default='desktop', + help='Select the application to run.') + # dangling args + parser.add_argument('rest', nargs=argparse.REMAINDER) + # parse + args = parser.parse_args() + # run application + apps[args.app](args.rest) + +if __name__ == '__main__': + import sys + main(sys.argv[1:]) + ## EOF ## -- cgit v1.2.3 From b5746fd9d49ade49ea77f10010bbabe8da8656d0 Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Sat, 4 Mar 2023 15:24:18 +0100 Subject: minor fixes --- tagit/apps/__init__.py | 1 + 1 file changed, 1 insertion(+) (limited to 'tagit/apps') diff --git a/tagit/apps/__init__.py b/tagit/apps/__init__.py index 6b4986c..84d0bf1 100644 --- a/tagit/apps/__init__.py +++ b/tagit/apps/__init__.py @@ -18,6 +18,7 @@ from .desktop import main as desktop # exports __all__: typing.Sequence[str] = ( 'desktop', + 'main', ) # config -- cgit v1.2.3 From 9bdf4d104a299577634061bcf698d1c9e5708cce Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Sat, 4 Mar 2023 15:58:43 +0100 Subject: config loading --- tagit/apps/desktop.py | 8 +-- tagit/apps/port-config.yaml | 151 -------------------------------------------- 2 files changed, 3 insertions(+), 156 deletions(-) delete mode 100644 tagit/apps/port-config.yaml (limited to 'tagit/apps') diff --git a/tagit/apps/desktop.py b/tagit/apps/desktop.py index 7b21336..b02c8f1 100644 --- a/tagit/apps/desktop.py +++ b/tagit/apps/desktop.py @@ -36,12 +36,10 @@ class TagitApp(App): # set title self.title = 'tagit v2.0' - # FIXME: mb/port - # load essentials + # load config + from tagit.config.loader import load_settings, TAGITRC + cfg = load_settings(TAGITRC, 0) - #from tagit.config.loader import load_settings, TAGITRC - #cfg = load_settings(TAGITRC, 0) - cfg = config.Settings.Open(os.path.join(os.path.dirname(__file__), 'port-config.yaml')) # FIXME: mb/port/bsfs # open BSFS storage diff --git a/tagit/apps/port-config.yaml b/tagit/apps/port-config.yaml deleted file mode 100644 index 323d616..0000000 --- a/tagit/apps/port-config.yaml +++ /dev/null @@ -1,151 +0,0 @@ -session: - first_start: false - paths: - searchlog: ~/.tagit.log - bsfs: # FIXME: mb/port: rename to storage, but that space is currently polluted - Graph: - backend: - SparqlStore: {} - user: 'http://example.com/me' - script: [] - #- ShowBrowsing - #- [AddToken, 'hello'] -storage: - index: - preview_size: - - 50 - - 200 - - 400 -ui: - standalone: - window_size: [1024, 768] - maximize: True - keytriggers: - #- ClipboardCopy - #- ClipboardPaste - - CreateGroup - - DissolveGroup - - AddToGroup - - MoveCursorUp - - MoveCursorDown - - MoveCursorLeft - - MoveCursorRight - - MoveCursorLast - - MoveCursorFirst - - NextPage - - PreviousPage - - ScrollDown - - ScrollUp - - ZoomIn - - ZoomOut - - Select - - SelectAll - - SelectNone - - SelectMulti - - SelectRange - - AddToken - - GoBack - - GoForth - - SearchByAddressOnce - - SearchmodeSwitch - - AddTag - - EditTag - - OpenGroup - #- RepresentGroup - - Search - - ShowSelected - - RemoveSelected - - OpenExternal - - ShowHelp - browser: - cols: 4 - rows: 3 - maxcols: 8 - maxrows: 8 - #gridmode: 'list' - buttondocks: - navigation_left: - - MoveCursorFirst - - PreviousPage - - ScrollUp - navigation_right: - - NextPage - - ScrollDown - - MoveCursorLast - filter: - - GoBack - - GoForth - status: - - ZoomIn - - ZoomOut - #- RotateLeft - #- DeleteObject - #- RotateRight - sidebar_left: - - Menu - - AddTag - - EditTag - - ShowSelected - - RemoveSelected - #- CreateGroup - #- DissolveGroup - - SelectAll - - SelectNone - - SelectInvert - - SelectAdditive - - SelectSubtractive - - SelectSingle - - SelectMulti - - SelectRange - context: - app: - - LoadSession - - ShowHelp - - ShowConsole - - ShellDrop - - ShowSettings - browser: - - ZoomIn - - ZoomOut - # clipboard: - # - ClipboardCopy - # - ClipboardPaste - grouping: - - CreateGroup - - DissolveGroup - - AddToGroup - # - RepresentGroup - # - RemoveFromGroup - search: - - ShowSelected - - RemoveSelected - - GoForth - - GoBack - select: - - SelectAll - - SelectNone - - SelectInvert - - SelectSingle - - SelectMulti - - SelectRange - - SelectAdditive - - SelectSubtractive - tagging: - - AddTag - - EditTag - # - SetRank1 - # - SetRank3 - # - SetRank5 - search: - sort_blacklist: - - entity - - flash - - latitude - - longitude - - mime - - author - - camera - - attributes - tiledocks: - sidebar_right: - Info: {} -- cgit v1.2.3 From 01a4c2fc4bcbcce26c29dc9771dedeef5256156b Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Sat, 4 Mar 2023 16:00:46 +0100 Subject: schema requirements checking --- tagit/apps/desktop.py | 17 +++---- tagit/apps/port-schema.nt | 115 ---------------------------------------------- 2 files changed, 6 insertions(+), 126 deletions(-) delete mode 100644 tagit/apps/port-schema.nt (limited to 'tagit/apps') diff --git a/tagit/apps/desktop.py b/tagit/apps/desktop.py index b02c8f1..d934649 100644 --- a/tagit/apps/desktop.py +++ b/tagit/apps/desktop.py @@ -10,6 +10,7 @@ import typing # kivy imports from kivy.app import App +from kivy.resources import resource_find from kivy.uix.settings import SettingsWithSidebar # tagit imports @@ -41,21 +42,15 @@ class TagitApp(App): cfg = load_settings(TAGITRC, 0) - # FIXME: mb/port/bsfs # open BSFS storage store = bsfs.Open(cfg('session', 'bsfs')) # check storage schema - # FIXME: Move somewhere else?! - with open(os.path.join(os.path.dirname(__file__), 'port-schema.nt'), 'rt') as ifile: + with open(resource_find('required_schema.nt'), 'rt') as ifile: required_schema = bsfs.schema.from_string(ifile.read()) - # FIXME: Since the store isn't persistent, we migrate to the required one here. - #if not required_schema <= store.schema: - # raise Exception('') - store.migrate(required_schema) - - # FIXME: debug: add some data to the storage - from . import port_data - port_data.add_port_data(store) + if not required_schema.consistent_with(store.schema): + raise Exception("The storage's schema is incompatible with tagit's requirements") + if not required_schema <= store.schema: + store.migrate(required_schema | store.schema) # create widget return desktop.MainWindow(cfg, store, None) # FIXME: expects cfg, stor, log arguments diff --git a/tagit/apps/port-schema.nt b/tagit/apps/port-schema.nt deleted file mode 100644 index 2e70cad..0000000 --- a/tagit/apps/port-schema.nt +++ /dev/null @@ -1,115 +0,0 @@ -# common external prefixes -prefix rdf: -prefix rdfs: -prefix xsd: -prefix schema: - -# common bsfs prefixes -prefix bsfs: -prefix bsl: -prefix bsn: -prefix bse: -prefix bst: -prefix bsg: -prefix bsp: - -# essential nodes -bsn:Entity rdfs:subClassOf bsfs:Node . -bsn:Preview rdfs:subClassOf bsfs:Node . -bsn:Tag rdfs:subClassOf bsfs:Node . -bsn:Group rdfs:subClassOf bsfs:Node . - -# common definitions -bsl:BinaryBlob rdfs:subClassOf bsfs:Literal . -bsl:URI rdfs:subClassOf bsfs:Literal . -bsl:Number rdfs:subClassOf bsfs:Literal . -bsl:Time rdfs:subClassOf bsfs:Literal . - rdfs:subClassOf bsl:BinaryBlob . -xsd:string rdfs:subClassOf bsfs:Literal . -xsd:integer rdfs:subClassOf bsl:Number . -xsd:float rdfs:subClassOf bsl:Number . - -bse:filename rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsn:Entity ; - rdfs:range xsd:string ; - rdfs:label "File name"^^xsd:string ; - schema:description "Filename of entity in some filesystem."^^xsd:string ; - bsfs:unique "true"^^xsd:boolean . - -bse:filesize rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsn:Entity ; - rdfs:range xsd:integer ; - rdfs:label "File size"^^xsd:string ; - schema:description "File size of entity in some filesystem."^^xsd:string ; - bsfs:unique "true"^^xsd:boolean . - -bse:mime rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsn:Entity ; - rdfs:range xsd:string ; - bsfs:unique "true"^^xsd:boolean . - -bse:preview rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsn:Entity ; - rdfs:range bsn:Preview . - -bse:tag rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsn:Entity ; - rdfs:range bsn:Tag . - -bst:label rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsn:Tag ; - rdfs:range xsd:string ; - bsfs:unique "true"^^xsd:boolean . - -bse:comment rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsfs:Node ; - rdfs:range xsd:string . - -bse:group rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsn:Entity ; - rdfs:range bsn:Group . - -bsg:label rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsn:Group ; - rdfs:range xsd:string ; - bsfs:unique "true"^^xsd:boolean . - -bsg:represented_by rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsn:Group ; - rdfs:range bsn:Entity ; - bsfs:unique "true"^^xsd:boolean . - -bse:longitude rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsn:Entity ; - rdfs:range xsd:float ; - bsfs:unique "true"^^xsd:boolean . - -bse:latitude rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsn:Entity ; - rdfs:range xsd:float ; - bsfs:unique "true"^^xsd:boolean . - - -## preview nodes - -bsp:width rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsn:Preview ; - rdfs:range xsd:integer ; - bsfs:unique "true"^^xsd:boolean . - -bsp:height rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsn:Preview ; - rdfs:range xsd:integer ; - bsfs:unique "true"^^xsd:boolean . - -bsp:orientation rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsn:Preview ; - rdfs:range xsd:integer ; - bsfs:unique "true"^^xsd:boolean . - -bsp:asset rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsn:Preview ; - rdfs:range ; - bsfs:unique "true"^^xsd:boolean . - - -- cgit v1.2.3 From 123477ea13f061e4c4898303726811f7965c91dd Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Sat, 4 Mar 2023 16:01:35 +0100 Subject: misc minor fixes --- tagit/apps/desktop.py | 7 ++----- tagit/apps/port_data.py | 2 ++ 2 files changed, 4 insertions(+), 5 deletions(-) (limited to 'tagit/apps') diff --git a/tagit/apps/desktop.py b/tagit/apps/desktop.py index d934649..b64bf7e 100644 --- a/tagit/apps/desktop.py +++ b/tagit/apps/desktop.py @@ -35,7 +35,7 @@ class TagitApp(App): self.settings_cls = SettingsWithSidebar # set title - self.title = 'tagit v2.0' + self.title = 'tagit v0.23.03' # load config from tagit.config.loader import load_settings, TAGITRC @@ -53,15 +53,12 @@ class TagitApp(App): store.migrate(required_schema | store.schema) # create widget - return desktop.MainWindow(cfg, store, None) # FIXME: expects cfg, stor, log arguments + return desktop.MainWindow(cfg, store, None) # FIXME: mb/port: expects log arguments def on_start(self): # trigger startup operations self.root.on_startup() - # FIXME: mb/port - #def on_stop(self): - # self.root.session.storage.close() def main(argv): """Start the tagit GUI. Opens a window to browse images.""" diff --git a/tagit/apps/port_data.py b/tagit/apps/port_data.py index 11faaef..2e4161b 100644 --- a/tagit/apps/port_data.py +++ b/tagit/apps/port_data.py @@ -9,6 +9,8 @@ from tagit.utils.bsfs import URI # load data def add_port_data(store): + with open(os.path.join(os.path.dirname(__file__), 'port-schema.pkl'), 'rb') as ifile: + store._backend._schema = pickle.load(ifile) with open(os.path.join(os.path.dirname(__file__), 'port-data.pkl'), 'rb') as ifile: for triple in pickle.load(ifile): store._backend._graph.add(triple) -- cgit v1.2.3 From cc28b964c0379b9d5da2320a387c0c01e69f0ec1 Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Sat, 4 Mar 2023 16:15:44 +0100 Subject: load data hook --- tagit/apps/desktop.py | 23 +++++++- tagit/apps/port_data.py | 141 ------------------------------------------------ 2 files changed, 21 insertions(+), 143 deletions(-) delete mode 100644 tagit/apps/port_data.py (limited to 'tagit/apps') diff --git a/tagit/apps/desktop.py b/tagit/apps/desktop.py index b64bf7e..913f922 100644 --- a/tagit/apps/desktop.py +++ b/tagit/apps/desktop.py @@ -27,6 +27,26 @@ __all__: typing.Sequence[str] = ( ## code ## +def load_data_hook(cfg, store): + """Data loading hook to circumvent non-persistent storage.""" + import pickle + import os + # fetch data_hook config flags + schema_path = cfg('session', 'data_hook', 'schema') + triples_path = cfg('session', 'data_hook', 'triples') + # load data if present + if os.path.exists(schema_path) and os.path.exists(triples_path): + with open(schema_path, 'rb') as ifile: + store._backend._schema = pickle.load(ifile) + with open(triples_path, 'rb') as ifile: + for triple in pickle.load(ifile): + store._backend._graph.add(triple) + return store + +config.declare(('session', 'data_hook', 'schema'), config.String(), '') +config.declare(('session', 'data_hook', 'triples'), config.String(), '') + + class TagitApp(App): """The tagit main application.""" @@ -41,9 +61,8 @@ class TagitApp(App): from tagit.config.loader import load_settings, TAGITRC cfg = load_settings(TAGITRC, 0) - # open BSFS storage - store = bsfs.Open(cfg('session', 'bsfs')) + store = load_data_hook(cfg, bsfs.Open(cfg('session', 'bsfs'))) # FIXME: mb/port: data hook # check storage schema with open(resource_find('required_schema.nt'), 'rt') as ifile: required_schema = bsfs.schema.from_string(ifile.read()) diff --git a/tagit/apps/port_data.py b/tagit/apps/port_data.py deleted file mode 100644 index 2e4161b..0000000 --- a/tagit/apps/port_data.py +++ /dev/null @@ -1,141 +0,0 @@ - -# standard imports -import os -import pickle - -# tagit imports -from tagit.utils import ns -from tagit.utils.bsfs import URI - -# load data -def add_port_data(store): - with open(os.path.join(os.path.dirname(__file__), 'port-schema.pkl'), 'rb') as ifile: - store._backend._schema = pickle.load(ifile) - with open(os.path.join(os.path.dirname(__file__), 'port-data.pkl'), 'rb') as ifile: - for triple in pickle.load(ifile): - store._backend._graph.add(triple) - - -def add_port_data2(store): - # tags - t_hello = store.node(ns.bsn.Tag, URI('http://example.com/me/tag#hello')) \ - .set(ns.bst.label, 'hello') - t_world = store.node(ns.bsn.Tag, URI('http://example.com/me/tag#world')) \ - .set(ns.bst.label, 'world') - t_foobar = store.node(ns.bsn.Tag, URI('http://example.com/me/tag#foobar')) \ - .set(ns.bst.label, 'foobar') - - # entities - n0 = store.node(ns.bsn.Entity, URI('http://example.com/me/entity#01')) \ - .set(ns.bse.filename, 'textfile.t') \ - .set(ns.bse.filesize, 100) \ - .set(ns.bse.tag, t_hello) \ - .set(ns.bse.tag, t_foobar) \ - .set(ns.bse.latitude, 47.374444) \ - .set(ns.bse.longitude, 8.541111) - n1 = store.node(ns.bsn.Entity, URI('http://example.com/me/entity#02')) \ - .set(ns.bse.filename, 'document.pdf') \ - .set(ns.bse.filesize, 200) \ - .set(ns.bse.tag, t_world) \ - .set(ns.bse.tag, t_foobar) - n2 = store.node(ns.bsn.Entity, URI('http://example.com/me/entity#03')) \ - .set(ns.bse.filename, 'document.odt') \ - .set(ns.bse.filesize, 300) \ - .set(ns.bse.tag, t_world) - n3 = store.node(ns.bsn.Entity, URI('http://example.com/me/entity#04')) \ - .set(ns.bse.filename, 'image.jpg') \ - .set(ns.bse.comment, 'some image') \ - .set(ns.bse.tag, t_hello) \ - .set(ns.bse.tag, t_foobar) - n4 = store.node(ns.bsn.Entity, URI('http://example.com/me/entity#05')) \ - .set(ns.bse.filename, 'image.png') \ - .set(ns.bse.comment, 'another image') \ - .set(ns.bse.tag, t_hello) - - # groups - grp = store.node(ns.bsn.Group, URI('http://example.com/me/group#1234')) - grp.set(ns.bsg.represented_by, n0) - n0.set(ns.bse.group, grp) - n1.set(ns.bse.group, grp) - n3.set(ns.bse.group, grp) - - # previews - base = os.path.join(os.path.dirname(__file__), 'port-data') - n0.set(ns.bse.preview, - store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent01_w100_h100')) \ - .set(ns.bsp.width, 100) \ - .set(ns.bsp.height, 100) \ - .set(ns.bsp.orientation, 1) \ - .set(ns.bsp.asset, open(os.path.join(base, 'ent01_w100_h100.jpg'), 'rb').read()) - ) - n0.set(ns.bse.preview, - store.node(ns.bsn.Preview, str('http://example.com/me/preview#ent01_w400_h200')) \ - .set(ns.bsp.width, 200) \ - .set(ns.bsp.height, 400) \ - .set(ns.bsp.orientation, 1) \ - .set(ns.bsp.asset, open(os.path.join(base, 'ent01_w400_h200.jpg'), 'rb').read()) - ) - n0.set(ns.bse.preview, - store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent01_w400_h400')) \ - .set(ns.bsp.width, 400) \ - .set(ns.bsp.height, 400) \ - .set(ns.bsp.orientation, 1) \ - .set(ns.bsp.asset, open(os.path.join(base, 'ent01_w400_h400.jpg'), 'rb').read()) - ) - n1.set(ns.bse.preview, - store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent02_w100_h100')) \ - .set(ns.bsp.width, 100) \ - .set(ns.bsp.height, 100) \ - .set(ns.bsp.orientation, 1) \ - .set(ns.bsp.asset, open(os.path.join(base, 'ent02_w100_h100.jpg'), 'rb').read()) - ) - n1.set(ns.bse.preview, - store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent02_w400_h200')) \ - .set(ns.bsp.width, 200) \ - .set(ns.bsp.height, 400) \ - .set(ns.bsp.orientation, 1) \ - .set(ns.bsp.asset, open(os.path.join(base, 'ent02_w400_h200.jpg'), 'rb').read()) - ) - n2.set(ns.bse.preview, - store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent03_w100_h100')) \ - .set(ns.bsp.width, 100) \ - .set(ns.bsp.height, 100) \ - .set(ns.bsp.orientation, 1) \ - .set(ns.bsp.asset, open(os.path.join(base, 'ent03_w100_h100.jpg'), 'rb').read()) - ) - n2.set(ns.bse.preview, - store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent03_w400_h200')) \ - .set(ns.bsp.width, 200) \ - .set(ns.bsp.height, 400) \ - .set(ns.bsp.orientation, 1) \ - .set(ns.bsp.asset, open(os.path.join(base, 'ent03_w400_h200.jpg'), 'rb').read()) - ) - n3.set(ns.bse.preview, - store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent04_w100_h100')) \ - .set(ns.bsp.width, 100) \ - .set(ns.bsp.height, 100) \ - .set(ns.bsp.orientation, 1) \ - .set(ns.bsp.asset, open(os.path.join(base, 'ent04_w100_h100.png'), 'rb').read()) - ) - n3.set(ns.bse.preview, - store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent04_w400_h200')) \ - .set(ns.bsp.width, 200) \ - .set(ns.bsp.height, 400) \ - .set(ns.bsp.orientation, 1) \ - .set(ns.bsp.asset, open(os.path.join(base, 'ent04_w400_h200.png'), 'rb').read()) - ) - n4.set(ns.bse.preview, - store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent05_w100_h100')) \ - .set(ns.bsp.width, 100) \ - .set(ns.bsp.height, 100) \ - .set(ns.bsp.orientation, 1) \ - .set(ns.bsp.asset, open(os.path.join(base, 'ent05_w100_h100.jpg'), 'rb').read()) - ) - n4.set(ns.bse.preview, - store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent05_w400_h200')) \ - .set(ns.bsp.width, 200) \ - .set(ns.bsp.height, 400) \ - .set(ns.bsp.orientation, 1) \ - .set(ns.bsp.asset, open(os.path.join(base, 'ent05_w400_h200.jpg'), 'rb').read()) - ) - -- cgit v1.2.3 From 5e88d395dee651175a277092c712249e3898a7d8 Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Sun, 5 Mar 2023 19:16:22 +0100 Subject: build fixes --- tagit/apps/desktop.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'tagit/apps') diff --git a/tagit/apps/desktop.py b/tagit/apps/desktop.py index 913f922..149bf30 100644 --- a/tagit/apps/desktop.py +++ b/tagit/apps/desktop.py @@ -32,8 +32,8 @@ def load_data_hook(cfg, store): import pickle import os # fetch data_hook config flags - schema_path = cfg('session', 'data_hook', 'schema') - triples_path = cfg('session', 'data_hook', 'triples') + schema_path = os.path.expanduser(cfg('session', 'data_hook', 'schema')) + triples_path = os.path.expanduser(cfg('session', 'data_hook', 'triples')) # load data if present if os.path.exists(schema_path) and os.path.exists(triples_path): with open(schema_path, 'rb') as ifile: -- cgit v1.2.3