[QGIS Commit] r11283 - in trunk/qgis/python/plugins/osm: . ui_files

svn_qgis at osgeo.org svn_qgis at osgeo.org
Thu Aug 6 10:09:40 EDT 2009


Author: wonder
Date: 2009-08-06 10:09:40 -0400 (Thu, 06 Aug 2009)
New Revision: 11283

Modified:
   trunk/qgis/python/plugins/osm/DatabaseManager.py
   trunk/qgis/python/plugins/osm/DlgUploadOSM.py
   trunk/qgis/python/plugins/osm/DockWidget.py
   trunk/qgis/python/plugins/osm/ui_files/DockWidget.ui
Log:
Update to OSM plugin from Lukas Berka:
-displaying recommended tag keys and values for easier tags editing
-created features now doesn't have created_by tag automatically (coz it's deprecated)
-eh, names of some dockwidget elements are shorter now :)


Modified: trunk/qgis/python/plugins/osm/DatabaseManager.py
===================================================================
--- trunk/qgis/python/plugins/osm/DatabaseManager.py	2009-08-06 10:43:28 UTC (rev 11282)
+++ trunk/qgis/python/plugins/osm/DatabaseManager.py	2009-08-06 14:09:40 UTC (rev 11283)
@@ -43,7 +43,6 @@
 
         self.plugin=plugin
         self.canvas=plugin.canvas
-        self.pluginName="QGIS OSM v0.4"
 
         self.dbConns={}    # map dbFileName->sqlite3ConnectionObject
         self.pointLayers={}
@@ -420,7 +419,6 @@
             c=self.getConnection().cursor()
             c.execute("insert into node (id,lat,lon,usage,status) values (:nodeId,:lat,:lon,0,'A')"
                     ,{"nodeId":str(nodeId),"lat":str(mapPoint.y()),"lon":str(mapPoint.x())})
-            self.insertTag(nodeId,"Point","created_by",self.pluginName,False)
             c.close()
 
             if doCommit:
@@ -470,9 +468,6 @@
         elif snapFeatType=='Polygon':
             self.changePolygonStatus(snapFeat.id(),"N","U")
 
-        # insert created_by tag of the new point
-        self.insertTag(nodeId,"Point","created_by",self.pluginName,False)
-
         # finishing
         c.close()
 
@@ -541,7 +536,6 @@
                 c.execute("insert into node (id,lat,lon,usage,status) values (:nodeId,:lat,:lon,1,'A')"
                         ,{ "nodeId":str(nodeId),"lat":str(lat),"lon":str(lon) })
 
-                self.insertTag(nodeId,"Point","created_by",self.pluginName, False)
                 affected.add((nodeId,'Point'))
 
             # insert record into table of way members
@@ -556,8 +550,6 @@
         c.execute("insert into way (id,wkb,membercnt,closed,min_lat,min_lon,max_lat,max_lon,status) values (?,?,?,0,?,?,?,?,'A')"
                 ,(str(lineId),sqlite3.Binary(""),str(cnt),str(minLat),str(minLon),str(maxLat),str(maxLon)))
 
-        self.insertTag(lineId,"Line","created_by",self.pluginName, False)
-
         # finishing...
         c.close()
         feat=QgsFeature(lineId,"Line")
@@ -623,7 +615,6 @@
                 c.execute("insert into node (id,lat,lon,usage,status) values (:nodeId,:lat,:lon,1,'A')"
                         ,{ "nodeId":str(nodeId),"lat":str(lat),"lon":str(lon) })
 
-                self.insertTag(nodeId,"Point","created_by",self.pluginName, False)
                 affected.add((nodeId,'Point'))
 
             # insert record into table of way members
@@ -638,8 +629,6 @@
         c.execute("insert into way (id,wkb,membercnt,closed,min_lat,min_lon,max_lat,max_lon,status) values (?,?,?,1,?,?,?,?,'A')"
                 ,(str(polygonId),sqlite3.Binary(""),str(cnt),str(minLat),str(minLon),str(maxLat),str(maxLon)))
 
-        self.insertTag(polygonId,"Polygon","created_by",self.pluginName, False)
-
         # finish
         c.close()
         feat=QgsFeature(polygonId,"Polygon")

Modified: trunk/qgis/python/plugins/osm/DlgUploadOSM.py
===================================================================
--- trunk/qgis/python/plugins/osm/DlgUploadOSM.py	2009-08-06 10:43:28 UTC (rev 11282)
+++ trunk/qgis/python/plugins/osm/DlgUploadOSM.py	2009-08-06 14:09:40 UTC (rev 11283)
@@ -917,7 +917,7 @@
         userCommentBytes=userComment.toUtf8()
 
         # create http request's body (create XML with info about uploaded way)
-        requestXml=QString("<osm>\n<changeset>\n<tag k=\"created_by\" v=\"qgis plugin\"/>\n<tag k=\"comment\" v=\""+userCommentBytes.data()+"\"/>\n</changeset>\n</osm>")
+        requestXml=QString("<osm>\n<changeset>\n<tag k=\"created_by\" v=\"QGIS OSM v0.4\"/>\n<tag k=\"comment\" v=\""+userCommentBytes.data()+"\"/>\n</changeset>\n</osm>")
 
         # send prepared request
         requestBytes=requestXml.toAscii()

