dtool-lookup-gui

Graphical user interface for dtool and dserver written in Python and GTK3.

https://github.com/livmats/dtool-lookup-gui

Science Score: 62.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    3 of 7 committers (42.9%) from academic institutions
  • Institutional organization owner
    Organization livmats has institutional domain (www.livmats.uni-freiburg.de)
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.3%) to scientific vocabulary

Keywords

data-provenance dserver dtool fair-data gtk3 pyinstaller research-data-management
Last synced: 6 months ago · JSON representation ·

Repository

Graphical user interface for dtool and dserver written in Python and GTK3.

Basic Info
Statistics
  • Stars: 8
  • Watchers: 3
  • Forks: 2
  • Open Issues: 45
  • Releases: 20
Topics
data-provenance dserver dtool fair-data gtk3 pyinstaller research-data-management
Created over 5 years ago · Last pushed 7 months ago
Metadata Files
Readme Changelog Contributing License Citation

README.rst

dtool-lookup-gui
================

.. image:: data/icons/22x22/dtool_logo.png
    :height: 20px
    :target: https://github.com/livMatS/dtool-lookup-gui
    :alt: dtool-lookup-gui icon
.. image:: https://img.shields.io/github/actions/workflow/status/livMatS/dtool-lookup-gui/build-and-publish.yml?branch=master
    :target: https://github.com/livMatS/dtool-lookup-gui/actions/workflows/build-and-publish.yml
    :alt: GitHub Build Workflow Status
.. image:: https://img.shields.io/github/actions/workflow/status/livMatS/dtool-lookup-gui/test.yml?branch=master&label=tests
    :alt: GitHub Tests Workflow Status
    :target: https://github.com/livMatS/dtool-lookup-gui/actions/workflows/test.yml
.. image:: https://img.shields.io/github/v/release/livMatS/dtool-lookup-gui
    :target: https://github.com/livMatS/dtool-lookup-gui/releases/latest
    :alt: GitHub release (latest by date)
.. image:: https://badge.fury.io/py/dtool-lookup-gui.svg
    :target: https://badge.fury.io/py/dtool-lookup-gui
    :alt: PyPI package

dtool-lookup-gui is a graphical user interface for dtool_, the dtool-lookup-server_, the dtool-lookup-server-direct-mongo-plugin_ and the
dtool-lookup-server-dependency-graph-plugin_ written in Python_ and GTK_.

.. image:: data/screenshots/screenshot1.png

Quick start
-----------

Just download the pre-packaged binaries of the `latest release`_.

If the binaries won't run out-of-the-box on your system, continue below.

OS-specific notes
-----------------

Windows
^^^^^^^

The Windows executable comes in two variants, as a single portable file and an installer.

macOS
^^^^^

The app bundle requires MacOS 14.7 at least.
After downloading the `dmg` Apple Disk Image of the `latest release`_
and copying `dtool-lookup-gui` over to your `Applications` folder,
*macOS* will likely complain about `dtool-lookup-gui` being damaged
and refuse to execute it. This is due to the fact that we are no
Apple-verified developers. To run the app anyway, open a terminal and
remove Apple's quarantine attribute from the app with

.. code:: bash

    sudo xattr -rds com.apple.quarantine /Applications/dtool-lookup-gui.app

That should enable you to launch the app as usual. Another option is to
call

.. code:: bash

    /Applications/dtool-lookup-gui.app/Contents/MacOS/dtool-lookup-gui

directly from the command line.

Linux
^^^^^

After downloading and extracting the tar.gz-packaged Linux build, you may
run the bundled scripts :code:`set_launcher_icon.sh` and :code:`soft_link_launcher.sh`
subsequently to add this launcher icon to your desktop environment:

.. image:: data/screenshots/screenshot-ubuntu-launcher.png

This has been tested on Ubuntu 20.04 and GNOME 3.36.8.

The packaged Linux build will fail to launch out-of-the box under Wayland. 
An error like this might arise:

.. code::

   GLib-GIO-ERROR **: 11:26:50.444: Settings schema 'org.gnome.settings-daemon.plugins.xsettings' does not contain a key named 'antialiasing'
   Trace/breakpoint trap (core dumped)

