def addLayerToTable(self): """Add selected layer attributes to table""" settings = self.extractSettings() layer_settings.addSettingsToRow(settings, self.out_table)
def showOptionsDialog(self, layerList, animationFrameLength, playBackwards=False, loopAnimation=False): """Show the optionsDialog and populate it with settings from timeLayerManager""" # load the form self.optionsDialog = uic.loadUi(os.path.join(self.path, OPTIONS_WIDGET_FILE)) # restore settings from layerList: for layer in layerList: settings = layer_settings.getSettingsFromLayer(layer) layer_settings.addSettingsToRow(settings, self.optionsDialog.tableWidget) self.optionsDialog.tableWidget.resizeColumnsToContents() # restore animation options self.optionsDialog.spinBoxFrameLength.setValue(animationFrameLength) self.optionsDialog.checkBoxBackwards.setChecked(playBackwards) self.optionsDialog.checkBoxLabel.setChecked(self.showLabel) self.optionsDialog.checkBoxDontExportEmpty.setChecked(not self.exportEmpty) self.optionsDialog.checkBoxLoop.setChecked(loopAnimation) self.optionsDialog.show_label_options_button.clicked.connect(self.showLabelOptions) self.optionsDialog.checkBoxLabel.stateChanged.connect(self.showOrHideLabelOptions) self.optionsDialog.textBrowser.setHtml(QCoreApplication.translate('TimeManager', """\ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html> <head> <meta name="qrichtext" content="1"/> <style> li.mono { font-family: Consolas, Courier New, Courier, monospace; } </style> </head> <body> <h1>Time Manager</h1> <p>Time Manager filters your layers and displays only layers and features that match the specified time frame. Time Manager supports vector layers and raster layers (including WMS with TIME dimension).</p> <p>Timestamps have to be in one of the following formats:</p> <ul> <li class="mono">%Y-%m-%d %H:%M:%S.%f</li> <li class="mono">%Y-%m-%d %H:%M:%S</li> <li class="mono">%Y-%m-%d %H:%M</li> <li class="mono">%Y-%m-%dT%H:%M:%S</li> <li class="mono">%Y-%m-%dT%H:%M:%SZ</li> <li class="mono">%Y-%m-%dT%H:%M</li> <li class="mono">%Y-%m-%dT%H:%MZ</li> <li class="mono">%Y-%m-%d</li> <li class="mono">%Y/%m/%d %H:%M:%S.%f</li> <li class="mono">%Y/%m/%d %H:%M:%S</li> <li class="mono">%Y/%m/%d %H:%M</li> <li class="mono">%Y/%m/%d</li> <li class="mono">%H:%M:%S</li> <li class="mono">%H:%M:%S.%f</li> <li class="mono">%Y.%m.%d %H:%M:%S.%f</li> <li class="mono">%Y.%m.%d %H:%M:%S</li> <li class="mono">%Y.%m.%d %H:%M</li> <li class="mono">%Y.%m.%d</li> <li class="mono">%Y%m%d%H%M%SED</li> <li>Integer timestamp in seconds after or before the epoch (1970-1-1)</li> </ul> <p>The layer list contains all layers managed by Time Manager. To add a vector layer, press [Add layer]. To add a raster layer, press [Add raster]. If you want to remove a layer from the list, select it and press [Remove layer].</p> <p>Below the layer list, you'll find the following <b>animation options</b>:</p> <p><b>Show frame for x milliseconds</b>... allows you to adjust for how long a frame will be visible during the animation</p> <p><b>Play animation backwards</b>... if checked, the animation will run in reverse direction</p> <p><b>Display frame start time on map</b>... if checked, displays the start time of the visible frame in the lower right corner of the map</p> <h2>Add Layer dialog</h2> <p>Here, you are asked to select the layer that should be added and specify the columns containing start and (optionally) end time.</p> <p>The <b>offset</b> option allows you to further time the appearance of features. If you specify an offset of -1, the features will appear one second later than they would by default.</p> <h2>Dock widget</h2> <p>The dock was designed to attach to the bottom of the QGIS main window. It offers the following tools:</p> <ul> <li><img src="images/power_on.png" alt="power"/> ... On/Off switch, allows you to turn Time Manager's functionality on/off with the click of only one button</li> <li><span class="hidden">[Settings]</span><input type="button" value="Settings"/> ... opens the Settings dialog where you can manage your spatio-temporal layers</li> <li><span class="hidden">[Export Video]</span><input type="button" value="Export Video"/> ... exports an image series based on current settings (This button is only enabled if there are layers registered in Time Manager "Settings")</li> <li><b>Time frame start: <span class="hidden">[2000-01-01 00:00:00]</span></b><input type="text" value="2000-01-01 00:00:00"/> ... shows the start time of the currently active frame. Allows you to precisely specify your desired analysis time.</li> <li><b>Time frame size: </b><input type="text" value="1"/><span class="hidden">[x]</span><select><option value="days">days</option></select> ... allow you to choose the size of the time frame</li> <li><img src="images/back.png" alt="back"/> ... go to the previous time frame</li> <li><img src="images/forward.png" alt="forward"/> ... go to the next time frame</li> <li><b>Slider</b> ... shows the position of current frame relative to the whole dataset and allows you to seamlessly scroll through the dataset</li> <li><img src="images/play.png" alt="play"/> ... start an automatic animation based on your current settings</li> </ul> </body> </html>""")) # show dialog self.showOrHideLabelOptions() self.optionsDialog.show() # create raster and vector dialogs self.vectorDialog = VectorLayerDialog(self.iface, os.path.join(self.path, ADD_VECTOR_LAYER_WIDGET_FILE), self.optionsDialog.tableWidget) self.rasterDialog = RasterLayerDialog(self.iface, os.path.join(self.path, ADD_RASTER_LAYER_WIDGET_FILE), self.optionsDialog.tableWidget) # establish connections self.optionsDialog.pushButtonAddVector.clicked.connect(self.vectorDialog.show) self.optionsDialog.pushButtonAddRaster.clicked.connect(self.rasterDialog.show) self.optionsDialog.pushButtonRemove.clicked.connect(self.removeLayer) self.optionsDialog.buttonBox.accepted.connect(self.saveOptions)
def showOptionsDialog(self, layerList, animationFrameLength, playBackwards=False, loopAnimation=False): """Show the optionsDialog and populate it with settings from timeLayerManager""" # load the form self.optionsDialog = uic.loadUi(os.path.join(self.path, OPTIONS_WIDGET_FILE)) # restore settings from layerList: for layer in layerList: settings = layer_settings.getSettingsFromLayer(layer) layer_settings.addSettingsToRow(settings, self.optionsDialog.tableWidget) self.optionsDialog.tableWidget.resizeColumnsToContents() # restore animation options self.optionsDialog.spinBoxFrameLength.setValue(animationFrameLength) self.optionsDialog.checkBoxBackwards.setChecked(playBackwards) self.optionsDialog.checkBoxLabel.setChecked(self.showLabel) self.optionsDialog.checkBoxDontExportEmpty.setChecked(not self.exportEmpty) self.optionsDialog.checkBoxLoop.setChecked(loopAnimation) self.optionsDialog.show_label_options_button.clicked.connect(self.showLabelOptions) self.optionsDialog.checkBoxLabel.stateChanged.connect(self.showOrHideLabelOptions) self.optionsDialog.textBrowser.setHtml(QCoreApplication.translate('TimeManager', """\ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html> <head> <meta name="qrichtext" content="1"/> <style> li.mono { font-family: Consolas, Courier New, Courier, monospace; } </style> </head> <body> <h1>Time Manager</h1> <p>Time Manager filters your layers and displays only layers and features that match the specified time frame. Time Manager supports vector layers and raster layers (including WMS-T).</p> <p>Timestamps have to be in one of the following formats:</p> <ul> <li class="mono">%Y-%m-%d %H:%M:%S.%f</li> <li class="mono">%Y-%m-%d %H:%M:%S</li> <li class="mono">%Y-%m-%d %H:%M</li> <li class="mono">%Y-%m-%dT%H:%M:%S</li> <li class="mono">%Y-%m-%dT%H:%M:%SZ</li> <li class="mono">%Y-%m-%dT%H:%M</li> <li class="mono">%Y-%m-%dT%H:%MZ</li> <li class="mono">%Y-%m-%d</li> <li class="mono">%Y/%m/%d %H:%M:%S.%f</li> <li class="mono">%Y/%m/%d %H:%M:%S</li> <li class="mono">%Y/%m/%d %H:%M</li> <li class="mono">%Y/%m/%d</li> <li class="mono">%H:%M:%S</li> <li class="mono">%H:%M:%S.%f</li> <li class="mono">%Y.%m.%d %H:%M:%S.%f</li> <li class="mono">%Y.%m.%d %H:%M:%S</li> <li class="mono">%Y.%m.%d %H:%M</li> <li class="mono">%Y.%m.%d</li> <li class="mono">%Y%m%d%H%M%SED</li> <li>Integer timestamp in seconds after or before the epoch (1970-1-1)</li> </ul> <p>The layer list contains all layers managed by Time Manager. To add a vector layer, press [Add layer]. To add a raster layer, press [Add raster]. If you want to remove a layer from the list, select it and press [Remove layer].</p> <p>Below the layer list, you'll find the following <b>animation options</b>:</p> <p><b>Show frame for x milliseconds</b>... allows you to adjust for how long a frame will be visible during the animation</p> <p><b>Play animation backwards</b>... if checked, the animation will run in reverse direction</p> <p><b>Display frame start time on map</b>... if checked, displays the start time of the visible frame in the lower right corner of the map</p> <h2>Add Layer dialog</h2> <p>Here, you are asked to select the layer that should be added and specify the columns containing start and (optionally) end time.</p> <p>The <b>offset</b> option allows you to further time the appearance of features. If you specify an offset of -1, the features will appear one second later than they would by default.</p> <h2>Dock widget</h2> <p>The dock was designed to attach to the bottom of the QGIS main window. It offers the following tools:</p> <ul> <li><img src="images/power_on.png" alt="power"/> ... On/Off switch, allows you to turn Time Manager's functionality on/off with the click of only one button</li> <li><span class="hidden">[Settings]</span><input type="button" value="Settings"/> ... opens the Settings dialog where you can manage your spatio-temporal layers</li> <li><span class="hidden">[Export Video]</span><input type="button" value="Export Video"/> ... exports an image series based on current settings (This button is only enabled if there are layers registered in Time Manager "Settings")</li> <li><b>Time frame start: <span class="hidden">[2000-01-01 00:00:00]</span></b><input type="text" value="2000-01-01 00:00:00"/> ... shows the start time of the currently active frame. Allows you to precisely specify your desired analysis time.</li> <li><b>Time frame size: </b><input type="text" value="1"/><span class="hidden">[x]</span><select><option value="days">days</option></select> ... allow you to choose the size of the time frame</li> <li><img src="images/back.png" alt="back"/> ... go to the previous time frame</li> <li><img src="images/forward.png" alt="forward"/> ... go to the next time frame</li> <li><b>Slider</b> ... shows the position of current frame relative to the whole dataset and allows you to seamlessly scroll through the dataset</li> <li><img src="images/play.png" alt="play"/> ... start an automatic animation based on your current settings</li> </ul> </body> </html>""")) # show dialog self.showOrHideLabelOptions() self.optionsDialog.show() # create raster and vector dialogs self.vectorDialog = VectorLayerDialog(self.iface, os.path.join(self.path, ADD_VECTOR_LAYER_WIDGET_FILE), self.optionsDialog.tableWidget) self.rasterDialog = RasterLayerDialog(self.iface, os.path.join(self.path, ADD_RASTER_LAYER_WIDGET_FILE), self.optionsDialog.tableWidget) # establish connections self.optionsDialog.pushButtonAddVector.clicked.connect(self.vectorDialog.show) self.optionsDialog.pushButtonAddRaster.clicked.connect(self.rasterDialog.show) self.optionsDialog.pushButtonRemove.clicked.connect(self.removeLayer) self.optionsDialog.buttonBox.accepted.connect(self.saveOptions)