Modified: trunk/qgis/python/plugins/osm/DockWidget.py
===================================================================
--- trunk/qgis/python/plugins/osm/DockWidget.py	2009-08-06 10:43:28 UTC (rev 11282)
+++ trunk/qgis/python/plugins/osm/DockWidget.py	2009-08-06 14:09:40 UTC (rev 11283)
@@ -1,5 +1,5 @@
 """@package DockWidget
-This module is descendant of "OSM Feature" dockable widget (in Quantum GIS) and makes user able
+This module is descendant of "OSM Feature" dockable widget and makes user able
 to view and edit information on selected OSM feature.
 
 DockWidget module shows details of selected feature - its basic info, tags and relations.
@@ -43,6 +43,10 @@
         self.setupUi(self)
         self.setAllowedAreas(Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea)
 
+        self.plugin=plugin
+        self.__mapTool=None
+        self.__dlgAddRel=None
+
         # set icons for tool buttons (identify,move,createPoint,createLine,createPolygon)
         self.identifyButton.setIcon(QIcon(":/plugins/osm_plugin/images/osm_identify.png"))
         self.moveButton.setIcon(QIcon(":/plugins/osm_plugin/images/osm_move.png"))
@@ -55,6 +59,7 @@
         self.undoButton.setIcon(QIcon(":/plugins/osm_plugin/images/osm_undo.png"))
         self.redoButton.setIcon(QIcon(":/plugins/osm_plugin/images/osm_redo.png"))
 
+        # initializing group of edit buttons
         self.toolButtons=QButtonGroup(self)
         self.dummyButton.setVisible(False)
         self.toolButtons.addButton(self.dummyButton)
@@ -65,16 +70,16 @@
         self.toolButtons.addButton(self.createPolygonButton)
         self.toolButtons.setExclusive(True)
 
-        self.tagsTableWidget.setColumnCount(2)
-        self.tagsTableWidget.setHorizontalHeaderItem(0,QTableWidgetItem("Key"))
-        self.tagsTableWidget.setHorizontalHeaderItem(1,QTableWidgetItem("Value"))
-        self.newTagLabel = "<new tag here>"
+        # initializing table of feature tags
+        self.tagTable.setColumnCount(2)
+        self.tagTable.setHorizontalHeaderItem(0,QTableWidgetItem("Key"))
+        self.tagTable.setHorizontalHeaderItem(1,QTableWidgetItem("Value"))
+        self.tagTable.setSelectionMode(QAbstractItemView.ExtendedSelection)
+        self.tagTable.setSelectionBehavior(QAbstractItemView.SelectRows)
+        self.newTagLabel="<new tag here>"
+        self.relTagsTree.setSelectionMode(QAbstractItemView.NoSelection)
 
-        self.plugin=plugin
-        self.__mapTool=None
-        self.__dlgAddRel=None
-
-        # get qgis settings of line width and color for rubberband
+        # initializing rubberbands/vertexmarkers; getting qgis settings of line width and color for rubberbands
         settings=QSettings()
         qgsLineWidth=settings.value( "/qgis/digitizing/line_width", QVariant(10) ).toInt()
         qgsLineRed=settings.value( "/qgis/digitizing/line_color_red", QVariant(255) ).toInt()
@@ -94,7 +99,6 @@
         self.verMarker.setIconSize(13)
         self.verMarker.setColor(QColor(qgsLineRed[0],qgsLineGreen[0],qgsLineBlue[0]))
         self.verMarker.setPenWidth(qgsLineWidth[0])
-
         self.verMarkers=[]
 
         self.relRubBandPol=QgsRubberBand(plugin.canvas,True)
@@ -111,7 +115,8 @@
         self.relVerMarker.setColor(QColor(qgsLineRed[0],50,50))
         self.relVerMarker.setPenWidth(qgsLineWidth[0])
 
-        self.__activeEditButton=self.dummyButton
+        # initializing inner variables
+        self.activeEditButton=self.dummyButton
         self.__tagsLoaded=False
         self.__relTagsLoaded=False
         self.feature=None
@@ -120,8 +125,6 @@
         self.featRelTags=[]
         self.featRelMembers=[]
 
-        self.tagsEditIndex=-1
-
         # clear all widget items
         self.clear()
 
@@ -130,13 +133,8 @@
         self.removeButton.setEnabled(False)
         self.createRelationButton.setCheckable(False)
 
-        self.relTagsTreeWidget.setSelectionMode(QAbstractItemView.NoSelection)
-        self.tagsTableWidget.setSelectionMode(QAbstractItemView.ExtendedSelection)
-        self.tagsTableWidget.setSelectionBehavior(QAbstractItemView.SelectRows)
-
         # set current tab to "Properties"
         self.propRelBox.setCurrentIndex(0)
-
         self.plugin.canvas.setFocus(Qt.OtherFocusReason)
 
         # init coordinate transform
@@ -214,8 +212,9 @@
         QObject.connect(self.editRelationButton,  SIGNAL("clicked()"), self.editSelectedRelation)
         QObject.connect(self.removeRelationButton,  SIGNAL("clicked()"), self.removeSelectedRelation)
         QObject.connect(self.deleteTagsButton, SIGNAL("clicked()"), self.removeSelectedTags)
-        QObject.connect(self.tagsTableWidget, SIGNAL("cellChanged(int,int)"), self.__onTagsCellChanged)
-        QObject.connect(self.tagsTableWidget, SIGNAL("itemDoubleClicked(QTableWidgetItem*)"), self.__onTagsItemDoubleClicked)
+        QObject.connect(self.tagTable, SIGNAL("cellChanged(int,int)"), self.__onTagsCellChanged)
+        QObject.connect(self.tagTable, SIGNAL("currentCellChanged(int,int,int,int)"), self.__onCurrentCellChanged)
+        QObject.connect(self.tagTable, SIGNAL("itemDoubleClicked(QTableWidgetItem*)"), self.__onTagsItemDoubleClicked)
         QObject.connect(self.undoButton,  SIGNAL("clicked()"), self.__undo)
         QObject.connect(self.redoButton, SIGNAL("clicked()"), self.__redo)
         QObject.connect(self.urDetailsButton, SIGNAL("clicked()"), self.__urDetailsChecked)
@@ -244,7 +243,7 @@
         # if some mapTool is currently set tell it about database changing
         if self.__mapTool:
             self.__mapTool.databaseChanged(dbKey)
-            self.__activeEditButton=self.dummyButton
+            self.activeEditButton=self.dummyButton
 
         # and if new database is None, disable the whole dockwidget
         if not dbKey:
@@ -269,20 +268,19 @@
         self.createdLabel.setText("")
 
         # clear table with information about feature's tags
-        self.tagsTableWidget.clear()
-        self.tagsTableWidget.setEnabled(False)
-        self.tagsTableWidget.setRowCount(0)
-        self.tagsTableWidget.setColumnCount(0)
-        self.tagsEditIndex=-1
+        self.tagTable.clear()
+        self.tagTable.setEnabled(False)
+        self.tagTable.setRowCount(0)
+        self.tagTable.setColumnCount(0)
 
         # clear table with info about feature's relations
         self.relListWidget.clear()
-        self.relTagsTreeWidget.clear()
+        self.relTagsTree.clear()
         self.relMembersList.clear()
-        self.relTagsTreeWidget.setColumnCount(0)
+        self.relTagsTree.setColumnCount(0)
 
         self.relListWidget.setEnabled(False)
-        self.relTagsTreeWidget.setEnabled(False)
+        self.relTagsTree.setEnabled(False)
         self.relMembersList.setEnabled(False)
 
         # disable widget buttons
@@ -329,7 +327,7 @@
         self.__mapTool=None
 
         self.plugin.canvas.setCursor(QCursor(Qt.ArrowCursor))
-        self.__activeEditButton=self.dummyButton
+        self.activeEditButton=self.dummyButton
 
         self.setContentEnabled(False)
         self.plugin.undoredo.setContentEnabled(False)
@@ -362,7 +360,7 @@
         self.__mapTool=None
 
         self.plugin.canvas.setCursor(QCursor(Qt.ArrowCursor))
-        self.__activeEditButton=self.dummyButton
+        self.activeEditButton=self.dummyButton
 
         self.setContentEnabled(False)
         self.plugin.undoredo.setContentEnabled(False)
@@ -422,17 +420,17 @@
             # but we are interested in user actions only
             return
 
-        if row<self.tagsTableWidget.rowCount()-1:
+        if row<self.tagTable.rowCount()-1:
 
             # changing value of tag that already exists
-            key = self.tagsTableWidget.item(row,0).text()
-            value = self.tagsTableWidget.item(row,1).text()
+            key=self.tagTable.item(row,0).text()
+            value=self.tagTable.item(row,1).text()
 
             # store tag's change into database
             self.plugin.undoredo.startAction("Change tag value.")
             self.plugin.dbm.changeTagValue(self.feature.id(),self.featureType,key.toUtf8().data(),value.toUtf8().data())
         else:
-            key = self.tagsTableWidget.item(row,0).text()
+            key = self.tagTable.item(row,0).text()
             if key=="" or key==self.newTagLabel:
                 return
 
@@ -443,9 +441,9 @@
                 isAlreadyDef=self.plugin.dbm.isTagDefined(self.feature.id(),self.featureType,key.toUtf8().data())
                 if isAlreadyDef:
                     # such a key already exists for this relation
-                    self.tagsTableWidget.setItem(row,0,QTableWidgetItem(self.newTagLabel))
+                    self.tagTable.setItem(row,0,QTableWidgetItem(self.newTagLabel))
                     QMessageBox.information(self, self.tr("OSM Feature Dock Widget")
-                        ,self.tr("Property with key '%1' already exists for this feature.").arg(key.toUtf8().data()))
+                        ,self.tr("Property '%1' cannot be added twice.").arg(key.toUtf8().data()))
                     return
 
                 # well, insert new tag into database
@@ -454,15 +452,15 @@
 
                 self.__tagsLoaded=False
 
-                self.tagsTableWidget.item(row,0).setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)
-                self.tagsTableWidget.item(row,1).setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled | Qt.ItemIsEditable)
+                self.tagTable.item(row,0).setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)
+                self.tagTable.item(row,1).setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled | Qt.ItemIsEditable)
 
                 newLastRow = row+1
-                self.tagsTableWidget.setRowCount(row+2)
-                self.tagsTableWidget.setItem(newLastRow,0,QTableWidgetItem(self.newTagLabel))
-                self.tagsTableWidget.setItem(newLastRow,1,QTableWidgetItem(""))
-                self.tagsTableWidget.item(newLastRow,0).setFlags(Qt.ItemIsEnabled | Qt.ItemIsEditable)
-                self.tagsTableWidget.item(newLastRow,1).setFlags(Qt.ItemIsEnabled)
+                self.tagTable.setRowCount(row+2)
+                self.tagTable.setItem(newLastRow,0,QTableWidgetItem(self.newTagLabel))
+                self.tagTable.setItem(newLastRow,1,QTableWidgetItem(""))
+                self.tagTable.item(newLastRow,0).setFlags(Qt.ItemIsEnabled | Qt.ItemIsEditable)
+                self.tagTable.item(newLastRow,1).setFlags(Qt.ItemIsEnabled)
 
                 self.__tagsLoaded=True
 
@@ -498,100 +496,580 @@
         """
 
         if item.column()==0:
+
+            if item.row()<self.tagTable.rowCount()-1:
+                return
+
+            tagValues=self.determineSuitableTagKeys(self.featureType)
+            tagValues.sort()
+            if len(tagValues)>0:
+                valCombo=QComboBox()
+                valCombo.setEditable(True)
+                valCombo.addItems(tagValues)
+                currentComboText=self.tagTable.item(item.row(),0).text()
+                ix=valCombo.findText(currentComboText)
+                valCombo.setCurrentIndex(ix)
+                if ix==-1:
+                    valCombo.setEditText(currentComboText)
+
+                self.tagTable.setCellWidget(item.row(),0,valCombo)
+                QObject.connect(valCombo, SIGNAL("currentIndexChanged(const QString &)"), self.__onTagKeySelectionChanged)
             return
 
-        if self.tagsEditIndex<>None:
-            row=self.tagsEditIndex
-            if row<>-1:
-                value=self.tagsTableWidget.cellWidget(row,1).currentText()
-                self.tagsTableWidget.item(row,1).setText(value)
-                self.tagsTableWidget.removeCellWidget(row,1)
-
-        key=self.tagsTableWidget.item(item.row(),0).text()
+        key=self.tagTable.item(item.row(),0).text()
         tagValues=self.determineSuitableTagValues(self.featureType,key)
+        tagValues.sort()
 
         if len(tagValues)>0:
             valCombo=QComboBox()
             valCombo.setEditable(True)
             valCombo.addItems(tagValues)
-            currentComboText=self.tagsTableWidget.item(item.row(),1).text()
+            currentComboText=self.tagTable.item(item.row(),1).text()
             ix=valCombo.findText(currentComboText)
+            valCombo.setCurrentIndex(ix)
             if ix==-1:
                 valCombo.setEditText(currentComboText)
-            else:
-                valCombo.setCurrentIndex(ix)
 
-            self.tagsTableWidget.setCellWidget(item.row(),1,valCombo)
-            self.tagsEditIndex=item.row()
+            self.tagTable.setCellWidget(item.row(),1,valCombo)
             QObject.connect(valCombo, SIGNAL("currentIndexChanged(const QString &)"), self.__onTagValueSelectionChanged)
 
 
+    def __onCurrentCellChanged(self,curRow,curCol,prevRow,prevCol):
+        """Function is called after currentCellChanged(...) signal is emitted on table of feature tags.
+
+        @param curRow current row index to tags table
+        @param curCol current column index to tags table
+        @param prevRow previous row index to tags table
+        @param prevCol previous column index to tags table
+        """
+
+        cellWidget=self.tagTable.cellWidget(prevRow,prevCol)
+        if cellWidget==None:
+            return
+
+        self.tagTable.removeCellWidget(prevRow,prevCol)
+
+
+    def __onTagKeySelectionChanged(self,key):
+        """Function is called after currentIndexChanged(...) signal is emitted on combobox in 1st column of tags table.
+
+        @param key key selected in combobox
+        """
+
+        row=self.tagTable.currentRow()
+        col=self.tagTable.currentColumn()
+
+        self.tagTable.item(row,col).setText(key)
+        self.tagTable.removeCellWidget(row,col)
+
+
     def __onTagValueSelectionChanged(self,value):
-        """TODO: Function is called after currentIndexChanged(...) signal is emitted on combobox of table item.
-        This combobox is related to table of relation tags (column Value).
+        """Function is called after currentIndexChanged(...) signal is emitted on combobox in 2nd column of tags table.
 