If unsure which display server is in use, check with

.. code:: bash

   echo $XDG_SESSION_TYPE
   
This will likely output either :code:`x11` or :code:`wayland`.
If you are using Wayland, launch the app with environment variable 
:code:`GDK_BACKEND=x11` set, e.g. via

.. code:: bash

    GDK_BACKEND=x11 dtool-gui


Use
---

Searching
^^^^^^^^^

The app searches the index of a dtool-lookup-server. How exactly the index is searched depends on the implementation of the search plugin on the server side.
In the case of the reference search plugin, the `dtool-lookup-server-search-plugin-mongo`_, a word in the search field will search for exactly that word within all string fields stored in the underlying database.
This, of course, includes the content of the `README.yml` file attached to a dataset, but also matches against contents of the manifest (such as file names of the packaged items) and the basic set of  administrative metadata, namely the fields

.. code:: json

    {
        "base_uri": "s3://test-bucket",
        "created_at": 1683797360.056,
        "creator_username": "jotelha",
        "dtoolcore_version": "3.18.2",
        "frozen_at": 1683797362.855,
        "name": "test_dataset_2",
        "number_of_items": 1,
        "size_in_bytes": 19347,
        "tags": [],
        "type": "dataset",
        "uri": "s3://test-bucket/26785c2a-e8f8-46bf-82a1-cec92dbdf28f",
        "uuid": "26785c2a-e8f8-46bf-82a1-cec92dbdf28f"
    }

The `dtool-lookup-server-search-plugin-mongo`_ README offers more information on the exact search mechanism.

If the `dtool-lookup-server-direct-mongo-plugin`_ is installed on the server side, very specific search queries that make use of operators from the MongoDB language are possible.
Enclose a MongoDB language query in curly brackets ``{...}`` and all fields in double quotes ``"..."`` to use this direct Mongo query functionality.

The query

.. code:: json

    {
       "creator_username": {
            "$in": ["anna", "bert"]
        },
        "readme.description": {
            "$regex": "toluene"
        }
    }

searches for all datasets created by users with the either the local user name "anna" or "bert" on the machine of dataset creation and with the word "toluene" included in the README field "description".
The regular expression operator can of course formulate more sophisticated criteria than a plain text search on the content of a specific field.

The `direct query`_ section of the `dtool-lookup-server-direct-mongo-plugin`_ README lists a few
other query examples.

Development
-----------

Please read the `contributing guidelines`_ before diving into the development process.

Requirements
^^^^^^^^^^^^

This application requires Gtk_ 3 and GtkSourceView_ 4.

On Ubuntu (20.04),

.. code:: bash

    apt install -y gir1.2-gtksource-4

suffices to to install these dependencies from the standard system package repositories.

On recent macOS (>= 10.15) use homebrew, 

.. code:: bash

   brew install gtksourceview4 gnome-icon-theme

On earlie macOs, `MacPorts `_ allows the installation of `gtksourceview4`

.. code:: bash
   
   sudo port -v selfupdate
   sudo port install xorg-server
   sudo port install gtksourceview4 py-gobject3 py-pip py-numpy py-scipy
   sudo port install adwaita-icon-theme

   sudo port select --set python python310
   sudo port select --set pip pip310

   mkdir -p ~/venv
   python -m venv --system-site-packages ~/venv/python-3.10
   source ~/venv/python-3.10/bin/activate
   
   pip install --upgrade pip
   pip install wheel
   pip install dtool-lookup-gui dtool-s3 dtool-smb


This has been tested on macOS 10.13.6.

On Windows, use `mingw64/msys2 `_ and refer to the
`Using GTK from MSYS2 packages `_
on the GTK project's pages.

Also refer to the build workflows `.github/workflows/build-on-[linux|macos|windows].yml` within this repository 
for understanding the requirements for the different systems.

On Windows WSL, install

    apt install gcc cmake python3-dev libcairo2-dev gir1.2-gtksource-4 libgirepository1.0-dev

