A QGIS integration plugin for Kart repositories

Overview

QGIS Kart Plugin

A plugin to work with Kart repositories

License: GPL v3

Installation

The Kart plugin is available in the QGIS Plugins server. To install the latest version, use the QGIS Plugin Manager and search for the Kart plugin.

Alternatively, you can get the latest version from the release page

Open the QGIS Plugin manager and install the downloaded zip file.

This plugin is compatible with QGIS 3.4 or later.

Usage

Usage documentation can be found here

For developers

For Kart development see the Contributing Notes.

Comments
  • Option to display spatial filter extents on the map

    Option to display spatial filter extents on the map

    If a user has spatial filter(s) set, would be good to be able to (optionally) see the borders of the filters on the map.

    IMO ideally they wouldn't appear as layers, but maybe more like a decoration (ie: layout extents, grids, etc)? Maybe @hamishcampbell has other ideas?

    opened by rcoup 9
  • Fix support for ssh clones of kart repos.

    Fix support for ssh clones of kart repos.

    The plugin currently fails to recognize SSH paths to hosted repositories.

    This change moves the responsibility for determining the users intended clone source into the clone widget. This also fixes handling of paths already prefixed with file:// and tightens up the checking of http/https paths.

    opened by hamishcampbell 8
  • Github Setup for bug reporting & contributing

    Github Setup for bug reporting & contributing

    • [x] Issue template — make sure we're getting the right info/OS/versions/logs/context/etc to help figure issues out quickly.
    • [x] Contributing doc — how to get up and running with the plugin for development (as opposed to "install from here"), conventions, etc.
    documentation 
    opened by rcoup 7
  • Improve installation of kart and/or configuration of plugin and kart executables

    Improve installation of kart and/or configuration of plugin and kart executables

    The plugin should robustly handle the case of Kart not installed or misconfigured.

    Eventually, it might perform installation itself, so they user can do the full setup from QGIS

    enhancement 
    opened by volaya 6
  • UI minor changes rollup

    UI minor changes rollup

    Minor UI changes (mostly wording) rollup issue

    • [x] Working tree → Working copy everywhere

    CleanShot 2021-11-23 at 10 57 33

    • [x] heading → “Your Kart installation location is not configured:”
    • [x] stray "."

    CleanShot 2021-11-23 at 10 52 40

    • [x] pane titlebar → "Kart Repositories"

    • [x] hint text → "Tip: right-click on items for available actions"

    • [x] remove logo/heading (~ideally move logo to pane title~ not a thing)

    • [x] add a space between repo title & branch name

    • [x] can we collapse the repository path in the middle when the panel isn't wide enough and the repo doesn't have a title set? I think Qt supports this via elidedText. ie:

      /Users/rcoup/code/kart-foss4g-2021/workshop/first [mybranch]  # now
      ~/code/kart-foss4g-2021/workshop/first [mybranch]             # use ~ for os.path.expanduser('~') prefix
      ~/code/.../workshop/first [mybranch]                          # collapse in the middle
      

    CleanShot 2021-11-23 at 11 25 21

    • [x] Remove this repository: icon → minus-circle-outline
    • [x] Show log: icon → history
    • [x] Show working tree changes: icon → compare
    • [x] Discard working tree changes: icon → undo
    • [x] Commit working tree changes: icon → content-save-outline
    • [x] Switch branch: icon → swap-horizontal
    • [x] Apply patch: icon → file-import-outline
    • [x] Menu order/wording
      • -break-
      • Show log...
      • Show working copy changes...
      • Discard working copy changes
      • Commit working copy changes...
      • Switch branch...
      • Merge into {current-branch}...
      • -break-
      • Pull...
      • Push...
      • -break-
      • Import layer to repository...
      • Apply patch...
      • -break-
      • Refresh
      • Properties...
      • Remove this repository

    CleanShot 2021-11-23 at 12 02 17

    • [x] Matching icon and wording changes from the repository context menu
    • [x] Menu ordering:
      • Add to QGIS project
      • -break-
      • Show log...
      • Show working copy changes for dataset...
      • Discard working copy changes for dataset
      • Commit working copy changes for dataset...
      • -break-
      • Remove from repository

    Diff Viewer dialog

    • [x] Restore old version
    • [x] Restore new version
    • [x] Don't show restore new version when displaying working-tree changes
    • [x] Project layers should be the default for "additional layers"
    • [x] Map extent needs some padding so vertices don't end up drawn on the edges of the map
    • [x] Swipe cursor should change from hand to resize when the mouse hovers over the black line
    • [x] ~Scrolling to zoom seems really rough~ nevermind, is my machine
    • [x] [status message] Working copy has been updated.

    Layer context menu

    • [x] ~Can we add the Kart icon to make it stand out a bit in the menu?~
    • [x] Wording/icons need to match the other menus
    opened by rcoup 5
  • Add option to remove layer from repository

    Add option to remove layer from repository

    @hamishcampbell @rcoup Not sure how this is done in Kart, since I could not find a command for it.

    Should the plugin just delete the table in the repo database and then commit?

    opened by volaya 5
  • Problem creating a repository

    Problem creating a repository

    Hi!

    Firstable, contragratulations for the plugin! Its a great contribution for the QGIS users community.

    I´m testing the plugin guided by documentation, and when I use the create new repository option, QGIS report me the error message "The specified folder already exists"

    image

    The folder is empty and I don't "init" it before.

    Meanwhile, if I create a new repository with command terminal and add it using the Kart plugin there isn´t any problem.

    This is the information about by environment.

    Kart Plugin version 1.0.1 QGIS version 3.20.2-Odense Operating system Windows 10 10.0.19041 Kart version Kart v0.10.7, Copyright (c) Kart Contributors » GDAL v3.3.2; PROJ v8.1.1 » PyGit2 v1.7.0; Libgit2 v1.3.0; Git v2.29.2.windows.1 » SQLAlchemy v1.4.11; pysqlite3 v2.6.0/v3.31.1; SpatiaLite v5.0.0; Libpq v11.0.9 » SpatialIndex v1.9.3

    Thx

    bug 
    opened by sigdeletras 4
  • New install in QGIS gives Python error UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 591: ordinal not in range(128)

    New install in QGIS gives Python error UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 591: ordinal not in range(128)

    Entirely possible I'm missing something obvious here, but I just tried installing the QGIS Kart plugin, and I'm getting the following error in the Python error log when going to Plugins -> Kart -> About....

    2021-12-20T11:37:56     WARNING    Traceback (most recent call last):
                  File "/Users/leighhunt/Library/Application Support/QGIS/QGIS3/profiles/default/python/plugins/kart/plugin.py", line 72, in openAbout
                  pluginVersion = self.pluginVersion()
                  File "/Users/leighhunt/Library/Application Support/QGIS/QGIS3/profiles/default/python/plugins/kart/plugin.py", line 66, in pluginVersion
                  config.read(path)
                  File "/Applications/QGIS.app/Contents/MacOS/../Resources/python/configparser.py", line 697, in read
                  self._read(fp, filename)
                  File "/Applications/QGIS.app/Contents/MacOS/../Resources/python/configparser.py", line 1017, in _read
                  for lineno, line in enumerate(fp, start=1):
                  File "/Applications/QGIS.app/Contents/MacOS/lib/python3.8/encodings/ascii.py", line 26, in decode
                  return codecs.ascii_decode(input, self.errors)[0]
                 UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 591: ordinal not in range(128)
    

    I then went to Plugins -> Kart -> Settings... and set Kart executable to /usr/local/bin/kart and get the following error in the Kart log:

    2021-12-20T11:38:01     INFO    Command: Applications/Kart.app/Contents/MacOS/kart_cli --version
    2021-12-20T11:38:01     CRITICAL    [Errno 2] No such file or directory: 'Applications/Kart.app/Contents/MacOS/kart_cli'
    

    Further info:

    QGIS Plugins log:

    2021-12-20T11:44:50     INFO    Loaded QuickMapServices (package: quick_map_services)
    2021-12-20T11:44:51     INFO    Loaded Relief Visualization Toolbox (package: rvt-qgis)
    2021-12-20T11:44:53     INFO    Loaded Processing (package: processing)
    2021-12-20T11:44:53     INFO    Loaded DB Manager (package: db_manager)
    2021-12-20T11:44:53     INFO    Loaded MetaSearch Catalog Client (package: MetaSearch)
    2021-12-20T11:45:09     INFO    Loaded Kart (package: kart)
    
    which kart
    /usr/local/bin/kart
    
    kart --version
    Kart v0.10.7, Copyright (c) Kart Contributors
    » GDAL v3.3.2; PROJ v6.3.0
    » PyGit2 v1.7.0; Libgit2 v1.3.0; Git v2.33.GIT
    » SQLAlchemy v1.4.11; pysqlite3 v2.6.0/v3.31.1; SpatiaLite v5.0.1; Libpq v14.0.1
    » SpatialIndex v1.9.3
    
    kart_cli
    zsh: command not found: kart_cli
    

    Kart was installed using homebrew, OS: MacOSX Monterey, on MacBook Air with M1 chip. QGIS version 3.18.1-Zürich

    More verbose error message when attempting to see Kart Settings again:

    An error has occurred while executing Python code: 
    
    UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 591: ordinal not in range(128) 
    Traceback (most recent call last):
      File "/Users/leighhunt/Library/Application Support/QGIS/QGIS3/profiles/default/python/plugins/kart/plugin.py", line 72, in openAbout
        pluginVersion = self.pluginVersion()
      File "/Users/leighhunt/Library/Application Support/QGIS/QGIS3/profiles/default/python/plugins/kart/plugin.py", line 66, in pluginVersion
        config.read(path)
      File "/Applications/QGIS.app/Contents/MacOS/../Resources/python/configparser.py", line 697, in read
        self._read(fp, filename)
      File "/Applications/QGIS.app/Contents/MacOS/../Resources/python/configparser.py", line 1017, in _read
        for lineno, line in enumerate(fp, start=1):
      File "/Applications/QGIS.app/Contents/MacOS/lib/python3.8/encodings/ascii.py", line 26, in decode
        return codecs.ascii_decode(input, self.errors)[0]
    UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 591: ordinal not in range(128)
    
    
    Python version: 3.8.7 (default, Feb 10 2021, 09:04:08) [Clang 12.0.0 (clang-1200.0.32.29)] 
    QGIS version: 3.18.1-Zürich Zürich, 202f1bf7e5 
    
    Python Path:
    /Applications/QGIS.app/Contents/MacOS/../Resources/python
    /Users/leighhunt/Library/Application Support/QGIS/QGIS3/profiles/default/python
    /Users/leighhunt/Library/Application Support/QGIS/QGIS3/profiles/default/python/plugins
    /Applications/QGIS.app/Contents/MacOS/../Resources/python/plugins
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/patsy-0.5.1-py3.8.egg
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/Rtree-0.9.4-py3.8.egg
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/geopandas-0.8.1-py3.8.egg
    /Applications/QGIS.app/Contents/MacOS/lib/python38.zip
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/rasterio-1.1.5-py3.8-macosx-10.13.0-x86_64.egg
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/Fiona-1.8.13.post1-py3.8-macosx-10.13.0-x86_64.egg
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/click_plugins-1.1.1-py3.8.egg
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/numpy-1.20.1-py3.8-macosx-10.13.0-x86_64.egg
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/affine-2.3.0-py3.8.egg
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/pandas-1.1.0-py3.8-macosx-10.13.0-x86_64.egg
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/netCDF4-1.5.4-py3.8-macosx-10.13.0-x86_64.egg
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/statsmodels-0.11.1-py3.8-macosx-10.13.0-x86_64.egg
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/lib-dynload
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/cftime-1.2.1-py3.8-macosx-10.13.0-x86_64.egg
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/pyproj-2.6.0-py3.8-macosx-10.13.0-x86_64.egg
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/scipy-1.5.1-py3.8-macosx-10.13.0-x86_64.egg
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/Pillow-7.2.0-py3.8-macosx-10.13.0-x86_64.egg
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/numba-0.50.1-py3.8-macosx-10.13.0-x86_64.egg
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/snuggs-1.4.7-py3.8.egg
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/GDAL-3.2.1-py3.8-macosx-10.13.0-x86_64.egg
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/matplotlib-3.3.0-py3.8-macosx-10.13.0-x86_64.egg
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/opencv_contrib_python-4.3.0.36-py3.8-macosx-10.13.0-x86_64.egg
    /Users/leighhunt/Library/Application Support/QGIS/QGIS3/profiles/default/python
    /Users/leighhunt/Library/Application Support/QGIS/QGIS3/profiles/default/python/plugins/rvt-qgis
    /Users/leighhunt/dev/playground/covid/covid-geojson
    
    bug 
    opened by leighghunt 4
  • ValueError: too many values to unpack (expected 2)

    ValueError: too many values to unpack (expected 2)

    image_2022-08-23_155102417 When I enter in...

    Show Logs > Show changes introduced by this commit...

    the following error is displayed

    An error has occurred while executing Python code:

    ValueError: too many values to unpack (expected 2) Traceback (most recent call last): File "C:\Users/UTEA/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\kart\gui\diffviewer.py", line 182, in treeItemChanged self._createLayers() File "C:\Users/UTEA/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\kart\gui\diffviewer.py", line 458, in _createLayers self._createFeatureDiffLayers() File "C:\Users/UTEA/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\kart\gui\diffviewer.py", line 513, in _createFeatureDiffLayers self._createVertexDiffLayer(geoms) File "C:\Users/UTEA/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\kart\gui\diffviewer.py", line 557, in _createVertexDiffLayer x, y = coord.strip().split(" ") ValueError: too many values to unpack (expected 2)

    I work with QGIS 3.22.10 and Kart 0.11.3

    Thank you!

    bug 
    opened by bismarksr17 3
  • Can't load datasets from PostGIS working copy

    Can't load datasets from PostGIS working copy

    Describe the bug I have imported datasets into my repository (a localhost postgis working copy), using both the command line and the plugin, but I can't load it into QGIS using the Add to QGIS project option.

    2022-05-04T01:44:23 WARNING Traceback (most recent call last): File "C:\Users/testing/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\kart\gui\dockwidget.py", line 158, in wrapper f(*args) File "C:\Users/testing/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\kart\gui\dockwidget.py", line 734, in addToProject layer = self.repo.workingCopyLayer(self.name) File "C:\Users/testing/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\kart\kartapi.py", line 738, in workingCopyLayer uri.setConnection(host, port, database) TypeError: QgsDataSourceUri.setConnection(): arguments did not match any overloaded call: overload 1: not enough arguments overload 2: not enough arguments

    I am using a Windows 10 virtual machine, with QGIS 3.22.6 and PostgreSQL 13.6 Postgis 3.1

    I am able to load the layers manually, though.

    The same type of error appears when I try to show changes on the working copy dataset. I am able to see the attributes changes, but the geometries changes appear empty and a similar error is shown.

    Version info (this is important!):

    • Operating System (e.g. Windows 10, macOS): Windows 10

    Kart Plugin version 1.0.2 QGIS version 3.22.6-Białowieża Operating system Windows 10 10.0.19044 Kart version Kart v0.11.1, Copyright (c) Kart Contributors » GDAL v3.3.2; PROJ v8.1.1 » PyGit2 v1.9.0; Libgit2 v1.4.2; Git v2.34.0.windows.1.13.g93318cbc8d » SQLAlchemy v1.4.29; pysqlite3 v2.6.0/v3.31.1; SpatiaLite v5.0.0; Libpq v11.0.9 » SpatialIndex v1.9.3

    Paste the contents from "Plugins...Kart...About Kart" into here
    
    bug 
    opened by SrNetoChan 3
  • Plugin doesn't load

    Plugin doesn't load

    Describe the bug Plugin doesn't load.

    To Reproduce Steps to reproduce the behavior:

    1. Open Plugin Manager
    2. Find Kart plugin and attempt to install
    3. Get error: Couldn't load plugin 'kart' due to an error when calling its classFactory() method, ModuleNotFoundError: No module named 'mock' (full error below)
    4. Install from zip instead
    5. Close & re-open QGIS
    6. On QGIS start, same error

    Expected behavior I expected the plugin to install & open without error.

    Version info (this is important!):

    • Operating System (e.g. Windows 10, macOS): Ubuntu 20.04
    • QGIS, Kart & Plugin details:
      • Kart v0.10.7
      • QGIS version: 3.22.1

    Additional context Full error message:

    Couldn't load plugin 'kart' due to an error when calling its classFactory() method 
    
    ModuleNotFoundError: No module named 'mock' 
    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/qgis/utils.py", line 423, in _startPlugin
        plugins[packageName] = package.classFactory(iface)
      File "/home/john/.local/share/QGIS/QGIS3/profiles/default/python/plugins/kart/__init__.py", line 2, in classFactory
        from kart.plugin import KartPlugin
      File "/usr/lib/python3/dist-packages/qgis/utils.py", line 888, in _import
        mod = _builtin_import(name, globals, locals, fromlist, level)
      File "/home/john/.local/share/QGIS/QGIS3/profiles/default/python/plugins/kart/plugin.py", line 11, in 
        from kart.gui.dockwidget import KartDockWidget
      File "/usr/lib/python3/dist-packages/qgis/utils.py", line 888, in _import
        mod = _builtin_import(name, globals, locals, fromlist, level)
      File "/home/john/.local/share/QGIS/QGIS3/profiles/default/python/plugins/kart/gui/dockwidget.py", line 27, in 
        from kart.kartapi import (
      File "/usr/lib/python3/dist-packages/qgis/utils.py", line 888, in _import
        mod = _builtin_import(name, globals, locals, fromlist, level)
      File "/home/john/.local/share/QGIS/QGIS3/profiles/default/python/plugins/kart/kartapi.py", line 31, in 
        from kart.gui.installationwarningdialog import InstallationWarningDialog
      File "/usr/lib/python3/dist-packages/qgis/utils.py", line 888, in _import
        mod = _builtin_import(name, globals, locals, fromlist, level)
      File "/home/john/.local/share/QGIS/QGIS3/profiles/default/python/plugins/kart/gui/installationwarningdialog.py", line 13, in 
        from kart.gui.settingsdialog import SettingsDialog
      File "/usr/lib/python3/dist-packages/qgis/utils.py", line 888, in _import
        mod = _builtin_import(name, globals, locals, fromlist, level)
      File "/home/john/.local/share/QGIS/QGIS3/profiles/default/python/plugins/kart/gui/settingsdialog.py", line 9, in 
        from kart.utils import setting, setSetting, KARTPATH, AUTOCOMMIT, DIFFSTYLES
      File "/usr/lib/python3/dist-packages/qgis/utils.py", line 888, in _import
        mod = _builtin_import(name, globals, locals, fromlist, level)
      File "/home/john/.local/share/QGIS/QGIS3/profiles/default/python/plugins/kart/utils.py", line 7, in 
        from qgis.testing.mocked import get_iface
      File "/usr/lib/python3/dist-packages/qgis/utils.py", line 888, in _import
        mod = _builtin_import(name, globals, locals, fromlist, level)
      File "/usr/lib/python3/dist-packages/qgis/testing/mocked.py", line 26, in 
        import mock
      File "/usr/lib/python3/dist-packages/qgis/utils.py", line 888, in _import
        mod = _builtin_import(name, globals, locals, fromlist, level)
    ModuleNotFoundError: No module named 'mock'
    
    
    Python version: 3.8.10 (default, Nov 26 2021, 20:14:08) [GCC 9.3.0] 
    QGIS version: 3.22.1-Białowieża Białowieża, 663dcf8fb9 
    
    Python Path:
    /usr/share/python-wheels/chardet-3.0.4-py2.py3-none-any.whl
    /usr/share/python-wheels/requests-2.22.0-py2.py3-none-any.whl
    /usr/share/python-wheels/colorama-0.4.3-py2.py3-none-any.whl
    /usr/share/python-wheels/html5lib-1.0.1-py2.py3-none-any.whl
    /usr/share/python-wheels/toml-0.10.0-py2.py3-none-any.whl
    /usr/share/python-wheels/lockfile-0.12.2-py2.py3-none-any.whl
    /usr/share/python-wheels/setuptools-44.0.0-py2.py3-none-any.whl
    /usr/share/python-wheels/progress-1.5-py2.py3-none-any.whl
    /usr/share/python-wheels/packaging-20.3-py2.py3-none-any.whl
    /usr/share/python-wheels/retrying-1.3.3-py2.py3-none-any.whl
    /usr/share/python-wheels/idna-2.8-py2.py3-none-any.whl
    /usr/share/python-wheels/wheel-0.34.2-py2.py3-none-any.whl
    /usr/share/python-wheels/six-1.14.0-py2.py3-none-any.whl
    /usr/share/python-wheels/webencodings-0.5.1-py2.py3-none-any.whl
    /usr/share/python-wheels/distlib-0.3.0-py2.py3-none-any.whl
    /usr/share/python-wheels/msgpack-0.6.2-py2.py3-none-any.whl
    /usr/share/python-wheels/ipaddr-2.2.0-py2.py3-none-any.whl
    /usr/share/python-wheels/pyparsing-2.4.6-py2.py3-none-any.whl
    /usr/share/python-wheels/distro-1.4.0-py2.py3-none-any.whl
    /usr/share/python-wheels/pip-20.0.2-py2.py3-none-any.whl
    /usr/share/python-wheels/contextlib2-0.6.0-py2.py3-none-any.whl
    /usr/share/python-wheels/CacheControl-0.12.6-py2.py3-none-any.whl
    /usr/share/python-wheels/urllib3-1.25.8-py2.py3-none-any.whl
    /usr/share/python-wheels/certifi-2019.11.28-py2.py3-none-any.whl
    /usr/share/python-wheels/pep517-0.8.2-py2.py3-none-any.whl
    /usr/share/python-wheels/pkg_resources-0.0.0-py2.py3-none-any.whl
    /usr/share/python-wheels/appdirs-1.4.3-py2.py3-none-any.whl
    /usr/share/qgis/python
    /home/john/.local/share/QGIS/QGIS3/profiles/default/python
    /home/john/.local/share/QGIS/QGIS3/profiles/default/python/plugins
    /usr/share/qgis/python/plugins
    /usr/lib/python38.zip
    /usr/lib/python3.8
    /usr/lib/python3.8/lib-dynload
    /usr/local/lib/python3.8/dist-packages
    /usr/lib/python3/dist-packages
    /home/john/.local/share/QGIS/QGIS3/profiles/default/python
    
    bug 
    opened by johnwbryant 3
  • Make it easier to create branches

    Make it easier to create branches

    Is your feature request related to a problem? Please describe.

    The only place you can create a branch is from within the Repo Log window by right clicking a particular commit to branch from. This is a bit obscure and I would expect to be able to create a branch from the right click menu of the Repo itself, and possibly from within the "Switch Branch" dialog.

    Usually you want to create a branch from the current state of the Repository, so going into the Log shouldn't really be necessary for most use cases.

    Describe the solution you'd like

    Add a "create branch" option to the right click context menu for a Repository (or similar option).

    enhancement 
    opened by hamishcampbell 0
  • History filtering local/UTC time

    History filtering local/UTC time

    It seems that Kart uses UTC for storing all operations (good), however when using history in the plugin depending on the time of the day it will set filter to local machine time which would hide the graph nodes. My timezone is UTC-6 I added some data and I thought it was empty but when expanding the search for the 8th the graph is there, do not know an easy way to handle this but for new people it may be confusing, and I don't know if this is mentioned in the documentation

    image

    image

    enhancement 
    opened by antoniolocandro 1
  • Handling duplicate name/conflict

    Handling duplicate name/conflict

    if the kart repository already includes a layer that happens to have the same name as one you are importing the plugin shows only there is conflict but no way to handle it, ideally it would allow user to specify a non-conflicting name if wanted or cancel the operations

    Steps:

    1. Add a layer to the dataset from any source for example 'airportheliport'
    2. Load a GPKG that also has a source 'airportheliport'

    image

    bug 
    opened by antoniolocandro 1
  • 'show feature history' will always show features from a layer even if it isn't currently visible

    'show feature history' will always show features from a layer even if it isn't currently visible

    Describe the bug If there are more than one layers from Kart repos on a map and "Activate 'show feature history' map tool" is selected on a layer which is not the top most feature history from that layer will always be used even if features from other layers are 'in front' of that chosen layer.

    Expected behavior Not sure as the choice was explicit but the end result is at best non obvious, particularly if the layers are from the same 'Author'. Potentially it should highlight the selected feature as per 'select features' QGIS command.

    Screenshots

    Screenshot 2022-11-07 at 6 16 10 pm Screenshot 2022-11-07 at 6 20 25 pm Screenshot 2022-11-07 at 6 23 14 pm

    Version info (this is important!):

    • Operating System (e.g. Windows 10, macOS): MacOS
    • QGIS, Kart & Plugin details: QGIS 3.28 Kart plugin 1.0.4
    Kart Plugin version
    1.0.4
    QGIS version
    3.28.0-Firenze
    Operating system
    macOS 13.0 x86_64 i386 64bit
    Kart version
    Kart v0.11.5, Copyright (c) Kart Contributors
    » GDAL v3.4.0; PROJ v6.3.0
    » PyGit2 v1.9.0; Libgit2 v1.4.2; Git v2.33.GIT
    » SQLAlchemy v1.4.40; pysqlite3 v2.6.0/v3.31.1; SpatiaLite v5.0.1; Libpq v14.0.5
    » SpatialIndex v1.9.3
    
    bug 
    opened by pfw 2
  • If GPKG has more than one layer it complains no table is specified

    If GPKG has more than one layer it complains no table is specified

    Import a GPKG with more than one layer the following popup shows but there is no option to select which table, so it seems only single layer GPKG are supported

    image

    Ideally when adding a GPKG with multiple tables a user would be able to select all the tables that they want imported to keep track off

    As a sample the world_map.gpkg shipped with QGIS may be used

    bug 
    opened by antoniolocandro 0
Releases(v1.0.3)
  • v1.0.3-rc.1(Aug 25, 2022)

    What's Changed

    • Usage was always showing for ‘install’ and ‘package’ by @pfw in https://github.com/koordinates/kart-qgis-plugin/pull/61
    • Ensure user name and email aren’t blank strings on commit by @pfw in https://github.com/koordinates/kart-qgis-plugin/pull/60
    • parse PostgreSQL username and password from working copy location #63 by @SrNetoChan in https://github.com/koordinates/kart-qgis-plugin/pull/64
    • Maintain the same tab in diffviewer as features are selected by @pfw in https://github.com/koordinates/kart-qgis-plugin/pull/67
    • Support old and new style feature id strings by @pfw in https://github.com/koordinates/kart-qgis-plugin/pull/69
    • Renaming changes to diff for consistency by @benpearman in https://github.com/koordinates/kart-qgis-plugin/pull/71
    • Require Kart 0.11. Fix warning from --json-style option by @craigds in https://github.com/koordinates/kart-qgis-plugin/pull/73
    • Only x and y are used in the diff viewer by @pfw in https://github.com/koordinates/kart-qgis-plugin/pull/68
    • Update to require latest release of 0.11.5 by @pfw in https://github.com/koordinates/kart-qgis-plugin/pull/75

    New Contributors

    • @pfw made their first contribution in https://github.com/koordinates/kart-qgis-plugin/pull/61
    • @SrNetoChan made their first contribution in https://github.com/koordinates/kart-qgis-plugin/pull/64
    • @benpearman made their first contribution in https://github.com/koordinates/kart-qgis-plugin/pull/71
    • @craigds made their first contribution in https://github.com/koordinates/kart-qgis-plugin/pull/73

    Full Changelog: https://github.com/koordinates/kart-qgis-plugin/compare/v1.0.2...v1.0.3-rc.1

    Source code(tar.gz)
    Source code(zip)
    kart-v1.0.3-rc.1.zip(106.08 KB)
  • v1.0.2(Feb 21, 2022)

    Full Changelog: https://github.com/koordinates/kart-qgis-plugin/compare/v1.0.1...v1.0.2

    • The plugin now helps you install the latest Kart version on Windows & macOS
    • You can now import Kart datasets from a PostGIS database
    • Fix for Kart version detection/compatibility (#59)
    • Fix for repository creation in an empty folder (#53)
    • Fix for an error during push (#54)
    • Fix for an error when you remove a dataset from a repository (#58)
    Source code(tar.gz)
    Source code(zip)
    kart-v1.0.2.zip(105.22 KB)
  • v1.0.1(Dec 21, 2021)

  • v1.0.0(Dec 16, 2021)

    This is the initial release of the Kart plugin for QGIS.

    We've exposed much of the basic Kart functionality inside QGIS to allow working with Kart repositories — cloning, creating, making changes and reviewing commit histories. We will continue to extend the functionality, and we'd love to hear your ideas — either create an issue for a specific improvement or start a discussion with any wider ideas you have.

    You can install the plugin via the plugin zip archive below, or search for "Kart" in the QGIS plugins repository.

    Source code(tar.gz)
    Source code(zip)
    kart-v1.0.0.zip(100.32 KB)
Owner
Koordinates
A geospatial data management platform inspired by cracking GIS data out of vendor silos. You can host, manage, share, publish, access, and build apps.
Koordinates
Funchacks - Fun module which is a small set of utilities

funchacks 👋 Introduction Funchacks is a fun module that provides a small packag

DenyS 6 Aug 04, 2022
An almost fully customizable language made in python!

Whython is a project language, the idea of it is that anyone can download and edit the language to make it suitable to what they want.

Julian 47 Nov 05, 2022
A C-like hardware description language (HDL) adding high level synthesis(HLS)-like automatic pipelining as a language construct/compiler feature.

██████╗ ██╗██████╗ ███████╗██╗ ██╗███╗ ██╗███████╗ ██████╗ ██╔══██╗██║██╔══██╗██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝ ██████╔╝██║██████╔╝█

Julian Kemmerer 391 Jan 01, 2023
Python 100daysofcode

#python #100daysofcode Python is a simple, general purpose ,high level & object-oriented programming language even it's is interpreted scripting langu

Tara 1 Feb 10, 2022
This repository contains various tools useful for offensive operations (reversing, etc) regarding the PE (Portable Executable) format

PE-Tools This repository contains various tools useful for offensive operations (reversing, etc) regarding the PE (Portable Executable) format Install

stark0de 4 Oct 13, 2022
A notebook explaining the principle of adversarial attacks and their defences

TL;DR: A notebook explaining the principle of adversarial attacks and their defences Abstract: Deep neural networks models have been wildly successful

1 Jan 22, 2022
A place where the most basic, basic of python coding exists

python-basics A place where the most basic, basic of python coding exists As you can see, there are four folders and the best order to read is: appeti

Chuqin 2 Oct 05, 2022
PythonCalculator - A simple Calculator made in python using tkinter for GUI

PythonCalculator A simple Calculator made in python using tkinter for GUI. For P

ʀᴇxɪɴᴀᴢᴏʀ 1 Jan 01, 2022
An audnexus client, providing rich author and audiobook data to Plex via it's legacy plugin agent system.

Audnexus.bundle An audnex.us client, providing rich author and audiobook data to Plex via it's legacy plugin agent system. 📝 Table of Contents About

David Dembeck 248 Jan 02, 2023
creates a batch file that uses adb to auto-install apks into the Windows Subsystem for Android and registers it as the default application to open apks.

wsa-apktool creates a batch file that uses adb to auto-install apks into the Windows Subsystem for Android and registers it as the default application

Aditya Vikram 3 Apr 05, 2022
One line Brainfuck interpreter in Python

One line Brainfuck interpreter in Python

16 Dec 21, 2022
Results of Robot Framework 5.0 survey

Robot Framework 5.0 survey results We had a survey asking what features Robot Framework community members would like to see in the forthcoming Robot F

Pekka Klärck 2 Oct 16, 2021
Automation of VASP DFT workflows with ASE - application scripts

This repo contains a library that aims at automatizing some Density Functional Theory (DFT) workflows in VASP by using the ASE toolkit.

Frank Niessen 5 Sep 06, 2022
A simple bot that will help you in your learning and make it more fun.

hyperskill-SimpleChattyBot-python A simple bot that will help you in your learning and make it more fun. Syntax bot.py Stages Stage #1: Zuhura Bot we

1 Nov 09, 2021
BlueBorne Dockerized

BlueBorne Dockerized This is the repo to reproduce the BlueBorne kill-chain on Dockerized Android as described here, to fully understand the code you

SecSI 5 Sep 14, 2022
Paprika is a python library that reduces boilerplate. Heavily inspired by Project Lombok.

Image courtesy of Anna Quaglia (Photographer) Paprika Paprika is a python library that reduces boilerplate. It is heavily inspired by Project Lombok.

Rayan Hatout 55 Dec 26, 2022
Webcash is an experimental e-cash (electronic cash)

Webcash Webcash is an experimental new electronic cash ("e-cash") that enables decentralized and instant payments to anyone, anywhere in the world. Us

Mark Friedenbach 0 Feb 26, 2022
YourX: URL Clusterer With Python

YourX | URL Clusterer Screenshots Instructions for running Install requirements

ARPSyndicate 1 Mar 11, 2022
Module for working with the site dnevnik.ru with python

dnevnikru Module for working with the site dnevnik.ru with python Dnevnik object accepts login and password from the dnevnik.ru account Methods: homew

Aleksandr 21 Nov 21, 2022
Open source stenotype engine

Plover Bringing stenography to everyone. Homepage Releases Wiki Blog Google Group Discord Chat About Installation Getting help Contributing Donations

Open Steno Project 2k Jan 09, 2023