-        @param value new current value in combobox
+        @param value value selected in combobox
         """
 
-        row=self.tagsEditIndex
-        self.tagsTableWidget.item(row,1).setText(value)
-        self.tagsTableWidget.removeCellWidget(row,1)
-        self.tagsEditIndex=-1
+        row=self.tagTable.currentRow()
+        col=self.tagTable.currentColumn()
 
+        self.tagTable.item(row,col).setText(value)
+        self.tagTable.removeCellWidget(row,col)
 
+
     def determineSuitableTagValues(self,featType,tagKey):
-        """TODO: Function is used to find typical tag values for given relation type and given key.
-        With help of this function plugin gives advice to user on relation creation.
+        """Function is used to find out typical tag values to given feature type and key.
+        With help of this function plugin gives advice to user on feature tags editing.
+        Information on typical/recommended tag values was taken from wiki.openstreetmap.org.
 
-        @param relType name of relation type
+        @param featType name of feature type; one of 'Point','Line','Polygon'
         @param tagKey key of tag
-        @return list of typical tag values to given relation type
+        @return list of typical values to given feature type and key
         """
 
-        vals = []
-        if featType in ('Point','Line','Polygon','Relation'):
+        vals=[]
+        # POINT TAGS
+        if featType=='Point':
 
             if tagKey=="highway":
-                vals = ["trunk","motorway","primary","secondary","tertiary","residential"]
+                vals=["services","mini_roundabout","stop","traffic_signals","crossing","incline","incline_steep","ford","bus_stop","turning_circle"
+                     ,"emergency_access_point","speed_camera","motorway_junction","passing_place"]
 
-            elif tagKey=="boundary":
-                vals = ["administrative","national_park","political","civil"]
-            elif tagKey=="land_area":
-                vals = ["administrative"]
-            elif tagKey=="admin_level":
-                vals = ["1","2","3","4","5","6","7","8","9","10","11"]
-            elif tagKey=="restriction":
-                vals = ["no_right_turn","no_left_turn","no_u_turn","no_straight_on","only_right_turn","only_left_turn","only_straight_on"]
-            elif tagKey=="except":
-                vals = ["psv","bicycle","hgv","motorcar"]
+            elif tagKey=="traffic_calming":
+                vals=["yes","bump","chicane","cushion","hump","rumble_strip","table","choker"]
+
+            elif tagKey=="barrier":
+                vals=["bollard","cycle_barrier","cattle_grid","toll_booth","entrance","gate","stile","sally_port"]
+
+            elif tagKey=="waterway":
+                vals=["dock","lock_gate","turning_point","boatyard","weir"]
+
+            elif tagKey=="lock":
+                vals=["yes"]
+
+            elif tagKey=="railway":
+                vals=["station","halt","tram_stop","crossing","level_crossing","subway_entrance","turntable","buffer_stop"]
+
+            elif tagKey=="aeroway":
+                vals=["aerodrome","terminal","helipad","gate","windsock"]
+
+            elif tagKey=="aerialway":
+                vals=["station"]
+
+            elif tagKey=="power":
+                vals=["tower","station","sub_station","generator"]
+
+            elif tagKey=="man_made":
+                vals=["beacon","crane","gasometer","lighthouse","reservoir_covered","surveillance","survey_point","tower","wastewater_plant","watermill"
+                     ,"water_tower","water_works","windmill","works"]
+
+            elif tagKey=="leisure":
+                vals=["sports_centre ","sports_centre ","stadium","track","pitch","water_park","marina","slipway","fishing","nature_reserve"
+                     ,"park","playground","garden","common","ice_rink","miniature_golf"]
+
+            elif tagKey=="amenity":
+                vals=["restaurant","pub","food_court","fast_food","drinking_water","bbq","biergarten","cafe","kindergarten","school","college"
+                     ,"library","university","ferry_terminal","bicycle_parking","bicycle_rental","bus_station","car_rental","car_sharing","fuel"
+                     ,"grit_bin","parking","signpost","taxi","atm","bank","bureau_de_change","pharmacy","hospital","baby_hatch","dentist","doctors","veterinary"
+                     ,"arts_centre","cinema","fountain","nightclub","studio","theatre","bench","brothel","courthouse","crematorium","embassy","emergency_phone"
+                     ,"fire_station","grave_yard","hunting_stand","place_of_worship","police","post_box","post_office","prison","public_building","recycling"
+                     ,"shelter","telephone","toilets","townhall","vending_machine","waste_basket","waste_disposal"]
+
+            elif tagKey=="shop":
+                vals=["alcohol","bakery","beverages","bicycle","books","butcher","car","car_repair","chemist","clothes","computer","confectionery","convenience"
+                     ,"department_store","dry_cleaning","doityourself","electronics","florist","furniture","garden_centre","greengrocer","hairdresser"
+                     ,"hardware","hifi","kiosk","laundry","mall","motorcycle","newsagent","optician","organic","outdoor","sports","stationery","supermarket"
+                     ,"shoes","toys","travel_agency","video"]
+
+            elif tagKey=="tourism":
+                vals=["alpine_hut","attraction","artwork","camp_site","caravan_site","chalet","guest_house","hostel","hotel","information","motel","museum"
+                     ,"picnic_site","theme_park","viewpoint","zoo","yes"]
+
+            elif tagKey=="historic":
+                vals=["castle","monument","memorial","archaeological_site","ruins","battlefield","wreck","yes"]
+
+            elif tagKey=="landuse":
+                vals=["quarry","landfill","basin","reservoir","forest","allotments","vineyard","residential","retail","commercial","industrial","brownfield"
+                     ,"greenfield","construction","military","meadow","village_green","wood","recreation_ground"]
+
+            elif tagKey=="military":
+                vals=["airfield","bunker","barracks","danger_area","range","naval_base"]
+
+            elif tagKey=="natural":
+                vals=["bay","beach","cave_entrance","cliff","coastline","fell","glacier","heath","land","marsh","mud","peak","scree","scrub","spring","tree"
+                     ,"volcano","water","wetland","wood"]
+
+            elif tagKey=="sport":
+                vals=["9pin","10pin","archery","athletics","australian_football","baseball","basketball","beachvolleyball","boules","bowls","canoe","chess"
+                      "climbing","cricket","cricket_nets","croquet","cycling","diving","dog_racing","equestrian","football","golf","gymnastics","hockey"
+                      "horse_racing","korfball","motor","multi","orienteering","paddle_tennis","pelota","racquet","rowing","rugby","shooting","skating"
+                      "skateboard","skiing","soccer","swimming","table_tennis","team_handball","tennis","volleyball"]
+
+            elif tagKey=="internet_access":
+                vals=["public","service","terminal","wired","wlan"]
+
+            elif tagKey=="motorroad":
+                vals=["yes","no"]
+
+            elif tagKey=="bridge":
+                vals=["yes","aqueduct","viaduct","swing"]
+
+            elif tagKey=="crossing":
+                vals=["no","traffic_signals","uncontrolled"]
+
+            elif tagKey=="mountain_pass":
+                vals=["yes"]
+
+            elif tagKey=="disused":
+                vals=["yes"]
+
+            elif tagKey=="wheelchair":
+                vals=["yes","no","limited"]
+
+            elif tagKey=="wood":
+                vals=["coniferous","deciduous","mixed"]
+
+            elif tagKey=="place":
+                vals=["continent","country","state","region","country","city","town","village","hamlet","suburb","locality","island"]
+
+            elif tagKey=="source":
+                vals=["extrapolation","knowledge","historical","image","survey","voice"]
+
+
+        # LINE TAGS
+        elif featType=='Line':
+
+            if tagKey=="highway":
+                vals=["motorway","motorway_link","trunk","trunk_link","primary","primary_link","secondary","secondary_link","tertiary","unclassified"
+                     ,"road","residential","living_street","service","track","pedestrian","bus_guideway","path","cycleway","footway","bridleway"
+                     ,"byway","steps","ford","construction"]
+
+            elif tagKey=="traffic_calming":
+                vals=["yes","bump","chicane","cushion","hump","rumble_strip","table","choker"]
+
+            elif tagKey=="service":
+                vals=["parking_aisle","driveway","alley","yard","siding","spur"]
+
+            elif tagKey=="smoothness":
+                vals=["excellent","good","intermediate","bad","very_bad","horrible","very_horrible","impassable"]
+
+            elif tagKey=="passing_places":
+                vals=["yes"]
+
+            elif tagKey=="barrier":
+                vals=["hedge","fence","wall","ditch","retaining_wall","city_wall","bollard"]
+
+            elif tagKey=="cycleway":
+                vals=["lane","track","opposite_lane","opposite_track","opposite"]
+
+            elif tagKey=="tracktype":
+                vals=["grade1","grade2","grade3","grade4","grade5"]
+
+            elif tagKey=="waterway":
+                vals=["stream","river","canal","drain","weir","dam"]
+
+            elif tagKey=="lock":
+                vals=["yes"]
+
+            elif tagKey=="mooring":
+                vals=["yes","private","no"]
+
+            elif tagKey=="railway":
+                vals=["rail","tram","light_rail","abandoned","disused","subway","preserved","narrow_gauge","construction","monorail","funicular","platform"]
+
+            elif tagKey=="usage":
+                vals=["main","branch","industrial","military","tourism"]
+
+            elif tagKey=="electrified":
+                vals=["contact_line","rail","yes","no"]
+
+            elif tagKey=="bridge":
+                vals=["yes"]
+
+            elif tagKey=="tunnel":
+                vals=["yes","no"]
+
+            elif tagKey=="aeroway":
+                vals=["runway","taxiway"]
+
+            elif tagKey=="aerialway":
+                vals=["cable_car","gondola","chair_lift","drag_lift"]
+
+            elif tagKey=="power":
+                vals=["line"]
+
+            elif tagKey=="cables":
+                vals=["3","4","6","8","9","12","15","18"]
+
+            elif tagKey=="wires":
+                vals=["single","double","triple","quad"]
+
+            elif tagKey=="voltage":
+                vals=["110000","220000","380000","400000"]
+
+            elif tagKey=="man_made":
+                vals=["pier","pipeline"]
+
+            elif tagKey=="leisure":
+                vals=["track"]
+
+            elif tagKey=="amenity":
+                vals=["marketplace"]
+
+            elif tagKey=="tourism":
+                vals=["artwork"]
+
+            elif tagKey=="natural":
+                vals=["cliff","coastline"]
+
             elif tagKey=="route":
