[GRASS-SVN] r65422 - in grass-addons/grass7/gui/wxpython/wx.metadata: config g.gui.metadata mdlib pdf profiles

svn_grass at osgeo.org svn_grass at osgeo.org
Mon Jun 8 09:53:36 PDT 2015


Author: krejcmat
Date: 2015-06-08 09:53:36 -0700 (Mon, 08 Jun 2015)
New Revision: 65422

Added:
   grass-addons/grass7/gui/wxpython/wx.metadata/config/keywordConcepts
   grass-addons/grass7/gui/wxpython/wx.metadata/config/keywordGroups
   grass-addons/grass7/gui/wxpython/wx.metadata/config/keywordThemes
Modified:
   grass-addons/grass7/gui/wxpython/wx.metadata/g.gui.metadata/editor.py
   grass-addons/grass7/gui/wxpython/wx.metadata/g.gui.metadata/g.gui.metadata.py
   grass-addons/grass7/gui/wxpython/wx.metadata/mdlib/jinjainfo.py
   grass-addons/grass7/gui/wxpython/wx.metadata/mdlib/mdgrass.py
   grass-addons/grass7/gui/wxpython/wx.metadata/mdlib/mdutil.py
   grass-addons/grass7/gui/wxpython/wx.metadata/pdf/mdpdffactory.py
   grass-addons/grass7/gui/wxpython/wx.metadata/profiles/basicProfile.xml
   grass-addons/grass7/gui/wxpython/wx.metadata/profiles/inspireProfile.xml
Log:
widgets with predefined values