to allow a development installation of the GUI as described below.

Installation
^^^^^^^^^^^^

For a locally editable install, clone this repository with

.. code:: console

    git clone git+https://github.com/livMatS/dtool-lookup-gui.git

change into the repository directory,

.. code:: bash

    cd dtool-lookup-gui

create and activate a clean virtual environment,

.. code:: bash

    python -m venv venv
    source venv/bin/activate
    pip install --upgrade pip

and perform an editable install with

.. code:: bash

   pip install -e .

Also run

.. code:: bash

   glib-compile-schemas .

from within subdirectory ``dtool_lookup_gui``. Otherwise, GUI launch fails with

.. code::

   gi.repository.GLib.Error: g-file-error-quark: Failed to open file “/path/to/repository/dtool_lookup_gui/gschemas.compiled”: open() failed: No such file or directory (4)


Running the GUI
---------------

After installation, run the GUI with:

.. code:: bash

   dtool-gui

Note that when you run the GUI for the first time, you will need to configure
the URL of the lookup and the authentication server as well as provide a
username and a password. To do this, click on the "Burger" symbol and select
*Settings*.


Pinned requirements
^^^^^^^^^^^^^^^^^^^

``requirements.in`` contains unpinned dependencies. ``requirements.txt`` with pinned versions has been auto-generated with

.. code:: bash

  pip install pip-tools
  pip-compile --resolver=backtracking requirements.in > requirements.txt

GTK debugging
^^^^^^^^^^^^^

After

.. code-block:: bash

  gsettings set org.gtk.Settings.Debug enable-inspector-keybinding true

use CTRL-SHIFT-D during execution to display the GTK inspector for interactive debugging.

GUI design
^^^^^^^^^^

The GUI uses custom Gtk widgets. To edit the the XML UI definition files with
Glade_, add the directory ``glade/catalog`` to `Extra Catalog & Template paths`
within Glade's preferences dialog.

Running unit tests
^^^^^^^^^^^^^^^^^^

Running the unit tests requires `pytest` and `pytest-asyncio`. Then, run all tests from repository root with `pytest`.

Funding
-------

This development has received funding from the Deutsche Forschungsgemeinschaft within the Cluster of Excellence livMatS_.

.. _contributing guidelines: CONTRIBUTING.md

.. _direct query: https://github.com/livMatS/dtool-lookup-server-direct-mongo-plugin#direct-query

.. _dtool: https://github.com/jic-dtool/dtool

.. _dtool-lookup-server: https://github.com/jic-dtool/dtool-lookup-server

.. _dtool-lookup-server-dependency-graph-plugin: https://github.com/livMatS/dtool-lookup-server-dependency-graph-plugin

.. _dtool-lookup-server-direct-mongo-plugin: https://github.com/livMatS/dtool-lookup-server-direct-mongo-plugin

.. _dtool-lookup-server-search-plugin-mongo: https://github.com/jic-dtool/dtool-lookup-server-search-plugin-mongo

.. _Glade: https://glade.gnome.org/

.. _GTK: https://www.gtk.org/

.. _GtkSourceView: https://wiki.gnome.org/Projects/GtkSourceView

.. _pip: https://pip.pypa.io/en/stable/

.. _Python: https://www.python.org/

.. _setuptools: https://setuptools.readthedocs.io/en/latest/

.. _livMatS: https://www.livmats.uni-freiburg.de/en

.. _latest release: https://github.com/livMatS/dtool-lookup-gui/releases/latest

Owner

  • Name: livMatS - Living, Adaptive and Energy-autonomous Materials Systems
  • Login: livMatS
  • Kind: organization
  • Location: Germany

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: Hörmann
  given-names: Johannes Laurin
  orcid: 0000-0001-5867-695X
- family-names: Pastewka
  given-names: Lars
  orcid: 0000-0001-8351-7336
- family-names: Vazhappilly 
  given-names: Ashwin
  orcid: 0009-0009-6725-4367
- family-names: Bobby
  given-names: Evin Joseph
  orcid: 0009-0001-8698-0446
