Browse Source

GUI controls are finished

master
nilsnolde 1 year ago
parent
commit
d833752cf5
6 changed files with 790 additions and 612 deletions
  1. 0
    0
      apikey.txt
  2. BIN
      openrouteservice.png
  3. 74
    158
      osm_tools.py
  4. 202
    9
      osm_tools_dialog.py
  5. 335
    265
      osm_tools_dialog_base.ui
  6. 179
    180
      resources_rc.py

+ 0
- 0
apikey.txt View File


BIN
openrouteservice.png View File


+ 74
- 158
osm_tools.py View File

@@ -26,14 +26,14 @@
26 26
  *                                                                         *
27 27
  ***************************************************************************/
28 28
 """
29
-from PyQt5.QtCore import QSettings, QUrl, QTranslator, QCoreApplication
29
+from PyQt5.QtCore import QSettings, QUrl, QTranslator, QCoreApplication, Qt
30 30
 from PyQt5.Qt import PYQT_VERSION_STR
31
-from PyQt5.QtGui import QIcon, QDesktopServices
32
-from PyQt5.QtWidgets import QAction, QApplication
31
+from PyQt5.QtGui import QIcon, QPixmap
32
+from PyQt5.QtWidgets import QAction, QApplication, QLabel
33 33
 import os.path
34 34
 
35 35
 # Initialize Qt resources from file resources.py
36
-from ORStools import resources_rc, osm_tools_access, osm_tools_routing
36
+#from ORStools import resources_rc, osm_tools_gui
37 37
 # Import the code for the dialog
38 38
 from ORStools.osm_tools_dialog import OSMtoolsDialog
39 39
 
@@ -45,6 +45,9 @@ import logging
45 45
 
46 46
 logging.basicConfig(format='%(levelname)s:%(message)s', level = logging.INFO)
47 47
 
48
+def unload():
49
+    pass
50
+
48 51
 class OSMtools():
49 52
     """QGIS Plugin Implementation."""
50 53
 
@@ -54,7 +57,9 @@ class OSMtools():
54 57
         :param iface: An interface instance that will be passed to this class
55 58
             which provides the hook by which you can manipulate the QGIS
56 59
             application at run time.
57
-        :type iface: QgsInterface
60
+        :type iface: QgsInt
61
+    self.dlg.close()
62
+#            self.unload()erface
58 63
         """
59 64
         # Save reference to the QGIS interface
60 65
         self.iface = iface
@@ -74,50 +79,16 @@ class OSMtools():
74 79
             if PYQT_VERSION_STR > '4.3.3':
75 80
                 QCoreApplication.installTranslator(self.translator)
76 81
 
77
-        # Declare instance attributes
78
-        self.actions = []
79
-        self.menu = self.tr(u'&OSM Tools')
80 82
 
81 83
         self.toolbar = self.iface.addToolBar(u'OSMtools')
82 84
         self.toolbar.setObjectName(u'OSMtools')
83 85
         
84 86
         #custom __init__ declarations
85
-        self.dlg = OSMtoolsDialog()
87
+        self.dlg = OSMtoolsDialog(self.iface)
86 88
         
87 89
         self.canvas = qgis.utils.iface.mapCanvas()
88 90
         self.script_dir = os.path.dirname(os.path.abspath(__file__))
89
-        
90
-        # Init dialog boxes
91
-        # Routing
92
-        self.dlg.mode_travel.clear()
93
-        self.dlg.mode_routing.clear()           
94
-        self.dlg.mode_travel.addItem('driving-car')
95
-        self.dlg.mode_travel.addItem('driving-hgv')
96
-        self.dlg.mode_travel.addItem('cycling-regular')
97
-        self.dlg.mode_travel.addItem('cycling-road')
98
-        self.dlg.mode_travel.addItem('cycling-safe')
99
-        self.dlg.mode_travel.addItem('cycling-mountain')
100
-        self.dlg.mode_travel.addItem('cycling-tour')
101
-        self.dlg.mode_travel.addItem('foot-walking')
102
-        self.dlg.mode_travel.addItem('foot-hiking')
103
-        self.dlg.mode_routing.addItem('fastest')
104
-        self.dlg.mode_routing.addItem('shortest')
105
-        
106
-        # Access Analysis
107
-        self.dlg.mode.clear()
108
-        self.dlg.unit.clear() 
109
-        self.dlg.unit.addItem('time')
110
-        self.dlg.unit.addItem('distance')
111
-        self.dlg.mode.addItem('driving-car')
112
-        self.dlg.mode.addItem('driving-hgv')
113
-        self.dlg.mode.addItem('cycling-regular')
114
-        self.dlg.mode.addItem('cycling-road')
115
-        self.dlg.mode.addItem('cycling-safe')
116
-        self.dlg.mode.addItem('cycling-mountain')
117
-        self.dlg.mode.addItem('cycling-tour')
118
-        self.dlg.mode.addItem('foot-walking')
119
-        self.dlg.mode.addItem('foot-hiking')
120
-        
91
+                
121 92
         
122 93
     # noinspection PyMethodMayBeStatic
123 94
     def tr(self, message):
@@ -134,139 +105,84 @@ class OSMtools():
134 105
         # noinspection PyTypeChecker,PyArgumentList,PyCallByClass
135 106
         return QCoreApplication.translate('OSMtools', message)
136 107
 
137
-
138
-    def add_action(
139
-        self,
140
-        icon_path,
141
-        text,
142
-        callback,
143
-        enabled_flag=True,
144
-        add_to_menu=True,
145
-        add_to_toolbar=True,
146
-        status_tip=None,
147
-        whats_this=None,
148
-        parent=None):
149
-        """Add a toolbar icon to the toolbar.
150
-
151
-        :param icon_path: Path to the icon for this action. Can be a resource
152
-            path (e.g. ':/plugins/foo/bar.png') or a normal file system path.
153
-        :type icon_path: str
154
-
155
-        :param text: Text that should be shown in menu items for this action.
156
-        :type text: str
157
-.osm_tools_access
158
-from . import osm_tools_routing
159
-        :param callback: Function to be called when the action is triggered.
160
-        :type callback: function
161
-
162
-        :param enabled_flag: A flag indicating if the action should be enabled
163
-            by default. Defaults to True.
164
-        :type enabled_flag: bool
165
-
166
-        :param add_to_menu: Flag indicating whether the action should also
167
-            be added to the menu. Defaults to True.
168
-        :type add_to_menu: bool
169
-
170
-        :param add_to_toolbar: Flag indicating whether the action should also
171
-            be added to the toolbar. Defaults to True.
172
-        :type add_to_toolbar: bool
173
-
174
-        :param status_tip: Optional text to show in a popup when mouse pointer
175
-            hovers over the action.
176
-        :type status_tip: str
177
-
178
-        :param parent: Parent widget for the new action. Defaults None.
179
-        :type parent: QWidget
180
-
181
-        :param whats_this: Optional text to show in the status bar when the
182
-            mouse pointer hovers over the action.
183
-
184
-        :returns: The action that was created. Note that the action is also
185
-            added to self.actions list.
186
-        :rtype: QAction
187
-        """
188
-
189
-        # Create the dialog (after translation) and keep reference
190
-        
191
-
192
-        icon = QIcon(icon_path)
193
-        action = QAction(icon, text, parent)
194
-        action.triggered.connect(callback)
195
-        action.setEnabled(enabled_flag)
196
-
197
-        if status_tip is not None:
198
-            action.setStatusTip(status_tip)
199
-
200
-        if whats_this is not None:
201
-            action.setWhatsThis(whats_this)
202
-
203
-        if add_to_toolbar:
204
-            self.toolbar.addAction(action)
205
-
206
-        if add_to_menu:
207
-            self.iface.addPluginToMenu(
208
-                self.menu,
209
-                action)
210
-
211
-        self.actions.append(action)
212
-            
213
-        return action
214 108
     
215 109
     def initGui(self):
216 110
         """Create the menu entries and toolbar icons inside the QGIS GUI."""
217 111
 
218
-        icon_path = ':/plugins/OSMtools/icon.png'
219
-        self.add_action(
220
-            icon_path,
221
-            text=self.tr(u'OSM Tools'),
222
-            callback=self.run,
223
-            parent=self.iface.mainWindow())
224
-        
225
-        self.dlg.api_key.textChanged.connect(self.keyWriter)
226
-        
227
-        self.dlg.key_order.setText("<a href = 'https://go.openrouteservice.org/sign-up/'>Get Key!</a>")     
228
-        self.dlg.key_order.linkActivated.connect(self.OpenURL) 
229
-        self.dlg.header_2.linkActivated.connect(self.OpenURL)
230
-        self.dlg.header_3.linkActivated.connect(self.OpenURL)
231
-        
232
-        
233
-    def OpenURL(self, URL): 
234
-          QDesktopServices().openUrl(QUrl(URL))
235
-                
236
-    
112
+        icon_path = os.path.join(os.path.dirname(__file__),'icon.png')
113
+        self.action = QAction(QIcon(icon_path),
114
+                            self.tr(u'OSM Tools'), # tr text
115
+                            self.iface.mainWindow() # parent
116
+                            )
117
+        self.iface.addPluginToMenu(u'&OSM Tools',
118
+                                    self.action)
119
+        self.iface.addToolBarIcon(self.action)
120
+        self.action.triggered.connect(self.run)
121
+        
122
+        
123
+        
124
+#        
125
+#        self.dlg.api_key.textChanged.connect(self.keyWriter)
126
+#        
127
+#        self.dlg.key_order.setText("<a href = 'https://go.openrouteservice.org/sign-up/'>Get Key!</a>")     
128
+#        self.dlg.key_order.linkActivated.connect(self.OpenURL) 
129
+#        self.dlg.header_2.linkActivated.connect(self.OpenURL)
130
+#        self.dlg.header_3.linkActivated.connect(self.OpenURL)
131
+        
132
+#        
133
+#    def OpenURL(self, URL): 
134
+#          QDesktopServices().openUrl(QUrl(URL))
135
+#                
136
+#    
137
+            
237 138
     def unload(self):        
238
-        self.dlg.close()
139
+#        self.dlg.close()
239 140
         QApplication.restoreOverrideCursor()
141
+        self.iface.removePluginWebMenu(u"&OSM Tools", self.action)
142
+        self.iface.removeToolBarIcon(self.action)
143
+        del self.toolbar
240 144
         
241 145
         
242 146
     def run(self):
243 147
         """Run method that performs all the real work"""
244
-        
245
-        # Populate the api key lineEdit widget
246
-        with open(os.path.join(self.script_dir, "apikey.txt")) as key:
247
-            self.dlg.api_key.setText(key.read())
248
-            
249
-        # Initiate analysis classes
250
-        self.access_anal = osm_tools_access.accessAnalysis(self.dlg)
251
-        self.route_anal = osm_tools_routing.routing(self.dlg)
252
-        
253
-        self.dlg.setFixedSize(self.dlg.size())
148
+#        
149
+#        # Populate the api key lineEdit widget
150
+#        with open(os.path.join(self.script_dir, "apikey.txt")) as key:
151
+#            self.dlg.api_key.setText(key.read())
152
+#            
153
+#        # Initiate analysis classes
154
+#        self.access_anal = osm_tools_access.accessAnalysis(self.dlg)
155
+#        self.route_anal = osm_too
156
+        
157
+#    def resizeEvent(self, event):
158
+#        pixmap1 = QPixmap(os.path.join(self.script_dir, "openrouteservice.png"))
159
+#        self.pixmap = pixmap1.scaled(self.width(), self.height(),
160
+#                                    aspectRatioMode=Qt.KeepAspectRatio,
161
+#                                    transformMode=Qt.SmoothTransformation
162
+#                                    )
163
+#        self.header_pic.setPixmap(self.pixmap)ls_routing.routing(self.dlg)
164
+#        
165
+#        self.dlg.setFixedSize(self.dlg.size())
166
+        
167
+        # Set up combo boxes
254 168
         
255 169
         self.dlg.show()
256 170
         
171
+        self.dlg._layerTreeChanged()
257 172
         # show the dialog
258 173
         # Run the dialog event loop
259 174
         result = self.dlg.exec_()
260 175
         # See if OK was pressed
261 176
         if result:
