← Back to team overview

mlhim-specs-dev team mailing list archive

[Branch ~cdd-dev/cdd/trunk] Rev 308: Removal of info module and change in metadata

 

------------------------------------------------------------
revno: 308
committer: Eduardo Ribeiro <xcesar@xxxxxxxxx>
branch nick: devel
timestamp: Fri 2013-02-01 17:08:51 -0200
message:
  Removal of info module and change in metadata
removed:
  src/2.0/info.py
modified:
  src/2.0/cdd.py
  src/2.0/cdd.wxg
  src/2.0/cdd_gui.py
  src/2.0/config.py
  src/2.0/metadata.py


--
lp:cdd
https://code.launchpad.net/~cdd-dev/cdd/trunk

Your team MLHIM Specifications Developers is subscribed to branch lp:cdd.
To unsubscribe from this branch go to https://code.launchpad.net/~cdd-dev/cdd/trunk/+edit-subscription
=== modified file 'src/2.0/cdd.py'
--- src/2.0/cdd.py	2013-02-01 18:06:52 +0000
+++ src/2.0/cdd.py	2013-02-01 19:08:51 +0000
@@ -34,6 +34,16 @@
 import cdd_gui
 from aux_gui import *
 
+import metadata
+MetadataPanel = metadata.MetadataPanel
+
+import config
+ConfigDialog = config.ConfigDialog
+
+from container import container
+
+UnderConstruction = cdd_gui.UnderConstruction
+
 class MainFrame(cdd_gui.MainFrame):
     def __init__(self, *args, **kwds):
         cdd_gui.MainFrame.__init__(self, *args, **kwds)
@@ -49,16 +59,6 @@
         self.setup_metadata()
         self.button_ok.Hide()
         
-        # DEBUG and TEST purposes - generate a ccd with default configs in the current dir if the 1st argument is -g
-     #   try:
-        if len(sys.argv) > 1 and sys.argv[1] == '-g':
-            info.randomize_uuid()
-            info.get_defin_type(self.get_definition_child())
-            info.generate_file('.')
-            self.Destroy()
-        # except:
-        #     pass
-
         self.tree_ctrl_ccd.SelectItem(self.metadata_item)
 
     def get_definition_child(self):
@@ -72,10 +72,6 @@
 
         self.config_dialog.test_workspace_dir(self)
 
-        self.config_dialog.info = info
-        self.config_dialog.set_config_info()
-
-
     def setup_metadata(self):
         # Hack to make the metadata panel before it is called
         # We need to make it before to be able to get the info from it
@@ -83,8 +79,6 @@
         self.dummy_panel = wx.Panel(self, -1)
         self.dummy_panel.Hide()
         self.metadata = MetadataPanel(self.dummy_panel)
-        self.metadata.info = info
-        self.metadata.set_meta_info()
         #self.metadata.Destroy()
         #self.dummy_panel.Destroy()
     
@@ -165,10 +159,6 @@
             self.metadata.SetClientSize(self.metadata.GetParent().GetSize())
             #choice = MetadataPanel(self.panel_top_right)
 
-            # Necessary for exporting the metadata
-            self.metadata.info = info
-            #choice.info = info
-
 
         elif selText == "definition":
             #self.display.SetLabel("definition selected.")
@@ -372,7 +362,7 @@
             os.startfile(doc)
 
     def help_about(self, event):  # wxGlade: MainFrame.<event_handler>
-        # First we create and fill the info object
+        # First we create and fill the information object
         about = wx.AboutDialogInfo()
         about.Name = "CDD (aka. CCD Editor)"
         #about.Version = cdd_version.VERSION
@@ -390,16 +380,7 @@
 
 
     def export_xsd(self, event):  # wxGlade: MainFrame.<event_handler>
-        # Get the path
-        path = get_path(self)
-        if not path:
-            return
-        info.randomize_uuid()
-        info.get_defin_type(self.get_definition_child())
-        info.generate_file(path)
-
-        # Show dialog
-        popup_message(self, '%s.xsd' % info.ccd_id, _('Generated the file'), wx.OK | wx.ICON_INFORMATION)
+        not_implemented_diag(self)
 
     def export_xform(self, event):  # wxGlade: MainFrame.<event_handler>
         not_implemented_diag(self)
@@ -483,10 +464,8 @@
                 return True
         return False
     
-    # Relies in default name defined in GUI
     def set_lang(self):
-        self.choice_language.SetItems(get_lang_list())
-        self.choice_language.SetSelection(get_lang_list().index(info.language) | 0)
+        self.choice_language.SetSelection(int(self.top_panel.metadata.language) | 0)
 
     # Relies in default name defined in GUI
     def evt_radiobox_language(self, event):  # wxGlade: DvCodedString.<event_handler>
@@ -1290,20 +1269,6 @@
 # end of class CareEntry
 
 