- family-names: Sanner
  given-names: Antoine
  orcid: 0000-0002-7019-2103 
- family-names: Nöhring
  given-names: Wolfram
  orcid: 0000-0003-4203-755X

title: dtool-lookup-gui

GitHub Events

Total
  • Create event: 286
  • Release event: 5
  • Issues event: 27
  • Delete event: 301
  • Issue comment event: 258
  • Push event: 205
  • Pull request event: 622
Last Year
  • Create event: 286
  • Release event: 5
  • Issues event: 27
  • Delete event: 301
  • Issue comment event: 258
  • Push event: 205
  • Pull request event: 622

Committers

Last synced: almost 3 years ago

All Time
  • Total Commits: 564
  • Total Committers: 7
  • Avg Commits per committer: 80.571
  • Development Distribution Score (DDS): 0.479
Top Committers
Name Email Commits
Johannes Laurin Hoermann j****n@i****e 294
Lars Pastewka l****a@i****e 182
Johannes Laurin Hoermann j****n@g****m 57
dependabot[bot] 4****]@u****m 23
Antoine Sanner 4****K@u****m 5
AntoineSIMTEK a****r@i****e 2
wgnoehring W****g@g****e 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 60
  • Total pull requests: 831
  • Average time to close issues: 9 months
  • Average time to close pull requests: 16 days
  • Total issue authors: 8
  • Total pull request authors: 5
  • Average comments per issue: 1.23
  • Average comments per pull request: 0.59
  • Merged pull requests: 276
  • Bot issues: 0
  • Bot pull requests: 756
Past Year
  • Issues: 14
  • Pull requests: 681
  • Average time to close issues: 14 days
  • Average time to close pull requests: 5 days
  • Issue authors: 1
  • Pull request authors: 2
  • Average comments per issue: 0.43
  • Average comments per pull request: 0.64
  • Merged pull requests: 177
  • Bot issues: 0
  • Bot pull requests: 659
Top Authors
Issue Authors
  • jotelha (46)
  • pastewka (6)
  • sannant (2)
  • ashdriod (2)
  • mtelewa (1)
  • mcoywalter (1)
  • chwenzel (1)
  • wgnoehring (1)
Pull Request Authors
  • dependabot[bot] (756)
  • jotelha (60)
  • ashdriod (10)
  • sannant (3)
  • pastewka (2)
Top Labels
Issue Labels
enhancement (11) bug (8)
Pull Request Labels
dependencies (752) python (713) github_actions (39) duplicate (2)

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 39 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 1
  • Total versions: 20
  • Total maintainers: 2
pypi.org: dtool-lookup-gui

Graphical user interface for dtool

  • Documentation: https://dtool-lookup-gui.readthedocs.io/
  • License: # LICENSE dtool-lookup-gui makes all its materials publicly available under [open source][osi] licenses. Documents and data are made available under a CC-BY-SA license. Software are made available under an MIT license. ## Documents and data Documentation and graphics in this repository are licensed under a [Creative Commons Attribution-ShareAlike 4.0 International License][cc-by-sa]. ## Software Software provided are made available under the [OSI][osi]-approved [MIT license][mit-license]. [cc-by-sa]: https://creativecommons.org/licenses/by-sa/4.0/ [mit-license]: https://opensource.org/licenses/mit-license.html [osi]: https://opensource.org
  • Latest release: 0.7.1
    published about 1 year ago
  • Versions: 20
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 39 Last month
Rankings
Dependent packages count: 10.1%
Stargazers count: 18.5%
Forks count: 19.1%
Average: 21.3%
Dependent repos count: 21.5%
Downloads: 37.0%
Maintainers (2)
Last synced: 6 months ago

Dependencies

pyinstaller/mingw64_requirements.txt pypi
  • click-plugins ==1.1.1
  • dtool-cli ==0.7.1
  • dtool-config ==0.4.1
  • dtool-create ==0.23.4
  • dtool-http ==0.5.1
  • dtool-info ==0.16.2
  • dtool-lookup-api ==0.5.0
  • dtool-s3 ==0.14.1
  • dtool-smb ==0.1.0
  • dtool-symlink ==0.3.1
  • dtoolcore ==3.18.2
  • gbulb ==0.6.3
  • pyasn1 ==0.4.8
  • pysmb ==1.2.8
  • urllib3 ==1.26.9