262
-            if self.dlg.tabWidget.currentIndex() == 1 and self.dlg.use_layer.isChecked():
263
-                self.access_anal.iterAnalysis()
264
-            
265
-            elif self.dlg.tabWidget.currentIndex() == 0:
266
-                self.route_anal.route()
267
-        else:
268
-            self.unload()
177
+            self.dlg.close()
178
+#            if self.dlg.tabWidget.currentIndex() == 1 and self.dlg.use_layer.isChecked():
179
+#                self.access_anal.iterAnalysis()
180
+#            
181
+#            elif self.dlg.tabWidget.currentIndex() == 0:
182
+#                self.route_anal.route()
183
+#        else:
184
+#            self.unload()
269 185
                  
270
-    def keyWriter(self):
271
-        with open(os.path.join(self.script_dir, "apikey.txt"), 'w') as key:
272
-            return key.write(self.dlg.api_key.text())
186
+#    def keyWriter(self):
187
+#        with open(os.path.join(self.script_dir, "apikey.txt"), 'w') as key:
188
+#            return key.write(self.dlg.api_key.text())

+ 202
- 9
osm_tools_dialog.py View File

@@ -7,8 +7,8 @@
7 7
                              -------------------
8 8
         begin                : 2017-02-01
9 9
         git sha              : $Format:%H$
10
-        copyright            : (C) 2017 by nils
11
-        email                : nils
10
+        copyright            : (C) 2017 by Nils Nolde
11
+        email                : nils.nolde@gmail.com
12 12
  ***************************************************************************/
13 13
 
14 14
 /***************************************************************************
@@ -21,21 +21,214 @@
21 21
  ***************************************************************************/