-UnderConstruction = cdd_gui.UnderConstruction
-
-import metadata
-MetadataPanel = metadata.MetadataPanel
-
-import config
-ConfigDialog = config.ConfigDialog
-
-# Object that retains all information necessary to create the cdd
-import info
-info = info.Info()
-
-from container import container
-
 if __name__ == "__main__":
     import gettext
     gettext.install("app") # replace with the appropriate catalog name

=== modified file 'src/2.0/cdd.wxg'
--- src/2.0/cdd.wxg	2013-01-30 14:24:46 +0000
+++ src/2.0/cdd.wxg	2013-02-01 19:08:51 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- generated by wxGlade 0.6.5 on Wed Jan 30 06:54:16 2013 -->
+<!-- generated by wxGlade 0.6.5 on Fri Feb  1 13:02:37 2013 -->
 
 <application path="cdd_gui.py" name="" class="" option="0" language="python" top_window="dialog_config" encoding="UTF-8" use_gettext="1" overwrite="1" use_new_namespace="1" for_version="2.8" is_template="0" indent_amount="4" indent_symbol="space" source_extension=".cpp" header_extension=".h">
     <object class="MainFrame" name="frame_main" base="EditFrame">
@@ -2082,7 +2082,7 @@
     </object>
     <object class="MetadataPanel" name="panel_metadata" base="EditTopLevelPanel">
         <style>wxTAB_TRAVERSAL</style>
-        <size>685, 585</size>
+        <size>691, 714</size>
         <object class="wxBoxSizer" name="sizer_vertical" base="EditBoxSizer">
             <orient>wxHORIZONTAL</orient>
             <object class="sizeritem">
@@ -2120,9 +2120,6 @@
                                 <border>1</border>
                                 <option>1</option>
                                 <object class="wxTextCtrl" name="text_ctrl_title" base="EditTextCtrl">
-                                    <events>
-                                        <handler event="EVT_TEXT">enable_ok</handler>
-                                    </events>
                                 </object>
                             </object>
                             <object class="sizeritem">
@@ -2174,9 +2171,6 @@
                                 <option>1</option>
                                 <object class="wxTextCtrl" name="text_ctrl_description" base="EditTextCtrl">
                                     <style>wxTE_MULTILINE</style>
-                                    <events>
-                                        <handler event="EVT_TEXT">enable_ok</handler>
-                                    </events>
                                 </object>
                             </object>
                             <object class="sizeritem">
@@ -2204,9 +2198,6 @@
                                     <selection>0</selection>
                                     <choices>
                                     </choices>
-                                    <events>
-                                        <handler event="EVT_CHOICE">enable_ok</handler>
-                                    </events>
                                     <extraproperties>
                                         <property name="items">get_lang_list()</property>
                                         <property name="selection">get_lang_list().index('en-US') | 0</property>
@@ -2236,9 +2227,6 @@
                                 <option>1</option>
                                 <object class="wxTextCtrl" name="text_ctrl_subject" base="EditTextCtrl">
                                     <tooltip>Format emails as: Timothy W. Cook &lt;timothywayne.cook@xxxxxxxxx&gt;</tooltip>
-                                    <events>
-                                        <handler event="EVT_TEXT">enable_ok</handler>
-                                    </events>
                                 </object>
                             </object>
                         </object>
@@ -2265,9 +2253,6 @@
                                 <option>1</option>
                                 <object class="wxTextCtrl" name="text_ctrl_creator" base="EditTextCtrl">
                                     <tooltip>Format emails as: Timothy W. Cook &lt;timothywayne.cook@xxxxxxxxx&gt;</tooltip>
-                                    <events>
-                                        <handler event="EVT_TEXT">enable_ok</handler>
-                                    </events>
                                 </object>
                             </object>
                             <object class="sizeritem">
@@ -2292,9 +2277,6 @@
                                 <border>1</border>
                                 <option>1</option>
                                 <object class="wxTextCtrl" name="text_ctrl_creator_email" base="EditTextCtrl">
-                                    <events>
-                                        <handler event="EVT_TEXT">enable_ok</handler>
-                                    </events>
                                 </object>
                             </object>
                             <object class="sizeritem">
@@ -2327,9 +2309,6 @@
                                 <border>1</border>
                                 <option>1</option>
                                 <object class="wxTextCtrl" name="text_ctrl_source" base="EditTextCtrl">
-                                    <events>
-                                        <handler event="EVT_TEXT">enable_ok</handler>
-                                    </events>
                                 </object>
                             </object>
                             <object class="sizeritem">
@@ -2355,9 +2334,6 @@
                                 <option>1</option>
                                 <object class="wxTextCtrl" name="text_ctrl_publisher" base="EditTextCtrl">
                                     <tooltip>Format emails as: Timothy W. Cook &lt;timothywayne.cook@xxxxxxxxx&gt;</tooltip>
-                                    <events>
-                                        <handler event="EVT_TEXT">enable_ok</handler>
-                                    </events>
                                 </object>
                             </object>
                         </object>
