Skip to content

Commit

Permalink
Show current user in side panel
Browse files Browse the repository at this point in the history
  • Loading branch information
NathanW2 committed Aug 22, 2013
1 parent 327bf4e commit 99cba41
Showing 1 changed file with 58 additions and 76 deletions.
134 changes: 58 additions & 76 deletions src/qmap/qmap.py
Original file line number Diff line number Diff line change
@@ -1,46 +1,42 @@
"""
/***************************************************************************
QMap
A QGIS plugin
Data collection software for QGIS
-------------------
begin : 2012-03-21
copyright : (C) 2012 by Nathan Woodrow @ SDRC
email : nathan.woodrow@southerndowns.qld.gov.au
***************************************************************************/
/***************************************************************************
* *
* 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. *
* *
***************************************************************************/
Main plugin code for QMap
"""

import os
import qmaplayer
import resources_rc
import functools
import utils
import json
import sys
import traceback
import getpass

from qgis.core import (QgsProjectBadLayerHandler, QgsMapLayerRegistry,
QgsMessageLog, QgsMapLayer,
QgsProject, QgsTolerance,
QgsFeature
)
from qgis.gui import QgsMessageBar

from PyQt4.QtCore import QUrl, Qt, QSize, QFileInfo
from PyQt4.QtGui import (QIcon, QWidget,
QActionGroup, QPushButton,
QToolBar, QAction,
QApplication, QMenuBar,
QGridLayout, QStackedWidget,
QSizePolicy, QMessageBox,
QToolButton, QProgressBar,
QLabel)

from gps_action import GPSAction
from maptools import MoveTool, PointTool, EditTool
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import QWebView, QWebPage
from listmodulesdialog import ProjectsWidget
from qgis.core import *
from qgis.gui import QgsMessageBar
from utils import log, critical, warning

from floatingtoolbar import FloatingToolBar
from dialog_provider import DialogProvider
import traceback
from PyQt4.uic import loadUi
from project import QMapProject, NoMapToolConfigured, getProjects, ErrorInMapTool
from ui_helppage import Ui_apphelpwidget

from listmodulesdialog import ProjectsWidget
from popdialog import PopDownReport
from helpviewdialog import HelpPage

class BadLayerHandler( QgsProjectBadLayerHandler):
def __init__( self, callback ):
Expand All @@ -51,15 +47,6 @@ def handleBadLayers( self, domNodes, domDocument ):
layers = [node.namedItem("layername").toElement().text() for node in domNodes]
self.callback(layers)

class HelpPage(QWidget):
def __init__(self, parent=None):
super(HelpPage, self).__init__(parent)
self.ui = Ui_apphelpwidget()
self.ui.setupUi(self)

def setHelpPage(self, helppath):
self.ui.webView.load(QUrl.fromLocalFile(helppath))

class QMap():
def __init__(self, iface):
self.iface = iface
Expand Down Expand Up @@ -107,8 +94,8 @@ def showError():

message = "Seems like {} didn't load correctly".format(utils._pluralstring('layer', len(layers)))

warning("Missing layers")
map(warning, layers)
utils.warning("Missing layers")
map(utils.warning, layers)