22 22
 """
23 23
 
24
-import os
24
+import os.path
25 25
 
26
-from PyQt5 import QtWidgets, uic
26
+from PyQt5.uic import loadUiType
27
+from PyQt5.QtWidgets import (QDialog, 
28
+                             QApplication,
29
+                             QComboBox,
30
+                             QPushButton,                     
31
+                             )
32
+from PyQt5.QtCore import Qt
33
+from PyQt5.QtGui import QPixmap
34
+from qgis.core import (QgsGeometry, 
35
+                       QgsProject, 
36
+                       QgsLayerTreeLayer, 
37
+                       QgsMapLayer,
38
+                       QgsWkbTypes
39
+                       )
27 40
 
28
-FORM_CLASS, _ = uic.loadUiType(os.path.join(
41
+import qgis.core
42
+
43
+from . import osm_tools_pointtool, osm_tools_geocode
44
+
45
+
46
+FORM_CLASS, _ = loadUiType(os.path.join(
29 47
     os.path.dirname(__file__), 'osm_tools_dialog_base.ui'))
30 48
 
49
+profiles = [
50
+        'driving-car',
51
+        'driving-hgv',
52
+        'cycling-regular',
53
+        'cycling-road',
54
+        'cycling-safe',
55
+        'cycling-mountain',
56
+        'cycling-tour',
57
+        'foot-walking',
58
+        'foot-hiking',
59
+        ]
60
+
61
+preferences = ['fastest', 'shortest']
31 62
 
32
-class OSMtoolsDialog(QtWidgets.QDialog, FORM_CLASS):
33
-    def __init__(self, parent=None):
63
+units = ['time', 'distance']
64
+
65
+class OSMtoolsDialog(QDialog, FORM_CLASS):
66
+    def __init__(self, iface):
34 67
         """Constructor."""
35
-        super(OSMtoolsDialog, self).__init__(parent)
68
+        QDialog.__init__(self)
36 69
         # Set up the user interface from Designer.
37 70
         # After setupUI you can access any designer object by doing
38 71
         # self.<objectname>, and you can use autoconnect slots - see
39
-        # http://qt-project.org/doc/qt-4.8/designer-using-a-ui-file.html
72
+        # http://qt-project.org/doc/qt-4.8/designer-using-a-ui-file.htmllayerTreeRoot
40 73
         # #widgets-and-dialogs-with-auto-connect
41 74
         self.setupUi(self)
75
+        self.iface = iface
76
+        self.script_dir = os.path.dirname(os.path.abspath(__file__))
77
+        
78
+        # Read API key file
79
+        with open(os.path.join(self.script_dir, "apikey.txt")) as key:
80
+            self.api_key_dlg.setText(key.read())
81
+            
82
+        self.api_key = self.api_key_dlg.text()
83
+        self.project = QgsProject.instance()
84
+        
85
+        self.route_mode_combo.addItems(profiles)
86
+        self.access_mode_combo.addItems(profiles)
87
+        self.route_pref_combo.addItems(preferences)
88
+        self.access_unit_combo.addItems(units)
89
+        
90
+        #### Set up signals/slots ####
91
+        
92
+        # API key text line
93
+        self.api_key_dlg.textChanged.connect(self._keyWriter)
94
+        
95
+        # Isochrone tab
96
+        self.access_map_button.clicked.connect(self._initMapTool)
97
+        self.access_unit_combo.currentIndexChanged.connect(self._unitChanged)
98
+        
99
+        # Routing tab
100
+        self.start_map_button.clicked.connect(self._initMapTool)
101
+        self.via_map_button.clicked.connect(self._initMapTool)
102
+        self.end_map_button.clicked.connect(self._initMapTool)
103
+        self.start_buttongroup.buttonReleased[int].connect(self._mappingMethodChanged)
104
+        self.end_buttongroup.buttonReleased[int].connect(self._mappingMethodChanged)
105
+        self.start_layer_combo.currentIndexChanged[int].connect(self._layerSeletedChanged)
106
+        self.end_layer_combo.currentIndexChanged[int].connect(self._layerSeletedChanged)
107
+        self.via_clear_button.clicked.connect(self._clearVia)
108
+        self.project.layerWasAdded.connect(self._layerTreeChanged)
109
+        self.project.layersRemoved.connect(self._layerTreeChanged) 
110
+        self.start_layer_refresh.clicked.connect(self._layerTreeChanged) 
111
+        self.end_layer_refresh.clicked.connect(self._layerTreeChanged) 
112
+        
113
+        header_pic = QPixmap(os.path.join(self.script_dir, "openrouteservice.png"))
114
+        self.pixmap = header_pic.scaled(self.width(), self.height(),
115
+                                        aspectRatioMode=Qt.KeepAspectRatio,
116
+                                        transformMode=Qt.SmoothTransformation
117
+                                        )
118
+        self.header_pic.setPixmap(self.pixmap)
119
+        self.header_text.setAlignment(Qt.AlignHCenter)
120
+        self.header_subpic.setAlignment(Qt.AlignHCenter)
121
+        
122
+    
123
+    def _layerTreeChanged(self):
124
+        #TODO: Connect layer QComboBoxes to iface.layerTree  change event
125
+        start_layer_id = self.start_layer_combo.currentIndex()
126
+        end_layer_id = self.end_layer_combo.currentIndex()
127
+        self.start_layer_combo.clear()
128
+        self.end_layer_combo.clear()
129
+        root = self.project.layerTreeRoot()
130
+        for child in root.children():
131
+            if isinstance(child, QgsLayerTreeLayer):
132
+                layer = child.layer()
133
+                if layer.type() == QgsMapLayer.VectorLayer and layer.wkbType() == QgsWkbTypes.Type(1):
134
+                    self.start_layer_combo.addItem(layer.name())
135
+                    self.end_layer_combo.addItem(layer.name())
136
+        self.start_layer_combo.setCurrentIndex(start_layer_id)
137
+        self.end_layer_combo.setCurrentIndex(end_layer_id)
138
+                    
139
+                    
140
+    def _mappingMethodChanged(self, index):
141
+        """ Generic method to enable/disable all comboboxes and buttons in the
142
+        children of the parent widget of the calling radio button. 
143
+        
144
+        :param index: Index of the calling radio button within the QButtonGroup.
145
+        :type index: integer
146
+        """
147
+        parent_widget = self.sender().button(index).parentWidget()
148
+        parent_widget_name = parent_widget.objectName()
149
+        grandparent_widget = parent_widget.parentWidget()
150
+        
151
+        for parent in grandparent_widget.children():
152
+            if parent.objectName() == parent_widget_name:
153
+                for child in parent.findChildren((QComboBox, QPushButton)):
154
+                    child.setEnabled(True)
155
+            else: 
156
+                for child in parent.findChildren((QComboBox, QPushButton)):
157
+                    child.setEnabled(False)
158
+        
159
+        condition = self.end_layer_radio.isChecked() and self.start_layer_radio.isChecked()
160
+        self.radio_one.setEnabled(condition)
161
+        self.radio_many.setEnabled(condition)
162
+        
163
+        
164
+    def _layerSeletedChanged(self, index):
165
+        #Todo: connect field comboboxes to change event in layer comboboxes
166
+        
167
+        if index != -1:
168
+            sending_widget = self.sender()
169
+            sending_widget_name = sending_widget.objectName()
170
+            parent_widget = self.sender().parentWidget()
171
+            layer_selected = [lyr for lyr in self.project.mapLayers().values() if lyr.name() == sending_widget.currentText()][0]
172
+            for widget in parent_widget.findChildren(QComboBox):
173
+                if widget.objectName() != sending_widget_name:   
174
+                    widget.clear()
175
+                    widget.addItems([field.name() for field in layer_selected.fields()])
176
+                
177
+    
178
+    def _clearVia(self):
179
+        self.via_label.setText("Long,Lat")
180
+            
181
+            
182
+    def _keyWriter(self):
183
+        with open(os.path.join(self.script_dir, "apikey.txt"), 'w') as key:
184
+            key.write(self.api_key_dlg.text())
185
+           
186
+            
187
+    def _unitChanged(self):
188
+        """
189
+        Connector to change unit label text when changing unit
190
+        """
191
+        if self.access_unit_combo.currentText() == 'time':
192
+            self.unit_label.setText('mins')
193
+        else:
194
+            self.unit_label.setText('km')
195
+
196
+
197
+    def _initMapTool(self):
198
+        self.setWindowState(Qt.WindowMinimized)
199
+        sending_button = self.sender().objectName()
200
+        self.mapTool = osm_tools_pointtool.PointTool(self.iface.mapCanvas(), sending_button)        
201
+        self.iface.mapCanvas().setMapTool(self.mapTool)
202
+        self.mapTool.canvasClicked.connect(self._writeText)
203
+        
204
+        
205
+    # Write map coordinates to text fields
206
+    def _writeText(self, point, button):
207
+        x, y = point
208
+        
209
+        if button == self.start_map_button.objectName():
210
+            self.start_map_label.setText("{0:.5f},{1:.5f}".format(x, y))
211
+            
212
+        if button == self.end_map_button.objectName():
213
+            self.end_map_label.setText("{0:.5f},{1:.5f}".format(x, y))
214
+            
215
+        if button == self.via_map_button.objectName():
216
+            self.via_label.setText("{0:.5f},{1:.5f}".format(x, y))
217
+            
218
+        if button == self.access_map_button.objectName():            
219
+            point_geometry = QgsGeometry.fromPointXY(point)
220
+            loc_dict = osm_tools_geocode.reverseGeocode(point_geometry,self.api_key)
221
+            
222
+            out_str = u"Long: {0:.3f}, Lat:{1:.3f}\n{2}\n{3}\n{4}".format(loc_dict.get('Lon', ""),
223
+                                                            loc_dict.get('Lat', ""),
224
+                                                            loc_dict.get('CITY', "NA"),
225
+                                                            loc_dict.get('STATE', "NA"),
226
+                                                            loc_dict.get('COUNTRY', "NA")
227
+                                                            )
228
+            self.access_map_label.setText(out_str)
229
+        
230
+        # Restore normal behavior
231
+        self.showNormal()
232
+        QApplication.restoreOverrideCursor()
233
+        self.mapTool.canvasClicked.disconnect()
234
+        

+ 335
- 265
osm_tools_dialog_base.ui View File

@@ -17,21 +17,7 @@
17 17
    <bool>true</bool>
18 18
   </property>
19 19
   <layout class="QGridLayout" name="gridLayout">
20
-   <item row="0" column="0" colspan="2">
21
-    <widget class="QLabel" name="label_7">
22
-     <property name="font">
23
-      <font>
24
-       <pointsize>12</pointsize>
25
-       <weight>75</weight>
26
-       <bold>true</bold>
27
-      </font>
28
-     </property>
29
-     <property name="text">
30
-      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;OSM Tools&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
31
-     </property>
32
-    </widget>
33
-   </item>
34
-   <item row="7" column="0" colspan="3">
20
+   <item row="6" column="0" colspan="2">
35 21
     <widget class="QDialogButtonBox" name="button_box">
36 22
      <property name="orientation">
37 23
       <enum>Qt::Horizontal</enum>
@@ -41,31 +27,14 @@
41 27
      </property>
42 28
     </widget>
43 29
    </item>
44
-   <item row="1" column="0" colspan="2">
45
-    <widget class="QLabel" name="header_2">
46
-     <property name="text">
47
-      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;powered by &lt;a href=&quot;www.openrouteservice.org&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;OpenRouteService&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
48
-     </property>
49
-    </widget>
50
-   </item>
51
-   <item row="2" column="0">
52
-    <widget class="QLabel" name="header_3">
53
-     <property name="layoutDirection">
54
-      <enum>Qt::LeftToRight</enum>
55
-     </property>
56
-     <property name="text">
57
-      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;brought to you by &lt;a href=&quot;mailto:nilsnolde@gmail.com&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;Nils Nolde&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
58
-     </property>
59
-    </widget>
60
-   </item>
61
-   <item row="4" column="0">
30
+   <item row="3" column="0">
62 31
     <widget class="QGroupBox" name="groupBox_4">
63 32
      <property name="title">
64 33
       <string>API key</string>
65 34
      </property>
66 35
      <layout class="QHBoxLayout" name="horizontalLayout_4">
67 36
       <item>
68
-       <widget class="QLineEdit" name="api_key">
37
+       <widget class="QLineEdit" name="api_key_dlg">
69 38
         <property name="toolTip">
70 39
          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Get your personal API key!&lt;/p&gt;&lt;p&gt;500 requests/day and 40 requests/minute limitations&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
71 40
         </property>
@@ -81,14 +50,17 @@
81 50
          </font>
82 51
         </property>
83 52
         <property name="text">
84
-         <string>Order Key</string>
53
+         <string>&lt;a href=&quot;https://go.openrouteservice.org/sign-up/&quot; style=&quot;font-size: 14px; color: #b5152b&quot;&gt;Order Key!&lt;/a&gt;</string>
54
+        </property>
55
+        <property name="openExternalLinks">
56
+         <bool>true</bool>
85 57
         </property>
86 58
        </widget>
87 59
       </item>
88 60
      </layout>
89 61
     </widget>
90 62
    </item>
91
-   <item row="6" column="0">
63
+   <item row="5" column="0">
92 64
     <widget class="QTabWidget" name="tabWidget">
93 65
      <property name="currentIndex">
94 66
       <number>0</number>
@@ -110,9 +82,9 @@
110 82
           <property name="geometry">
111 83
            <rect>
112 84
             <x>0</x>
113
-            <y>-408</y>
114
-            <width>315</width>
115
-            <height>839</height>
85
+            <y>-395</y>
86
+            <width>340</width>
87
+            <height>852</height>
116 88
            </rect>
117 89
           </property>
118 90
           <layout class="QGridLayout" name="gridLayout_8">
@@ -121,31 +93,49 @@
121 93
              <property name="title">
122 94
               <string>Via</string>
123 95
              </property>
124
-             <layout class="QHBoxLayout" name="horizontalLayout" stretch="0,0,0">
96
+             <layout class="QHBoxLayout" name="horizontalLayout" stretch="10,0,0">
125 97
               <property name="sizeConstraint">
126 98
                <enum>QLayout::SetDefaultConstraint</enum>
127 99
               </property>
128 100
               <item>
129
-               <widget class="QLabel" name="add_via">
101
+               <widget class="QLabel" name="via_label">
130 102
                 <property name="font">
131 103
                  <font>
132 104
                   <italic>true</italic>
133 105
                  </font>
134 106
                 </property>
107
+                <property name="focusPolicy">
108
+                 <enum>Qt::NoFocus</enum>
109
+                </property>
135 110
                 <property name="text">
136 111
                  <string>Long,Lat</string>
137 112
                 </property>
113
+                <property name="textInteractionFlags">
114
+                 <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
115
+                </property>
138 116
                </widget>
139 117
               </item>
140 118
               <item>
141
-               <widget class="QPushButton" name="add_via_button">
119
+               <widget class="QPushButton" name="via_map_button">
120
+                <property name="sizePolicy">
121
+                 <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
122
+                  <horstretch>0</horstretch>
123
+                  <verstretch>0</verstretch>
124
+                 </sizepolicy>
125
+                </property>
142 126
                 <property name="text">
143 127
                  <string>Map</string>
144 128
                 </property>
145 129
                </widget>
146 130
               </item>
147 131
               <item>
148
-               <widget class="QPushButton" name="add_via_button_clear">
132
+               <widget class="QPushButton" name="via_clear_button">
133
+                <property name="sizePolicy">
134
+                 <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
135
+                  <horstretch>0</horstretch>
136
+                  <verstretch>0</verstretch>
137
+                 </sizepolicy>
138
+                </property>
149 139
                 <property name="text">
150 140
                  <string>Clear</string>
151 141
                 </property>
@@ -158,87 +148,128 @@
158 148
             <widget class="QGroupBox" name="groupBox">
159 149
              <property name="font">
160 150
               <font>
161
-               <pointsize>8</pointsize>
151
+               <pointsize>9</pointsize>
162 152
               </font>
163 153
              </property>
164 154
              <property name="title">
165 155
               <string>Start Location(s)</string>
166 156
              </property>
167 157
              <layout class="QGridLayout" name="gridLayout_4">
168
-              <item row="2" column="0">
169
-               <widget class="QRadioButton" name="start_radio_layer">
170
-                <property name="text">
171
-                 <string>From Layer</string>
172
-                </property>
173
-                <property name="checked">
174
-                 <bool>false</bool>
175
-                </property>
176
-               </widget>
177
-              </item>
178
-              <item row="4" column="0" colspan="2">
179
-               <widget class="QLabel" name="label_15">
180
-                <property name="text">
181
-                 <string>Select Unique ID field</string>
182
-                </property>
183
-               </widget>
184
-              </item>
185 158
               <item row="0" column="0">
186
-               <widget class="QRadioButton" name="start_radio_map">
187
-                <property name="text">
188
-                 <string>From Map</string>
189
-                </property>
190
-                <property name="checked">
191
-                 <bool>true</bool>
192
-                </property>
193
-               </widget>
194
-              </item>
195
-              <item row="1" column="1">
196
-               <widget class="QPushButton" name="add_start_button">
197
-                <property name="text">
198
-                 <string>Map Coordinates</string>
199
-                </property>
159
+               <widget class="QWidget" name="widget_8" native="true">
160
+                <layout class="QGridLayout" name="gridLayout_10">
161
+                 <property name="topMargin">
162
+                  <number>6</number>
163
+                 </property>
164
+                 <property name="bottomMargin">
165
+                  <number>6</number>
166
+                 </property>
167
+                 <item row="0" column="0">
168
+                  <widget class="QRadioButton" name="start_map_radio">
169
+                   <property name="font">
170
+                    <font>
171
+                     <pointsize>9</pointsize>
172
+                    </font>
173
+                   </property>
174
+                   <property name="text">
175
+                    <string>From Map</string>
176
+                   </property>
177
+                   <property name="checked">
178
+                    <bool>true</bool>
179
+                   </property>
180
+                   <attribute name="buttonGroup">
181
+                    <string notr="true">start_buttongroup</string>
182
+                   </attribute>
183
+                  </widget>
184
+                 </item>
185
+                 <item row="1" column="0">
186
+                  <widget class="QLabel" name="start_map_label">
187
+                   <property name="font">
188
+                    <font>
189
+                     <pointsize>9</pointsize>
190
+                     <italic>true</italic>
191
+                    </font>
192
+                   </property>
193
+                   <property name="text">
194
+                    <string>Long,Lat</string>
195
+                   </property>
196
+                  </widget>
197
+                 </item>
198
+                 <item row="1" column="1">
199
+                  <widget class="QPushButton" name="start_map_button">
200
+                   <property name="font">
201
+                    <font>
202
+                     <pointsize>9</pointsize>
203
+                    </font>
204
+                   </property>
205
+                   <property name="text">
206
+                    <string>Map Coordinates</string>
207
+                   </property>
208
+                  </widget>
209
+                 </item>
210
+                </layout>
200 211
                </widget>
201 212
               </item>
202 213
               <item row="1" column="0">
203
-               <widget class="QLabel" name="add_start">
204
-                <property name="font">
205
-                 <font>
206
-                  <italic>true</italic>
207
-                 </font>
208
-                </property>
209
-                <property name="text">
210
-                 <string>Long,Lat</string>
211
-                </property>
212
-               </widget>
213
-              </item>
214
-              <item row="5" column="0" colspan="2">
215
-               <widget class="QComboBox" name="start_layer_id">
216
-                <property name="enabled">
217
-                 <bool>false</bool>
218
-                </property>
219
-               </widget>
220
-              </item>
221
-              <item row="3" column="0">
222
-               <widget class="QComboBox" name="start_layer">
223
-                <property name="enabled">
224
-                 <bool>false</bool>
225
-                </property>
226
-                <property name="toolTip">
227
-                 <string>Input Layer must be of type 'Point' and in EPSG:4326</string>
228
-                </property>
229
-                <property name="whatsThis">
230
-                 <string/>
231
-                </property>
232
-               </widget>
233
-              </item>
234
-              <item row="3" column="1">
235
-               <widget class="QPushButton" name="layer_from_refresh">
236
-                <property name="enabled">
237
-                 <bool>false</bool>
238
-                </property>
239
-                <property name="text">
240
-                 <string>Refresh List</string>
241
-                </property>
214
+               <widget class="QWidget" name="widget_9" native="true">
215
+                <layout class="QGridLayout" name="gridLayout_11">
216
+                 <property name="topMargin">
217
+                  <number>6</number>
218
+                 </property>
219
+                 <property name="bottomMargin">
220
+                  <number>6</number>
221
+                 </property>
222
+                 <item row="0" column="0">
223
+                  <widget class="QRadioButton" name="start_layer_radio">
224
+                   <property name="text">
225
+                    <string>From Layer</string>
226
+                   </property>
227
+                   <property name="checked">
228
+                    <bool>false</bool>
229
+                   </property>
230
+                   <attribute name="buttonGroup">
231
+                    <string notr="true">start_buttongroup</string>
232
+                   </attribute>
233
+                  </widget>
234
+                 </item>
235
+                 <item row="1" column="0">
236
+                  <widget class="QComboBox" name="start_layer_combo">
237
+                   <property name="enabled">
238
+                    <bool>false</bool>
239
+                   </property>
240
+                   <property name="toolTip">
241
+                    <string>Input Layer must be of type 'Point' and in EPSG:4326</string>
242
+                   </property>
243
+                   <property name="whatsThis">
244
+                    <string/>
245
+                   </property>
246
+                  </widget>
247
+                 </item>
248
+                 <item row="1" column="1">
249
+                  <widget class="QPushButton" name="start_layer_refresh">
250
+                   <property name="enabled">
251
+                    <bool>false</bool>
252
+                   </property>
253
+                   <property name="text">
254
+                    <string>Refresh List</string>
255
+                   </property>
256
+                  </widget>
257
+                 </item>
258
+                 <item row="2" column="0" colspan="2">
259
+                  <widget class="QLabel" name="label_15">
260
+                   <property name="text">
261
+                    <string>Select Unique ID field</string>
262
+                   </property>
263
+                  </widget>
264
+                 </item>
265
+                 <item row="3" column="0" colspan="2">
266
+                  <widget class="QComboBox" name="start_layer_id">
267
+                   <property name="enabled">
268
+                    <bool>false</bool>
269
+                   </property>
270
+                  </widget>
271
+                 </item>
272
+                </layout>
242 273
                </widget>
243 274
               </item>
244 275
              </layout>
@@ -284,87 +315,122 @@
284 315
            </item>
285 316
            <item row="5" column="0">
286 317
             <widget class="QGroupBox" name="groupBox_2">
318
+             <property name="font">
319
+              <font>
320
+               <pointsize>9</pointsize>
321
+              </font>
322
+             </property>
287 323
              <property name="title">
288 324
               <string>End Location(s)</string>
289 325
              </property>
290 326
              <layout class="QGridLayout" name="gridLayout_5">
291
-              <item row="0" column="0">
292
-               <widget class="QRadioButton" name="end_radio_map">
293
-                <property name="text">
294
-                 <string>From Map</string>
295
-                </property>
296
-                <property name="checked">
297
-                 <bool>true</bool>
298
-                </property>
299
-               </widget>
300
-              </item>
301 327
               <item row="1" column="0">
302
-               <widget class="QLabel" name="add_end">
303
-                <property name="font">
304
-                 <font>
305
-                  <italic>true</italic>
306
-                 </font>
307
-                </property>
308
-                <property name="text">
309
-                 <string>Long,Lat</string>
310
-                </property>
328
+               <widget class="QWidget" name="widget_11" native="true">
329
+                <layout class="QGridLayout" name="gridLayout_13">
330
+                 <property name="topMargin">
331
+                  <number>6</number>
332
+                 </property>
333
+                 <property name="bottomMargin">
334
+                  <number>6</number>
335
+                 </property>
336
+                 <item row="0" column="0">
337
+                  <widget class="QRadioButton" name="end_layer_radio">
338
+                   <property name="enabled">
339
+                    <bool>true</bool>
340
+                   </property>
341
+                   <property name="text">
342
+                    <string>From Layer</string>
343
+                   </property>
344
+                   <property name="checked">
345
+                    <bool>false</bool>
346
+                   </property>
347
+                   <attribute name="buttonGroup">
348
+                    <string notr="true">end_buttongroup</string>
349
+                   </attribute>
350
+                  </widget>
351
+                 </item>
352
+                 <item row="1" column="0">
353
+                  <widget class="QComboBox" name="end_layer_combo">
354
+                   <property name="enabled">
355
+                    <bool>false</bool>
356
+                   </property>
357
+                   <property name="toolTip">
358
+                    <string>Input Layer must be of type 'Point' and in EPSG:4326</string>
359
+                   </property>
360
+                   <property name="whatsThis">
361
+                    <string/>
362
+                   </property>
363
+                  </widget>
364
+                 </item>
365
+                 <item row="1" column="1">
366
+                  <widget class="QPushButton" name="end_layer_refresh">
367
+                   <property name="enabled">
368
+                    <bool>false</bool>
369
+                   </property>
370
+                   <property name="text">
371
+                    <string>Refresh List</string>
372
+                   </property>
373
+                  </widget>
374
+                 </item>
375
+                 <item row="2" column="0" colspan="2">
376
+                  <widget class="QLabel" name="label_17">
377
+                   <property name="text">
378
+                    <string>Select Unique ID field</string>
379
+                   </property>
380
+                  </widget>
381
+                 </item>
382
+                 <item row="3" column="0" colspan="2">
383
+                  <widget class="QComboBox" name="end_layer_id">
384
+                   <property name="enabled">
385
+                    <bool>false</bool>
386
+                   </property>
387
+                  </widget>
388
+                 </item>
389
+                </layout>
311 390
                </widget>
312 391
               </item>
313
-              <item row="1" column="1">
314
-               <widget class="QPushButton" name="add_end_button">
315
-                <property name="text">
316
-                 <string>Map Coordinates</string>
317
-                </property>
318
-               </widget>
319
-              </item>
320
-              <item row="4" column="0" colspan="2">
321
-               <widget class="QLabel" name="label_17">
322
-                <property name="text">
323
-                 <string>Select Unique ID field</string>
324
-                </property>
325
-               </widget>
326
-              </item>
327
-              <item row="2" column="0">
328
-               <widget class="QRadioButton" name="end_radio_layer">
329
-                <property name="enabled">
330
-                 <bool>true</bool>
331
-                </property>
332
-                <property name="text">
333
-                 <string>From Layer</string>
334
-                </property>
335
-                <property name="checked">
336
-                 <bool>false</bool>
337
-                </property>
338
-               </widget>
339
-              </item>
340
-              <item row="5" column="0" colspan="2">
341
-               <widget class="QComboBox" name="end_layer_id">
342
-                <property name="enabled">
343
-                 <bool>false</bool>
344
-                </property>
345
-               </widget>
346
-              </item>
347
-              <item row="3" column="0">
348
-               <widget class="QComboBox" name="end_layer">
349
-                <property name="enabled">
350
-                 <bool>false</bool>
351
-                </property>
352
-                <property name="toolTip">
353
-                 <string>Input Layer must be of type 'Point' and in EPSG:4326</string>
354
-                </property>
355
-                <property name="whatsThis">
356
-                 <string/>
357
-                </property>
358
-               </widget>
359
-              </item>
360
-              <item row="3" column="1">
361
-               <widget class="QPushButton" name="layer_to_refresh">
362
-                <property name="enabled">
363
-                 <bool>false</bool>
364
-                </property>
365
-                <property name="text">
366
-                 <string>Refresh List</string>
367
-                </property>
392
+              <item row="0" column="0">
393
+               <widget class="QWidget" name="widget_10" native="true">
394
+                <layout class="QGridLayout" name="gridLayout_12">
395
+                 <property name="topMargin">
396
+                  <number>6</number>
397
+                 </property>
398
+                 <property name="bottomMargin">
399
+                  <number>6</number>
400
+                 </property>
401
+                 <item row="0" column="0">
402
+                  <widget class="QRadioButton" name="end_map_radio">
403
+                   <property name="text">
404
+                    <string>From Map</string>
405
+                   </property>
406
+                   <property name="checked">
407
+                    <bool>true</bool>
408
+                   </property>
409
+                   <attribute name="buttonGroup">
410
+                    <string notr="true">end_buttongroup</string>
411
+                   </attribute>
412
+                  </widget>
413
+                 </item>
414
+                 <item row="1" column="0">
415
+                  <widget class="QLabel" name="end_map_label">
416
+                   <property name="font">
417
+                    <font>
418
+                     <italic>true</italic>
419
+                    </font>
420
+                   </property>
421
+                   <property name="text">
422
+                    <string>Long,Lat</string>
423
+                   </property>
424
+                  </widget>
425
+                 </item>
426
+                 <item row="1" column="1">
427
+                  <widget class="QPushButton" name="end_map_button">
428
+                   <property name="text">
429
+                    <string>Map Coordinates</string>
430
+                   </property>
431
+                  </widget>
432
+                 </item>
433
+                </layout>
368 434
                </widget>
369 435
               </item>
370 436
              </layout>
@@ -381,7 +447,7 @@
381 447
                </widget>
382 448
               </item>
383 449
               <item>
384
-               <widget class="QComboBox" name="mode_travel"/>
450
+               <widget class="QComboBox" name="route_mode_combo"/>
385 451
               </item>
386 452
              </layout>
387 453
             </widget>
@@ -392,18 +458,23 @@
392 458
               <item>
393 459
                <widget class="QLabel" name="label_12">
394 460
                 <property name="text">
395
-                 <string>Routing mode</string>
461
+                 <string>Preference</string>
396 462
                 </property>
397 463
                </widget>
398 464
               </item>
399 465
               <item>
400
-               <widget class="QComboBox" name="mode_routing"/>
466
+               <widget class="QComboBox" name="route_pref_combo"/>
401 467
               </item>
402 468
              </layout>
403 469
             </widget>
404 470
            </item>
405 471
            <item row="8" column="0">
406 472
             <widget class="QGroupBox" name="avoid_type">
473
+             <property name="font">
474
+              <font>
475
+               <family>Sans Serif</family>
476
+              </font>
477
+             </property>
407 478
              <property name="title">
408 479
               <string>Avoid features</string>
409 480
              </property>
@@ -489,7 +560,7 @@
489 560
            </widget>
490 561
           </item>
491 562
           <item>
492
-           <widget class="QComboBox" name="mode"/>
563
+           <widget class="QComboBox" name="access_mode_combo"/>
493 564
           </item>
494 565
          </layout>
495 566
         </widget>
@@ -511,7 +582,7 @@
511 582
            </widget>
512 583
           </item>
513 584
           <item>
514
-           <widget class="QComboBox" name="unit">
585
+           <widget class="QComboBox" name="access_unit_combo">
515 586
             <property name="enabled">
516 587
              <bool>true</bool>
517 588
             </property>
@@ -521,7 +592,7 @@
521 592
            </widget>
522 593
           </item>
523 594
          </layout>
524
-         <zorder>unit</zorder>
595
+         <zorder>access_unit_combo</zorder>
525 596
          <zorder>label_5</zorder>
526 597
         </widget>
527 598
        </item>
@@ -539,7 +610,7 @@
539 610
            </widget>
540 611
           </item>
541 612
           <item row="0" column="2">
542
-           <widget class="QLabel" name="label_6">
613
+           <widget class="QLabel" name="unit_label">
543 614
             <property name="layoutDirection">
544 615
              <enum>Qt::LeftToRight</enum>
545 616
             </property>
@@ -566,45 +637,14 @@
566 637
        </item>
567 638
        <item>
568 639
         <widget class="QWidget" name="widget_7" native="true">
569
-         <layout class="QHBoxLayout" name="horizontalLayout_8" stretch="14,12,3">
570
-          <item>
571
-           <widget class="QLabel" name="label_4">
572
-            <property name="toolTip">
573
-             <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;The interval 'Maximum isochrone' will be incremented by&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
574
-            </property>
575
-            <property name="text">
576
-             <string>Interval</string>
577
-            </property>
578
-           </widget>
579
-          </item>
580
-          <item>
581
-           <widget class="QDoubleSpinBox" name="iso_int">
582
-            <property name="decimals">
583
-             <number>0</number>
584
-            </property>
585
-            <property name="value">
586
-             <double>5.000000000000000</double>
587
-            </property>
588
-           </widget>
589
-          </item>
590
-          <item>
591
-           <widget class="QLabel" name="label_8">
592
-            <property name="text">
593
-             <string>mins</string>
594
-            </property>
595
-            <property name="alignment">
596
-             <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
597
-            </property>
598
-           </widget>
599
-          </item>
600
-         </layout>
640
+         <layout class="QHBoxLayout" name="horizontalLayout_8"/>
601 641
         </widget>
602 642
        </item>
603 643
        <item>
604 644
         <widget class="QWidget" name="widget_3" native="true">
605 645
          <layout class="QGridLayout" name="gridLayout_2">
606 646
           <item row="0" column="0">
607
-           <widget class="QLabel" name="access_text">
647
+           <widget class="QLabel" name="access_map_label">
608 648
             <property name="palette">
609 649
              <palette>
610 650
               <active>
@@ -1034,7 +1074,7 @@
1034 1074
            </widget>
1035 1075
           </item>
1036 1076
           <item row="0" column="1">
1037
-           <widget class="QPushButton" name="access_map">
1077
+           <widget class="QPushButton" name="access_map_button">
1038 1078
             <property name="toolTip">
1039 1079
              <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Click on map canvas to select a point source for accessibility area&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
1040 1080
             </property>
@@ -1102,61 +1142,87 @@
1102 1142
      </widget>
1103 1143
     </widget>
1104 1144
    </item>
1145
+   <item row="2" column="0">
1146
+    <widget class="QLabel" name="header_text">
1147
+     <property name="text">
1148
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;a href=&quot;https://go.openrouteservice.org/&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#b5152b;&quot;&gt;openrouteservice.org&lt;/span&gt;&lt;/a&gt; | by &lt;a href=&quot;mailto:nils@openrouteservice.org&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#b5152b;&quot;&gt;Nils Nolde&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
1149
+     </property>
1150
+     <property name="alignment">
1151
+      <set>Qt::AlignCenter</set>
1152
+     </property>
1153
+     <property name="openExternalLinks">
1154
+      <bool>true</bool>
1155
+     </property>
1156
+    </widget>
1157
+   </item>
1158
+   <item row="0" column="0">
1159
+    <widget class="QLabel" name="header_pic">
1160
+     <property name="text">
1161
+      <string>TextLabel</string>
1162
+     </property>
1163
+     <property name="alignment">
1164
+      <set>Qt::AlignCenter</set>
1165
+     </property>
1166
+    </widget>
1167
+   </item>
1168
+   <item row="1" column="0">
1169
+    <widget class="QLabel" name="header_subpic">
1170
+     <property name="text">
1171
+      <string>&lt;a href=&quot;https://github.com/GIScience/openrouteservice&quot; style=&quot;color: black; text-decoration: none&quot;&gt;We truly &lt;span style=&quot;color: #b5152b&quot;&gt;♥&lt;/span&gt; Open Source.&lt;/a&gt;</string>
1172
+     </property>
1173
+     <property name="alignment">
1174
+      <set>Qt::AlignCenter</set>
1175
+     </property>
1176
+     <property name="openExternalLinks">
1177
+      <bool>true</bool>
1178
+     </property>
1179
+    </widget>
1180
+   </item>
1105 1181
   </layout>
1106 1182
   <zorder>button_box</zorder>
1107
-  <zorder>label_7</zorder>
1108
-  <zorder>header_2</zorder>
1109 1183
   <zorder>tabWidget</zorder>
1110 1184
   <zorder>groupBox_4</zorder>
1111
-  <zorder>header_3</zorder>
1185
+  <zorder>header_pic</zorder>
1186
+  <zorder>header_text</zorder>
1187
+  <zorder>header_subpic</zorder>
1112 1188
  </widget>
1113 1189
  <tabstops>
1114
-  <tabstop>api_key</tabstop>
1190
+  <tabstop>api_key_dlg</tabstop>
1115 1191
   <tabstop>tabWidget</tabstop>
1116 1192
   <tabstop>scrollArea_2</tabstop>
1117
-  <tabstop>start_radio_map</tabstop>
1118
-  <tabstop>start_radio_map</tabstop>
1119
-  <tabstop>add_start_button</tabstop>
1120
-  <tabstop>add_start_button</tabstop>
1121
-  <tabstop>start_radio_layer</tabstop>
1122
-  <tabstop>start_radio_layer</tabstop>
1123
-  <tabstop>end_radio_layer</tabstop>
1124
-  <tabstop>end_layer</tabstop>
1125
-  <tabstop>end_layer_id</tabstop>
1193
+  <tabstop>start_map_radio</tabstop>
1194
+  <tabstop>start_map_button</tabstop>
1195
+  <tabstop>start_layer_radio</tabstop>
1126 1196
   <tabstop>button_box</tabstop>
1127 1197
   <tabstop>radio_one</tabstop>
1128 1198
   <tabstop>radio_many</tabstop>
1129
-  <tabstop>mode</tabstop>
1130
-  <tabstop>unit</tabstop>
1131
-  <tabstop>access_map</tabstop>
1199
+  <tabstop>access_mode_combo</tabstop>
1200
+  <tabstop>access_unit_combo</tabstop>
1201
+  <tabstop>access_map_button</tabstop>
1132 1202
   <tabstop>use_layer</tabstop>
1133 1203
   <tabstop>layer</tabstop>
1134
-  <tabstop>mode_routing</tabstop>
1135
-  <tabstop>start_layer</tabstop>
1204
+  <tabstop>route_pref_combo</tabstop>
1136 1205
   <tabstop>use_layer</tabstop>
1137
-  <tabstop>unit</tabstop>
1138
-  <tabstop>access_map</tabstop>
1139
-  <tabstop>add_via_button</tabstop>
1140
-  <tabstop>mode</tabstop>
1141
-  <tabstop>start_layer_id</tabstop>
1206
+  <tabstop>access_unit_combo</tabstop>
1207
+  <tabstop>access_map_button</tabstop>
1208
+  <tabstop>via_map_button</tabstop>
1209
+  <tabstop>access_mode_combo</tabstop>
1142 1210
   <tabstop>layer</tabstop>
1143
-  <tabstop>add_end_button</tabstop>
1144
-  <tabstop>mode_travel</tabstop>
1145
-  <tabstop>start_layer</tabstop>
1146
-  <tabstop>end_radio_map</tabstop>
1147
-  <tabstop>end_radio_map</tabstop>
1148
-  <tabstop>add_end_button</tabstop>
1149
-  <tabstop>end_radio_layer</tabstop>
1150
-  <tabstop>end_layer</tabstop>
1211
+  <tabstop>route_mode_combo</tabstop>
1212
+  <tabstop>start_layer_combo</tabstop>
1213
+  <tabstop>end_map_radio</tabstop>
1214
+  <tabstop>end_map_button</tabstop>
1215
+  <tabstop>end_layer_radio</tabstop>
1216
+  <tabstop>end_layer_combo</tabstop>
1151 1217
   <tabstop>end_layer_id</tabstop>
1152 1218
   <tabstop>radio_one</tabstop>
1153 1219
   <tabstop>radio_many</tabstop>
1154
-  <tabstop>add_via_button</tabstop>
1155
-  <tabstop>add_via_button_clear</tabstop>
1156
-  <tabstop>mode_travel</tabstop>
1157
-  <tabstop>mode_routing</tabstop>
1220
+  <tabstop>via_map_button</tabstop>
1221
+  <tabstop>via_clear_button</tabstop>
1222
+  <tabstop>route_mode_combo</tabstop>
1223
+  <tabstop>route_pref_combo</tabstop>
1158 1224
   <tabstop>start_layer_id</tabstop>
1159
-  <tabstop>add_via_button_clear</tabstop>
1225
+  <tabstop>via_clear_button</tabstop>
1160 1226
  </tabstops>
1161 1227
  <resources/>
1162 1228
  <connections>
@@ -1193,4 +1259,8 @@
1193 1259
    </hints>
1194 1260
   </connection>
1195 1261
  </connections>
1262
+ <buttongroups>
1263
+  <buttongroup name="end_buttongroup"/>
1264
+  <buttongroup name="start_buttongroup"/>
1265
+ </buttongroups>
1196 1266
 </ui>

+ 179
- 180
resources_rc.py View File

@@ -1,180 +1,179 @@
1
-# -*- coding: utf-8 -*-
2
-
3
-# Resource object code
4
-#
5
-# Created: Sat 23. Sep 23:32:07 2017
6
-#      by: The Resource Compiler for PyQt (Qt v4.8.5)
7
-#
8
-# WARNING! All changes made in this file will be lost!
9
-
10
-from PyQt5 import QtCore
11
-
12
-qt_resource_data = b"\
13
-\x00\x00\x08\x69\
14
-\x89\
15
-\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
16
-\x00\x00\x76\x00\x00\x00\x66\x08\x06\x00\x00\x00\x1e\x71\x65\x8a\
17
-\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x17\x12\x00\x00\x17\x12\
18
-\x01\x67\x9f\xd2\x52\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\
19
-\x74\x77\x61\x72\x65\x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\
20
-\x65\x52\x65\x61\x64\x79\x71\xc9\x65\x3c\x00\x00\x07\xf6\x49\x44\
21
-\x41\x54\x78\xda\xec\x5d\xbf\x6f\xdb\x46\x14\xa6\x88\xc0\x19\xad\
22
-\xd4\x59\x0a\x14\x30\xdb\xa1\x53\x01\x2b\x28\xd2\x25\x83\xe5\x4c\
23
-\xed\xd2\xca\xed\xd2\xcd\xca\xda\xa1\x65\xc6\x4e\xa1\xe7\x2e\xf4\
24
-\x5f\x50\x69\x2d\x50\x54\x1e\xb3\x34\x52\x81\x74\xe9\x10\x69\x0c\
25
-\x3a\x98\x82\x0d\x14\x08\x3a\x28\x83\x83\x76\x72\xef\x39\x4f\x35\
26
-\x45\x89\xc7\x5f\xf7\x1e\x8f\xe4\x3d\x80\x90\x61\x91\x3a\xde\xfb\
27
-\xde\xbb\x7b\xdf\xe3\xdd\x63\xeb\xea\xea\xca\x2a\x43\x2e\x6e\xdf\
28
-\xed\x8b\x0f\x57\x1c\x7b\xa1\x7f\xcf\xc5\x31\x12\x87\xf7\xde\xbf\
29
-\x7f\x2f\xac\x0a\x88\xe8\x47\x1b\xfb\x01\xfd\xd9\x8d\xf4\x65\x20\
30
-\x0e\xbf\x8c\xbe\xb4\xb8\x81\x45\x45\x8c\x23\x80\x46\xe5\xb5\x38\
31
-\xba\x42\x21\x53\xcd\x41\xed\xa0\x21\xee\x4a\x4e\x9b\x01\xe8\xdc\
32
-\x7d\x61\x05\x36\x25\xa8\x95\x00\x57\xf4\xc5\x11\x1f\x70\x6f\xdb\
33
-\x29\x4e\x07\xef\xed\x70\x7a\xee\x2d\x66\x7d\xb8\x29\x41\xb5\x50\
34
-\x61\x3e\x80\x7b\x6d\x81\xad\x16\x78\x47\x5b\x03\x4c\xa7\xc2\x19\
35
-\x16\x38\xcc\x6e\xa7\xbc\x66\x17\xfb\xd2\xaf\xab\xc7\x2e\x32\x28\
36
-\x63\x29\xf7\xc0\x6b\x05\xb0\xe0\xe9\xfb\x1a\x00\x7b\x70\xbe\xb5\
37
-\x13\x88\xcf\xb3\x1c\xd7\xde\xe1\xf2\x5a\x9b\x79\x3e\xda\xce\x71\
38
-\x69\x4f\xc3\x91\xb8\x9b\xf3\xba\x0e\xd7\x0d\xda\x8c\xca\x68\x5b\
39
-\xf5\x11\x87\xd9\x20\xb4\x06\xd6\x88\x65\x2d\xea\x08\x6c\xa0\xbb\
40
-\x32\xb2\x04\x50\xcc\xd7\xe9\x0b\xac\x08\x1a\x02\xe4\x74\x59\x65\
41
-\xa4\x21\xb0\x63\xa4\x63\x59\x64\x2e\x74\x30\xae\x2b\xdd\xf1\xc4\
42
-\xf1\x4b\x86\xf3\x4f\xd0\x20\x2c\x11\xbd\x77\x75\x42\x56\x04\x83\
43
-\x40\x5f\x9e\x64\xb8\xc4\xaf\x6d\x82\x02\x15\x02\xfc\xef\x28\xc5\
44
-\xa9\x33\x4c\x50\x68\x9b\x5a\x14\x7d\x49\x4b\xc1\x86\xa2\x1f\x7d\
45
-\xce\x7b\x63\x0f\x9e\xb0\x83\xc7\x09\xa7\x9d\xea\x0e\x6a\x88\x8a\
46
-\x9d\xa4\x18\x75\xfa\xdc\x37\xc6\xe6\xb1\x90\x39\x12\x6d\x4d\x43\
47
-\xd6\xee\xa0\x62\x7a\x91\xe0\x62\xa0\x7b\x8e\x78\x83\xe7\x42\x5f\
48
-\xdc\x08\x4f\x1d\x63\x5f\x82\x90\x0e\xda\x98\xb5\xa2\x17\x00\x96\
49
-\xfa\x40\xf0\xe0\x0f\x18\x86\x1d\x8e\x36\x75\x3b\x30\xbe\x00\x50\
50
-\x5d\x8e\xf6\x58\x3c\x56\x58\x2a\x58\xed\xf2\x09\xc8\x6b\x0c\x24\
51
-\x7c\x36\xeb\x2d\x51\x44\xdf\x7b\xd8\xdf\x70\xff\x1d\xf2\xbe\x33\
52
-\x59\xea\xd5\x86\x03\xc0\xee\xd6\xd8\x43\x3b\x38\x1c\x6f\xea\xbb\
53
-\x5f\x69\x8f\x85\x39\x05\x01\x8c\xcb\x11\x1f\x88\xf6\xc7\x35\xf5\
54
-\x54\x00\xf6\x85\xe4\x94\xf7\x45\xdf\x03\xaa\xf6\xa9\xa3\x62\x5f\
55
-\x02\xea\xa4\xae\xa0\xe2\x48\x08\x01\xe0\x50\x72\xca\xa0\x92\x51\
56
-\x71\xd9\x16\xab\x89\xd7\x96\x36\x62\xd9\xc4\xde\x1a\xcb\xed\xea\
57
-\x0e\x2a\x7a\xed\x22\x41\x0f\x83\x4a\x79\x2c\x46\x82\x71\xa9\x43\
58
-\x9e\xa8\x50\x2f\xcf\x0d\xb3\x82\xa8\x3c\x16\xba\xf0\xab\xe2\xb1\
59
-\xb2\x1b\xf5\x9a\x04\x2a\x8a\x2b\xd3\x07\x0e\xd9\x7a\x03\x2b\x6e\
60
-\xd2\x93\x58\xe7\x9c\xc2\x3a\x2b\x30\x24\xc3\x13\xaa\x49\xcc\xd7\
61
-\xdb\x48\x09\xf5\x1d\x8a\x9b\x4c\x6f\x74\x0b\x26\x55\x7b\x6c\x63\
62
-\xe9\x8d\x6e\xf4\x47\x99\xc7\x1a\x7a\xa3\xd7\x88\x66\x2b\xf6\xd6\
63
-\x46\xd3\x1b\x9d\xe8\x8f\x12\x8f\x35\xf4\x46\x3f\xfa\x63\x33\x78\
64
-\xab\x67\x40\xe5\xa7\x3f\xb6\x02\xeb\x33\xf4\x46\x43\xfa\x53\x68\
65
-\x28\x36\xf4\x46\xdf\x60\xb3\xa8\xc7\x1a\x7a\xa3\x29\xfd\xc9\xed\
66
-\xb1\x86\xde\xe8\x4d\x7f\xec\x82\xde\x6a\xe8\x8d\xa6\xf4\x27\x97\
67
-\xc7\x26\x78\xab\xa1\x37\xea\xe8\x0f\xe8\xb2\x93\xc7\x49\xec\x9c\
68
-\x96\x06\xf3\xc3\xa1\xf5\x76\xa7\xb6\xa1\x37\x34\xf4\xe7\x18\x1d\
69
-\x24\x20\xf5\xd8\x8b\xdb\x77\xbb\xd1\xff\xc1\x5e\x14\xa4\x3b\x2e\
70
-\xce\x13\x40\x6f\x1c\x83\x53\x2e\xaf\x85\xb9\x14\x76\x15\xc0\x62\
71
-\x79\x58\xa2\x1a\xc4\xe9\xbc\x30\xb0\x58\xd9\x05\xb2\x4a\x5f\x48\
72
-\x7e\x63\xf2\xea\xfe\x3b\x3f\x7d\xfc\xfc\xcf\x4f\x60\x4e\x30\x91\
73
-\x70\x21\xfa\xd3\x3e\xdf\xda\x71\xd2\xe8\xdc\x7a\xbb\x18\x7d\x90\
74
-\x09\x58\xb4\x94\x81\x25\xaf\x86\xb2\x96\x8c\x00\x4b\x13\x8d\x8d\
75
-\x0c\x4c\xd9\x45\xb5\xce\xd7\x80\xc5\x5d\x64\xdf\x15\xb8\xc7\x61\
76
-\x19\x7b\x55\x2a\x0e\xaa\x72\x9d\xaf\x00\x9b\x61\x27\x9c\x01\x57\
77
-\x1d\xa8\x24\x3a\xb7\x43\x0d\x78\x8a\x1a\x00\x39\xc2\x1b\x36\x22\
78
-\x07\x55\xb5\xce\xfd\x15\x8f\xc5\x8a\x2e\x2f\x08\xee\xfd\xd0\xcc\
79
-\xb9\xb1\xa0\x52\xe9\xfc\x00\x22\xe7\xa5\xc7\x52\x3d\x81\x31\x4f\
80
-\x76\xf8\x75\x73\x3d\x52\xb6\x44\x78\x4d\x65\x39\x4b\x79\x24\x0b\
81
-\xcb\x8d\xb7\x92\xc8\x21\x78\x2c\x75\x90\xd3\x33\x50\xae\x09\xb5\
82
-\xce\xfb\x00\x6c\x97\xb8\x91\xae\xc1\x91\x5d\x27\x5d\x00\x76\x8f\
83
-\xb8\x91\x6d\xdc\xca\x6f\xe4\x46\xc8\x75\xce\x55\x5c\xc4\x00\x7b\
84
-\x33\xbf\xb2\x94\x1e\x34\x25\xf7\xf8\xa5\x63\x80\xad\xa1\x70\x55\
85
-\x67\xe3\x02\x76\x6a\x20\xe5\x15\x00\x76\x42\xdc\xc6\xbc\x2a\x2f\
86
-\x6e\x60\x14\x72\x9d\x03\xb0\xd4\x29\x3f\x93\x52\xe4\xd7\xc9\x88\
87
-\x03\xd8\x81\xc1\x91\x1d\xd8\x81\x8d\x25\xe1\x4e\x88\x1a\x98\x54\
88
-\xad\x7c\x1e\x53\x00\x05\x3a\x1f\x12\xfd\xfc\x29\xe8\x7c\x19\x3c\
89
-\x79\x56\xf6\xfa\xbb\x49\x02\xbf\xd7\x37\x30\xc6\x8a\x4b\xa4\x73\
90
-\xf7\xff\xa8\x18\x83\x9b\xae\xea\x1b\x0f\x17\x88\x34\xb2\xe6\xb5\
91
-\xa4\x3a\xb7\x43\x0d\xc1\x90\xf9\x48\x51\x03\xe6\x89\x4e\x3a\x70\
92
-\xc9\x74\xbe\x69\xcd\x53\x9a\xd7\x7a\x49\x87\x5f\xf3\x70\x3d\x9b\
93
-\x50\xe8\xdc\x8e\xb1\x22\x68\xe8\x38\xcb\x1c\xf0\xc7\x57\x1f\x3d\
94
-\x15\x1f\x8e\x01\x35\x9f\xe7\xfe\xf0\xe5\x83\xcf\xbf\x7d\xb8\xf7\
95
-\xf2\xe5\x67\x1f\x5c\x66\xb8\x74\x18\xa7\xf3\xa4\x75\xc5\x90\xb0\
96
-\x5e\x16\x8b\xee\x44\x2c\x0a\x40\x1f\xff\xfa\xf5\xfd\x8b\x6f\x7e\
97
-\xfe\xad\x73\x79\xf9\xe6\x81\x65\xb6\x4d\xe6\x96\x56\xab\x05\xc3\
98
-\xe8\xf5\xfa\xa7\xc3\x4f\x1f\x3e\xff\xfe\x9f\xbf\xde\xbc\xfb\xfb\
99
-\xab\x0f\x37\xe9\xdc\xba\x29\x72\x1d\x9f\xf8\x29\x50\xb6\xd5\x41\
100
-\x8e\x1a\x2e\xd7\x3a\x6d\x62\x91\x69\x05\x25\x70\x1d\x6b\x73\xf9\
101
-\x5b\xd0\x6f\x3b\xcf\x6f\xda\x39\xad\x0b\x42\xea\x33\x6b\x7d\x85\
102
-\xdd\x9e\xf8\xce\x50\x1c\x75\x49\x9c\x23\x4b\x5e\xd6\x20\x56\xf2\
103
-\x3e\x04\x90\xd1\x18\x92\x12\x72\x35\x1e\x82\x81\xf2\xec\x4b\x02\
104
-\x23\x9f\x0d\xd8\x84\x1a\x0a\xbb\x79\xad\xac\xa1\xe2\xc9\xbe\xcb\
105
-\xbb\x73\xb1\xc8\x8e\x76\xb0\xb4\x67\x12\x4b\xeb\x98\xcd\xcf\x89\
106
-\x3a\x84\x69\xeb\xc7\x98\xaf\x0b\xed\x5c\xcc\xfd\x3c\x16\xa3\xdf\
107
-\xb8\x7c\x27\x49\xe1\xc7\xa6\x79\x6b\x21\xa3\x29\x58\x35\x06\x2c\
108
-\x4a\xf6\x3a\xeb\x7b\xe1\x77\xed\x18\x49\xed\xad\x93\xa2\xaf\x7c\
109
-\x2b\xb4\x82\x02\x87\x5a\xd9\xe4\x6e\x76\x02\x6c\x06\xb5\x9d\xa0\
110
-\x9b\xc2\xa3\x9d\x8a\xa5\x31\xbe\x24\x43\xb5\x8f\x73\xb1\x91\x55\
111
-\x71\x2d\xe2\x32\x4a\xaa\x6a\x29\x92\x05\x01\x35\xf5\xd6\x40\x02\
112
-\xac\x92\x32\x4a\x4a\x16\xb3\x89\x1b\x01\x82\x3d\x8f\xa3\x3f\x98\
113
-\xd0\x30\x72\x33\xc2\xc5\x81\x3a\x54\xc5\x24\x54\xd6\x2b\x4e\xa2\
114
-\x3f\x8d\x2f\x11\x84\xc1\xe6\x19\x07\x45\x54\xb6\xfc\x14\xe7\x05\
115
-\x59\xe1\x47\xe3\xb5\x09\x81\xa6\x4a\xde\xaf\xfa\x9d\x00\x32\x8b\
116
-\x54\x36\x7f\x54\xd4\x5b\x59\x47\x34\xa5\x0b\xc6\x11\xb4\x21\x65\
117
-\x18\x5f\xd3\x64\x84\xf2\x37\x73\x2a\x7f\xa1\x92\x29\x75\xbb\x51\
118
-\x27\xb2\x0a\xec\x24\xac\x41\xf9\x16\x8f\x14\x85\x1f\x9b\xe8\xb5\
119
-\xec\xfa\xa0\x7c\x53\xd6\x5c\x92\xb4\xe8\x37\xc8\x5b\xa1\xaf\x71\
120
-\x6b\x99\x66\x48\x15\xd5\xb7\x4b\xf8\x36\xca\xc6\x27\x2d\x70\x5a\
121
-\x9a\x4a\x80\xad\xde\xdb\x28\xd1\x12\x67\x92\xa4\x45\x13\x86\x64\
122
-\x57\x02\x2a\x69\x05\x76\xea\x37\x3e\x37\x36\x69\x91\x22\x88\x24\
123
-\x7d\xf2\x45\xba\x3f\x16\x2d\xf2\x54\x92\xb4\xa8\xb3\xd7\x7a\x96\
124
-\x3c\x75\x48\xfa\x38\x93\xd4\x63\x9b\x9c\xb4\x40\x8a\xe3\xc7\x0c\
125
-\xc5\xe4\x7d\x26\xdf\xd1\x8e\x1d\x88\xdb\xcd\x07\xc9\x8c\x5a\x0e\
126
-\xc5\xb0\x2e\x0c\x03\xc4\xe8\xc2\x7b\x96\xf7\x25\x90\x7b\x6c\xcc\
127
-\x7c\x03\x39\x65\xa8\xa2\x3d\xc5\x45\xe9\xb0\x18\x3d\xa8\xfa\x26\
128
-\x2e\x2c\x7b\xe4\x44\xfb\x82\xfd\x77\xf1\x60\x89\x2b\x58\x80\xc5\
129
-\xce\xc1\x9c\xd3\x47\x40\x47\x58\xf9\x33\xca\xf1\xc0\xb2\x61\x05\
130
-\xa4\x57\x15\x90\xd1\x30\x97\x7d\x09\xcf\xa9\xc0\xe3\x81\x19\xf8\
131
-\x65\x94\x6a\x60\x03\x36\xa2\x08\x08\xaa\x64\x45\xac\x2a\xb1\xb9\
132
-\x0b\x37\x53\x8d\x25\x41\xd2\x12\xe0\x1e\xf7\x06\x70\x56\x60\x53\
133
-\x82\xba\x42\x09\x74\xdd\x11\x8f\xc3\xee\x34\x01\xd4\x15\x6a\xc7\
134
-\xe9\xb9\xb7\x4a\x20\xec\x59\xca\xcd\x0d\x70\xfe\xb5\x34\x5a\x3b\
135
-\x35\xc5\x39\x72\x90\x12\xd4\x25\xb5\xf3\x2d\xc6\x1d\xfe\xdc\x1e\
136
-\xbb\xc8\xa0\x8c\x15\xaf\x15\xc0\x5e\x69\x02\xec\xc1\xf9\xd6\x4e\
137
-\x90\x40\xe1\xe2\xe4\x0e\x97\xd7\xda\x8c\xa0\x76\x73\x80\x0a\xa2\
138
-\x63\x59\xdc\xbc\xa3\x47\x87\xeb\x06\x4d\xc9\xbd\x7c\xe2\x30\x1b\
139
-\x84\x01\x56\x73\x59\xd4\x11\xd8\x40\x77\x65\x64\x09\xa0\x98\xaf\
140
-\xd3\x17\x58\x4c\x38\xcc\x72\x5c\xaa\x1d\x97\x45\x7e\x9d\xb5\x46\
141
-\xd3\x9c\xab\xf2\x69\x59\x74\xe7\x59\x86\xf3\x4f\x96\x19\x28\x11\
142
-\xbd\xb7\x34\xc3\x17\xe8\xcb\x93\x0c\xe7\x7b\x9c\x37\x67\x33\x5b\
143
-\x3a\x58\x6c\xda\xf2\x7e\x33\x4b\xe3\xc7\x7a\xa2\x2f\x70\x6f\x69\
144
-\xcb\xe6\x0d\xb9\xeb\x5e\xd9\x25\x28\x04\xbc\xf6\x71\xc2\x50\x06\
145
-\xe0\x77\x75\x2f\x87\x8b\xaf\x1c\x4b\x32\xd4\xe3\x32\x5e\x07\xc7\
146
-\x9e\x2b\x0e\xf1\x5a\x48\x2f\xf6\x91\x02\x2c\x6b\x56\x80\x47\x0f\
147
-\xaa\xf6\x94\x07\xd3\x8b\xbd\x50\x5f\x16\xd8\x97\x51\x59\x7d\xf9\
148
-\x4f\x80\x01\x00\xc9\xb4\xe1\x46\x1d\xc9\x4c\x84\x00\x00\x00\x00\
149
-\x49\x45\x4e\x44\xae\x42\x60\x82\
150
-"
151
-
152
-qt_resource_name = b"\
153
-\x00\x07\
154
-\x07\x3b\xe0\xb3\
155
-\x00\x70\
156
-\x00\x6c\x00\x75\x00\x67\x00\x69\x00\x6e\x00\x73\
157
-\x00\x08\
158
-\x08\x4b\x70\xb3\
159
-\x00\x4f\
160
-\x00\x53\x00\x4d\x00\x74\x00\x6f\x00\x6f\x00\x6c\x00\x73\
161
-\x00\x08\
162
-\x0a\x61\x5a\xa7\
163
-\x00\x69\
164
-\x00\x63\x00\x6f\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\
165
-"
166
-
167
-qt_resource_struct = b"\
168
-\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
169
-\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\
170
-\x00\x00\x00\x14\x00\x02\x00\x00\x00\x01\x00\x00\x00\x03\
171
-\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
172
-"
173
-
174
-def qInitResources():
175
-    QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data)
176
-
177
-def qCleanupResources():
178
-    QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data)
179
-
180
-qInitResources()
1
+# -*- coding: utf-8 -*-
2
+
3
+# Resource object code
4
+#
5
+# Created by: The Resource Compiler for PyQt5 (Qt v5.6.2)
6
+#
7
+# WARNING! All changes made in this file will be lost!
8
+
9
+from PyQt5 import QtCore
10
+
11
+qt_resource_data = b"\
12
+\x00\x00\x08\x69\
13
+\x89\
14
+\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
15
+\x00\x00\x76\x00\x00\x00\x66\x08\x06\x00\x00\x00\x1e\x71\x65\x8a\
16
+\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x17\x12\x00\x00\x17\x12\
17
+\x01\x67\x9f\xd2\x52\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\
18
+\x74\x77\x61\x72\x65\x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\
19
+\x65\x52\x65\x61\x64\x79\x71\xc9\x65\x3c\x00\x00\x07\xf6\x49\x44\
20
+\x41\x54\x78\xda\xec\x5d\xbf\x6f\xdb\x46\x14\xa6\x88\xc0\x19\xad\
21
+\xd4\x59\x0a\x14\x30\xdb\xa1\x53\x01\x2b\x28\xd2\x25\x83\xe5\x4c\
22
+\xed\xd2\xca\xed\xd2\xcd\xca\xda\xa1\x65\xc6\x4e\xa1\xe7\x2e\xf4\
23
+\x5f\x50\x69\x2d\x50\x54\x1e\xb3\x34\x52\x81\x74\xe9\x10\x69\x0c\
24
+\x3a\x98\x82\x0d\x14\x08\x3a\x28\x83\x83\x76\x72\xef\x39\x4f\x35\
25
+\x45\x89\xc7\x5f\xf7\x1e\x8f\xe4\x3d\x80\x90\x61\x91\x3a\xde\xfb\
26
+\xde\xbb\x7b\xdf\xe3\xdd\x63\xeb\xea\xea\xca\x2a\x43\x2e\x6e\xdf\
27
+\xed\x8b\x0f\x57\x1c\x7b\xa1\x7f\xcf\xc5\x31\x12\x87\xf7\xde\xbf\
28
+\x7f\x2f\xac\x0a\x88\xe8\x47\x1b\xfb\x01\xfd\xd9\x8d\xf4\x65\x20\
29
+\x0e\xbf\x8c\xbe\xb4\xb8\x81\x45\x45\x8c\x23\x80\x46\xe5\xb5\x38\
30
+\xba\x42\x21\x53\xcd\x41\xed\xa0\x21\xee\x4a\x4e\x9b\x01\xe8\xdc\
31
+\x7d\x61\x05\x36\x25\xa8\x95\x00\x57\xf4\xc5\x11\x1f\x70\x6f\xdb\
32
+\x29\x4e\x07\xef\xed\x70\x7a\xee\x2d\x66\x7d\xb8\x29\x41\xb5\x50\
33
+\x61\x3e\x80\x7b\x6d\x81\xad\x16\x78\x47\x5b\x03\x4c\xa7\xc2\x19\
34
+\x16\x38\xcc\x6e\xa7\xbc\x66\x17\xfb\xd2\xaf\xab\xc7\x2e\x32\x28\
35
+\x63\x29\xf7\xc0\x6b\x05\xb0\xe0\xe9\xfb\x1a\x00\x7b\x70\xbe\xb5\
36
+\x13\x88\xcf\xb3\x1c\xd7\xde\xe1\xf2\x5a\x9b\x79\x3e\xda\xce\x71\
37
+\x69\x4f\xc3\x91\xb8\x9b\xf3\xba\x0e\xd7\x0d\xda\x8c\xca\x68\x5b\
38
+\xf5\x11\x87\xd9\x20\xb4\x06\xd6\x88\x65\x2d\xea\x08\x6c\xa0\xbb\
39
+\x32\xb2\x04\x50\xcc\xd7\xe9\x0b\xac\x08\x1a\x02\xe4\x74\x59\x65\
40
+\xa4\x21\xb0\x63\xa4\x63\x59\x64\x2e\x74\x30\xae\x2b\xdd\xf1\xc4\
41
+\xf1\x4b\x86\xf3\x4f\xd0\x20\x2c\x11\xbd\x77\x75\x42\x56\x04\x83\
42
+\x40\x5f\x9e\x64\xb8\xc4\xaf\x6d\x82\x02\x15\x02\xfc\xef\x28\xc5\
43
+\xa9\x33\x4c\x50\x68\x9b\x5a\x14\x7d\x49\x4b\xc1\x86\xa2\x1f\x7d\
44
+\xce\x7b\x63\x0f\x9e\xb0\x83\xc7\x09\xa7\x9d\xea\x0e\x6a\x88\x8a\
45
+\x9d\xa4\x18\x75\xfa\xdc\x37\xc6\xe6\xb1\x90\x39\x12\x6d\x4d\x43\
46
+\xd6\xee\xa0\x62\x7a\x91\xe0\x62\xa0\x7b\x8e\x78\x83\xe7\x42\x5f\
47
+\xdc\x08\x4f\x1d\x63\x5f\x82\x90\x0e\xda\x98\xb5\xa2\x17\x00\x96\
48
+\xfa\x40\xf0\xe0\x0f\x18\x86\x1d\x8e\x36\x75\x3b\x30\xbe\x00\x50\
49
+\x5d\x8e\xf6\x58\x3c\x56\x58\x2a\x58\xed\xf2\x09\xc8\x6b\x0c\x24\
50
+\x7c\x36\xeb\x2d\x51\x44\xdf\x7b\xd8\xdf\x70\xff\x1d\xf2\xbe\x33\
51
+\x59\xea\xd5\x86\x03\xc0\xee\xd6\xd8\x43\x3b\x38\x1c\x6f\xea\xbb\
52
+\x5f\x69\x8f\x85\x39\x05\x01\x8c\xcb\x11\x1f\x88\xf6\xc7\x35\xf5\
53
+\x54\x00\xf6\x85\xe4\x94\xf7\x45\xdf\x03\xaa\xf6\xa9\xa3\x62\x5f\
54
+\x02\xea\xa4\xae\xa0\xe2\x48\x08\x01\xe0\x50\x72\xca\xa0\x92\x51\
55
+\x71\xd9\x16\xab\x89\xd7\x96\x36\x62\xd9\xc4\xde\x1a\xcb\xed\xea\
56
+\x0e\x2a\x7a\xed\x22\x41\x0f\x83\x4a\x79\x2c\x46\x82\x71\xa9\x43\
57
+\x9e\xa8\x50\x2f\xcf\x0d\xb3\x82\xa8\x3c\x16\xba\xf0\xab\xe2\xb1\
58
+\xb2\x1b\xf5\x9a\x04\x2a\x8a\x2b\xd3\x07\x0e\xd9\x7a\x03\x2b\x6e\
59
+\xd2\x93\x58\xe7\x9c\xc2\x3a\x2b\x30\x24\xc3\x13\xaa\x49\xcc\xd7\
60
+\xdb\x48\x09\xf5\x1d\x8a\x9b\x4c\x6f\x74\x0b\x26\x55\x7b\x6c\x63\
61
+\xe9\x8d\x6e\xf4\x47\x99\xc7\x1a\x7a\xa3\xd7\x88\x66\x2b\xf6\xd6\
62
+\x46\xd3\x1b\x9d\xe8\x8f\x12\x8f\x35\xf4\x46\x3f\xfa\x63\x33\x78\
63
+\xab\x67\x40\xe5\xa7\x3f\xb6\x02\xeb\x33\xf4\x46\x43\xfa\x53\x68\
64
+\x28\x36\xf4\x46\xdf\x60\xb3\xa8\xc7\x1a\x7a\xa3\x29\xfd\xc9\xed\
65
+\xb1\x86\xde\xe8\x4d\x7f\xec\x82\xde\x6a\xe8\x8d\xa6\xf4\x27\x97\
66
+\xc7\x26\x78\xab\xa1\x37\xea\xe8\x0f\xe8\xb2\x93\xc7\x49\xec\x9c\
67
+\x96\x06\xf3\xc3\xa1\xf5\x76\xa7\xb6\xa1\x37\x34\xf4\xe7\x18\x1d\
68
+\x24\x20\xf5\xd8\x8b\xdb\x77\xbb\xd1\xff\xc1\x5e\x14\xa4\x3b\x2e\
69
+\xce\x13\x40\x6f\x1c\x83\x53\x2e\xaf\x85\xb9\x14\x76\x15\xc0\x62\
70
+\x79\x58\xa2\x1a\xc4\xe9\xbc\x30\xb0\x58\xd9\x05\xb2\x4a\x5f\x48\
71
+\x7e\x63\xf2\xea\xfe\x3b\x3f\x7d\xfc\xfc\xcf\x4f\x60\x4e\x30\x91\
72
+\x70\x21\xfa\xd3\x3e\xdf\xda\x71\xd2\xe8\xdc\x7a\xbb\x18\x7d\x90\
73
+\x09\x58\xb4\x94\x81\x25\xaf\x86\xb2\x96\x8c\x00\x4b\x13\x8d\x8d\
74
+\x0c\x4c\xd9\x45\xb5\xce\xd7\x80\xc5\x5d\x64\xdf\x15\xb8\xc7\x61\
75
+\x19\x7b\x55\x2a\x0e\xaa\x72\x9d\xaf\x00\x9b\x61\x27\x9c\x01\x57\
76
+\x1d\xa8\x24\x3a\xb7\x43\x0d\x78\x8a\x1a\x00\x39\xc2\x1b\x36\x22\
77
+\x07\x55\xb5\xce\xfd\x15\x8f\xc5\x8a\x2e\x2f\x08\xee\xfd\xd0\xcc\
78
+\xb9\xb1\xa0\x52\xe9\xfc\x00\x22\xe7\xa5\xc7\x52\x3d\x81\x31\x4f\
79
+\x76\xf8\x75\x73\x3d\x52\xb6\x44\x78\x4d\x65\x39\x4b\x79\x24\x0b\
80
+\xcb\x8d\xb7\x92\xc8\x21\x78\x2c\x75\x90\xd3\x33\x50\xae\x09\xb5\
81
+\xce\xfb\x00\x6c\x97\xb8\x91\xae\xc1\x91\x5d\x27\x5d\x00\x76\x8f\
82
+\xb8\x91\x6d\xdc\xca\x6f\xe4\x46\xc8\x75\xce\x55\x5c\xc4\x00\x7b\
83
+\x33\xbf\xb2\x94\x1e\x34\x25\xf7\xf8\xa5\x63\x80\xad\xa1\x70\x55\
84
+\x67\xe3\x02\x76\x6a\x20\xe5\x15\x00\x76\x42\xdc\xc6\xbc\x2a\x2f\
85
+\x6e\x60\x14\x72\x9d\x03\xb0\xd4\x29\x3f\x93\x52\xe4\xd7\xc9\x88\
86
+\x03\xd8\x81\xc1\x91\x1d\xd8\x81\x8d\x25\xe1\x4e\x88\x1a\x98\x54\
87
+\xad\x7c\x1e\x53\x00\x05\x3a\x1f\x12\xfd\xfc\x29\xe8\x7c\x19\x3c\
88
+\x79\x56\xf6\xfa\xbb\x49\x02\xbf\xd7\x37\x30\xc6\x8a\x4b\xa4\x73\
89
+\xf7\xff\xa8\x18\x83\x9b\xae\xea\x1b\x0f\x17\x88\x34\xb2\xe6\xb5\
90
+\xa4\x3a\xb7\x43\x0d\xc1\x90\xf9\x48\x51\x03\xe6\x89\x4e\x3a\x70\
91
+\xc9\x74\xbe\x69\xcd\x53\x9a\xd7\x7a\x49\x87\x5f\xf3\x70\x3d\x9b\
92
+\x50\xe8\xdc\x8e\xb1\x22\x68\xe8\x38\xcb\x1c\xf0\xc7\x57\x1f\x3d\
93
+\x15\x1f\x8e\x01\x35\x9f\xe7\xfe\xf0\xe5\x83\xcf\xbf\x7d\xb8\xf7\
94
+\xf2\xe5\x67\x1f\x5c\x66\xb8\x74\x18\xa7\xf3\xa4\x75\xc5\x90\xb0\
95
+\x5e\x16\x8b\xee\x44\x2c\x0a\x40\x1f\xff\xfa\xf5\xfd\x8b\x6f\x7e\
96
+\xfe\xad\x73\x79\xf9\xe6\x81\x65\xb6\x4d\xe6\x96\x56\xab\x05\xc3\
97
+\xe8\xf5\xfa\xa7\xc3\x4f\x1f\x3e\xff\xfe\x9f\xbf\xde\xbc\xfb\xfb\
98
+\xab\x0f\x37\xe9\xdc\xba\x29\x72\x1d\x9f\xf8\x29\x50\xb6\xd5\x41\
99
+\x8e\x1a\x2e\xd7\x3a\x6d\x62\x91\x69\x05\x25\x70\x1d\x6b\x73\xf9\
100
+\x5b\xd0\x6f\x3b\xcf\x6f\xda\x39\xad\x0b\x42\xea\x33\x6b\x7d\x85\
101
+\xdd\x9e\xf8\xce\x50\x1c\x75\x49\x9c\x23\x4b\x5e\xd6\x20\x56\xf2\
102
+\x3e\x04\x90\xd1\x18\x92\x12\x72\x35\x1e\x82\x81\xf2\xec\x4b\x02\
103
+\x23\x9f\x0d\xd8\x84\x1a\x0a\xbb\x79\xad\xac\xa1\xe2\xc9\xbe\xcb\
104
+\xbb\x73\xb1\xc8\x8e\x76\xb0\xb4\x67\x12\x4b\xeb\x98\xcd\xcf\x89\
105
+\x3a\x84\x69\xeb\xc7\x98\xaf\x0b\xed\x5c\xcc\xfd\x3c\x16\xa3\xdf\
106
+\xb8\x7c\x27\x49\xe1\xc7\xa6\x79\x6b\x21\xa3\x29\x58\x35\x06\x2c\
107
+\x4a\xf6\x3a\xeb\x7b\xe1\x77\xed\x18\x49\xed\xad\x93\xa2\xaf\x7c\
108
+\x2b\xb4\x82\x02\x87\x5a\xd9\xe4\x6e\x76\x02\x6c\x06\xb5\x9d\xa0\
109
+\x9b\xc2\xa3\x9d\x8a\xa5\x31\xbe\x24\x43\xb5\x8f\x73\xb1\x91\x55\
110
+\x71\x2d\xe2\x32\x4a\xaa\x6a\x29\x92\x05\x01\x35\xf5\xd6\x40\x02\
111
+\xac\x92\x32\x4a\x4a\x16\xb3\x89\x1b\x01\x82\x3d\x8f\xa3\x3f\x98\
112
+\xd0\x30\x72\x33\xc2\xc5\x81\x3a\x54\xc5\x24\x54\xd6\x2b\x4e\xa2\
113
+\x3f\x8d\x2f\x11\x84\xc1\xe6\x19\x07\x45\x54\xb6\xfc\x14\xe7\x05\
114
+\x59\xe1\x47\xe3\xb5\x09\x81\xa6\x4a\xde\xaf\xfa\x9d\x00\x32\x8b\
115
+\x54\x36\x7f\x54\xd4\x5b\x59\x47\x34\xa5\x0b\xc6\x11\xb4\x21\x65\
116
+\x18\x5f\xd3\x64\x84\xf2\x37\x73\x2a\x7f\xa1\x92\x29\x75\xbb\x51\
117
+\x27\xb2\x0a\xec\x24\xac\x41\xf9\x16\x8f\x14\x85\x1f\x9b\xe8\xb5\
118
+\xec\xfa\xa0\x7c\x53\xd6\x5c\x92\xb4\xe8\x37\xc8\x5b\xa1\xaf\x71\
119
+\x6b\x99\x66\x48\x15\xd5\xb7\x4b\xf8\x36\xca\xc6\x27\x2d\x70\x5a\
120
+\x9a\x4a\x80\xad\xde\xdb\x28\xd1\x12\x67\x92\xa4\x45\x13\x86\x64\
121
+\x57\x02\x2a\x69\x05\x76\xea\x37\x3e\x37\x36\x69\x91\x22\x88\x24\
122
+\x7d\xf2\x45\xba\x3f\x16\x2d\xf2\x54\x92\xb4\xa8\xb3\xd7\x7a\x96\
123
+\x3c\x75\x48\xfa\x38\x93\xd4\x63\x9b\x9c\xb4\x40\x8a\xe3\xc7\x0c\
124
+\xc5\xe4\x7d\x26\xdf\xd1\x8e\x1d\x88\xdb\xcd\x07\xc9\x8c\x5a\x0e\
125
+\xc5\xb0\x2e\x0c\x03\xc4\xe8\xc2\x7b\x96\xf7\x25\x90\x7b\x6c\xcc\
126
+\x7c\x03\x39\x65\xa8\xa2\x3d\xc5\x45\xe9\xb0\x18\x3d\xa8\xfa\x26\
127
+\x2e\x2c\x7b\xe4\x44\xfb\x82\xfd\x77\xf1\x60\x89\x2b\x58\x80\xc5\
128
+\xce\xc1\x9c\xd3\x47\x40\x47\x58\xf9\x33\xca\xf1\xc0\xb2\x61\x05\
129
+\xa4\x57\x15\x90\xd1\x30\x97\x7d\x09\xcf\xa9\xc0\xe3\x81\x19\xf8\
130
+\x65\x94\x6a\x60\x03\x36\xa2\x08\x08\xaa\x64\x45\xac\x2a\xb1\xb9\
131
+\x0b\x37\x53\x8d\x25\x41\xd2\x12\xe0\x1e\xf7\x06\x70\x56\x60\x53\
132
+\x82\xba\x42\x09\x74\xdd\x11\x8f\xc3\xee\x34\x01\xd4\x15\x6a\xc7\
133
+\xe9\xb9\xb7\x4a\x20\xec\x59\xca\xcd\x0d\x70\xfe\xb5\x34\x5a\x3b\
134
+\x35\xc5\x39\x72\x90\x12\xd4\x25\xb5\xf3\x2d\xc6\x1d\xfe\xdc\x1e\
135
+\xbb\xc8\xa0\x8c\x15\xaf\x15\xc0\x5e\x69\x02\xec\xc1\xf9\xd6\x4e\
136
+\x90\x40\xe1\xe2\xe4\x0e\x97\xd7\xda\x8c\xa0\x76\x73\x80\x0a\xa2\
137
+\x63\x59\xdc\xbc\xa3\x47\x87\xeb\x06\x4d\xc9\xbd\x7c\xe2\x30\x1b\
138
+\x84\x01\x56\x73\x59\xd4\x11\xd8\x40\x77\x65\x64\x09\xa0\x98\xaf\
139
+\xd3\x17\x58\x4c\x38\xcc\x72\x5c\xaa\x1d\x97\x45\x7e\x9d\xb5\x46\
140
+\xd3\x9c\xab\xf2\x69\x59\x74\xe7\x59\x86\xf3\x4f\x96\x19\x28\x11\
141
+\xbd\xb7\x34\xc3\x17\xe8\xcb\x93\x0c\xe7\x7b\x9c\x37\x67\x33\x5b\
142
+\x3a\x58\x6c\xda\xf2\x7e\x33\x4b\xe3\xc7\x7a\xa2\x2f\x70\x6f\x69\
143
+\xcb\xe6\x0d\xb9\xeb\x5e\xd9\x25\x28\x04\xbc\xf6\x71\xc2\x50\x06\
144
+\xe0\x77\x75\x2f\x87\x8b\xaf\x1c\x4b\x32\xd4\xe3\x32\x5e\x07\xc7\
145
+\x9e\x2b\x0e\xf1\x5a\x48\x2f\xf6\x91\x02\x2c\x6b\x56\x80\x47\x0f\
146
+\xaa\xf6\x94\x07\xd3\x8b\xbd\x50\x5f\x16\xd8\x97\x51\x59\x7d\xf9\
147
+\x4f\x80\x01\x00\xc9\xb4\xe1\x46\x1d\xc9\x4c\x84\x00\x00\x00\x00\
148
+\x49\x45\x4e\x44\xae\x42\x60\x82\
149
+"
150
+
151
+qt_resource_name = b"\
152
+\x00\x07\
153
+\x07\x3b\xe0\xb3\
154
+\x00\x70\
155
+\x00\x6c\x00\x75\x00\x67\x00\x69\x00\x6e\x00\x73\
156
+\x00\x08\
157
+\x08\x4b\x70\xb3\
158
+\x00\x4f\
159
+\x00\x53\x00\x4d\x00\x74\x00\x6f\x00\x6f\x00\x6c\x00\x73\
160
+\x00\x08\
161
+\x0a\x61\x5a\xa7\
162
+\x00\x69\
163
+\x00\x63\x00\x6f\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\
164
+"
165
+
166
+qt_resource_struct = b"\
167
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
168
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\
169
+\x00\x00\x00\x14\x00\x02\x00\x00\x00\x01\x00\x00\x00\x03\
170
+\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
171
+"
172
+
173
+def qInitResources():
174
+    QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data)
175
+
176
+def qCleanupResources():
177
+    QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data)
178
+
179
+qInitResources()

Loading…
Cancel
Save