Added: grass-addons/grass7/gui/wxpython/wx.metadata/config/keywordConcepts
===================================================================
--- grass-addons/grass7/gui/wxpython/wx.metadata/config/keywordConcepts	                        (rev 0)
+++ grass-addons/grass7/gui/wxpython/wx.metadata/config/keywordConcepts	2015-06-08 16:53:36 UTC (rev 65422)
@@ -0,0 +1 @@
+keywords=[{"preferredLabel": {"string": "accident", "language": "en"}, "definition": {"string": "An unexpected occurrence, failure or loss with the potential for harming human life, property or the environment.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/25", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "administration", "language": "en"}, "definition": {"string": "The management or direction of the affairs of a public or private office, business or organization.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/95", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "agriculture", "language": "en"}, "definition": {"string": "The production of plants and animals useful to man, involving soil cultivation and the breeding and management of crops and livestock.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/232", "thesaurus": "http:
 //www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "analysis", "language": "en"}, "definition": {"string": "Examination or determination.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/397", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "animal husbandry", "language": "en"}, "definition": {"string": "A branch of agriculture concerned with the breeding and feeding of domestic animals.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/429", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "atmosphere", "language": "en"}, "definition": {"string": "The gaseous envelope surrounding the Earth in a several kilometers-thick layer.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/617", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "biochemical process", "language": "en"}, "defini
 tion": {"string": "Chemical processes occurring in living organisms.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/812", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "biosphere", "language": "en"}, "definition": {"string": "That part of the Earth and atmosphere capable of supporting living organisms.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/892", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "border", "language": "en"}, "definition": {"string": "The dividing line or frontier between political or geographic regions.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/963", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "built environment", "language": "en"}, "definition": {"string": "That part of the physical surroundings which are people-made or people-organized, such as buildings
  and other major structures, roads, bridges and the like, down to lesser objects such as traffic lights, telephone and pillar boxes.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/1063", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "business", "language": "en"}, "definition": {"string": "The activity, position or site associated with commerce or the earning of a livelihood.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/1084", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "chemical", "language": "en"}, "definition": {"string": "Any substance used in or resulting from a reaction involving changes to atoms or molecules.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/1327", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "chemical element", "language": "en"}, "definition": {"string": "A
  substance made up of atoms with the same atomic number; common examples are hydrogen, gold, and iron.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/2643", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "chemical process", "language": "en"}, "definition": {"string": "The particular method of manufacturing or making a chemical usually involving a number of steps or operations.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/1320", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "chemical property", "language": "en"}, "definition": {"string": "Properties of a substance depending on the arrangement of the atoms in the molecule, e.g. bio-availability, degradability, persistence, etc.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/1322", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "climat
 e", "language": "en"}, "definition": {"string": "The average weather condition in a region of the world. Many aspects of the Earth's geography affect the climate. Equatorial, or low, latitudes are hotter than the polar latitudes because of the angle at which the rays of sunlight arrive at the Earth's surface. The difference in temperature at the equator and at the poles has an influence on the global circulation of huge masses of air. Cool air at the poles sinks and spreads along the surface of the Earth towards the equator. Cool air forces its way under the lower density warmer air in the lower regions, pushing the lighter air up and toward the poles, where it will cool and descend.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/1462", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "craft", "language": "en"}, "definition": {"string": "An occupation or trade requiring manual dexterity or skilled artistry.", "language
 ": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/1850", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "culture (society)", "language": "en"}, "definition": {"string": "The body of customary beliefs, social forms, and material traits constituting a distinct complex of tradition of a racial or social group.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/1921", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "demography", "language": "en"}, "definition": {"string": "The statistical study of human vital statistics and population dynamics.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/2060", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "disaster", "language": "en"}, "definition": {"string": "The result of a vast ecological breakdown in the relations between man and his environment, a serious and sudd
 en event (or slow, as in drought) on such a scale that the stricken community needs extraordinary efforts to cope with it, often with outside help or international aid.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/2215", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "disease", "language": "en"}, "definition": {"string": "A definite pathological process having a characteristic set of signs and symptoms which are detrimental to the well-being of the individual.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/2232", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "economy", "language": "en"}, "definition": {"string": "The system of activities and administration through which a society uses its resources to produce wealth.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/2516", "thesaurus": "http://www.eionet.europa.eu/gemet/concept
 /"}, {"preferredLabel": {"string": "education", "language": "en"}, "definition": {"string": "The act or process of imparting or acquiring knowledge or skills.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/2547", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "effect", "language": "en"}, "definition": {"string": "Effects include: a) direct effects, which are caused by the action and occur at the same time and place, b) indirect effects, which are caused by the action and are later in time or farther removed in distance, that are still reasonably foreseeable.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/2562", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "energy", "language": "en"}, "definition": {"string": "The capacity to do work; involving thermal energy (heat), radiant energy (light), kinetic energy (motion) or chemical energy; measured in joul
 es.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/2712", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "environment", "language": "en"}, "definition": {"string": "A concept which includes all aspects of the surroundings of humanity, affecting individuals and social groupings. The European Union has defined the environment as \"the combination of elements whose complex interrelationships make up the settings, the surroundings and the conditions of life of the individual and of society, as they are or as they are felt\". The environment thus includes the built environment, the natural environment and all natural resources, including air, land and water. It also includes the surroundings of the workplace.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/2944", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "environmental assessment", "language": "en"}, "
 definition": {"string": "The evaluation or appraisal of ecological or natural resources.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/2774", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "environmental awareness", "language": "en"}, "definition": {"string": "The growth and development of awareness, understanding and consciousness toward the biophysical environment and its problems, including human interactions and effects. Thinking \"ecologically\" or in terms of an ecological consciousness.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/2778", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "environmental control", "language": "en"}, "definition": {"string": "Protection of the environment through policies concerning the control of wastes, the improvement of the human-made environment, the protection of heritage values, the institution of national p
 arks and reserves, the protection of fauna and flora, the conservation of forests and landscapes, etc.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/2795", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "environmental data", "language": "en"}, "definition": {"string": "Information concerning the state or condition of the environment.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/2803", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "environmental economy issue", "language": "en"}, "definition": {"string": "A matter of public importance involving both a community's or a country's management of financial resources and its protection of natural resources.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/2810", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "environmental impact", "languag
 e": "en"}, "definition": {"string": "Any alteration of environmental conditions or creation of a new set of environmental conditions, adverse or beneficial, caused or induced by the action or set of actions under consideration.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/2829", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "environmental management", "language": "en"}, "definition": {"string": "Measures and controls which are directed at environmental conservation, the rational and sustainable allocation and utilization of natural resources, the optimization of interrelations between society and the environment, and the improvement of human welfare for present and future generations.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/2877", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "environmental planning", "language": "en"}, "definition": {"stri
 ng": "The identification of desirable objectives for the physical environment, including social and economic objectives, and the creation of administrative procedures and programmes to meet those objectives.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/2889", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "environmental policy", "language": "en"}, "definition": {"string": "Official statements of principles, intentions, values, and objective which are based on legislation and the governing authority of a state and which serve as a guide for the operations of governmental and private activities in environmental affairs.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/2892", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "environmental problem solving", "language": "en"}, "definition": {"string": "The activity of finding solutions for troublesome or per
 plexing situations involving ecological or natural resources.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/13187", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "environmental protection", "language": "en"}, "definition": {"string": "Measures and controls to prevent damage and degradation of the environment, including the sustainability of its living resources.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/2900", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "equipment", "language": "en"}, "definition": {"string": "Any collection of materials, supplies or apparatuses stored, furnished or provided for an undertaking or activity.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/2956", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "evaluation", "language": "en"}, "definition": {"strin
 g": "No definition needed.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/3011", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "experiment", "language": "en"}, "definition": {"string": "A test under controlled conditions that is made to demonstrate a known truth, examine the validity of a hypothesis, or determine the efficacy of something previously untried.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/3050", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "finances", "language": "en"}, "definition": {"string": "The monetary resources or revenue of a government, company, organization or individual.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/3194", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "firm", "language": "en"}, "definition": {"string": "A commercial partnership of two or
  more persons, especially when incorporated.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/3232", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "fishery", "language": "en"}, "definition": {"string": "The industry of catching, processing and selling fish.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/3237", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "forestry", "language": "en"}, "definition": {"string": "The management of forest lands for wood, forages, water, wildlife, and recreation.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/3439", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "geological process", "language": "en"}, "definition": {"string": "Dynamic actions or events that occur at the Earth's surface due to application of natural forces resulting from gravity, temperatu
 re changes, freezing and thawing, chemical reactions, seismic shaking, and the agencies of wind and moving water, ice and snow. Where and when a force exceeds the strength of the earth material, the material is changed by deformation, translocation, or chemical reactions.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/3648", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "hazard", "language": "en"}, "definition": {"string": "A physical or chemical agent capable of causing harm to persons, property, animals, plants or other natural resources.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/3852", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "health", "language": "en"}, "definition": {"string": "A state of dynamic equilibrium between an organism and its environment in which all functions of mind and body are normal.", "language": "en"}, "uri": "http://
 www.eionet.europa.eu/gemet/concept/3865", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "health-environment relationship", "language": "en"}, "definition": {"string": "Relationship between the quality of the environment and the health conditions of individuals.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/3869", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "hydrosphere", "language": "en"}, "definition": {"string": "The waters of the Earth, as distinguished from the rocks (lithosphere), living things (biosphere), and the air (atmosphere). Includes the waters of the ocean; rivers, lakes, and other bodies of surface water in liquid form on the continents; snow, ice, and glaciers; and liquid water, ice, and water vapour in both the unsaturated and saturated zones below the land surface. Included by some, but excluded by others, is water in the atmosphere , which includes wa
 ter vapour, clouds, and all forms of precipitation while still in the atmosphere.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/4124", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "impact source", "language": "en"}, "definition": {"string": "Elements of an action which cause damage to the surrounding environment.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/4163", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "industrial process", "language": "en"}, "definition": {"string": "No definition needed.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/4257", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "industry", "language": "en"}, "definition": {"string": "An industry is a group of establishments engaged in the same or similar kinds of economic activities. Industries produce commoditi
 es that are sold with the expectation of recovering the total cost of production. A single industry can produce many different commodities.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/4279", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "information", "language": "en"}, "definition": {"string": "All facts, ideas or imaginative works of the mind which have been communicated, published or distributed formally or informally in any format, or the knowledge that is  communicated or received.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/4303", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "institutional structure", "language": "en"}, "definition": {"string": "An organization's complex system of mutually connected and dependent elements or parts, which make up a definite manner of arrangement.", "language": "en"}, "uri": "http://www.eionet.europa.eu/g
 emet/concept/13292", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "international relations", "language": "en"}, "definition": {"string": "The political or diplomatic interaction or dealings between independent nations.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/4438", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "justice", "language": "en"}, "definition": {"string": "The correct application of law as opposed to arbitrariness.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/11583", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "labour", "language": "en"}, "definition": {"string": "One of the factors of production. It includes all the exertions - manual, physical or mental - by individuals, directed towards the production of wealth.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/
 4577", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "land", "language": "en"}, "definition": {"string": "A specified geographical tract of the Earth's surface including all its attributes, comprising its geology, superficial deposits, topography, hydrology, soils, flora and fauna, together with the results of past and present human activity, to the extent that these attributes exert a significant influence on the present and future land utilization.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/4599", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "land setup", "language": "en"}, "definition": {"string": "The formulation of regional objectives, plans and programmes and the harmonization of the regional effects of sectorial planning.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/4666", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"p
 referredLabel": {"string": "law (corpus of rules)", "language": "en"}, "definition": {"string": "A body of rules of action or conduct prescribed by controlling authority, and having binding legal force.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/11499", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "law (individual)", "language": "en"}, "definition": {"string": "One of the rules making up the body of law.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/4707", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "legal form of organisations", "language": "en"}, "definition": {"string": "The type, structure or purpose of an institution as arranged, required and defined by local or national laws to determine the appropriate governmental regulations, privileges and tax status applicable to that institution.", "language": "en"}, "uri": "http://www.eionet.eur
 opa.eu/gemet/concept/13161", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "legislation", "language": "en"}, "definition": {"string": "The act or process of making laws.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/4749", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "lithosphere", "language": "en"}, "definition": {"string": "The solid portion of the Earth, as compared with the atmosphere and the hydrosphere.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/4855", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "management", "language": "en"}, "definition": {"string": "Government, control, superintendence, physical or manual handling or guidance; act of managing by direction or regulation, or administration, as management of family, or of household, etc.", "language": "en"}, "uri": "http://www.eionet.europa.
 eu/gemet/concept/4985", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "material", "language": "en"}, "definition": {"string": "The substance of which a product is made or composed.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/5086", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "medicine (practice)", "language": "en"}, "definition": {"string": "The science and art of treating and healing.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/5144", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "methodology", "language": "en"}, "definition": {"string": "The system of methods and principles used in a particular discipline.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/5203", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "military activities", "l
 anguage": "en"}, "definition": {"string": "Actions and movements pertaining to or conducted by the armed forces.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/5243", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "military aspects", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/5241", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "monitoring", "language": "en"}, "definition": {"string": "To check regularly in order to perceive change in some quality or quantity.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/5346", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "nutrition", "language": "en"}, "definition": {"string": "A process in animals and plants involving the intake of nutrient materials and their subsequent assimilation into the tissues.", "language": "en"}, "uri": "http://www.ei
 onet.europa.eu/gemet/concept/5765", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "organisation of the legal system", "language": "en"}, "definition": {"string": "The specific manner, form and institutions by which a government's ability to make, enforce and interpret laws are brought together into a coordinated whole.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/13146", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "overburden", "language": "en"}, "definition": {"string": "The material such as soil and rock lying above a mineral deposit that must be removed in order to work the deposit.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/5956", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "parameter", "language": "en"}, "definition": {"string": "1) A quantity in an equation which must be specified beside th
 e independent variables to obtain the solution for the dependent variables. \n2) A quantity which is constant under a given set of conditions, but may be different under other conditions.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/6033", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "pedosphere", "language": "en"}, "definition": {"string": "That shell or layer of the Earth in which soil-forming processes occur.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/6094", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "physical process", "language": "en"}, "definition": {"string": "A continuous action or series of changes which alters the material form of matter.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/6228", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "physical property", "lang
 uage": "en"}, "definition": {"string": "Property of a compound that can change without involving a change in chemical composition.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/6229", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "physicochemical process", "language": "en"}, "definition": {"string": "Processes involving changes in the physical properties and chemical structure of substances.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/6233", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "planning", "language": "en"}, "definition": {"string": "The act of making a detailed scheme for attaining an objective.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/6287", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "policy", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/conce
 pt/6370", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "politics", "language": "en"}, "definition": {"string": "The theory and practice of acquiring and exercising the power to govern in a society in order to arbitrate values, allocate resources and establish and enforce rules.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/6371", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "pollutant", "language": "en"}, "definition": {"string": "Any substance, usually a residue of human activity, which has an undesirable effect upon the environment.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/6395", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "pollution", "language": "en"}, "definition": {"string": "The indirect or direct alteration of the biological, thermal, physical, or radioactive properties of any medium in 
 such a way as to create a hazard or potential hazard to human health or to the health, safety or welfare of any living species.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/6445", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "product", "language": "en"}, "definition": {"string": "Something produced by human or mechanical effort or by a natural process.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/6660", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "radiation", "language": "en"}, "definition": {"string": "Emission of any rays from either natural or man-made origins, such as radio waves, the sun's rays, medical X-rays and the fall-out and nuclear wastes produced by nuclear weapons and nuclear energy production. Radiation is usually divided between non-ionizing radiation, such as thermal radiation (heat) and light, and nuclear radiation. Non-ioni
 zing radiation includes ultraviolet radiation from the sun which, although it can damage cells and tissues, does not involve the ionization events of nuclear radiation.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/6884", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "recreation", "language": "en"}, "definition": {"string": "Activities that promote refreshment of health or spirits by relaxation and enjoyment.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/7001", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "research", "language": "en"}, "definition": {"string": "Scientific investigation aimed at discovering and applying new facts, techniques and natural laws.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/7127", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "resource", "language":
  "en"}, "definition": {"string": "Any component of the environment that can be utilized by an organism.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/7168", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "resource utilisation", "language": "en"}, "definition": {"string": "No definition needed.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/8879", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "risk", "language": "en"}, "definition": {"string": "The expected number of lives lost, persons injured, damage to property and disruption of economic activity due to a particular natural phenomenon, and consequently the product of the probability of occurrence and the expected magnitude of damage.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/7233", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string"
 : "safety", "language": "en"}, "definition": {"string": "The state of being secure from harm, injury, danger or risk, often as a result of planned measures or preparations.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/7362", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "science", "language": "en"}, "definition": {"string": "The study of the physical universe and its contents by means of reproducible observations, measurements, and experiments to establish, verify, or modify general laws to explain its nature and behaviour.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/7472", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "services", "language": "en"}, "definition": {"string": "The carrying out of work for which there is a constant public demand by the provision of labor and the utilization of tools.", "language": "en"}, "uri": "http://www.eionet.
 europa.eu/gemet/concept/7621", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "society", "language": "en"}, "definition": {"string": "Human group of people, more or less large and complex, associated for some common interest and characterized by distinctive hierarchical relationships.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/7823", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "space (interplanetary)", "language": "en"}, "definition": {"string": "Space extending between the sun and the planets of the solar system. Interplanetary space is not empty, but contains dust, particles with an electric charge, and the magnetic field of the sun (also called the IMF, or Interplanetary Magnetic Field).", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/7962", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "state of ma
 tter", "language": "en"}, "definition": {"string": "One of the three fundamental conditions of matter: the solid, the liquid, and gaseous states.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/8072", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "statistics", "language": "en"}, "definition": {"string": "A branch of mathematics dealing with the collection, analysis, interpretation, and presentation of masses of numerical data.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/8076", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "subject", "language": "en"}, "definition": {"string": "No definition needed.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/14848", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "technical regulation", "language": "en"}, "definition": {"string": "A government or
  management prescribed rule that provides detailed or stringent requirements, either directly or by referring to or incorporating the content of a standard, technical specification or code of practice.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/11433", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "technology", "language": "en"}, "definition": {"string": "Systematic knowledge of and its application to industrial processes; closely related to engineering and science.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/8339", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "tourism", "language": "en"}, "definition": {"string": "The temporary movement of people to destinations outside their normal places or work and residence, the activities undertaken during their stay in those destinations and the facilities created to cater for their needs.", "language
 ": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/8522", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "trade (services)", "language": "en"}, "definition": {"string": "The act or process of buying, selling or exchanging goods and services at either wholesale or retail, within a country or between countries.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/8563", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "trade activity", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/11089", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "traffic", "language": "en"}, "definition": {"string": "1) The movement of vehicles, ships, aircraft, persons, etc., in an area or over a route.\n2) The vehicles, persons, etc., moving in an area or over a route.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/conce
 pt/8582", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "transportation", "language": "en"}, "definition": {"string": "The act or means of moving tangible objects (persons or goods) from place to place. Often involves the use of some type of vehicle.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/8641", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "transportation mean", "language": "en"}, "definition": {"string": "Vehicles used for transferring people or goods from one place to another.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/5116", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "vibration", "language": "en"}, "definition": {"string": "A periodic motion of small amplitude and high frequency, characteristic of elastic bodies.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/8959
 ", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}, {"preferredLabel": {"string": "waste", "language": "en"}, "definition": {"string": "Material, often unusable, left over from any manufacturing, industrial, agricultural or other human process; Material damaged or altered during a manufacturing process and subsequently left useless.", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/concept/9041", "thesaurus": "http://www.eionet.europa.eu/gemet/concept/"}]