-                vals = ["road","bicycle","foot","hiking","bus","pilgrimage","detour","railway","tram","mtb","roller_skate","running","horse"]
-            elif tagKey=="network":
-                vals = ["ncn","rcn","lcn","uk_ldp","lwn","rwn","nwn","e-road"]
-            elif tagKey=="state":
-                vals = ["proposed","alternate","temporary","connection"]
+                vals=["bus","detour","ferry","flight","subsea","hiking","bicycle","mtb","road","ski","tour","tram","pub_crawl"]
 
+            elif tagKey=="abutters":
+                vals=["residential","retail","commercial","industrial","mixed"]
+
+            elif tagKey=="fenced":
+                vals=["yes","no"]
+
+            elif tagKey=="lit":
+                vals=["yes","no"]
+
+            elif tagKey=="motorroad":
+                vals=["yes","no"]
+
+            elif tagKey=="bridge":
+                vals=["yes","aqueduct","viaduct","swing"]
+
+            elif tagKey=="tunnel":
+                vals=["yes"]
+
+            elif tagKey=="cutting":
+                vals=["yes"]
+
+            elif tagKey=="embankment":
+                vals=["yes"]
+
+            elif tagKey=="layer":
+                vals=["-5","-4","-3","-2","-1","0","1","2","3","4","5"]
+
+            elif tagKey=="surface":
+                vals=["paved","unpaved","asphalt","concrete","paving_stones","cobblestone","metal","wood","grass_paver","gravel","pebblestone"
+                     ,"grass","ground","earth","dirt","mud","sand","ice_road"]
+
+            elif tagKey=="disused":
+                vals=["yes"]
+
+            elif tagKey=="wheelchair":
+                vals=["yes","no","limited"]
+
+            elif tagKey=="narrow":
+                vals=["yes"]
+
+            elif tagKey=="sac_scale":
+                vals=["hiking","mountain_hiking","demanding_mountain_hiking","alpine_hiking","demanding_alpine_hiking","difficult_alpine_hiking"]
+
+            elif tagKey=="trail_visibility":
+                vals=["excellent","good","intermediate","bad","horrible","no"]
+
+            elif tagKey=="mtb:scale":
+                vals=["0","1","2","3","4","5"]
+
+            elif tagKey=="mtb:scale:uphill":
+                vals=["0","1","2","3","4","5"]
+
+            elif tagKey=="mtb:scale:imba":
+                vals=["0","1","2","3","4"]
+
+            elif tagKey=="access":
+                vals=["yes","designated","official","private","permissive","destination","delivery","agricultural","forestry","unknown","no"]
+
+            elif tagKey=="vehicle":
+                vals=["yes","designated","private","permissive","destination","delivery","agricultural","forestry","unknown","no"]
+
+            elif tagKey=="bicycle":
+                vals=["yes","designated","official","private","permissive","dismount","destination","delivery","agricultural","forestry","unknown","no"]
+
+            elif tagKey=="foot":
+                vals=["yes","designated","official","private","permissive","destination","delivery","agricultural","forestry","unknown","no"]
+
+            elif tagKey=="goods":
+                vals=["yes","designated","private","permissive","destination","delivery","agricultural","forestry","unknown","no"]
+
+            elif tagKey=="hgv":
+                vals=["yes","designated","private","permissive","destination","delivery","agricultural","forestry","unknown","no"]
+
+            elif tagKey=="hazmat":
+                vals=["yes","designated","private","permissive","destination","delivery","agricultural","forestry","unknown","no"]
+
+            elif tagKey=="agricultural":
+                vals=["yes","designated","private","permissive","destination","delivery","agricultural","forestry","unknown","no"]
+
+            elif tagKey=="horse":
+                vals=["yes","designated","official","private","permissive","destination","delivery","agricultural","forestry","unknown","no"]
+
+            elif tagKey=="motorcycle":
+                vals=["yes","designated","private","permissive","destination","delivery","agricultural","forestry","unknown","no"]
+
+            elif tagKey=="motorcar":
+                vals=["yes","designated","private","permissive","destination","delivery","agricultural","forestry","unknown","no"]
+
+            elif tagKey=="motor_vehicle":
+                vals=["yes","designated","private","permissive","destination","delivery","agricultural","forestry","unknown","no"]
+
+            elif tagKey=="psv":
+                vals=["yes","designated","private","permissive","destination","delivery","agricultural","forestry","unknown","no"]
+
+            elif tagKey=="motorboat":
+                vals=["yes","designated","private","permissive","destination","delivery","agricultural","forestry","unknown","no"]
+
+            elif tagKey=="boat":
+                vals=["yes","designated","private","permissive","destination","delivery","agricultural","forestry","unknown","no"]
+
+            elif tagKey=="oneway":
+                vals=["yes","no","-1"]
+
+            elif tagKey=="noexit":
+                vals=["yes"]
+
+            elif tagKey=="toll":
+                vals=["yes"]
+
+            elif tagKey=="addr:interpolation":
+                vals=["all","even","odd","alphabetic"]
+
+            elif tagKey=="source":
+                vals=["extrapolation","knowledge","historical","image","survey","voice"]
+
+
+        # POLYGON TAGS
+        elif featType=='Polygon':
+
+            if tagKey=="highway":
+                vals=["pedestrian","services"]
+
+            elif tagKey=="junction":
+                vals=["roundabout"]
+
+            elif tagKey=="barrier":
+                vals=["hedge","fence","wall","ditch","retaining_wall","city_wall"]
+
+            elif tagKey=="waterway":
+                vals=["riverbank","dock","dam"]
+
+            elif tagKey=="railway":
+                vals=["station","turntable","platform"]
+
+            elif tagKey=="aeroway":
+                vals=["aerodrome","terminal","helipad","apron"]
+
+            elif tagKey=="aerialway":
+                vals=["station"]
+
+            elif tagKey=="power":
+                vals=["station","sub_station","generator"]
+
+            elif tagKey=="man_made":
+                vals=["crane","gasometer","pier","reservoir_covered","surveillance","wastewater_plant","watermill","water_tower","water_works","windmill","works"]
+
+            elif tagKey=="building":
+                vals=["yes"]
+
+            elif tagKey=="leisure":
+                vals=["sports_centre ","sports_centre ","stadium","track","pitch","water_park","marina","fishing","nature_reserve"
+                     ,"park","playground","garden","common","ice_rink","miniature_golf"]
+
+            elif tagKey=="amenity":
+                vals=["restaurant","pub","food_court","fast_food","biergarten","cafe","kindergarten","school","college"
+                     ,"library","university","ferry_terminal","bicycle_parking","bicycle_rental","bus_station","car_rental","car_sharing","fuel"
+                     ,"parking","taxi","bank","pharmacy","hospital","baby_hatch","dentist","doctors","veterinary"
+                     ,"arts_centre","cinema","fountain","nightclub","studio","theatre","brothel","courthouse","crematorium","embassy"
+                     ,"fire_station","grave_yard","hunting_stand","marketplace","place_of_worship","police","post_office","prison","public_building","recycling"
+                     ,"shelter","townhall"]
+
+            elif tagKey=="shop":
+                vals=["alcohol","bakery","beverages","bicycle","books","butcher","car","car_repair","chemist","clothes","computer","confectionery","convenience"
+                     ,"department_store","dry_cleaning","doityourself","electronics","florist","furniture","garden_centre","greengrocer","hairdresser"
+                     ,"hardware","hifi","kiosk","laundry","mall","motorcycle","newsagent","optician","organic","outdoor","sports","stationery","supermarket"
+                     ,"shoes","toys","travel_agency","video"]
+
+            elif tagKey=="tourism":
+                vals=["alpine_hut","attraction","artwork","camp_site","caravan_site","chalet","museum","picnic_site","theme_park","zoo","yes"]
+
+            elif tagKey=="historic":
+                vals=["castle","monument","memorial","archaeological_site","ruins","battlefield","wreck","yes"]
+
+            elif tagKey=="landuse":
+                vals=["farm","farmyard","quarry","landfill","basin","reservoir","forest","allotments","vineyard","residential","retail","commercial","industrial"
+                     ,"brownfield","greenfield","construction","railway","military","cemetery","meadow","village_green","wood","recreation_ground","salt_pond"]
+
+            elif tagKey=="military":
+                vals=["airfield","bunker","barracks","danger_area","range","naval_base"]
+
+            elif tagKey=="natural":
+                vals=["bay","beach","cave_entrance","cliff","coastline","fell","glacier","heath","land","marsh","mud","scree","scrub"
+                     ,"water","wetland","wood"]
+
+            elif tagKey=="boundary":
+                vals=["administrative","civil","political","national_park"]
+
+            elif tagKey=="sport":
+                vals=["9pin","10pin","archery","athletics","australian_football","baseball","basketball","beachvolleyball","boules","bowls","canoe","chess"
+                      "climbing","cricket","cricket_nets","croquet","cycling","diving","dog_racing","equestrian","football","golf","gymnastics","hockey"
+                      "horse_racing","korfball","motor","multi","paddle_tennis","pelota","racquet","rowing","rugby","shooting","skating"
+                      "skateboard","skiing","soccer","swimming","table_tennis","team_handball","tennis","volleyball"]
+
+            elif tagKey=="area":
+                vals=["yes"]
+
+            elif tagKey=="disused":
+                vals=["yes"]
+
+            elif tagKey=="wheelchair":
+                vals=["yes","no","limited"]
+
+            elif tagKey=="wood":
+                vals=["coniferous","deciduous","mixed"]
+
+            elif tagKey=="place":
+                vals=["continent","state","region","country","city","town","village","hamlet","suburb","locality","island"]
+
+            elif tagKey=="source":
+                vals=["extrapolation","knowledge","historical","image","survey","voice"]
+
+
         return vals
 
 