@@ -2382,9 +2358,6 @@
                                 <border>1</border>
                                 <option>1</option>
                                 <object class="wxTextCtrl" name="text_ctrl_rights" base="EditTextCtrl">
-                                    <events>
-                                        <handler event="EVT_TEXT">enable_ok</handler>
-                                    </events>
                                 </object>
                             </object>
                         </object>
@@ -2409,9 +2382,6 @@
                                 <border>1</border>
                                 <option>1</option>
                                 <object class="wxTextCtrl" name="text_ctrl_relation" base="EditTextCtrl">
-                                    <events>
-                                        <handler event="EVT_TEXT">enable_ok</handler>
-                                    </events>
                                 </object>
                             </object>
                             <object class="sizeritem">
@@ -2436,9 +2406,6 @@
                                 <border>1</border>
                                 <option>1</option>
                                 <object class="wxTextCtrl" name="text_ctrl_coverage" base="EditTextCtrl">
-                                    <events>
-                                        <handler event="EVT_TEXT">enable_ok</handler>
-                                    </events>
                                 </object>
                             </object>
                         </object>
@@ -2465,9 +2432,6 @@
                                 <option>1</option>
                                 <object class="wxTextCtrl" name="text_ctrl_contributors" base="EditTextCtrl">
                                     <tooltip>Separate multiple contributors with a semi-colon and format them as:Eduardo Cesar &lt;xcesar@xxxxxxxxx&gt;; Luciana Cavalini &lt;lutricav@xxxxxxxxx&gt;</tooltip>
-                                    <events>
-                                        <handler event="EVT_TEXT">enable_ok</handler>
-                                    </events>
                                 </object>
                             </object>
                         </object>
@@ -2479,6 +2443,14 @@
                         <object class="wxBoxSizer" name="sizer_2_copy" base="EditBoxSizer">
                             <orient>wxHORIZONTAL</orient>
                             <object class="sizeritem">
+                                <flag>wxALIGN_BOTTOM</flag>
+                                <border>0</border>
+                                <option>0</option>
+                                <object class="wxButton" name="button_set_default" base="EditButton">
+                                    <label>Set default</label>
+                                </object>
+                            </object>
+                            <object class="sizeritem">
                                 <flag>wxEXPAND</flag>
                                 <border>1</border>
                                 <option>1</option>
@@ -2492,12 +2464,7 @@
                                 <border>0</border>
                                 <option>0</option>
                                 <object class="wxButton" name="button_ok" base="EditButton">
-                                    <stockitem>SAVE</stockitem>
-                                    <label>&amp;Save</label>
-                                    <disabled>1</disabled>
-                                    <events>
-                                        <handler event="EVT_BUTTON">save_config</handler>
-                                    </events>
+                                    <stockitem>OK</stockitem>
                                 </object>
                             </object>
                         </object>

=== modified file 'src/2.0/cdd_gui.py'
--- src/2.0/cdd_gui.py	2013-01-30 14:24:46 +0000
+++ src/2.0/cdd_gui.py	2013-02-01 19:08:51 +0000
@@ -1158,29 +1158,16 @@
         self.text_ctrl_coverage = wx.TextCtrl(self, -1, "")
         self.label_contributors = wx.StaticText(self, -1, _("Contributors:  "))
         self.text_ctrl_contributors = wx.TextCtrl(self, -1, "")
-        self.button_ok = wx.Button(self, wx.ID_SAVE, "")
+        self.button_set_default = wx.Button(self, -1, _("Set default"))
+        self.button_ok = wx.Button(self, wx.ID_OK, "")
 
         self.__set_properties()
         self.__do_layout()
-
-        self.Bind(wx.EVT_TEXT, self.enable_ok, self.text_ctrl_title)
-        self.Bind(wx.EVT_TEXT, self.enable_ok, self.text_ctrl_description)
-        self.Bind(wx.EVT_CHOICE, self.enable_ok, self.choice_lang)
-        self.Bind(wx.EVT_TEXT, self.enable_ok, self.text_ctrl_subject)
-        self.Bind(wx.EVT_TEXT, self.enable_ok, self.text_ctrl_creator)
-        self.Bind(wx.EVT_TEXT, self.enable_ok, self.text_ctrl_creator_email)
-        self.Bind(wx.EVT_TEXT, self.enable_ok, self.text_ctrl_source)
-        self.Bind(wx.EVT_TEXT, self.enable_ok, self.text_ctrl_publisher)
-        self.Bind(wx.EVT_TEXT, self.enable_ok, self.text_ctrl_rights)
-        self.Bind(wx.EVT_TEXT, self.enable_ok, self.text_ctrl_relation)
-        self.Bind(wx.EVT_TEXT, self.enable_ok, self.text_ctrl_coverage)
-        self.Bind(wx.EVT_TEXT, self.enable_ok, self.text_ctrl_contributors)
-        self.Bind(wx.EVT_BUTTON, self.save_config, self.button_ok)
         # end wxGlade
 
     def __set_properties(self):
         # begin wxGlade: MetadataPanel.__set_properties