self.widget = self.messageBar.createMessage("Missing Layers",
message,
Expand All @@ -130,7 +117,7 @@ def excepthook(self, ex_type, value, tb):
"""
where = ''.join(traceback.format_tb(tb))
msg = '{}'.format(value)
critical(msg)
utils.critical(msg)

def showError():
html = """
Expand Down Expand Up @@ -174,7 +161,7 @@ def setupUI(self):

self.mainwindow.insertToolBar(self.toolbar, self.navtoolbar)
self.openProjectAction.trigger()

def setMapTool(self, tool):
"""
Set the current mapview canvas tool
Expand Down Expand Up @@ -399,6 +386,15 @@ def createSpacer(width=30):
self.help = QAction(QIcon(":/icons/help"), "Help", self.menutoolbar)
self.help.setCheckable(True)
self.help.triggered.connect(functools.partial(self.stack.setCurrentIndex, 2))
self.help.setVisible(False)

self.userlabel = QLabel("Current User <br> {user}".format(user=getpass.getuser()))
self.userlabel.setAlignment(Qt.AlignCenter)
self.userlabel.setStyleSheet("""
QLabel {
color: #8c8c8c;
font: 10px "Calibri" ;
}""")

self.quit = QAction(QIcon(":/icons/quit"), "Quit", self.menutoolbar)
self.quit.triggered.connect(self.iface.actionExit().trigger)
Expand All @@ -415,8 +411,9 @@ def createSpacer(width=30):
quitspacewidget = createSpacer()
quitspacewidget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)

self.menutoolbar.insertWidget(self.quit, quitspacewidget)

labelaction = self.menutoolbar.insertWidget(self.quit, self.userlabel)
self.menutoolbar.insertWidget(labelaction, quitspacewidget)

self.setupIcons()
self.stack.currentChanged.connect(self.updateUIState)

Expand Down Expand Up @@ -520,6 +517,8 @@ def projectOpened(self):
self.panels = list(project.getPanels())
for panel in self.panels:
self.mainwindow.addDockWidget(Qt.BottomDockWidgetArea , panel)

self.iface.messageBar().popWidget()

def createFormButtons(self, projectlayers):
"""
Expand All @@ -536,20 +535,20 @@ def createFormButtons(self, projectlayers):
try:
qgslayer = QgsMapLayerRegistry.instance().mapLayersByName(layer.name)[0]
if qgslayer.type() == QgsMapLayer.RasterLayer:
log("We can't support raster layers for data entry")
utils.log("We can't support raster layers for data entry")
continue

layer.QGISLayer = qgslayer
except KeyError:
log("Layer not found in project")
utils.log("Layer not found in project")
continue

if 'capture' in layer.capabilities:
text = layer.icontext
try:
tool = layer.getMaptool(self.iface.mapCanvas())
except NoMapToolConfigured:
log("No map tool configured")
utils.log("No map tool configured")
continue
except ErrorInMapTool as error:
self.messageBar.pushMessage("Error configuring map tool", error.message, level=QgsMessageBar.WARNING)
Expand Down Expand Up @@ -645,12 +644,13 @@ def loadProject(self, project):
self.badLayerHandler = BadLayerHandler(callback=self.missingLayers)
QgsProject.instance().setBadLayerHandler( self.badLayerHandler )

self.iface.messageBar().pushMessage("Project Loading","", QgsMessageBar.INFO)
QgsProject.instance().read(fileinfo)

self.iface.mapCanvas().updateScale()
self.iface.mapCanvas().freeze(False)
self.iface.mapCanvas().refresh()
self.mainwindow.setWindowTitle("QMap: QGIS Data Collection")
self.mainwindow.setWindowTitle("IntraMaps Roam: Mobile Data Collection")
self.iface.projectRead.emit()

def unload(self):
Expand Down Expand Up @@ -712,6 +712,10 @@ def syncstarted(self):
button.setText("Status")
button.setIcon(QIcon(":/icons/syncinfo"))
button.toggled.connect(functools.partial(self.report.setVisible))
pro = QProgressBar()
pro.setMaximum(0)
pro.setMinimum(0)
self.syncwidget.layout().addWidget(pro)
self.syncwidget.layout().addWidget(button)
self.iface.messageBar().pushWidget(self.syncwidget, QgsMessageBar.INFO)

Expand All @@ -733,7 +737,11 @@ def synccomplete(self):
button.setChecked(self.report.isVisible())
button.setText("Sync Report")
button.setIcon(QIcon(":/icons/syncinfo"))
button.toggled.connect(functools.partial(self.report.setVisible))
button.toggled.connect(functools.partial(self.report.setVisible))
pro = QProgressBar()
pro.setMaximum(100)
pro.setValue(100)
self.syncwidget.layout().addWidget(pro)
self.syncwidget.layout().addWidget(button)
self.iface.messageBar().pushWidget(self.syncwidget)
self.iface.messageBar().setStyleSheet(stylesheet)
Expand Down Expand Up @@ -776,29 +784,3 @@ def syncProvider(self, provider):

provider.startSync()

class PopDownReport(QDialog):
def __init__(self, parent=None):
super(PopDownReport, self).__init__(parent)
self.setLayout(QGridLayout())
self.layout().setContentsMargins(0, 0, 0, 0)
self.web = QWebView()
self.resize(400,400)
self.layout().addWidget(self.web)
self.setWindowFlags(Qt.Tool | Qt.FramelessWindowHint | Qt.X11BypassWindowManagerHint)

def updateHTML(self, html):
self.web.setHtml(html)
self.web.triggerPageAction(QWebPage.MoveToEndOfDocument)

def clear(self):
self.web.setHtml("No Sync in progress")

def updatePosition(self):
point = self.parent().rect().bottomRight()
newpoint = self.parent().mapToGlobal(point - QPoint(self.size().width(),0))
self.setWindowFlags(Qt.Tool | Qt.FramelessWindowHint | Qt.X11BypassWindowManagerHint)
self.move(newpoint)

def showEvent(self, event):
self.updatePosition()

0 comments on commit 99cba41

Please sign in to comment.