requirements.in pypi
  • PyGObject *
  • aiohttp *
  • dtool-create *
  • dtool-info *
  • dtool-lookup-api *
  • dtool-s3 *
  • dtool-smb *
  • dtoolcore *
  • gbulb *
  • jwt *
  • markupsafe ==2.0.1
  • pyyaml *
  • ruamel.yaml *
  • scipy *
requirements.txt pypi
  • aiohttp ==3.8.1
  • aiosignal ==1.2.0
  • asgiref ==3.5.0
  • async-timeout ==4.0.2
  • attrs ==21.4.0
  • boto3 ==1.21.22
  • botocore ==1.24.22
  • certifi ==2021.10.8
  • cffi ==1.15.0
  • charset-normalizer ==2.0.12
  • click ==8.0.4
  • click-plugins ==1.1.1
  • cryptography ==36.0.2
  • dtool-cli ==0.7.1
  • dtool-create ==0.23.4
  • dtool-http ==0.5.1
  • dtool-info ==0.16.2
  • dtool-lookup-api ==0.5.0
  • dtool-s3 ==0.14.1
  • dtool-smb ==0.1.0
  • dtool-symlink ==0.3.1
  • dtoolcore ==3.18.2
  • frozenlist ==1.3.0
  • gbulb ==0.6.3
  • idna ==3.3
  • jinja2 ==3.0.3
  • jmespath ==1.0.0
  • jwt ==1.3.1
  • markupsafe ==2.0.1
  • multidict ==6.0.2
  • numpy ==1.22.3
  • packaging ==21.3
  • pyasn1 ==0.4.8
  • pycairo ==1.21.0
  • pycparser ==2.21
  • pygments ==2.11.2
  • pygobject ==3.42.0
  • pyparsing ==3.0.7
  • pysmb ==1.2.7
  • python-dateutil ==2.8.2
  • pyyaml ==6.0
  • requests ==2.27.1
  • ruamel-yaml ==0.17.21
  • ruamel-yaml-clib ==0.2.6
  • s3transfer ==0.5.2
  • scipy ==1.8.0
  • six ==1.16.0
  • urllib3 ==1.26.9
  • yarl ==1.7.2
setup.py pypi
  • PyGObject >=3.36
  • aiohttp >=3.6
  • dtool-create >=0.23.4
  • dtool-info >=0.16.2
  • dtool-lookup-api >=0.5
  • dtoolcore >=3.17
  • gbulb >=0.6
  • jwt *
  • numpy *
  • pyyaml >=5.3
  • ruamel.yaml *
  • scipy >=1.5
.github/workflows/build-and-publish.yml actions
  • actions/checkout v3 composite
  • actions/download-artifact v3 composite
  • actions/setup-python v4 composite
  • battila7/get-version-action v2 composite
  • pypa/gh-action-pypi-publish v1.6.4 composite
  • softprops/action-gh-release v1 composite
.github/workflows/build-installer-on-windows.yml actions
  • actions/checkout v3 composite
  • actions/upload-artifact v3 composite
  • battila7/get-version-action v2 composite
  • msys2/setup-msys2 v2 composite
.github/workflows/build-on-macos.yml actions
  • actions/checkout v3 composite
  • actions/upload-artifact v3 composite
  • battila7/get-version-action v2 composite
.github/workflows/build-on-ubuntu.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
  • actions/upload-artifact v3 composite
  • battila7/get-version-action v2 composite
.github/workflows/build-on-windows.yml actions
  • actions/checkout v3 composite
  • actions/upload-artifact v3 composite
  • battila7/get-version-action v2 composite
  • msys2/setup-msys2 v2 composite
.github/workflows/test.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
docs/requirements.txt pypi
  • myst-parser ==2.0.0
  • sphinx ==7.2.6
  • sphinx-rtd-theme ==2.0.0rc2