-        self.SetSize((685, 585))
+        self.SetSize((691, 714))
         self.label_date.SetToolTipString(_("Defalts to current day."))
         self.datepicker_ctrl_date.SetMinSize((111, 28))
         self.choice_lang.SetItems(get_lang_list())
@@ -1191,7 +1178,6 @@
         self.text_ctrl_publisher.SetToolTipString(_("Format emails as: Timothy W. Cook <timothywayne.cook@xxxxxxxxx>"))
         self.label_contributors.SetToolTipString(_("Separate multiple contributors with a semi-colon and format them as:Eduardo Cesar <xcesar@xxxxxxxxx>; Luciana Cavalini <lutricav@xxxxxxxxx>"))
         self.text_ctrl_contributors.SetToolTipString(_("Separate multiple contributors with a semi-colon and format them as:Eduardo Cesar <xcesar@xxxxxxxxx>; Luciana Cavalini <lutricav@xxxxxxxxx>"))
-        self.button_ok.Enable(False)
         # end wxGlade
 
     def __do_layout(self):
@@ -1248,6 +1234,7 @@
         sizer_1.Add(self.label_contributors, 0, wx.ALIGN_CENTER_VERTICAL, 0)
         sizer_1.Add(self.text_ctrl_contributors, 1, wx.ALIGN_CENTER_VERTICAL, 1)
         sizer_3.Add(sizer_1, 1, wx.EXPAND, 0)
+        sizer_2_copy.Add(self.button_set_default, 0, wx.ALIGN_BOTTOM, 0)
         sizer_2_copy.Add((20, 20), 1, wx.EXPAND, 1)
         sizer_2_copy.Add(self.button_ok, 0, wx.ALIGN_BOTTOM, 0)
         sizer_3.Add(sizer_2_copy, 1, wx.EXPAND, 0)
@@ -1256,14 +1243,6 @@
         self.SetSizer(sizer_vertical)
         # end wxGlade
 
-    def enable_ok(self, event):  # wxGlade: MetadataPanel.<event_handler>
-        print "Event handler `enable_ok' not implemented!"
-        event.Skip()
-
-    def save_config(self, event):  # wxGlade: MetadataPanel.<event_handler>
-        print "Event handler `save_config' not implemented!"
-        event.Skip()
-
 # end of class MetadataPanel
 
 class ConfigDialog(wx.Dialog):

=== modified file 'src/2.0/config.py'
--- src/2.0/config.py	2013-01-22 02:58:54 +0000
+++ src/2.0/config.py	2013-02-01 19:08:51 +0000
@@ -9,26 +9,27 @@
 class ConfigDialog(cdd_gui.ConfigDialog):
     def __init__(self, *args, **kwds):
         cdd_gui.ConfigDialog.__init__(self, *args, **kwds)
-        self.init_things()
+        
+        self.autosave = ''
+        self.workspace = ''
+        self.rm_version = ''
 
-    def init_things(self):
-        self.info = None
         self.init_config()
         self.read_config()
 
-        # Binds the function to EVT_TIMER
-        self.Bind(wx.EVT_TIMER, self.timer_worker)
-
-        # Timer that calls a function at a regular time.
-        self.timer = wx.Timer(self)
-        time = int(self.config.get('DEFAULT', 'autosave'))
-        if time > 0:
-            self.timer.Start(time*100)
+##        # Binds the function to EVT_TIMER
+##        self.Bind(wx.EVT_TIMER, self.timer_worker)
+##
+##        # Timer that calls a function at a regular time.
+##        self.timer = wx.Timer(self)
+##        time = int(self.config.get('DEFAULT', 'autosave'))
+##        if time > 0:
+##            self.timer.Start(time*100)
 
     def update_values(self):
         time = int(self.config.get('DEFAULT', 'autosave'))
-        if time > 0:
-            self.timer.Start(time*1000*60)
+        #if time > 0:
+        #    self.timer.Start(time*1000*60)
 
     def timer_worker(self, event=None):
         #TODO: Put the CDD automatic save routine here
@@ -61,10 +62,12 @@
 
     def read_config(self):
         self.config.read(self.configname)
+        self.load_fields()
         self.set_panel_configs()
 
     def save_config(self):
         #self.get_panel_configs()
+        self.store_fields()
         try:
             with open(self.configname, 'wb') as configfile:
                 configfile.write('# Concept Definition Designer Configuration\n# Do not edit the text to the left of the equal symbol (=)\n\n')
@@ -72,17 +75,26 @@
         except IOError:
             popup_message(None, 'Config could not be saved.', 'Error saving config', wx.ICON_EXCLAMATION)
 
-        self.set_config_info()
-
     def get_panel_configs(self):