Added: grass-addons/grass7/gui/wxpython/wx.metadata/config/keywordGroups
===================================================================
--- grass-addons/grass7/gui/wxpython/wx.metadata/config/keywordGroups	                        (rev 0)
+++ grass-addons/grass7/gui/wxpython/wx.metadata/config/keywordGroups	2015-06-08 16:53:36 UTC (rev 65422)
@@ -0,0 +1 @@
+keywords=[{"preferredLabel": {"string": "ADMINISTRATION, MANAGEMENT, POLICY, POLITICS, INSTITUTIONS, PLANNING", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/group/96", "thesaurus": "http://www.eionet.europa.eu/gemet/group/"}, {"preferredLabel": {"string": "AGRICULTURE, FORESTRY; ANIMAL HUSBANDRY; FISHERY", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/group/234", "thesaurus": "http://www.eionet.europa.eu/gemet/group/"}, {"preferredLabel": {"string": "ANTHROPOSPHERE (built environment, human settlements, land setup)", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/group/1062", "thesaurus": "http://www.eionet.europa.eu/gemet/group/"}, {"preferredLabel": {"string": "ATMOSPHERE (air, climate)", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/group/618", "thesaurus": "http://www.eionet.europa.eu/gemet/group/"}, {"preferredLabel": {"string": "BIOSPHERE (organisms, ecosystems)", "language": "en"}, "uri": "http://www.eionet.europa.eu
 /gemet/group/893", "thesaurus": "http://www.eionet.europa.eu/gemet/group/"}, {"preferredLabel": {"string": "CHEMISTRY, SUBSTANCES, PROCESSES", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/group/1349", "thesaurus": "http://www.eionet.europa.eu/gemet/group/"}, {"preferredLabel": {"string": "ECONOMICS, FINANCE", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/group/2504", "thesaurus": "http://www.eionet.europa.eu/gemet/group/"}, {"preferredLabel": {"string": "EFFECTS, IMPACTS", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/group/10114", "thesaurus": "http://www.eionet.europa.eu/gemet/group/"}, {"preferredLabel": {"string": "ENERGY", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/group/2711", "thesaurus": "http://www.eionet.europa.eu/gemet/group/"}, {"preferredLabel": {"string": "ENVIRONMENT (natural environment, anthropic environment)", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/group/10111", "thesaurus": "http
 ://www.eionet.europa.eu/gemet/group/"}, {"preferredLabel": {"string": "ENVIRONMENTAL POLICY", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/group/13109", "thesaurus": "http://www.eionet.europa.eu/gemet/group/"}, {"preferredLabel": {"string": "FUNCTIONAL TERMS", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/group/14980", "thesaurus": "http://www.eionet.europa.eu/gemet/group/"}, {"preferredLabel": {"string": "GENERAL TERMS", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/group/10117", "thesaurus": "http://www.eionet.europa.eu/gemet/group/"}, {"preferredLabel": {"string": "HEALTH, NUTRITION", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/group/3875", "thesaurus": "http://www.eionet.europa.eu/gemet/group/"}, {"preferredLabel": {"string": "HYDROSPHERE (freshwater, marine water, waters)", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/group/4125", "thesaurus": "http://www.eionet.europa.eu/gemet/group/"}, {"preferredL
 abel": {"string": "INDUSTRY, CRAFTS; TECHNOLOGY; EQUIPMENTS", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/group/4281", "thesaurus": "http://www.eionet.europa.eu/gemet/group/"}, {"preferredLabel": {"string": "INFORMATION, EDUCATION, CULTURE, ENVIRONMENTAL AWARENESS", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/group/1922", "thesaurus": "http://www.eionet.europa.eu/gemet/group/"}, {"preferredLabel": {"string": "LAND (landscape, geography)", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/group/4630", "thesaurus": "http://www.eionet.europa.eu/gemet/group/"}, {"preferredLabel": {"string": "LEGISLATION, NORMS, CONVENTIONS", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/group/4750", "thesaurus": "http://www.eionet.europa.eu/gemet/group/"}, {"preferredLabel": {"string": "LITHOSPHERE (soil, geological processes)", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/group/4856", "thesaurus": "http://www.eionet.europa.eu/g
 emet/group/"}, {"preferredLabel": {"string": "PHYSICAL ASPECTS, NOISE, VIBRATIONS, RADIATIONS", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/group/6237", "thesaurus": "http://www.eionet.europa.eu/gemet/group/"}, {"preferredLabel": {"string": "PRODUCTS, MATERIALS", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/group/10112", "thesaurus": "http://www.eionet.europa.eu/gemet/group/"}, {"preferredLabel": {"string": "RECREATION, TOURISM", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/group/7007", "thesaurus": "http://www.eionet.europa.eu/gemet/group/"}, {"preferredLabel": {"string": "RESEARCH, SCIENCES", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/group/7136", "thesaurus": "http://www.eionet.europa.eu/gemet/group/"}, {"preferredLabel": {"string": "RESOURCES (utilisation of resources)", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/group/10118", "thesaurus": "http://www.eionet.europa.eu/gemet/group/"}, {"preferred
 Label": {"string": "RISKS, SAFETY", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/group/7243", "thesaurus": "http://www.eionet.europa.eu/gemet/group/"}, {"preferredLabel": {"string": "SOCIETY", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/group/7779", "thesaurus": "http://www.eionet.europa.eu/gemet/group/"}, {"preferredLabel": {"string": "SPACE", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/group/7956", "thesaurus": "http://www.eionet.europa.eu/gemet/group/"}, {"preferredLabel": {"string": "TIME (chronology)", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/group/14979", "thesaurus": "http://www.eionet.europa.eu/gemet/group/"}, {"preferredLabel": {"string": "TRADE, SERVICES", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/group/8575", "thesaurus": "http://www.eionet.europa.eu/gemet/group/"}, {"preferredLabel": {"string": "TRAFFIC, TRANSPORTATION", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/gr
 oup/8603", "thesaurus": "http://www.eionet.europa.eu/gemet/group/"}, {"preferredLabel": {"string": "WASTES, POLLUTANTS, POLLUTION", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/group/9117", "thesaurus": "http://www.eionet.europa.eu/gemet/group/"}]

Added: grass-addons/grass7/gui/wxpython/wx.metadata/config/keywordThemes
===================================================================
--- grass-addons/grass7/gui/wxpython/wx.metadata/config/keywordThemes	                        (rev 0)
+++ grass-addons/grass7/gui/wxpython/wx.metadata/config/keywordThemes	2015-06-08 16:53:36 UTC (rev 65422)
@@ -0,0 +1 @@
+keywords=[{"preferredLabel": {"string": "administration", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/theme/1", "thesaurus": "http://www.eionet.europa.eu/gemet/theme/"}, {"preferredLabel": {"string": "agriculture", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/theme/2", "thesaurus": "http://www.eionet.europa.eu/gemet/theme/"}, {"preferredLabel": {"string": "air", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/theme/3", "thesaurus": "http://www.eionet.europa.eu/gemet/theme/"}, {"preferredLabel": {"string": "animal husbandry", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/theme/18", "thesaurus": "http://www.eionet.europa.eu/gemet/theme/"}, {"preferredLabel": {"string": "biology", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/theme/4", "thesaurus": "http://www.eionet.europa.eu/gemet/theme/"}, {"preferredLabel": {"string": "building", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/theme/5", "thesau
 rus": "http://www.eionet.europa.eu/gemet/theme/"}, {"preferredLabel": {"string": "chemistry", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/theme/6", "thesaurus": "http://www.eionet.europa.eu/gemet/theme/"}, {"preferredLabel": {"string": "climate", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/theme/7", "thesaurus": "http://www.eionet.europa.eu/gemet/theme/"}, {"preferredLabel": {"string": "disasters, accidents, risk", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/theme/32", "thesaurus": "http://www.eionet.europa.eu/gemet/theme/"}, {"preferredLabel": {"string": "economics", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/theme/9", "thesaurus": "http://www.eionet.europa.eu/gemet/theme/"}, {"preferredLabel": {"string": "energy", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/theme/10", "thesaurus": "http://www.eionet.europa.eu/gemet/theme/"}, {"preferredLabel": {"string": "environmental policy", "language": "en"},
  "uri": "http://www.eionet.europa.eu/gemet/theme/11", "thesaurus": "http://www.eionet.europa.eu/gemet/theme/"}, {"preferredLabel": {"string": "fishery", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/theme/12", "thesaurus": "http://www.eionet.europa.eu/gemet/theme/"}, {"preferredLabel": {"string": "food, drinking water", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/theme/13", "thesaurus": "http://www.eionet.europa.eu/gemet/theme/"}, {"preferredLabel": {"string": "forestry", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/theme/14", "thesaurus": "http://www.eionet.europa.eu/gemet/theme/"}, {"preferredLabel": {"string": "general", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/theme/15", "thesaurus": "http://www.eionet.europa.eu/gemet/theme/"}, {"preferredLabel": {"string": "geography", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/theme/16", "thesaurus": "http://www.eionet.europa.eu/gemet/theme/"}, {"preferredLab
 el": {"string": "human health", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/theme/17", "thesaurus": "http://www.eionet.europa.eu/gemet/theme/"}, {"preferredLabel": {"string": "industry", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/theme/19", "thesaurus": "http://www.eionet.europa.eu/gemet/theme/"}, {"preferredLabel": {"string": "information", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/theme/20", "thesaurus": "http://www.eionet.europa.eu/gemet/theme/"}, {"preferredLabel": {"string": "legislation", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/theme/21", "thesaurus": "http://www.eionet.europa.eu/gemet/theme/"}, {"preferredLabel": {"string": "materials", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/theme/27", "thesaurus": "http://www.eionet.europa.eu/gemet/theme/"}, {"preferredLabel": {"string": "military aspects", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/theme/22", "thesaurus": "http
 ://www.eionet.europa.eu/gemet/theme/"}, {"preferredLabel": {"string": "natural areas, landscape, ecosystems", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/theme/23", "thesaurus": "http://www.eionet.europa.eu/gemet/theme/"}, {"preferredLabel": {"string": "natural dynamics", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/theme/8", "thesaurus": "http://www.eionet.europa.eu/gemet/theme/"}, {"preferredLabel": {"string": "noise, vibrations", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/theme/24", "thesaurus": "http://www.eionet.europa.eu/gemet/theme/"}, {"preferredLabel": {"string": "physics", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/theme/25", "thesaurus": "http://www.eionet.europa.eu/gemet/theme/"}, {"preferredLabel": {"string": "pollution", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/theme/26", "thesaurus": "http://www.eionet.europa.eu/gemet/theme/"}, {"preferredLabel": {"string": "radiations", "language
 ": "en"}, "uri": "http://www.eionet.europa.eu/gemet/theme/28", "thesaurus": "http://www.eionet.europa.eu/gemet/theme/"}, {"preferredLabel": {"string": "research", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/theme/30", "thesaurus": "http://www.eionet.europa.eu/gemet/theme/"}, {"preferredLabel": {"string": "resources", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/theme/31", "thesaurus": "http://www.eionet.europa.eu/gemet/theme/"}, {"preferredLabel": {"string": "social aspects, population", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/theme/34", "thesaurus": "http://www.eionet.europa.eu/gemet/theme/"}, {"preferredLabel": {"string": "soil", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/theme/35", "thesaurus": "http://www.eionet.europa.eu/gemet/theme/"}, {"preferredLabel": {"string": "space", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/theme/36", "thesaurus": "http://www.eionet.europa.eu/gemet/theme/"}, {"pr
 eferredLabel": {"string": "tourism", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/theme/29", "thesaurus": "http://www.eionet.europa.eu/gemet/theme/"}, {"preferredLabel": {"string": "trade, services", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/theme/33", "thesaurus": "http://www.eionet.europa.eu/gemet/theme/"}, {"preferredLabel": {"string": "transport", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/theme/37", "thesaurus": "http://www.eionet.europa.eu/gemet/theme/"}, {"preferredLabel": {"string": "urban environment, urban stress", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/theme/38", "thesaurus": "http://www.eionet.europa.eu/gemet/theme/"}, {"preferredLabel": {"string": "waste", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/theme/39", "thesaurus": "http://www.eionet.europa.eu/gemet/theme/"}, {"preferredLabel": {"string": "water", "language": "en"}, "uri": "http://www.eionet.europa.eu/gemet/theme/40", "th
 esaurus": "http://www.eionet.europa.eu/gemet/theme/"}]

Modified: grass-addons/grass7/gui/wxpython/wx.metadata/g.gui.metadata/editor.py
===================================================================
--- grass-addons/grass7/gui/wxpython/wx.metadata/g.gui.metadata/editor.py	2015-06-08 09:18:44 UTC (rev 65421)
+++ grass-addons/grass7/gui/wxpython/wx.metadata/g.gui.metadata/editor.py	2015-06-08 16:53:36 UTC (rev 65422)
@@ -22,6 +22,7 @@
 import re
 import os
 import sys
+import tempfile
 import contextlib
 from lxml import etree
 
@@ -39,6 +40,9 @@
     TimeISOValidator, EmailValidator  # ,EmptyValidator
 import mdutil
 
+from core.gcmd import RunCommand
+from subprocess import PIPE
+from grass.pygrass.modules import Module
 #=========================================================================
 # MD filework
 #=========================================================================
@@ -151,6 +155,7 @@
 # CREATE BOX (staticbox+button(optional)
 #=========================================================================
 
+    
 
 class MdBox(wx.Panel):
 
@@ -210,7 +215,9 @@
             self.boxButtonSizer.Add(self.rmBoxButt, 0)
             self.rmBoxButt.Bind(EVT_BUTTON, self.removeBox)
 
-    def addDuplicatedItem(self, item,mdID):
+
+        
+    def addDuplicatedItem(self, item):
         self.stBoxSizer.Add(item, flag=wx.EXPAND, proportion=1)
         self.stBoxSizer.AddSpacer(5, 5, 1, wx.EXPAND)
         self.GetParent().Layout()
@@ -243,11 +250,39 @@
         clonedBox = duplicator.mdBox
         self.GetParent().addDuplicatedItem(clonedBox, self.GetId())
 
+
 #===============================================================================
+# Handling keywords from database
+#===============================================================================
+class MdBoxKeywords(MdBox):
+    def __init__(self,parent,parent2,label):
+        super(MdBoxKeywords, self).__init__(parent,label)
+        self.panelSizer = wx.BoxSizer(wx.VERTICAL)
+        self.SetSizer(self.panelSizer)
+        self.boxButtonSizer = wx.BoxSizer(wx.HORIZONTAL)
+        self.parent2=parent2
+
+        self.panelSizer.AddSpacer(10, 10, 1, wx.EXPAND)
+        self.panelSizer.Add(self.boxButtonSizer, flag=wx.EXPAND, proportion=1)
+        self.parent=parent
+        self.stBoxSizer = wx.StaticBoxSizer(self.stbox, orient=wx.VERTICAL)
+        self.boxButtonSizer.Add(self.stBoxSizer, flag=wx.EXPAND, proportion=1)
+        self.itemHolder=[]
+        self.textTMP=None
+
+    def addKeywordItem(self,item):
+        self.stBoxSizer.Add(item, flag=wx.EXPAND, proportion=1)
+
+    def removeKeywordItem(self,item):
+        self.parent2.removeKeyfromBox(item,self.textTMP)
+        self.stBoxSizer.Remove(item)
+        self.parent.Fit()
+
+
+#===============================================================================
 # DUPLICATOR OF WIDGETS-mditem
 #===============================================================================
 
-
 class MdWxDuplicator():
 
     '''duplicator of MdBox and MdItem object
@@ -308,7 +343,6 @@
 #=========================================================================
 # METADATA ITEM (label+ctrlText+button(optional)+chckbox(template)
 #=========================================================================
-
 class MdItem(wx.BoxSizer):
 
     '''main building blocks of generated GUI of editor
@@ -331,7 +365,8 @@
         self.mdDescription = item
         self.chckBox = chckBox
         self.multiple = multiplicity
-
+        self.parent=parent
+        added=False
         if multiplicity is None:
             self.multiple = item.multiplicity
 
@@ -340,10 +375,24 @@
 
         if isFirstNum != 1 and item.multiplicity:
             rmMulti = True
-
         self.tagText = wx.StaticText(parent=parent, id=ID_ANY, label=item.name)
+        if self.mdDescription.databaseAttr =='language':
+            self.fillComboDB('language')
+            added=True
+        elif self.mdDescription.databaseAttr =='topicCategory':
+            self.fillComboDB('topicCategory')
+            added=True
+        elif self.mdDescription.databaseAttr =='degree':
+            self.fillComboDB('degree')
+            added=True
+        elif self.mdDescription.databaseAttr =='dateType':
+            self.fillComboDB('dateType')
+            added=True
+        elif self.mdDescription.databaseAttr =='role':
+            self.fillComboDB('role')
+            added=True
 
-        if self.chckBox == False:
+        if self.chckBox is False and not added:
             if item.multiline is True:
                 self.valueCtrl = wx.TextCtrl(parent, id=ID_ANY, size=(0, 70),
                                              validator=self.validators(item.type),
@@ -355,7 +404,7 @@
                                              validator=self.validators(item.type),
                                              style=wx.VSCROLL | wx.TE_DONTWRAP |
                                              wx.TAB_TRAVERSAL | wx.RAISED_BORDER | wx.HSCROLL)
-        else:
+        elif self.chckBox is True and not added:
             if item.multiline is True:
                 self.valueCtrl = wx.TextCtrl(parent, id=ID_ANY, size=(0, 70),
                                              style=wx.VSCROLL |
@@ -366,6 +415,7 @@
                                              style=wx.VSCROLL | wx.TE_DONTWRAP |
                                              wx.TAB_TRAVERSAL | wx.RAISED_BORDER | wx.HSCROLL)
 
+
         self.valueCtrl.Bind(wx.EVT_MOTION, self.onMove)
         self.valueCtrl.SetExtraStyle(wx.WS_EX_VALIDATE_RECURSIVELY)
 
@@ -389,6 +439,32 @@
 
         self._addItemLay(item.multiline, rmMulti)
 
+    def fillComboDB(self,label):
+        if label == 'language':
+            lang=["Afrikaans","Albanian","Arabic","Armenian","Basque","Bengali","Bulgarian","Catalan","Cambodian","Chinese","Croatian","Czech","Danish","Dutch","English","Estonian","Fiji","Finnish","French","Georgian","German","Greek","Gujarati","Hebrew","Hindi","Hungarian","Icelandic","Indonesian","Irish","Italian","Japanese","Javanese","Korean","Latin","Latvian","Lithuanian","Macedonian","Malay","Malayalam","Maltese","Maori","Marathi","Mongolian","Nepali","Norwegian","Persian","Polish","Portuguese","Punjabi","Quechua","Romanian","Russian","Samoan","Serbian","Slovak","Slovenian","Spanish","Swahili","Swedish","Tamil","Tatar","Telugu","Thai","Tibetan","Tonga","Turkish","Ukrainian","Urdu","Uzbek","Vietnamese","Welsh","Xhosa"]
+            self.valueCtrl=wx.ComboBox(self.parent, id=wx.ID_ANY,)
+            for lng in lang:
+                self.valueCtrl.Append(lng)
+        if label == 'topicCategory':
+            lang= ['farming','biota','boundaries','climatologyMeteorologyAtmosphere','economy','elevation','enviroment','geoscientificInformation','health','imageryBaseMapsEarthCover','intelligenceMilitary','inlandWaters','location','planningCadastre','society','structure','transportation','utilitiesCommunication']
+            self.valueCtrl=wx.ComboBox(self.parent, id=wx.ID_ANY,)
+            for lng in lang:
+                self.valueCtrl.Append(lng)
+        if label == 'degree':
+            lang=['Not evaluated','Not conformant','Conformant']
+            self.valueCtrl=wx.ComboBox(self.parent, id=wx.ID_ANY,)
+            for lng in lang:
+                self.valueCtrl.Append(lng)
+        if label == 'dateType':
+            lang=['Date of creation','Date of last revision', 'Date of publication']
+            self.valueCtrl=wx.ComboBox(self.parent, id=wx.ID_ANY,)
+            for lng in lang:
+                self.valueCtrl.Append(lng)
+        if label == 'role':
+            lang=['Author','Custodian','Distributor','Originator','Owner','Point of contact','Principal Investigation','Processor','Publisher','Resource provider','User']
+            self.valueCtrl=wx.ComboBox(self.parent, id=wx.ID_ANY,)
+            for lng in lang:
+                self.valueCtrl.Append(lng)
     def validators(self, validationStyle):
 
         if validationStyle == 'email':
@@ -572,7 +648,48 @@
         self.Add(item=self.tagText, proportion=0)
         self.Add(item=self.textFieldSizer, proportion=0, flag=wx.EXPAND)
 
+
+class MdItemKeyword(wx.BoxSizer):
+    def __init__(self, parent, text,keyword,title, keywordObj):
+        wx.BoxSizer.__init__(self, wx.VERTICAL)
+        self.isValid = False
+        self.isChecked = False
+        self.keywordObj=keywordObj
+        self.text = wx.StaticText(parent=parent, id=ID_ANY, label=text)
+        self.parent=parent
+        self.rmItemButt = wx.Button(parent, -1, size=(30, 30), label='-')
+        self.rmItemButt.Bind(EVT_BUTTON, self.removeItem)
+        self.keyword=keyword
+        self.title=title
+        #self.createInfo()
+        #self.tip = wx.ToolTip(self.infoTip)
+        self.layout()
+
+    def getVal(self):
+        return  self.text.GetLabel()
+
+    def getKyewordObj(self):
+        self.keywordObj['keywords']=self.keyword
+        self.keywordObj['title']=self.title
+        return self.keywordObj
+
+    def removeItem(self,evt):
+        self.parent.textTMP=self.text.GetLabel()
+        self.textFieldSizer.Clear()
+        #self.textFieldSizer.Destroy()
+
+        self.rmItemButt.Destroy()
+        self.text.Destroy()
+        self.parent.removeKeywordItem(self)
+
+    def layout(self):
+        self.textFieldSizer = wx.BoxSizer(wx.HORIZONTAL)
+
+        self.textFieldSizer.Add(self.rmItemButt, 0,flag=wx.LEFT)
+        self.textFieldSizer.Add(self.text, 0,flag=wx.RIGHT)
+        self.Add(item=self.textFieldSizer, proportion=0, flag=wx.EXPAND)
 #=========================================================================
+#=========================================================================
 # ADD NOTEBOOK PAGE
 #=========================================================================
 
@@ -602,6 +719,9 @@
         self.sizerIndex += 1
         return self.sizerIndex
 
+    def addKeywordObj(self,item):
+        self.mainSizer.Add(item, proportion=0, flag=wx.EXPAND)
+
     def addItem(self, item):
         '''
         @param item: can be editor::MdBox or editor::MDItem
@@ -642,11 +762,143 @@
             item.Destroy()
         self.SetSizerAndFit(self.mainSizer)
 
+#class MdItemKyewords
+class MdKeywords(wx.BoxSizer):
+    def __init__(self,parent,mdObject,mdOWS):
+        wx.BoxSizer.__init__(self, wx.VERTICAL)
+        self.itemHolder=set()
+        self.parent=parent
+        self.keywordsOWSObject=mdOWS
+
+        self.comboKeysLabel=wx.StaticText(parent=self.parent,id=ID_ANY,label='Keywords from repositories')
+        self.comboKeys=wx.ComboBox(parent=self.parent, id=ID_ANY)
+
+        self.keysList=wx.TreeCtrl(parent=self.parent, id=ID_ANY,size=(0, 120),style=wx.TR_FULL_ROW_HIGHLIGHT|wx.TR_DEFAULT_STYLE)
+        self.box=MdBoxKeywords(parent=parent,parent2=self,label='Keywords')
+        self.memKeys=set()
+        self.comboKeys.Bind(wx.EVT_COMBOBOX,self.onSetVocabulary)
+        self.keysList.Bind(wx.EVT_TREE_ITEM_ACTIVATED,self.addItemsToBox)
+        self.layout()
+        Module('db.connect',flags='d')
+        self.fillDb()
+        self.fillKeywordsList()
+
+    def removeKeyfromBox(self,item,text):
+        self.memKeys.remove(text)
+        self.itemHolder.remove(item)
+
+    def addItemsToBox(self,evt):
+        item = evt.GetItem()
+        if item == self.keysList.GetRootItem():
+            return
+
+        keyword=self.keysList.GetItemText(item)
+        currKeyword=self.titles[self.comboKeys.GetValue()]
+        out=self.comboKeys.GetValue()+', '+ keyword+', '+ currKeyword['type']+', '+ currKeyword['date']
+        if keyword in self.memKeys:
+            return
+        self.memKeys.add(out)
+
+        kItem=MdItemKeyword(self.box,out,keyword,self.comboKeys.GetValue(),currKeyword)
+        self.itemHolder.add(kItem)
+        self.box.addKeywordItem(kItem)
+        self.box.Fit()
+        self.parent.Fit()
+
+    def dbSelect(self,sql):
+        res = Module('db.select',
+                sql=sql,
+                flags='c',
+                stdout_=PIPE)
+        return res.outputs.stdout
+
+    def dbExecute(self,sql):
+        res = Module('db.execute',
+                sql=sql)
+
+    def GetKws(self):
+        return self.itemHolder# dict is in var keywordObj
+
+    def fillDb(self):
+
+
+
+        if not mdutil.isTableExists('metadata_themes'):
+            sql='create table if not exists metadata_themes (title TEXT, keyword TEXT, date_iso TEXT ,date_type TEXT)'
+            self.dbExecute(sql)
+            p1=os.path.join(sys.path[0],'..')
+
+            titles = [['keywordConcepts','GEMET - Concepts, version 2.4'],
+                     ['keywordThemes','GEMET - Themes, version 2.4'],
+                     ['keywordGroups','GEMET - Groups, version 2.4']]
+            for title in titles:
+                path = os.path.join(p1, 'config', title[0])
+                str=''
+                with open(path, "r") as inp :
+                    exec(inp.read())
+
+                    for item in keywords:
+                            str+="('%s','%s','%s','%s'),"%(title[1],item['preferredLabel']['string'],'2010-01-13','publication')
+                    str=str[:-1]
+                    sql="INSERT INTO 'metadata_themes' ('title', 'keyword', 'date_iso' ,'date_type' ) VALUES"+str
+                inp.close()
+                self.dbExecute(sql)
+
+    def fillKeywordsList(self):
+        sql='SELECT title,keyword,date_iso,date_type FROM metadata_themes'
+
+        #TODO check if database exist
+        self.keysDict=None
+        metaRepository=self.dbSelect(sql)
+        self.titles={}
+        theme=''
+        titleTmp=None
+        lines=metaRepository.splitlines()
+        #lines.pop()
+        for line in lines:
+            line=line.split('|')
+            if theme != line[0]: #if new theme found
+                if titleTmp is not None:#first loop
+                    self.titles[titleTmp]=self.keysDict
+                theme=line[0]
+                self.keysDict={}
+                self.keysDict['date']=line[2]
+                self.keysDict['type']=line[3]
+                self.keysDict['keywords']=[1]
+            self.keysDict['keywords'].append(str(line[1]))
+            titleTmp=line[0]
+
+        if self.keysDict is None:
+            GMessage('Predefined values of metadata are missing in database')
+            return
+        self.titles[titleTmp]=self.keysDict
+
+        for key in self.titles.keys():
+            self.comboKeys.Append(key)
+
+    def onSetVocabulary(self,evt):
+        self.keysList.DeleteAllItems()
+        self.root=self.keysList.AddRoot('Keywords')
+        title=self.comboKeys.GetValue()
+
+        keywords=self.titles[title]['keywords']
+        keywords.pop(0)
+        for keyword in keywords:
+            self.keysList.AppendItem(parent=self.root,text=str(keyword))
+        self.keysList.ExpandAll()
+
+    def layout(self):
+        self.Add(self.box,flag=wx.EXPAND)
+        self.Add(self.comboKeysLabel,flag=wx.EXPAND)
+        self.Add(self.comboKeys,flag=wx.EXPAND)
+        self.AddSpacer(10, 10, 1, wx.EXPAND)
+
+        self.Add(self.keysList,proportion=1,flag=wx.EXPAND)
+
+
 #=========================================================================
 # MAIN FRAME
 #=========================================================================
-
-
 class MdMainEditor(wx.Panel):
 
     '''
@@ -673,7 +925,8 @@
         # string of tags from jinja template (loops and OWSLib objects)
         self.mdOWSTagStr = self.jinj.mdOWSTagStr
         self.mdOWSTagStrList = self.jinj.mdOWSTagStrList  #
-
+        self.keywords=None
+        self.nbPage=None
         self.generateGUI()
         self._layout()
 
@@ -682,7 +935,7 @@
         '''note- exec cannot be in sub function
         for easy understanding to product of self.generateGUI()- print stri
         '''
-        # print stri
+        #print stri
         exec stri
 
     def plusC(self, num=None):
@@ -875,7 +1128,7 @@
 
     #--------------------------------------------------------------------- INIT VARS
         self.notebook = wx.Notebook(self)
-        markgroup = []  # notebook panel marker
+        markedgroup = []  # notebook panel marker
         tagStringLst = self.mdOWSTagStrList
         mdDescrObj = self.mdDescription  # from jinja
         self.c = 0
@@ -887,10 +1140,13 @@
         while self.stop is False:  # self.stop is managed by def plusC(self):
             group = mdDescrObj[self.c].group
 
-            if group not in markgroup:  # if group is not created
-                markgroup.append(group)  # mark group
+            if group not in markedgroup:  # if group is not created
+                markedgroup.append(group)  # mark group
                 self.nbPage = MdNotebookPage(self.notebook)
                 self.notebook.AddPage(self.nbPage, mdDescrObj[self.c].group)
+                if mdDescrObj[self.c].group=='Keywords':
+                    self.keywords=MdKeywords(parent=self.nbPage,mdObject=mdDescrObj[self.c],mdOWS=self.md.identification.keywords)
+                    self.nbPage.addKeywordObj(self.keywords)
                 self.notebokDict[mdDescrObj[self.c].group] = self.nbPage
             else:
                 self.nbPage = self.notebokDict[mdDescrObj[self.c].group]
@@ -1037,6 +1293,22 @@
         # print stri
         exec stri
 
+    def getKeywordsFromRepositoryWidget(self,md):
+
+        for item in self.keywords.GetKws():
+            titles=item.getKyewordObj()
+
+            kw = {}
+            kw['keywords'] = []
+            kw['keywords'].append(titles['keywords'])
+            kw['type'] = None
+            kw['thesaurus'] = {}
+            kw['thesaurus']['title']=titles['title']
+            kw['thesaurus']['date']=titles['date']
+            kw['thesaurus']['datetype']=titles['type']
+            md.identification.keywords.append(kw)
+        return md
+
     def saveMDfromGUI(self, evt=None):
         '''Main function for exporting metadata from filled widgets.
            Initializing owslib object by metadata from gui(export of metadata)
@@ -1290,9 +1562,7 @@
         self.md = self.mdo.initMD()
         # most of objects from OWSLib is initialized in configure file
         dirpath = os.path.dirname(os.path.realpath(__file__))
-        #print dirpath
         path = os.path.join(os.path.join(sys.path[0],'..'), 'config', 'init_md')
-        #print path
 
         mdInitData = open(path, 'r')
         mdExec = mdInitData.read()
@@ -1318,6 +1588,7 @@
             elif chckIf1Statements:
                 inStatements()
 
+        self.md = self.getKeywordsFromRepositoryWidget(self.md)
         return self.md
 #------------------------------------ END- FILL OWSLib BY EDITED METADATA IN GUI
 
@@ -1348,4 +1619,4 @@
 if __name__ == "__main__":
     app = wx.App(False)
     frame = MdMainEditor()
-    app.MainLoop()
+    app.MainLoop()
\ No newline at end of file

Modified: grass-addons/grass7/gui/wxpython/wx.metadata/g.gui.metadata/g.gui.metadata.py
===================================================================
--- grass-addons/grass7/gui/wxpython/wx.metadata/g.gui.metadata/g.gui.metadata.py	2015-06-08 09:18:44 UTC (rev 65421)
+++ grass-addons/grass7/gui/wxpython/wx.metadata/g.gui.metadata/g.gui.metadata.py	2015-06-08 16:53:36 UTC (rev 65422)
@@ -69,6 +69,7 @@
         @var first,firstAfterChoice,second,secondAfterChoice,secondMultiEdit: initMultipleEditor() and onInitEditor() handler
         @var self. initMultipleEditor() and onInitEditor() handler
         @var self.templateEditor: true= Editor is in mode 'Template creator(widgets with chkbox)'
+        @var nameTMPprofile: in case if 'profile editor is on' this var holds name oof temporaly jinja profile
         @var batch: if true multiple editing metadata of maps is ON
         '''
         wx.Frame.__init__(self, None, title="Metadata Editor", size=(650, 500))
@@ -788,7 +789,7 @@
         pub.subscribe(self.onComboboxDisable, "comboBoxProfile.disable")
         pub.subscribe(self.onComboboxEnable, "comboBoxProfile.enable")
         pub.subscribe(self.onSetProfile, "SET_PROFILE.update")
-        self.comboBoxProfile.SetStringSelection('GRASS BASIC')
+        self.comboBoxProfile.SetStringSelection('INSPIRE')#TODO
 
         self.Bind(wx.EVT_RADIOBUTTON, self.onSetRadioType, id=self.rbGrass.GetId())
         self.Bind(wx.EVT_RADIOBUTTON, self.onSetRadioType, id=self.rbExternal.GetId())

Modified: grass-addons/grass7/gui/wxpython/wx.metadata/mdlib/jinjainfo.py
===================================================================
--- grass-addons/grass7/gui/wxpython/wx.metadata/mdlib/jinjainfo.py	2015-06-08 09:18:44 UTC (rev 65421)
+++ grass-addons/grass7/gui/wxpython/wx.metadata/mdlib/jinjainfo.py	2015-06-08 16:53:36 UTC (rev 65422)
@@ -27,7 +27,7 @@
     def __init__(self, tag=None, object=None, name='', desc=None,
                  example=None, type=None, multi=0, inboxmulti=None,
                  group=None, inbox=None, multiline=None, validator=None,
-                 num=None, ref=None, selfInfoString=None):
+                 num=None, ref=None, selfInfoString=None,database=None):
         '''
         @param tag: OWSLib object which will be replaced by value of object after jinja template system renders new file
         @param object: some objects in OWSLib need to be initialized temporally in gui generator. Others are initialized by configure file
@@ -60,6 +60,7 @@
         self.group = group
         self.inbox = inbox
         self.ref = ref
+        self.databaseAttr=database
         self.selfInfoString = selfInfoString
 
         self.inboxmulti = inboxmulti

Modified: grass-addons/grass7/gui/wxpython/wx.metadata/mdlib/mdgrass.py
===================================================================
--- grass-addons/grass7/gui/wxpython/wx.metadata/mdlib/mdgrass.py	2015-06-08 09:18:44 UTC (rev 65421)
+++ grass-addons/grass7/gui/wxpython/wx.metadata/mdlib/mdgrass.py	2015-06-08 16:53:36 UTC (rev 65422)
@@ -124,8 +124,10 @@
         #self.md_grass       dictionary of metadata from v.info
         #self.md_abstract    string created by merge information from 'description' and 'source'
         '''
+        map=str(self.map).partition('@')[0]
+        print map
         rinfo = Module('r.info',
-                       self.map,
+                       map,
                        flags='gre',
                        quiet=True,
                        stdout_=PIPE)

Modified: grass-addons/grass7/gui/wxpython/wx.metadata/mdlib/mdutil.py
===================================================================
--- grass-addons/grass7/gui/wxpython/wx.metadata/mdlib/mdutil.py	2015-06-08 09:18:44 UTC (rev 65421)
+++ grass-addons/grass7/gui/wxpython/wx.metadata/mdlib/mdutil.py	2015-06-08 16:53:36 UTC (rev 65422)
@@ -24,8 +24,17 @@
 import string
 import os
 from grass.script import core as grass
+from grass.pygrass.modules import Module
+from subprocess import PIPE
+
 import wx
 
+def isTableExists(name):
+    res = Module('db.tables',flags='p',stdout_=PIPE)
+    for line in res.outputs.stdout.splitlines():
+        if name == line:
+                return True
+    return False
 
 def removeNonAscii(s):
     '''Removed non ASCII chars

Modified: grass-addons/grass7/gui/wxpython/wx.metadata/pdf/mdpdffactory.py
===================================================================
--- grass-addons/grass7/gui/wxpython/wx.metadata/pdf/mdpdffactory.py	2015-06-08 09:18:44 UTC (rev 65421)
+++ grass-addons/grass7/gui/wxpython/wx.metadata/pdf/mdpdffactory.py	2015-06-08 16:53:36 UTC (rev 65422)
@@ -61,16 +61,16 @@
 
         if idx == -1:
             if len(values) == 0:
-                values.append('$NULL')
+                values.append('unknown')
             return values
 
         if len(values) <= idx:
-            return '$NULL'
+            return 'unknown'
 
         if values[idx] is not None:
             return values[idx]
 
-        return '$NULL'
+        return 'unknown'
 
     # def chckTextValidity(self):
     def tableFactory(self, title, headers, key):
@@ -84,7 +84,7 @@
         for i in range(len(self.findItem(self.story[key], headers[0]))):
             for header in headers:
                 value = self.findItem(self.story[key], header, i)
-                # value=self.chckTextValidity(value)
+                #value=self.chckTextValidity(value)
                 text = Paragraph("""
                 %s<br/>
                 """ % value, MyTheme.paragraph)
@@ -172,7 +172,7 @@
 
         self.tableFactory("Resource language", ['Language'], 'identification')
         # head = ['Organization name', 'E-mail','Role']
-        # .tableFactory("identifier",head,'contact')
+        #.tableFactory("identifier",head,'contact')
 
         ##################### Keywords ################################## TODO
 

Modified: grass-addons/grass7/gui/wxpython/wx.metadata/profiles/basicProfile.xml
===================================================================
--- grass-addons/grass7/gui/wxpython/wx.metadata/profiles/basicProfile.xml	2015-06-08 09:18:44 UTC (rev 65421)
+++ grass-addons/grass7/gui/wxpython/wx.metadata/profiles/basicProfile.xml	2015-06-08 16:53:36 UTC (rev 65422)
@@ -24,7 +24,7 @@
                 </gmd:CI_Contact>
             </gmd:contactInfo>
             <gmd:role>
-                <gmd:CI_RoleCode codeList="http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode" codeListValue="{{ co.role }}{# tag="co.role",name="Responsible party role",ref="Part B 9.2" , multi = 0,type = "CI_RoleCode", inboxmulti = 1,group = "Responsible party",object="CI_ResponsibleParty()", inbox="Metadata pointt of contact",example="custodian", desc="function performed by the responsible party" #}" codeSpace="ISOTC211/19115">{{ co.role }}</gmd:CI_RoleCode>
+                <gmd:CI_RoleCode codeList="http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode" codeListValue="{{ co.role }}{# tag="co.role",name="Responsible party role",ref="Part B 9.2" , multi = 0,type = "CI_RoleCode", inboxmulti = 1,group = "Responsible party",object="CI_ResponsibleParty()", inbox="Metadata pointt of contact",example="custodian", desc="function performed by the responsible party",database="role"  #}" codeSpace="ISOTC211/19115">{{ co.role }}</gmd:CI_RoleCode>
             </gmd:role>
         </gmd:CI_ResponsibleParty>
     </gmd:contact>

Modified: grass-addons/grass7/gui/wxpython/wx.metadata/profiles/inspireProfile.xml
===================================================================
--- grass-addons/grass7/gui/wxpython/wx.metadata/profiles/inspireProfile.xml	2015-06-08 09:18:44 UTC (rev 65421)
+++ grass-addons/grass7/gui/wxpython/wx.metadata/profiles/inspireProfile.xml	2015-06-08 16:53:36 UTC (rev 65422)
@@ -32,7 +32,7 @@
                 </gmd:CI_Contact>
             </gmd:contactInfo>
             <gmd:role>
-                <gmd:CI_RoleCode codeList="http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode" codeListValue="{{ co.role }}{# tag="co.role",name="Responsible party role",ref="Part B 9.2" , multi = 0,type = "CI_RoleCode", inboxmulti = 1,group = "Responsible party",object="CI_ResponsibleParty()", inbox="Metadata pointt of contact",example="custodian", desc="function performed by the responsible party" #}" codeSpace="ISOTC211/19115">{{ co.role }}</gmd:CI_RoleCode>
+                <gmd:CI_RoleCode codeList="http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode" codeListValue="{{ co.role }}{# tag="co.role",name="Responsible party role",ref="Part B 9.2" , multi = 0,type = "CI_RoleCode", inboxmulti = 1,group = "Responsible party",object="CI_ResponsibleParty()", inbox="Metadata pointt of contact",example="custodian", desc="function performed by the responsible party",database="role" #}" codeSpace="ISOTC211/19115">{{ co.role }}</gmd:CI_RoleCode>
             </gmd:role>
         </gmd:CI_ResponsibleParty>
     </gmd:contact>
@@ -60,7 +60,7 @@
                                 <gco:DateTime>{{ d.date }}{# tag="d.date" , group= "Temporal" ,object="CI_Date()",type = "date", inbox= "Date of creation/publication/revision",  inboxmulti=1, multiline= False, name="Date of: type(below)",desc="reference date for the cited resource - publication/creation/revision",example="2007-09-15" #}</gco:DateTime>
                             </gmd:date>
                             <gmd:dateType>
-                                <gmd:CI_DateTypeCode codeList="http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode" codeListValue= "{{ d.type }}{# tag="d.type" , group= "Temporal" ,object="CI_Date()",type = "CI_DateTypeCode", inbox= "Date of creation/publication/revision",  inboxmulti=1, multiline= False, name="type: creation/publication/revision",desc="reference date for the cited resource - publication/creation/revision",example="creation" #}" codeSpace="ISOTC211/19115">{{ d.type }}</gmd:CI_DateTypeCode>
+                                <gmd:CI_DateTypeCode codeList="http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode" codeListValue= "{{ d.type }}{# tag="d.type" , group= "Temporal" ,object="CI_Date()",type = "CI_DateTypeCode", inbox= "Date of creation/publication/revision",  inboxmulti=1, multiline= False, name="type: creation/publication/revision",desc="reference date for the cited resource - publication/creation/revision",example="creation",database="dateType" #}" codeSpace="ISOTC211/19115">{{ d.type }}</gmd:CI_DateTypeCode>
                             </gmd:dateType>
                         </gmd:CI_Date>
                     </gmd:date>
@@ -111,21 +111,21 @@
           {% for kw in k["keywords"] -%}{# tag='for kw in k["keywords"]',group = "Keywords",inbox="Free keywords",inboxmulti=1 #}
                     
                     <gmd:keyword>
-                        <gco:CharacterString>{{ kw }}{# tag="kw",ref="Part B 3.1", name ="Keyword",example="Land cover (INSPIRE Spatial Data Theme),humanCatalogueViewer (spatial data service,subcategory), water springs (AGROVOC), freshwater (GEMET Concepts)", desc ="Commonly used word(s) or formalised word(s) or phrase(s) used to describe the subject." , type = "string",inboxmulti=1, multi = 1, group = "Keywords", multiline=False, inbox="Free keywords" #} </gco:CharacterString>
+                        <gco:CharacterString>{{ kw }}{# tag="kw",ref="Part B 3.1", name ="Keyword",example="Land cover (INSPIRE Spatial Data Theme),humanCatalogueViewer (spatial data service,subcategory), water springs (AGROVOC), freshwater (GEMET Concepts)", desc ="Commonly used word(s) or formalised word(s) or phrase(s) used to describe the subject." , type = "string",inboxmulti=1, multi = 1, group = "Keywords", multiline=False, inbox="Free keywords",database="keywords" #} </gco:CharacterString>
                     </gmd:keyword>
           {% endfor -%}
                     <gmd:thesaurusName>
                         <gmd:CI_Citation>
                             <gmd:title>
-                                <gco:CharacterString>{{ k["thesaurus"]["title"] }}{# tag='k["thesaurus"]["title"]', name ="Title", desc ="This citation shall include title of keywords )" , type = "string", multi = 0,inboxmulti=1, group = "Keywords", multiline=False, inbox="Free keywords" #}</gco:CharacterString>
+                                <gco:CharacterString>{{ k["thesaurus"]["title"] }}{# tag='k["thesaurus"]["title"]', name ="Title", desc ="This citation shall include title of keywords )" , type = "string", multi = 0,inboxmulti=1, group = "Keywords", multiline=False, inbox="Free keywords",database="keywords" #}</gco:CharacterString>
                             </gmd:title>
                             <gmd:date>
                                 <gmd:CI_Date>
                                     <gmd:date>
-                                        <gco:Date>{{ k["thesaurus"]["date"] }}{# tag='k["thesaurus"]["date"]', name ="Reference date", desc ="This citation shall include at least the title a reference date(publication, revision, creation." , type = "date",inboxmulti=1, multi = 0, group = "Keywords", multiline=False, inbox="Free keywords" #}</gco:Date>
+                                        <gco:Date>{{ k["thesaurus"]["date"] }}{# tag='k["thesaurus"]["date"]', name ="Reference date", desc ="This citation shall include at least the title a reference date(publication, revision, creation." , type = "date",inboxmulti=1, multi = 0, group = "Keywords", multiline=False, inbox="Free keywords",database="keywords" #}</gco:Date>
                                     </gmd:date>
                                     <gmd:dateType>
-                                        <gmd:CI_DateTypeCode codeList="http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode" codeListValue= "{{ k["thesaurus"]["datetype"] }}{{ k["thesaurus"]["datetype"] }}{# tag='k["thesaurus"]["datetype"]', type = "CI_DateTypeCode",name ="Date type",inboxmulti=1, desc ="Options Date of creation, Date of last revision, date of publication" , multi = 0, group = "Keywords", multiline=False, inbox="Free keywords" #}" >{{ k["thesaurus"]["datetype"] }}</gmd:CI_DateTypeCode>
+                                        <gmd:CI_DateTypeCode codeList="http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode" codeListValue= "{{ k["thesaurus"]["datetype"] }}{{ k["thesaurus"]["datetype"] }}{# tag='k["thesaurus"]["datetype"]', type = "CI_DateTypeCode",name ="Date type",inboxmulti=1, desc ="Options Date of creation, Date of last revision, date of publication" , multi = 0, group = "Keywords", multiline=False, inbox="Free keywords" ,database="dateType" #}" >{{ k["thesaurus"]["datetype"] }}</gmd:CI_DateTypeCode>
                                     </gmd:dateType>
                                 </gmd:CI_Date>
                             </gmd:date>
@@ -173,14 +173,14 @@
       {% endfor -%}
       {% endif -%}
       
-      {% for lan in md.identification.resourcelanguage -%}{# tag="for lan in md.identification.resourcelanguage" , group= "Identification" ,inbox='Languages',inboxmulti=1, multiline= False #}
+      {% for lan in md.identification.resourcelanguage -%}{# tag="for lan in md.identification.resourcelanguage" , group= "Identification" ,inbox='Languages',inboxmulti=1, multiline= False, database="language" #}
             <gmd:language>
-                <gmd:LanguageCode codeList="http://www.isotc211.org/2005/resources/Codelist/ML_gmxCodelists.xml#LanguageCode" codeListValue="{{ lan }}{# tag="lan" , name="Metadata language" , ref= "Part B 10.3" , desc= "Language used for documenting metadata." , example = "eng" , type ="LanguageCode (ISO/TS 19139)" ,multi=0,inbox='Languages',inboxmulti=1, group= "Identification" , multiline= False #}">{{ lan }}</gmd:LanguageCode>
+                <gmd:LanguageCode codeList="http://www.isotc211.org/2005/resources/Codelist/ML_gmxCodelists.xml#LanguageCode" codeListValue="{{ lan }}{# tag="lan" , name="Metadata language" , ref= "Part B 10.3" , desc= "Language used for documenting metadata." , example = "eng" , type ="LanguageCode (ISO/TS 19139)" ,multi=0,inbox='Languages',inboxmulti=1, group= "Identification" , multiline= False, database="language" #}">{{ lan }}</gmd:LanguageCode>
             </gmd:language>
       {% endfor -%}
-      {% for tc in md.identification.topiccategory -%}{# tag="for tc in md.identification.topiccategory", inbox='Topic category',group= "Classification", multiline= False #}
+      {% for tc in md.identification.topiccategory -%}{# tag="for tc in md.identification.topiccategory", inbox='Topic category',group= "Classification", multiline= False, database="topicCategory" #}
             <gmd:topicCategory>
-                <gmd:MD_TopicCategoryCode>{{ tc }}{# tag="tc" , name="Topic" , ref= "Part B 2.1" , desc= "Main theme(s) of the dataset" ,inbox='Topic category', example = "imageryBaseMapsEarthCover" , type ="MD_TopicCategory" , group= "Classification" ,  multi=0 , multiline= False #}</gmd:MD_TopicCategoryCode>
+                <gmd:MD_TopicCategoryCode>{{ tc }}{# tag="tc" , name="Topic" , ref= "Part B 2.1" , desc= "Main theme(s) of the dataset" ,inbox='Topic category', example = "imageryBaseMapsEarthCover" , type ="MD_TopicCategory" , group= "Classification" ,  multi=0 , multiline= False, database="topicCategory" #}</gmd:MD_TopicCategoryCode>
             </gmd:topicCategory>
       {% endfor -%}
 {% for (u,d) in zip(md.identification.uom,md.identification.distance) -%}{# tag="for (u,d) in zip(md.identification.uom,md.identification.distance)", group = "Quality and Validity", inbox="Spatial resolution-distance",inboxmulti= 1 #}
@@ -289,7 +289,7 @@
                                                 <gco:Date>{{ d }}{# tag="d" , name="Date" , ref= "Part B 7.1" , desc= "citation of the product specification or user requirement against which data is being evaluated." , example = "2010-04-26" , type ="date" , group= "Conformity" , inbox= "Conformity", multi=0 , inboxmulti= 1, multiline= False #}</gco:Date>
                                             </gmd:date>
                                             <gmd:dateType>
-                                                <gmd:CI_DateTypeCode codeList="http://www.isotc211.org/2005/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode" codeListValue={{ "\"%s\"" % dt }}>{{ dt }}{# tag="dt" , name="Date type" , ref= "Part B 7.1" , desc= "a date type: creation, revision or publication." , example = "publication" , type ="dateType" , group= "Conformity" , inbox= "Conformity", multi=0 , inboxmulti= 1, multiline= False #}</gmd:CI_DateTypeCode>
+                                                <gmd:CI_DateTypeCode codeList="http://www.isotc211.org/2005/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode" codeListValue={{ "\"%s\"" % dt }}>{{ dt }}{# tag="dt" , name="Date type" , ref= "Part B 7.1" , desc= "a date type: creation, revision or publication." , example = "publication" , type ="dateType" , group= "Conformity" , inbox= "Conformity", multi=0 , inboxmulti= 1, multiline= False,database="dateType" #}</gmd:CI_DateTypeCode>
                                             </gmd:dateType>
                                         </gmd:CI_Date>
                                     </gmd:date>
@@ -299,7 +299,7 @@
                                 <gco:CharacterString>See the referenced specification</gco:CharacterString>
                             </gmd:explanation>
                             <gmd:pass>
-                                <gco:Boolean>{{ dg }}{# tag="dg" , name="Degree/Pass" , ref= "Part B 7.2" , desc= "indication of the conformance result" , example = "True." , type ="boolean" , group= "Conformity" , inbox= "Conformity", multi=0 , inboxmulti= 1, multiline= False #}</gco:Boolean>
+                                <gco:Boolean>{{ dg }}{# tag="dg" , name="Degree/Pass" , ref= "Part B 7.2" , desc= "indication of the conformance result" , example = "True." , type ="boolean" , group= "Conformity" , inbox= "Conformity", multi=0 , inboxmulti= 1, multiline= False, database="degree" #}</gco:Boolean>
                             </gmd:pass>
                         </gmd:DQ_ConformanceResult>
                     </gmd:result>



More information about the grass-commit mailing list