+    def determineSuitableTagKeys(self,featType):
+        """Function is used to find out typical tag keys to given feature type.
+        With help of this function plugin gives advice to user on feature tags editing.
+        Information on typical/recommended tag keys was taken from wiki.openstreetmap.org.
+
+        @param featType name of feature type; one of 'Point','Line','Polygon'
+        @return list of typical keys to given feature type
+        """
+
+        vals = []
+        if featType=='Point':
+
+            vals=["highway","traffic_calming","barrier","waterway","lock","railway","aeroway","aerialway","power","man_made","leisure"
+                 ,"amenity","shop","tourism","historic","landuse","military","natural","route","sport","internet_access","motorroad","bridge","crossing"
+                 ,"mountain_pass","ele","incline","operator","opening_hours","disused","wheelchair","TMC:LocationCode","wood","traffic_sign","disused"
+                 ,"name","alt_name"
+                 ,"alt_name","int_name","nat_name","reg_name","loc_name","old_name","name:lg","ref","int_ref","nat_ref","reg_ref","loc_ref","old_ref"
+                 ,"source_ref","icao","iata","place","place_numbers","postal_code","is_in","population","addr:housenumber","addr:housename","addr:street"
+                 ,"addr:postcode","addr:city","addr:country","note","description","image","source","source_ref","source_name","source:ref"
+                 ,"attribution","url","website","wikipedia","created_by","history"]
+
+        elif featType=='Line':
+
+            vals=["highway","construction","junction","traffic_calming","service","smoothness","passing_places","barrier","cycleway"
+                 ,"tracktype","waterway","lock","mooring","railway","usage","electrified","frequency","voltage","bridge","tunnel","service"
+                 ,"aeroway","aerialway","power","cables","wires","voltage","man_made","leisure","amenity","natural","route","abutters","fenced"
+                 ,"lit","motorroad","bridge","tunnel","cutting","embankment","lanes","layer","surface","width","est_width","depth","est_depth"
+                 ,"incline","start_date","end_date","operator","opening_hours","disused","wheelchair","narrow","sac_scale","trail_visibility"
+                 ,"mtb:scale","mtb:scale:uphill","mtb:scale:imba","mtb:description","TMC:LocationCode","access","vehicle","bicycle","foot","goods"
+                 ,"hgv","hazmat","agricultural","horse","motorcycle","motorcar","motor_vehicle","psv","motorboat","boat","oneway","noexit"
+                 ,"date_on","date_off","hour_on","hour_off","maxweight","maxheight","maxwidth","maxlength","maxspeed","minspeed","maxstay"
+                 ,"disused","toll","charge","name"
+                 ,"alt_name","int_name","nat_name","reg_name","loc_name","old_name","name:lg","ref","int_ref","nat_ref","reg_ref","loc_ref","old_ref"
+                 ,"ncn_ref","rcn_ref","lcn_ref"
+                 ,"source_ref","icao","iata","place_numbers","postal_code","is_in","addr:interpolation","note","description","image","source"
+                 ,"source_ref","source_name","source:ref","attribution","url","website","wikipedia","created_by","history"]
+
+
+        elif featType=='Polygon':
+
+            vals=["highway","junction","barrier","waterway","railway","landuse","aeroway","aerialway","power","man_made","building","leisure"
+                 ,"amenity","shop","tourism","historic","landuse","military","natural","route","boundary","sport","area","ele","depth","est_depth"
+                 ,"operator","opening_hours","disused","wheelchair","wood","admin_level","disused","name"
+                 ,"alt_name","int_name","nat_name","reg_name","loc_name","old_name","name:lg","ref","int_ref","nat_ref","reg_ref","loc_ref","old_ref"
+                 ,"source_ref","icao","iata","place","place_name","place_numbers","postal_code","is_in","population"
+                 ,"addr:housenumber","addr:housename","addr:street","addr:postcode","addr:city","addr:country"
+                 ,"note","description","image","source","source_ref","source_name","source:ref","attribution","url","website","wikipedia"
+                 ,"created_by","history"]
+
+        return vals
+
+
     def __startIdentifyingFeature(self):
         """Function prepares feature identification.
         The appropriate map tool (IdentifyMapTool) is set to map canvas.
         """
 
-        if self.__activeEditButton==self.identifyButton:
+        if self.activeEditButton==self.identifyButton:
             return
 
+        self.plugin.canvas.unsetMapTool(self.plugin.canvas.mapTool())
+
         # clear dockwidget
         self.clear()
 
         self.plugin.iface.mainWindow().statusBar().showMessage("")
 
         self.__mapTool=IdentifyMapTool(self.plugin.canvas, self, self.plugin.dbm)
-        self.plugin.canvas.unsetMapTool(self.plugin.canvas.mapTool())
         self.plugin.canvas.setMapTool(self.__mapTool)
         self.plugin.canvas.setCursor(QCursor(Qt.ArrowCursor))
-        self.__activeEditButton=self.identifyButton
+        self.activeEditButton=self.identifyButton
         self.plugin.canvas.setFocus(Qt.OtherFocusReason)
 
 
@@ -600,7 +1078,7 @@
         The appropriate map tool (MoveMapTool) is set to map canvas.
         """
 
-        if self.__activeEditButton==self.moveButton:
+        if self.activeEditButton==self.moveButton:
             return
 
         # clear dockwidget
@@ -610,7 +1088,7 @@
         self.__mapTool=MoveMapTool(self.plugin)
         self.plugin.canvas.setMapTool(self.__mapTool)
         self.plugin.canvas.setCursor(QCursor(Qt.CrossCursor))
-        self.__activeEditButton=self.moveButton
+        self.activeEditButton=self.moveButton
         self.plugin.canvas.setFocus(Qt.OtherFocusReason)
 
 
@@ -619,7 +1097,7 @@
         The appropriate map tool (CreatePointMapTool) is set to map canvas.
         """
 
-        if self.__activeEditButton==self.createPointButton:
+        if self.activeEditButton==self.createPointButton:
             return
 
         self.plugin.iface.mainWindow().statusBar().showMessage("Snapping ON. Hold Ctrl to disable it.")
@@ -627,7 +1105,7 @@
         self.__mapTool=CreatePointMapTool(self.plugin)
         self.plugin.canvas.setMapTool(self.__mapTool)
         self.plugin.canvas.setCursor(QCursor(Qt.ArrowCursor))
-        self.__activeEditButton=self.createPointButton
+        self.activeEditButton=self.createPointButton
         self.plugin.canvas.setFocus(Qt.OtherFocusReason)
 
 
@@ -636,7 +1114,7 @@
         The appropriate map tool (CreateLineMapTool) is set to map canvas.
         """
 
-        if self.__activeEditButton==self.createLineButton:
+        if self.activeEditButton==self.createLineButton:
             return
 
         self.plugin.iface.mainWindow().statusBar().showMessage("Snapping ON. Hold Ctrl to disable it.")
@@ -644,7 +1122,7 @@
         self.__mapTool=CreateLineMapTool(self.plugin)
         self.plugin.canvas.setMapTool(self.__mapTool)
         self.plugin.canvas.setCursor(QCursor(Qt.ArrowCursor))
-        self.__activeEditButton=self.createLineButton
+        self.activeEditButton=self.createLineButton
         self.plugin.canvas.setFocus(Qt.OtherFocusReason)
 
 
@@ -653,7 +1131,7 @@
         The appropriate map tool (CreatePolygonMapTool) is set to map canvas.
         """
 
-        if self.__activeEditButton==self.createPolygonButton:
+        if self.activeEditButton==self.createPolygonButton:
             return
 
         self.plugin.iface.mainWindow().statusBar().showMessage("Snapping ON. Hold Ctrl to disable it.")
@@ -661,7 +1139,7 @@
         self.__mapTool=CreatePolygonMapTool(self.plugin)
         self.plugin.canvas.setMapTool(self.__mapTool)
         self.plugin.canvas.setCursor(QCursor(Qt.ArrowCursor))
-        self.__activeEditButton=self.createPolygonButton
+        self.activeEditButton=self.createPolygonButton
         self.plugin.canvas.setFocus(Qt.OtherFocusReason)
 
 
@@ -713,8 +1191,8 @@
         self.plugin.canvas.setMapTool(self.__mapTool)
         self.plugin.canvas.setCursor(QCursor(Qt.ArrowCursor))
         self.plugin.canvas.setFocus(Qt.OtherFocusReason)
-        self.__activeEditButton=self.identifyButton
-        self.__activeEditButton.setChecked(True)
+        self.activeEditButton=self.identifyButton
+        self.activeEditButton.setChecked(True)
 
 
     def removeSelectedTags(self):
@@ -723,10 +1201,10 @@
         """
 
         # remove selected tags (rows)
-        selectedItems=self.tagsTableWidget.selectedItems()
+        selectedItems=self.tagTable.selectedItems()
         selectedRowsIndexes=[]
-        lastRowIndex=self.tagsTableWidget.rowCount()-1
-        self.tagsTableWidget.setCurrentCell(lastRowIndex,0)
+        lastRowIndex=self.tagTable.rowCount()-1
+        self.tagTable.setCurrentCell(lastRowIndex,0)
 
         for i in selectedItems:
             if i.column()==0 and not i.row()==lastRowIndex:
@@ -739,7 +1217,7 @@
 
         for ix in selectedRowsIndexes:
 
-            key=self.tagsTableWidget.item(ix,0).text()
+            key=self.tagTable.item(ix,0).text()
             # updating feature status (from Normal to Updated)
             if self.featureType=='Point':
                 self.plugin.dbm.changePointStatus(self.feature.id(),'N','U')
@@ -756,7 +1234,7 @@
             # perform tag removing 
             self.plugin.dbm.removeTag(self.feature.id(),self.featureType,key.toUtf8().data())
 
-            self.tagsTableWidget.removeRow(ix)
+            self.tagTable.removeRow(ix)
 
         # make this action permanent
         self.plugin.dbm.commit()
@@ -871,16 +1349,16 @@
         @param relId identifier of relation
         """
 