-        self.config.set('DEFAULT', 'autosave', self.text_ctrl_autosave.GetValue().encode('utf8'))
-        self.config.set('DEFAULT', 'workspace', self.text_ctrl_workspace.GetValue().encode('utf8'))
-        self.config.set('DEFAULT', 'rm_version', self.text_ctrl_rm_version.GetValue().encode('utf8'))
+        self.autosave = self.text_ctrl_autosave.GetValue().encode('utf8')
+        self.workspace = self.text_ctrl_workspace.GetValue().encode('utf8')
+        self.rm_version = self.text_ctrl_rm_version.GetValue().encode('utf8')
 
     def set_panel_configs(self):
-        self.text_ctrl_autosave.SetValue(self.config.get('DEFAULT', 'autosave'))
-        self.text_ctrl_workspace.SetValue(self.config.get('DEFAULT', 'workspace'))
-        self.text_ctrl_rm_version.SetValue(self.config.get('DEFAULT', 'rm_version'))
+        self.text_ctrl_autosave.SetValue(self.autosave)
+        self.text_ctrl_workspace.SetValue(self.workspace)
+        self.text_ctrl_rm_version.SetValue(self.rm_version)
+
+    def store_fields(self):
+        self.config.set('DEFAULT', 'autosave', self.autosave)
+        self.config.set('DEFAULT', 'workspace', self.workspace)
+        self.config.set('DEFAULT', 'rm_version', self.rm_version)
+
+    def load_fields(self):
+        self.autosave = self.config.get('DEFAULT', 'autosave')
+        self.workspace = self.config.get('DEFAULT', 'workspace')
+        self.rm_version = self.config.get('DEFAULT', 'rm_version')
+
 
     def test_workspace_dir(self, panel):
         workspace = self.config.get('DEFAULT', 'workspace')
@@ -103,10 +115,21 @@
             dlg.Destroy()
 
 
-    def set_config_info(self):
-        # Sets the necessary config information in the info object
-        if self.info:
-            rm_version = self.config.get('DEFAULT', 'rm_version')
-            self.info.get_config_info(rm_version)
+    def get_as_dict(self):
+        conf = dict(
+            autosave = self.autosave,
+            workspace = self.workspace,
+            rm_version = self.rm_version,
+            )
+        
+        return conf
+    
+    def set_from_dict(self, conf):
+        self.autosave = conf.get('autosave')
+        self.workspace = conf.get('workspace')
+        self.rm_version = conf.get('rm_version')
+        
+        self.set_panel_configs()
+
 
 # end of class ConfigDialog

