Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 9340f6a
Showing
10 changed files
with
1,696 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
|
||
*.pyc |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,229 @@ | ||
# -*- coding: utf-8 -*- | ||
""" | ||
/*************************************************************************** | ||
QLocklayers | ||
A QGIS plugin | ||
This tool can be used to copy the map canvas and place it in the clipboard. | ||
Generated by Plugin Builder: http://g-sherman.github.io/Qgis-Plugin-Builder/ | ||
------------------- | ||
begin : 2019-04-07 | ||
git sha : $Format:%H$ | ||
copyright : (C) 2019 by Marios S. Kyriakou, KIOS Research and Innovation Center of Excellence (KIOS CoE) | ||
email : mariosmsk@gmail.com | ||
***************************************************************************/ | ||
/*************************************************************************** | ||
* * | ||
* This program is free software; you can redistribute it and/or modify * | ||
* it under the terms of the GNU General Public License as published by * | ||
* the Free Software Foundation; either version 2 of the License, or * | ||
* (at your option) any later version. * | ||
* * | ||
***************************************************************************/ | ||
""" | ||
from PyQt5.QtCore import (QSettings, QTranslator, qVersion, QCoreApplication, Qt, QTimer) | ||
from PyQt5.QtGui import (QIcon, QImage, QFont, QKeySequence) | ||
from PyQt5.QtWidgets import (QAction, QApplication, QMessageBox, QWidget) | ||
from qgis.core import (QgsProject) | ||
|
||
# Initialize Qt resources from file resources.py | ||
from .resources import * | ||
# Import the code for the dialog | ||
import os.path | ||
|
||
|
||
class QLocklayers: | ||
"""QGIS Plugin Implementation.""" | ||
|
||
def __init__(self, iface): | ||
"""Constructor. | ||
:param iface: An interface instance that will be passed to this class | ||
which provides the hook by which you can manipulate the QGIS | ||
application at run time. | ||
:type iface: QgsInterface | ||
""" | ||
# Save reference to the QGIS interface | ||
self.iface = iface | ||
# initialize plugin directory | ||
self.plugin_dir = os.path.dirname(__file__) | ||
# initialize locale | ||
locale = QSettings().value('locale/userLocale')[0:2] | ||
locale_path = os.path.join( | ||
self.plugin_dir, | ||
'i18n', | ||
'QLocklayers_{}.qm'.format(locale)) | ||
|
||
if os.path.exists(locale_path): | ||
self.translator = QTranslator() | ||
self.translator.load(locale_path) | ||
|
||
if qVersion() > '4.3.3': | ||
QCoreApplication.installTranslator(self.translator) | ||
|
||
# Declare instance attributes | ||
self.actions = [] | ||
self.menu = self.tr(u'&QLocklayers') | ||
|
||
# Check if plugin was started the first time in current QGIS session | ||
# Must be set in initGui() to survive plugin reloads | ||
self.first_start = None | ||
|
||
# noinspection PyMethodMayBeStatic | ||
def tr(self, message): | ||
"""Get the translation for a string using Qt translation API. | ||
We implement this ourselves since we do not inherit QObject. | ||
:param message: String for translation. | ||
:type message: str, QString | ||
:returns: Translated version of message. | ||
:rtype: QString | ||
""" | ||
# noinspection PyTypeChecker,PyArgumentList,PyCallByClass | ||
return QCoreApplication.translate('QLocklayers', message) | ||
|
||
|
||
def add_action( | ||
self, | ||
icon_path, | ||
text, | ||
callback, | ||
enabled_flag=True, | ||
add_to_menu=True, | ||
add_to_toolbar=True, | ||
status_tip=None, | ||
whats_this=None, | ||
shortcut=None, | ||
parent=None): | ||
"""Add a toolbar icon to the toolbar. | ||
:param icon_path: Path to the icon for this action. Can be a resource | ||
path (e.g. ':/plugins/foo/bar.png') or a normal file system path. | ||
:type icon_path: str | ||
:param text: Text that should be shown in menu items for this action. | ||
:type text: str | ||
:param callback: Function to be called when the action is triggered. | ||
:type callback: function | ||
:param enabled_flag: A flag indicating if the action should be enabled | ||
by default. Defaults to True. | ||
:type enabled_flag: bool | ||
:param add_to_menu: Flag indicating whether the action should also | ||
be added to the menu. Defaults to True. | ||
:type add_to_menu: bool | ||
:param add_to_toolbar: Flag indicating whether the action should also | ||
be added to the toolbar. Defaults to True. | ||
:type add_to_toolbar: bool | ||
:param status_tip: Optional text to show in a popup when mouse pointer | ||
hovers over the action. | ||
:type status_tip: str | ||
:param parent: Parent widget for the new action. Defaults None. | ||
:type parent: QWidget | ||
:param whats_this: Optional text to show in the status bar when the | ||
mouse pointer hovers over the action. | ||
:returns: The action that was created. Note that the action is also | ||
added to self.actions list. | ||
:rtype: QAction | ||
""" | ||
|
||
icon = QIcon(icon_path) | ||
action = QAction(icon, text, parent) | ||
action.triggered.connect(callback) | ||
action.setEnabled(enabled_flag) | ||
|
||
if status_tip is not None: | ||
action.setStatusTip(status_tip) | ||
|
||
if whats_this is not None: | ||
action.setWhatsThis(whats_this) | ||
|
||
if shortcut is not None: | ||
action.setShortcut(QKeySequence(shortcut)) | ||
|
||
if add_to_toolbar: | ||
# Adds plugin icon to Plugins toolbar | ||
self.iface.addToolBarIcon(action) | ||
|
||
if add_to_menu: | ||
self.iface.addPluginToMenu( | ||
self.menu, | ||
action) | ||
|
||
self.actions.append(action) | ||
|
||
return action | ||
|
||
|
||
def initGui(self): | ||
"""Create the menu entries and toolbar icons inside the QGIS GUI.""" | ||
|
||
icon_path = ':/plugins/QLocklayers/lock.png' | ||
self.add_action( | ||
icon_path, | ||
text=self.tr(u'Lock layers'), | ||
shortcut="Ctrl+R", | ||
callback=self.lock, | ||
parent=self.iface.mainWindow()) | ||
icon_path = ':/plugins/QLocklayers/unlock.png' | ||
self.clickPhotos = self.add_action( | ||
icon_path, | ||
text=self.tr(u'Unlock layers'), | ||
shortcut="Ctrl+U", | ||
callback=self.unlock, | ||
parent=self.iface.mainWindow()) | ||
|
||
def unload(self): | ||
"""Removes the plugin menu item and icon from QGIS GUI.""" | ||
for action in self.actions: | ||
self.iface.removePluginMenu( | ||
self.tr(u'&QLocklayers'), | ||
action) | ||
self.iface.removeToolBarIcon(action) | ||
|
||
def showMessage(self, title, msg, button): | ||
msgBox = QMessageBox() | ||
msgBox.setIcon(QMessageBox.Information) | ||
msgBox.setWindowTitle(title) | ||
msgBox.setText(msg) | ||
msgBox.setStandardButtons(QMessageBox.Ok) | ||
font = QFont() | ||
font.setPointSize(9) | ||
msgBox.setFont(font) | ||
msgBox.setWindowFlags(Qt.CustomizeWindowHint | Qt.WindowStaysOnTopHint | Qt.WindowCloseButtonHint) | ||
buttonY = msgBox.button(QMessageBox.Ok) | ||
buttonY.setText(button) | ||
buttonY.setFont(font) | ||
msgBox.exec_() | ||
|
||
def lock(self): | ||
"""Run method that performs all the real work""" | ||
|
||
# Create the dialog with elements (after translation) and keep reference | ||
# Only create GUI ONCE in callback, so that it will only load when the plugin is started | ||
selectedLayers = self.iface.layerTreeView().selectedLayers() | ||
requieredLayers = QgsProject.instance().requiredLayers() | ||
selectedLayers.extend(requieredLayers) | ||
QgsProject.instance().setRequiredLayers(selectedLayers) | ||
self.showMessage(title='QLocklayers', msg='Lock selected layers succesfull.', button='OK') | ||
|
||
def unlock(self): | ||
selectedLayers = self.iface.layerTreeView().selectedLayers() | ||
requieredLayers = QgsProject.instance().requiredLayers() | ||
|
||
for lyr in selectedLayers: | ||
try: | ||
requieredLayers.remove(lyr) | ||
except: | ||
pass | ||
QgsProject.instance().setRequiredLayers(requieredLayers) | ||
self.showMessage(title='QLocklayers', msg='Unlock selected layers succesfull.', button='OK') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
<a href="http://www.kios.ucy.ac.cy"><img src="http://www.kios.ucy.ac.cy/templates/favourite/images/kios_logo_hover.png"/><a> | ||
|
||
# QLockLayers | ||
|
||
QGIS 3 plugin | ||
|
||
This tool can be used to lock/unlock selected layers on the project. Using button or shortcut `Ctrl-R` to lock selected layers and using `Ctrl-U` to unlock selected layers. | ||
|
||
* [QGIS Cyprus](https://www.facebook.com/qgiscyprus/) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
# -*- coding: utf-8 -*- | ||
""" | ||
/*************************************************************************** | ||
QCopycanvas | ||
A QGIS plugin | ||
This tool can be used to copy the map canvas and place it in the clipboard. | ||
Generated by Plugin Builder: http://g-sherman.github.io/Qgis-Plugin-Builder/ | ||
------------------- | ||
begin : 2019-04-07 | ||
copyright : (C) 2019 by Marios S. Kyriakou, KIOS Research and Innovation Center of Excellence (KIOS CoE) | ||
email : mariosmsk@gmail.com | ||
git sha : $Format:%H$ | ||
***************************************************************************/ | ||
/*************************************************************************** | ||
* * | ||
* This program is free software; you can redistribute it and/or modify * | ||
* it under the terms of the GNU General Public License as published by * | ||
* the Free Software Foundation; either version 2 of the License, or * | ||
* (at your option) any later version. * | ||
* * | ||
***************************************************************************/ | ||
This script initializes the plugin, making it known to QGIS. | ||
""" | ||
|
||
|
||
# noinspection PyPep8Naming | ||
def classFactory(iface): # pylint: disable=invalid-name | ||
"""Load QCopycanvas class from file QCopycanvas. | ||
:param iface: A QGIS interface instance. | ||
:type iface: QgsInterface | ||
""" | ||
# | ||
from .QLocklayers import QLocklayers | ||
return QLocklayers(iface) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
# This file contains metadata for your plugin. Since | ||
# version 2.0 of QGIS this is the proper way to supply | ||
# information about a plugin. The old method of | ||
# embedding metadata in __init__.py will | ||
# is no longer supported since version 2.0. | ||
|
||
# This file should be included when you package your plugin.# Mandatory items: | ||
|
||
[general] | ||
name=QLockLayers | ||
qgisMinimumVersion=3.0 | ||
description=This tool can be used to lock selected layers on the project. | ||
version=0.1 | ||
author=Marios S. Kyriakou, KIOS Research and Innovation Center of Excellence (KIOS CoE) | ||
email=mariosmsk@gmail.com | ||
|
||
about=This tool can be used to lock/unlock selected layers on the project. Using button or shortcut `Ctrl-R` to lock selected layers and using `Ctrl-U` to unlock selected layers. | ||
|
||
tracker=https://github.com/KIOS-Research/QLocklayers/issues/ | ||
repository=https://github.com/KIOS-Research/QLocklayers/ | ||
# End of mandatory metadata | ||
|
||
# Recommended items: | ||
|
||
# Uncomment the following line and add your changelog: | ||
# changelog= | ||
|
||
# Tags are comma separated with spaces allowed | ||
tags=python, lock layers, removable | ||
|
||
homepage=https://mariosmsk.com/2019/04/07/qlocklayers/ | ||
category=Plugins | ||
icon=icon.png | ||
# experimental flag | ||
experimental=False | ||
|
||
# deprecated flag (applies to the whole plugin, not just a single version) | ||
deprecated=False | ||
|
Oops, something went wrong.