-        self.relTagsTreeWidget.clear()
+        self.relTagsTree.clear()
         self.__relTagsLoaded=False
         # ask database manager for all relation tags
         self.featRelTags=self.plugin.dbm.getFeatureTags(relId,"Relation")
 
-        self.relTagsTreeWidget.setColumnCount(2)
-        self.relTagsTreeWidget.setHeaderLabels(["Key","Value"])
+        self.relTagsTree.setColumnCount(2)
+        self.relTagsTree.setHeaderLabels(["Key","Value"])
 
         for i in range(0,len(self.featRelTags)):
-            self.relTagsTreeWidget.addTopLevelItem(QTreeWidgetItem([self.featRelTags[i][0],self.featRelTags[i][1]]))
+            self.relTagsTree.addTopLevelItem(QTreeWidgetItem([self.featRelTags[i][0],self.featRelTags[i][1]]))
 
         self.__relTagsLoaded=True
 
@@ -930,32 +1408,32 @@
         """
 
         # clear table with information about feature's tags
-        self.tagsTableWidget.clear()
+        self.tagTable.clear()
 
         # fill tableWidget with tags of selected feature
         tableData=self.plugin.dbm.getFeatureTags(featId,featType)
         rowCount=len(tableData)
         self.__tagsLoaded=False
 
-        self.tagsTableWidget.setRowCount(rowCount+1)
-        self.tagsTableWidget.setColumnCount(2)
-        self.tagsTableWidget.setHorizontalHeaderItem(0,QTableWidgetItem("Key"))
-        self.tagsTableWidget.setHorizontalHeaderItem(1,QTableWidgetItem("Value"))
+        self.tagTable.setRowCount(rowCount+1)
+        self.tagTable.setColumnCount(2)
+        self.tagTable.setHorizontalHeaderItem(0,QTableWidgetItem("Key"))
+        self.tagTable.setHorizontalHeaderItem(1,QTableWidgetItem("Value"))
 
         for i in range(0,rowCount):
-            self.tagsTableWidget.setItem(i,0,QTableWidgetItem(tableData[i][0]))
-            self.tagsTableWidget.setItem(i,1,QTableWidgetItem(tableData[i][1]))
-            self.tagsTableWidget.item(i,0).setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)
-            self.tagsTableWidget.item(i,1).setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled | Qt.ItemIsEditable)
+            self.tagTable.setItem(i,0,QTableWidgetItem(tableData[i][0]))
+            self.tagTable.setItem(i,1,QTableWidgetItem(tableData[i][1]))
+            self.tagTable.item(i,0).setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)
+            self.tagTable.item(i,1).setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled | Qt.ItemIsEditable)
 
-        self.tagsTableWidget.setItem(rowCount,0,QTableWidgetItem(self.newTagLabel))
-        self.tagsTableWidget.setItem(rowCount,1,QTableWidgetItem(""))
-        self.tagsTableWidget.item(rowCount,0).setFlags(Qt.ItemIsEnabled | Qt.ItemIsEditable)
-        self.tagsTableWidget.item(rowCount,1).setFlags(Qt.ItemIsEnabled)
+        self.tagTable.setItem(rowCount,0,QTableWidgetItem(self.newTagLabel))
+        self.tagTable.setItem(rowCount,1,QTableWidgetItem(""))
+        self.tagTable.item(rowCount,0).setFlags(Qt.ItemIsEnabled | Qt.ItemIsEditable)
+        self.tagTable.item(rowCount,1).setFlags(Qt.ItemIsEnabled)
         self.__tagsLoaded=True
 
         # enable tags table for editing
-        self.tagsTableWidget.setEnabled(True)
+        self.tagTable.setEnabled(True)
         self.deleteTagsButton.setEnabled(True)
 
 
@@ -970,7 +1448,7 @@
         @param featType type of feature to load - one of 'Point','Line','Polygon'
         """
 
-        self.relTagsTreeWidget.setColumnCount(0)
+        self.relTagsTree.setColumnCount(0)
         self.relMembersList.setEnabled(False)
 
         # disable widget buttons
@@ -979,7 +1457,7 @@
 
         # clear all tables connected to relations
         self.relListWidget.clear()
-        self.relTagsTreeWidget.clear()
+        self.relTagsTree.clear()
         self.relMembersList.clear()
 
         # load relations for selected feature
@@ -996,7 +1474,7 @@
         # enable relation tables and button for relation addition
         self.addRelationButton.setEnabled(True)
         self.relListWidget.setEnabled(True)
-        self.relTagsTreeWidget.setEnabled(True)
+        self.relTagsTree.setEnabled(True)
 
 
     def reloadFeatureRelations(self):