=== removed file 'src/2.0/info.py'
--- src/2.0/info.py	2013-02-01 18:06:52 +0000
+++ src/2.0/info.py	1970-01-01 00:00:00 +0000
@@ -1,238 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-# (c) 2012 - Timothy w.Cook & Contributors.
-
-import uuid
-from xml.sax.saxutils import escape
-
-# This class holds the XSD file that will be created.
-class Info(object):
-    def __init__(self):
-        self.title = ''
-        self.description = ''
-        self.creator = ''
-        self.creator_email = ''
-        self.contributor = ''
-
-        self.publisher = ''
-        self.subject = ''
-        self.source = ''
-        self.rights = ''
-        self.relation = ''
-        self.coverage = ''
-
-        self.language = ''
-
-        self.date = ''
-        
-        self.rm_version = ''
-
-        self.defin = []
-
-        self.ccd_id = ''
-
-    def get_metadata_info(self, title, description, date, creator, creator_email, contributor, language, publisher, subject, source, rights, relation, coverage):
-        self.title = title
-        self.description = description
-        self.creator = creator
-        self.creator_email = creator_email
-        self.contributor = contributor
-
-        self.publisher = publisher
-        self.subject = subject
-        self.source = source
-        self.rights = rights
-        self.relation = relation
-        self.coverage = coverage
-
-        self.language = language
-
-        self.date = date
-
-    def get_config_info(self, rm_version):
-        self.rm_version = rm_version
-
-
-    def get_defin_type(self, defin):
-        if defin:
-            tipo = defin + 'Type'
-            self.defin.append(tipo)
-
-    def generate_file(self, path):
-
-        schema = self.ccd_id + ".xsd"
-
-        # CDD version, transformed. ex: 2.x.y -> 2_x_y
-        version = self.rm_version.replace('.','_')
-
-
-        UUID_definition = str(uuid.uuid4())
-        UUID_complex = str(uuid.uuid4())
-
-
-        contributors_formated = '<dc:contributor>' + \
-            '</dc:contributor>\n<dc:contributor>'.join([ escape(i).strip() for i in self.contributor.split(';')]) + \
-            '</dc:contributor>'
-
-        xsd_file = open(path+'/'+schema,'w')
-
-
-######### Header of the ccd #############################################
-        xsd_file.write(
-"""<?xml version="1.0" encoding="UTF-8"?>
-    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";
-	   xmlns:mlhim2="http://www.mlhim.org/xmlns/mlhim2/{version}"; 
-	   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"; 
-	   xmlns:owl="http://www.w3.org/2002/07/owl#";
-	   xmlns:dc="http://purl.org/dc/elements/1.1/";	   
-	   xmlns:sawsdl="http://www.w3.org/ns/sawsdl";
-	   xmlns:sawsdlrdf="http://www.w3.org/ns/sawsdl#";
-	   id="mlhim2-{ccd_id}"
-	   elementFormDefault="qualified"
-	   targetNamespace="http://www.mlhim.org/xmlns/mlhim2/{version}";
-	   xmlns:data-view="http://www.w3.org/2003/g/data-view#"; 
-	   data-view:transformation="http://www.mlhim.org/ccd/ccd_md_view.xsl";>
-
-  <xs:annotation>
-    <xs:appinfo>""".format(ccd_id = self.ccd_id,
-           version = version,
-           ))
-
-######### RDF info ######################################################
-        xsd_file.write("""
-      <rdf:RDF>
-
-	<rdf:Description rdf:about="http://www.hkcr.net/ccd/{ccd_id}";>
-	  <dc:title>{title}</dc:title>
-	  <dc:creator>{creator} &lt;{creator_email}&gt; </dc:creator>
-          {contributors}
-          <dc:subject>{subject}</dc:subject>
-	  <dc:source>{source}</dc:source>
-	  <dc:rights>{rights}</dc:rights>
-	  <dc:relation>{relation}</dc:relation>
-	  <dc:coverage>{coverage}</dc:coverage>
-	  <dc:type>{resource_type}</dc:type>
-	  <dc:identifier>{identifier}</dc:identifier>
-	  <dc:description>{description}</dc:description>
-	  <dc:publisher>{publisher}</dc:publisher>
-	  <dc:date>{date}</dc:date>
-	  <dc:format>{resource_format}</dc:format>
-	  <dc:language>{language}</dc:language>
-	</rdf:Description>
-      </rdf:RDF>""".format(ccd_id = self.ccd_id,
-
-           title = escape(self.title),
-           description = escape(self.description),
-           date = self.date,
-           creator = escape(self.creator),
-           creator_email = escape(self.creator_email),
-           contributors = contributors_formated,
-           language = self.language,
-           publisher = escape(self.publisher),
-           subject = escape(self.subject),
-           source = escape(self.source),
-           rights = escape(self.rights),
-           relation = escape(self.relation),
-           coverage = escape(self.coverage),
-
-           resource_type = "MLHIM Concept Constraint Definition (CCD)",
-           resource_format = "text/xml",
-           identifier = self.ccd_id,
-
-           ))
-
-########## CCD definition ##############################################
-        xsd_file.write("""
-    </xs:appinfo>
-  </xs:annotation>
-
-  <xs:include schemaLocation="http://www.mlhim.org/xmlns/mlhim2/{version}/mlhim2.xsd"/>
-
-  <xs:element name="{ccd_id}" type="mlhim2:ct-{UUID_complex}"/>
-
-  <xs:complexType name="ct-{UUID_complex}">
-    <xs:complexContent>
-      <xs:restriction base="mlhim2:CCDType">
-	<xs:sequence>
-	  <xs:element minOccurs="1"  maxOccurs="1" ref="mlhim2:el-{UUID_definition}"/>
-	</xs:sequence>
-      </xs:restriction>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:element name='el-{UUID_definition}' substitutionGroup="mlhim2:definition" type='mlhim2:ct-{UUID_definition}'/>
-""".format(ccd_id = self.ccd_id,
-           UUID_definition = UUID_definition,
-           UUID_complex = UUID_complex,
-
-           version = version,
-
-           ))
-
-####### xls2ccdRM ######################################################
-
-        if self.defin:
-            defin_type = self.defin
-            defin_id = UUID_definition
-            dt_id = str(uuid.uuid4())
-
-            e_data_type = "ClusterType"
-            #data_name = title.replace('&', '&amp;').replace('<', '&lt;').replace('>', '&gt;').replace("'", '&#39;').replace('"', '&quot;')
-            data_name = escape(self.title)
-            dt_docs = escape(self.description)
-            
-
-            import xls2ccdRM
-
-            complexTypes = xls2ccdRM.get_map()[0].keys()
-            elements = xls2ccdRM.get_map()[1].keys()
-
-            indent = 2
-            if defin_type[0] == "ElementType":
-                xsd_file.write(xls2ccdRM.getElementType(defin_id, dt_id, indent))
-
-            elif defin_type[0] == "CareEntryType":
-                xsd_file.write(xls2ccdRM.getCareEntryType(data_name, defin_id, dt_docs, dt_id, e_data_type, indent))
-
-            elif defin_type[0] == "DemographicEntryType":
-                xsd_file.write(xls2ccdRM.getDemographicEntryType(data_name, defin_id, dt_docs, dt_id, e_data_type, indent))
-                
-            elif defin_type[0] == "AdminEntryType":
-                xsd_file.write(xls2ccdRM.getAdminEntryType(data_name, defin_id, dt_docs, dt_id, e_data_type, indent))
-
-########################################################################
-        xsd_file.write("\n</xs:schema>\n<!-- Here are some UUIDs to use for complexType & element names:\n\n")
-
-        for x in range(0,20):
-            xsd_file.write(str(uuid.uuid4())+"\n\n")
-
-        xsd_file.write("-->")
-
-        xsd_file.close()
-
-########################################################################
-
-    def randomize_uuid(self):
-        self.ccd_id = "ccd-"+str(uuid.uuid4())
-
-    # Gets info from the metadata panel. Depends on class metadata specifics
-    def get_meta_info(self, panel):
-        title = panel.text_ctrl_title.GetValue().encode('utf8')
-        description = panel.text_ctrl_description.GetValue().encode('utf8')
-        creator = panel.text_ctrl_creator.GetValue().encode('utf8')
-        creator_email = panel.text_ctrl_creator_email.GetValue().encode('utf8')
-        contributor = panel.text_ctrl_contributors.GetValue().encode('utf8')
-
-        publisher = panel.text_ctrl_publisher.GetValue().encode('utf8')
-        subject = panel.text_ctrl_subject.GetValue().encode('utf8')
-        source = panel.text_ctrl_source.GetValue().encode('utf8')
-        rights = panel.text_ctrl_rights.GetValue().encode('utf8')
-        relation = panel.text_ctrl_relation.GetValue().encode('utf8')
-        coverage = panel.text_ctrl_coverage.GetValue().encode('utf8')
-
-        language = panel.choice_lang.GetStringSelection()
-
-        tempo = panel.datepicker_ctrl_date.GetValue()
-        date = '{Y}-{M:02}-{D:02}'.format(Y=tempo.GetYear(), M=tempo.GetMonth()+1, D=tempo.GetDay())
-
-        self.get_metadata_info(title, description, date, creator, creator_email, contributor, language, publisher, subject, source, rights, relation, coverage)
-

=== modified file 'src/2.0/metadata.py'
--- src/2.0/metadata.py	2013-01-31 19:11:59 +0000
+++ src/2.0/metadata.py	2013-02-01 19:08:51 +0000
@@ -2,6 +2,7 @@
 import os
 import ConfigParser
 
+import wx
 import cdd_gui
 
 class MetadataPanel(cdd_gui.MetadataPanel):
@@ -12,7 +13,7 @@
         self.description = ''
         self.creator = ''
         self.creator_email = ''
-        self.contributor = ''
+        self.contributors = ''
         self.publisher = ''
         self.subject = ''
         self.source = ''
@@ -20,12 +21,16 @@
         self.relation = ''
         self.coverage = ''
         self.language = ''
+        self.date = ''
 
-        self.info = None
         self.init_config()
         self.read_config()
-        self.button_ok.Disable()
+        
+        #self.button_ok.Disable()
+        self.button_set_default.Disable()
 
+        self.set_binds()
+        
     def init_config(self):
         if sys.platform.startswith('linux'):
             home = os.environ['HOME']
@@ -64,8 +69,16 @@
         self.config.read(self.configname)
         self.load_fields()
         self.set_panel_configs()
+        self.set_panel_date_to_current()
+        
+        
+    def set_panel_date_to_current(self):
+        date = wx.DateTime()
+        date.SetToCurrent()
+        self.datepicker_ctrl_date.SetValue(date)
+        
 
-    def save_config(self, event=None):   # wxGlade: MetadataPanel.<event_handler>
+    def set_default(self, event=None):   # wxGlade: MetadataPanel.<event_handler>
         self.get_panel_configs()
 
         self.store_fields()
@@ -76,33 +89,13 @@
         except IOError:
             popup_message(None, 'Config could not be saved.', 'Error saving config', wx.ICON_EXCLAMATION)
 
-        self.set_meta_info()
+        self.button_set_default.Disable()
+
+
+    def update_values(self, event=None):
+        self.get_panel_configs()
         self.button_ok.Disable()