@@ -1006,7 +1484,7 @@
         If no relation exists for specified feature, listWidget is filled with the only row with text: "<no relation>".
         """
 
-        self.relTagsTreeWidget.setColumnCount(0)
+        self.relTagsTree.setColumnCount(0)
         self.relMembersList.setEnabled(False)
 
         # disable widget buttons
@@ -1015,7 +1493,7 @@
 
         # clear all tables connected to relations
         self.relListWidget.clear()
-        self.relTagsTreeWidget.clear()
+        self.relTagsTree.clear()
         self.relMembersList.clear()
 
         # load relations for selected feature
@@ -1032,7 +1510,7 @@
         # enable relation tables and button for relation addition
         self.addRelationButton.setEnabled(True)
         self.relListWidget.setEnabled(True)
-        self.relTagsTreeWidget.setEnabled(True)
+        self.relTagsTree.setEnabled(True)
 
 
     def putMarkersOnMembers(self,feat,featType):

Modified: trunk/qgis/python/plugins/osm/ui_files/DockWidget.ui
===================================================================
--- trunk/qgis/python/plugins/osm/ui_files/DockWidget.ui	2009-08-06 10:43:28 UTC (rev 11282)
+++ trunk/qgis/python/plugins/osm/ui_files/DockWidget.ui	2009-08-06 14:09:40 UTC (rev 11283)
@@ -1,14 +1,13 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
+<ui version="4.0" >
  <class>OsmDockWidget</class>
- <widget class="QDockWidget" name="OsmDockWidget">
-  <property name="windowModality">
+ <widget class="QDockWidget" name="OsmDockWidget" >
+  <property name="windowModality" >
    <enum>Qt::NonModal</enum>
   </property>
-  <property name="enabled">
+  <property name="enabled" >
    <bool>true</bool>
   </property>
-  <property name="geometry">
+  <property name="geometry" >
    <rect>
     <x>0</x>
     <y>0</y>
@@ -16,295 +15,295 @@
     <height>776</height>
    </rect>
   </property>
-  <property name="sizePolicy">
-   <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+  <property name="sizePolicy" >
+   <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
     <horstretch>0</horstretch>
     <verstretch>0</verstretch>
    </sizepolicy>
   </property>
-  <property name="minimumSize">
+  <property name="minimumSize" >
    <size>
     <width>261</width>
     <height>357</height>
    </size>
   </property>
-  <property name="maximumSize">
+  <property name="maximumSize" >
    <size>
-    <width>524287</width>
-    <height>524287</height>
+    <width>16777215</width>
+    <height>16777215</height>
    </size>
   </property>
-  <property name="windowTitle">
+  <property name="windowTitle" >
    <string>OSM Feature</string>
   </property>
-  <widget class="QWidget" name="dockWidgetContents">
-   <layout class="QVBoxLayout">
+  <widget class="QWidget" name="dockWidgetContents" >
+   <layout class="QVBoxLayout" >
     <item>
-     <layout class="QHBoxLayout">
-      <property name="spacing">
+     <layout class="QHBoxLayout" >
+      <property name="spacing" >
        <number>1</number>
       </property>
-      <property name="rightMargin">
+      <property name="rightMargin" >
        <number>0</number>
       </property>
       <item>
-       <widget class="QToolButton" name="dummyButton">
-        <property name="minimumSize">
+       <widget class="QToolButton" name="dummyButton" >
+        <property name="minimumSize" >
          <size>
           <width>1</width>
           <height>25</height>
          </size>
         </property>
-        <property name="maximumSize">
+        <property name="maximumSize" >
          <size>
           <width>1</width>
           <height>27</height>
          </size>
         </property>
-        <property name="focusPolicy">
+        <property name="focusPolicy" >
          <enum>Qt::NoFocus</enum>
         </property>
-        <property name="text">
+        <property name="text" >
          <string>...</string>
         </property>
-        <property name="checkable">
+        <property name="checkable" >
          <bool>true</bool>
         </property>
        </widget>
       </item>
       <item>
-       <widget class="QToolButton" name="identifyButton">
-        <property name="minimumSize">
+       <widget class="QToolButton" name="identifyButton" >
+        <property name="minimumSize" >
          <size>
           <width>26</width>
           <height>25</height>
          </size>
         </property>
-        <property name="maximumSize">
+        <property name="maximumSize" >
          <size>
           <width>25</width>
           <height>26</height>
          </size>
         </property>
-        <property name="focusPolicy">
+        <property name="focusPolicy" >
          <enum>Qt::NoFocus</enum>
         </property>
-        <property name="toolTip">
+        <property name="toolTip" >
          <string>Identify object</string>
         </property>
-        <property name="statusTip">
+        <property name="statusTip" >
          <string>Identify object</string>
         </property>
-        <property name="whatsThis">
+        <property name="whatsThis" >
          <string>Identify object</string>
         </property>
-        <property name="text">
+        <property name="text" >
          <string>...</string>
         </property>
-        <property name="checkable">
+        <property name="checkable" >
          <bool>true</bool>
         </property>
        </widget>
       </item>
       <item>
-       <widget class="QToolButton" name="moveButton">
-        <property name="minimumSize">
+       <widget class="QToolButton" name="moveButton" >
+        <property name="minimumSize" >
          <size>
           <width>26</width>
           <height>25</height>
          </size>
         </property>
-        <property name="maximumSize">
+        <property name="maximumSize" >
          <size>
           <width>25</width>
           <height>26</height>
          </size>
         </property>
-        <property name="focusPolicy">
+        <property name="focusPolicy" >
          <enum>Qt::NoFocus</enum>
         </property>
-        <property name="toolTip">
+        <property name="toolTip" >
          <string>Move object</string>
         </property>
-        <property name="text">
+        <property name="text" >
          <string>...</string>
         </property>
-        <property name="checkable">
+        <property name="checkable" >
          <bool>true</bool>
         </property>
        </widget>
       </item>
       <item>
-       <widget class="QToolButton" name="createPointButton">
-        <property name="minimumSize">
+       <widget class="QToolButton" name="createPointButton" >
+        <property name="minimumSize" >
          <size>
           <width>26</width>
           <height>25</height>
          </size>
         </property>
-        <property name="maximumSize">
+        <property name="maximumSize" >
          <size>
           <width>25</width>
           <height>26</height>
          </size>
         </property>
-        <property name="focusPolicy">
+        <property name="focusPolicy" >
          <enum>Qt::NoFocus</enum>
         </property>
-        <property name="toolTip">
+        <property name="toolTip" >
          <string>Create point</string>
         </property>
-        <property name="text">
+        <property name="text" >
          <string>...</string>
         </property>
-        <property name="checkable">
+        <property name="checkable" >
          <bool>true</bool>
         </property>
        </widget>
       </item>
       <item>
-       <widget class="QToolButton" name="createLineButton">
-        <property name="minimumSize">
+       <widget class="QToolButton" name="createLineButton" >
+        <property name="minimumSize" >
          <size>
           <width>26</width>
           <height>25</height>
          </size>
         </property>
-        <property name="focusPolicy">
+        <property name="focusPolicy" >
          <enum>Qt::NoFocus</enum>
         </property>
-        <property name="toolTip">
+        <property name="toolTip" >
          <string>Create line</string>
         </property>
-        <property name="text">
+        <property name="text" >
          <string>...</string>
         </property>
-        <property name="checkable">
+        <property name="checkable" >
          <bool>true</bool>
         </property>
        </widget>
       </item>
       <item>
-       <widget class="QToolButton" name="createPolygonButton">
-        <property name="minimumSize">
+       <widget class="QToolButton" name="createPolygonButton" >
+        <property name="minimumSize" >
          <size>
           <width>26</width>
           <height>25</height>
          </size>
         </property>
-        <property name="maximumSize">
+        <property name="maximumSize" >
          <size>
           <width>25</width>
           <height>26</height>
          </size>
         </property>
-        <property name="focusPolicy">
+        <property name="focusPolicy" >
          <enum>Qt::NoFocus</enum>
         </property>
-        <property name="toolTip">
+        <property name="toolTip" >
          <string>Create polygon</string>
         </property>
-        <property name="text">
+        <property name="text" >
          <string>...</string>
         </property>
-        <property name="checkable">
+        <property name="checkable" >
          <bool>true</bool>
         </property>
        </widget>
       </item>
       <item>
-       <widget class="QToolButton" name="createRelationButton">
-        <property name="minimumSize">
+       <widget class="QToolButton" name="createRelationButton" >
+        <property name="minimumSize" >
          <size>
           <width>26</width>
           <height>25</height>
          </size>
         </property>
-        <property name="maximumSize">
+        <property name="maximumSize" >
          <size>
           <width>25</width>
           <height>26</height>
          </size>
         </property>
-        <property name="focusPolicy">
+        <property name="focusPolicy" >
          <enum>Qt::NoFocus</enum>
         </property>
-        <property name="toolTip">
+        <property name="toolTip" >
          <string>Create relation</string>
         </property>
-        <property name="text">
+        <property name="text" >
          <string>...</string>
         </property>
-        <property name="checkable">
+        <property name="checkable" >
          <bool>true</bool>
         </property>
        </widget>
       </item>
       <item>
-       <widget class="QToolButton" name="undoButton">
-        <property name="maximumSize">
+       <widget class="QToolButton" name="undoButton" >
+        <property name="maximumSize" >
          <size>
           <width>25</width>
           <height>26</height>
          </size>
         </property>
-        <property name="toolTip">
+        <property name="toolTip" >
          <string>Undo</string>
         </property>
-        <property name="statusTip">
+        <property name="statusTip" >
          <string>Undo</string>
         </property>
-        <property name="whatsThis">
+        <property name="whatsThis" >
          <string>Undo</string>
         </property>
-        <property name="text">
+        <property name="text" >
          <string>...</string>
         </property>
        </widget>
       </item>
       <item>
-       <widget class="QToolButton" name="redoButton">
-        <property name="maximumSize">
+       <widget class="QToolButton" name="redoButton" >
+        <property name="maximumSize" >
          <size>
           <width>25</width>
           <height>26</height>
          </size>
         </property>
-        <property name="toolTip">
+        <property name="toolTip" >
          <string>Redo</string>
         </property>
-        <property name="statusTip">
+        <property name="statusTip" >
          <string>Redo</string>
         </property>
-        <property name="whatsThis">
+        <property name="whatsThis" >
          <string>Redo</string>
         </property>
-        <property name="text">
+        <property name="text" >
          <string>...</string>
         </property>
        </widget>
       </item>
       <item>
-       <widget class="QToolButton" name="urDetailsButton">
-        <property name="maximumSize">
+       <widget class="QToolButton" name="urDetailsButton" >
+        <property name="maximumSize" >
          <size>
           <width>25</width>
           <height>26</height>
          </size>
         </property>
-        <property name="toolTip">
+        <property name="toolTip" >
          <string>Show/Hide OSM Edit History</string>
         </property>
-        <property name="statusTip">
+        <property name="statusTip" >
          <string>Show/Hide OSM Edit History</string>
         </property>
-        <property name="whatsThis">
+        <property name="whatsThis" >
          <string>Show/Hide OSM Edit History</string>
         </property>
-        <property name="text">
+        <property name="text" >
          <string>...</string>
         </property>
-        <property name="checkable">
+        <property name="checkable" >
          <bool>true</bool>
         </property>
        </widget>
@@ -312,97 +311,100 @@
      </layout>
     </item>
     <item>
-     <widget class="QGroupBox" name="featInfoBox">
-      <property name="enabled">
+     <widget class="QGroupBox" name="featInfoBox" >
+      <property name="enabled" >
        <bool>true</bool>
       </property>
-      <property name="minimumSize">
+      <property name="minimumSize" >
        <size>
         <width>0</width>
         <height>95</height>
        </size>
       </property>
-      <property name="maximumSize">
+      <property name="maximumSize" >
        <size>
         <width>16777215</width>
         <height>95</height>
        </size>
       </property>
-      <property name="title">
+      <property name="title" >
        <string>Feature:</string>
       </property>
-      <layout class="QVBoxLayout">
-       <property name="spacing">
+      <layout class="QVBoxLayout" >
+       <property name="spacing" >
         <number>0</number>
        </property>
-       <property name="leftMargin">
+       <property name="leftMargin" >
         <number>18</number>
        </property>
-       <property name="topMargin">
+       <property name="topMargin" >
         <number>4</number>
        </property>
-       <property name="rightMargin">
+       <property name="rightMargin" >
         <number>3</number>
        </property>
-       <property name="bottomMargin">
+       <property name="bottomMargin" >
         <number>6</number>
        </property>
        <item>
-        <layout class="QGridLayout">
-         <property name="spacing">
+        <layout class="QGridLayout" >
+         <property name="horizontalSpacing" >
           <number>0</number>
          </property>
-         <item row="0" column="0">
-          <widget class="QLabel" name="label">
-           <property name="text">
+         <property name="verticalSpacing" >
+          <number>0</number>
+         </property>
+         <item row="0" column="0" >
+          <widget class="QLabel" name="label" >
+           <property name="text" >
             <string>TYPE, ID:</string>
            </property>
           </widget>
          </item>
-         <item row="1" column="0">
-          <widget class="QLabel" name="label_4">
-           <property name="text">
+         <item row="1" column="0" >
+          <widget class="QLabel" name="label_4" >
+           <property name="text" >
             <string>CREATED:</string>
            </property>
           </widget>
          </item>
-         <item row="2" column="0">
-          <widget class="QLabel" name="label_5">
-           <property name="text">
+         <item row="2" column="0" >
+          <widget class="QLabel" name="label_5" >
+           <property name="text" >
             <string>USER:</string>
            </property>
           </widget>
          </item>
-         <item row="0" column="1">
-          <widget class="QLabel" name="typeIdLabel">
-           <property name="text">
+         <item row="0" column="1" >
+          <widget class="QLabel" name="typeIdLabel" >
+           <property name="text" >
             <string>unknown</string>
            </property>
           </widget>
          </item>
-         <item row="1" column="1">
-          <widget class="QLabel" name="createdLabel">
-           <property name="text">
+         <item row="1" column="1" >
+          <widget class="QLabel" name="createdLabel" >
+           <property name="text" >
             <string>unknown</string>
            </property>
           </widget>
          </item>
-         <item row="2" column="1">
-          <widget class="QLabel" name="userLabel">
-           <property name="text">
+         <item row="2" column="1" >
+          <widget class="QLabel" name="userLabel" >
+           <property name="text" >
             <string>unknown</string>
            </property>
           </widget>
          </item>
-         <item row="2" column="2">
-          <widget class="QToolButton" name="removeButton">
-           <property name="maximumSize">
+         <item row="2" column="2" >
+          <widget class="QToolButton" name="removeButton" >
+           <property name="maximumSize" >
             <size>
              <width>25</width>
              <height>25</height>
             </size>
            </property>
-           <property name="text">
+           <property name="text" >
             <string>...</string>
            </property>
           </widget>
@@ -413,66 +415,66 @@
      </widget>
     </item>
     <item>
-     <widget class="QTabWidget" name="propRelBox">
-      <property name="minimumSize">
+     <widget class="QTabWidget" name="propRelBox" >
+      <property name="minimumSize" >
        <size>
         <width>0</width>
         <height>175</height>
        </size>
       </property>
-      <property name="maximumSize">
+      <property name="maximumSize" >
        <size>
         <width>16777215</width>
         <height>16777215</height>
        </size>
       </property>
-      <property name="tabPosition">
+      <property name="tabPosition" >
        <enum>QTabWidget::North</enum>
       </property>
-      <property name="tabShape">
+      <property name="tabShape" >
        <enum>QTabWidget::Rounded</enum>
       </property>
-      <property name="currentIndex">
-       <number>0</number>
+      <property name="currentIndex" >
+       <number>1</number>
       </property>
-      <widget class="QWidget" name="Properties">
-       <attribute name="title">
+      <widget class="QWidget" name="Properties" >
+       <attribute name="title" >
         <string>Properties</string>
        </attribute>
-       <layout class="QVBoxLayout">
+       <layout class="QVBoxLayout" >
         <item>
-         <widget class="QTableWidget" name="tagsTableWidget">
-          <property name="sizePolicy">
-           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+         <widget class="QTableWidget" name="tagTable" >
+          <property name="sizePolicy" >
+           <sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
             <horstretch>0</horstretch>
             <verstretch>0</verstretch>
            </sizepolicy>
           </property>
-          <property name="minimumSize">
+          <property name="minimumSize" >
            <size>
             <width>205</width>
             <height>100</height>
            </size>
           </property>
-          <property name="maximumSize">
+          <property name="maximumSize" >
            <size>
             <width>16777215</width>
             <height>16777215</height>
            </size>
           </property>
-          <property name="frameShape">
+          <property name="frameShape" >
            <enum>QFrame::Box</enum>
           </property>
          </widget>
         </item>
         <item>
-         <layout class="QHBoxLayout">
+         <layout class="QHBoxLayout" >
           <item>
            <spacer>
-            <property name="orientation">
+            <property name="orientation" >
              <enum>Qt::Horizontal</enum>
             </property>
-            <property name="sizeHint" stdset="0">
+            <property name="sizeHint" >
              <size>
               <width>40</width>
               <height>20</height>
@@ -481,8 +483,8 @@
            </spacer>
           </item>
           <item>
-           <widget class="QToolButton" name="deleteTagsButton">
-            <property name="text">
+           <widget class="QToolButton" name="deleteTagsButton" >
+            <property name="text" >
              <string>...</string>
             </property>
            </widget>
@@ -491,139 +493,139 @@
         </item>
        </layout>
       </widget>
-      <widget class="QWidget" name="Relations">
-       <attribute name="title">
+      <widget class="QWidget" name="Relations" >
+       <attribute name="title" >
         <string>Relations</string>
        </attribute>
-       <layout class="QVBoxLayout">
+       <layout class="QVBoxLayout" >
         <item>
-         <layout class="QHBoxLayout">
+         <layout class="QHBoxLayout" >
           <item>
-           <widget class="QListWidget" name="relListWidget">
-            <property name="enabled">
+           <widget class="QListWidget" name="relListWidget" >
+            <property name="enabled" >
              <bool>false</bool>
             </property>
-            <property name="minimumSize">
+            <property name="minimumSize" >
              <size>
               <width>0</width>
               <height>60</height>
              </size>
             </property>
-            <property name="maximumSize">
+            <property name="maximumSize" >
              <size>
               <width>16777215</width>
               <height>104</height>
              </size>
             </property>
-            <property name="frameShape">
+            <property name="frameShape" >
              <enum>QFrame::Box</enum>
             </property>
            </widget>
           </item>
           <item>
-           <layout class="QVBoxLayout">
+           <layout class="QVBoxLayout" >
             <item>
-             <widget class="QPushButton" name="addRelationButton">
-              <property name="enabled">
+             <widget class="QPushButton" name="addRelationButton" >
+              <property name="enabled" >
                <bool>false</bool>
               </property>
-              <property name="minimumSize">
+              <property name="minimumSize" >
                <size>
                 <width>26</width>
                 <height>25</height>
                </size>
               </property>
-              <property name="maximumSize">
+              <property name="maximumSize" >
                <size>
                 <width>26</width>
                 <height>25</height>
                </size>
               </property>
-              <property name="toolTip">
+              <property name="toolTip" >
                <string>Add new relation</string>
               </property>
-              <property name="statusTip">
+              <property name="statusTip" >
                <string>Add new relation</string>
               </property>
-              <property name="whatsThis">
+              <property name="whatsThis" >
                <string>Add new relation</string>
               </property>
-              <property name="text">
+              <property name="text" >
                <string>A</string>
               </property>
              </widget>
             </item>
             <item>
-             <widget class="QPushButton" name="editRelationButton">
-              <property name="enabled">
+             <widget class="QPushButton" name="editRelationButton" >
+              <property name="enabled" >
                <bool>false</bool>
               </property>
-              <property name="minimumSize">
+              <property name="minimumSize" >
                <size>
                 <width>26</width>
                 <height>25</height>
                </size>
               </property>
-              <property name="maximumSize">
+              <property name="maximumSize" >
                <size>
                 <width>26</width>
                 <height>25</height>
                </size>
               </property>
-              <property name="toolTip">
+              <property name="toolTip" >
                <string>Edit selected relation</string>
               </property>
-              <property name="statusTip">
+              <property name="statusTip" >
                <string>Edit selected relation</string>
               </property>
-              <property name="whatsThis">
+              <property name="whatsThis" >
                <string>Edit selected relation</string>
               </property>
-              <property name="text">
+              <property name="text" >
                <string>E</string>
               </property>
              </widget>
             </item>
             <item>
-             <widget class="QPushButton" name="removeRelationButton">
-              <property name="enabled">
+             <widget class="QPushButton" name="removeRelationButton" >
+              <property name="enabled" >
                <bool>false</bool>
               </property>
-              <property name="minimumSize">
+              <property name="minimumSize" >
                <size>
                 <width>26</width>
                 <height>25</height>
                </size>
               </property>
-              <property name="maximumSize">
+              <property name="maximumSize" >
                <size>
                 <width>26</width>
                 <height>25</height>
                </size>
               </property>
-              <property name="toolTip">
+              <property name="toolTip" >
                <string>Remove selected relation</string>
               </property>
-              <property name="statusTip">
+              <property name="statusTip" >
                <string>Remove selected relation</string>
               </property>
-              <property name="whatsThis">
+              <property name="whatsThis" >
                <string>Remove selected relation</string>
               </property>
-              <property name="text">
+              <property name="text" >
                <string>R</string>
               </property>
              </widget>
             </item>
             <item>
              <spacer>
-              <property name="orientation">
+              <property name="orientation" >
                <enum>Qt::Vertical</enum>
               </property>
-              <property name="sizeType">
+              <property name="sizeType" >
                <enum>QSizePolicy::Minimum</enum>
               </property>
-              <property name="sizeHint" stdset="0">
+              <property name="sizeHint" >
                <size>
                 <width>26</width>
                 <height>0</height>
@@ -636,85 +638,85 @@
          </layout>
         </item>
         <item>
-         <widget class="QLabel" name="label_2">
-          <property name="text">
+         <widget class="QLabel" name="label_2" >
+          <property name="text" >
            <string>Relation tags:</string>
           </property>
          </widget>
         </item>
         <item>
-         <widget class="QTreeWidget" name="relTagsTreeWidget">
-          <property name="enabled">
+         <widget class="QTreeWidget" name="relTagsTree" >
+          <property name="enabled" >
            <bool>false</bool>
           </property>
-          <property name="minimumSize">
+          <property name="minimumSize" >
            <size>
             <width>0</width>
             <height>115</height>
            </size>
           </property>
-          <property name="maximumSize">
+          <property name="maximumSize" >
            <size>
             <width>16777215</width>
             <height>16777215</height>
            </size>
           </property>
-          <property name="cursor" stdset="0">
+          <property name="cursor" stdset="0" >
            <cursorShape>ForbiddenCursor</cursorShape>
           </property>
-          <property name="contextMenuPolicy">
+          <property name="contextMenuPolicy" >
            <enum>Qt::NoContextMenu</enum>
           </property>
-          <property name="frameShape">
+          <property name="frameShape" >
            <enum>QFrame::Box</enum>
           </property>
-          <property name="frameShadow">
+          <property name="frameShadow" >
            <enum>QFrame::Sunken</enum>
           </property>
-          <property name="indentation">
+          <property name="indentation" >
            <number>0</number>
           </property>
-          <property name="rootIsDecorated">
+          <property name="rootIsDecorated" >
            <bool>false</bool>
           </property>
-          <property name="itemsExpandable">
+          <property name="itemsExpandable" >
            <bool>false</bool>
           </property>
-          <property name="columnCount">
+          <property name="columnCount" >
            <number>1</number>
           </property>
           <column>
-           <property name="text">
+           <property name="text" >
             <string>1</string>
            </property>
           </column>
          </widget>
         </item>
         <item>
-         <widget class="QLabel" name="label_3">
-          <property name="text">
+         <widget class="QLabel" name="label_3" >
+          <property name="text" >
            <string>Relation members:</string>
           </property>
          </widget>
         </item>
         <item>
-         <widget class="QListWidget" name="relMembersList">
-          <property name="enabled">
+         <widget class="QListWidget" name="relMembersList" >
+          <property name="enabled" >
            <bool>false</bool>
           </property>
-          <property name="minimumSize">
+          <property name="minimumSize" >
            <size>
             <width>0</width>
             <height>115</height>
            </size>
           </property>
-          <property name="maximumSize">
+          <property name="maximumSize" >
            <size>
             <width>16777215</width>
             <height>16777215</height>
            </size>
           </property>
-          <property name="frameShape">
+          <property name="frameShape" >
            <enum>QFrame::Box</enum>
           </property>
          </widget>



More information about the QGIS-commit mailing list