-
-    def set_meta_info(self):
-        # Sets the necessary metadata information in the info object
-        if self.info:
-            title = self.text_ctrl_title.GetValue().encode('utf8')
-            description = self.text_ctrl_description.GetValue().encode('utf8')
-            creator = self.text_ctrl_creator.GetValue().encode('utf8')
-            creator_email = self.text_ctrl_creator_email.GetValue().encode('utf8')
-            contributors = self.text_ctrl_contributors.GetValue().encode('utf8')
-
-            publisher = self.text_ctrl_publisher.GetValue().encode('utf8')
-            subject = self.text_ctrl_subject.GetValue().encode('utf8')
-            source = self.text_ctrl_source.GetValue().encode('utf8')
-            rights = self.text_ctrl_rights.GetValue().encode('utf8')
-            relation = self.text_ctrl_relation.GetValue().encode('utf8')
-            coverage = self.text_ctrl_coverage.GetValue().encode('utf8')
-
-            language = self.choice_lang.GetStringSelection()
-
-            tempo = self.datepicker_ctrl_date.GetValue()
-            date = '{Y}-{M:02}-{D:02}'.format(Y=tempo.GetYear(), M=tempo.GetMonth()+1, D=tempo.GetDay())
-
-            self.info.get_metadata_info(title, description, date, creator, creator_email, contributors, language, publisher, subject, source, rights, relation, coverage)
-
-
+     
     def get_panel_configs(self):
         self.title = self.text_ctrl_title.GetValue().encode('utf8')
         self.description = self.text_ctrl_description.GetValue().encode('utf8')
@@ -118,6 +111,9 @@
         self.coverage = self.text_ctrl_coverage.GetValue().encode('utf8')
 
         self.language = str(self.choice_lang.GetSelection())
+        
+        date = self.datepicker_ctrl_date.GetValue()
+        self.date = '{Y}-{M:02}-{D:02}'.format(Y=date.GetYear(), M=date.GetMonth()+1, D=date.GetDay())
 
     def set_panel_configs(self):
         self.text_ctrl_title.SetValue(self.title)
@@ -134,6 +130,14 @@
         self.text_ctrl_coverage.SetValue(self.coverage)
 
         self.choice_lang.SetSelection(int(self.language))
+        
+        if self.date:
+            year, month, day = self.date.split('-')
+            date = wx.DateTime()
+            date.SetDay(int(day))
+            date.SetMonth(int(month))
+            date.SetYear(int(year))
+            self.datepicker_ctrl_date.SetValue(date)
 
     def load_fields(self):
         self.title = self.config.get('DEFAULT', 'title')
@@ -182,27 +186,48 @@
             relation = self.relation,
             coverage = self.coverage,
             language = self.language,
+            date = self.date
             )
         return md
 
-    def set_from_dict(self, dicto):
-        self.title = dicto['title']
-        self.description = dicto['description']
-        self.creator = dicto['creator']
-        self.creator_email = dicto['creator_email']
-        self.contributor = dicto['contributor']
-        self.publisher = dicto['publisher']
-        self.subject = dicto['subject']
-        self.source = dicto['source']
-        self.rights = dicto['rights']
-        self.relation = dicto['relation']
-        self.coverage = dicto['coverage']
-        self.language = dicto['language']
+    def set_from_dict(self, md):
+        self.title = md.get('title')
+        self.description = md.get('description')
+        self.creator = md.get('creator')
+        self.creator_email = md.get('creator_email')
+        self.contributor = md.get('contributor')
+        self.publisher = md.get('publisher')
+        self.subject = md.get('subject')
+        self.source = md.get('source')
+        self.rights = md.get('rights')
+        self.relation = md.get('relation')
+        self.coverage = md.get('coverage')
+        self.language = md.get('language')
+        self.date = md.get('date')
         
         self.set_panel_configs()
         
-    def enable_ok(self, event):  # wxGlade: MetadataPanel.<event_handler>
+    def set_binds(self):
+        self.Bind(wx.EVT_TEXT, self.enable_buttons, self.text_ctrl_title)
+        self.Bind(wx.EVT_TEXT, self.enable_buttons, self.text_ctrl_description)
+        self.Bind(wx.EVT_CHOICE, self.enable_buttons, self.choice_lang)
+        self.Bind(wx.EVT_TEXT, self.enable_buttons, self.text_ctrl_subject)
+        self.Bind(wx.EVT_TEXT, self.enable_buttons, self.text_ctrl_creator)
+        self.Bind(wx.EVT_TEXT, self.enable_buttons, self.text_ctrl_creator_email)
+        self.Bind(wx.EVT_TEXT, self.enable_buttons, self.text_ctrl_source)
+        self.Bind(wx.EVT_TEXT, self.enable_buttons, self.text_ctrl_publisher)
+        self.Bind(wx.EVT_TEXT, self.enable_buttons, self.text_ctrl_rights)
+        self.Bind(wx.EVT_TEXT, self.enable_buttons, self.text_ctrl_relation)
+        self.Bind(wx.EVT_TEXT, self.enable_buttons, self.text_ctrl_coverage)
+        self.Bind(wx.EVT_TEXT, self.enable_buttons, self.text_ctrl_contributors)
+        
+        self.Bind(wx.EVT_BUTTON, self.set_default, self.button_set_default)
+        self.Bind(wx.EVT_BUTTON, self.update_values, self.button_ok)
+
+
+    def enable_buttons(self, event):
         self.button_ok.Enable()
-        
+        self.button_set_default.Enable()
+    
 
 # end of class MetadataPanel