← Back to team overview

mlhim-specs-dev team mailing list archive

[Branch ~cdd-dev/cdd/trunk] Rev 258: Merged from the 2.0 development tree.

 

Merge authors:
  Eduardo César (eduardo.cesar)
------------------------------------------------------------
revno: 258 [merge]
committer: Eduardo C. P. Ribeiro <eduardo.cesar@xxxxxxx>
branch nick: mirror
timestamp: Mon 2012-09-17 20:10:53 -0300
message:
  Merged from the 2.0 development tree.
modified:
  src/2.0/cdd.py
  src/2.0/cdd.wxg


--
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	2012-09-14 02:56:05 +0000
+++ src/2.0/cdd.py	2012-09-17 23:10:23 +0000
@@ -1381,6 +1381,8 @@
         self.__do_layout()
         # end wxGlade
 
+        self.init_things()
+
     def __set_properties(self):
         # begin wxGlade: ConfigDialog.__set_properties
         self.SetTitle(_("Configuration"))
@@ -1423,6 +1425,95 @@
         self.Layout()
         # end wxGlade
 
+    def init_things(self):
+        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)
+
+    def update_values(self):
+        time = int(self.config.get('DEFAULT', 'autosave'))
+        if time > 0:
+            self.timer.Start(time*1000*60)
+
+    def timer_worker(self, event=None):
+        #TODO: Put the CDD automatic save routine here
+        pass
+
+
+    def init_config(self):
+        if sys.platform.startswith('linux'):
+            home = os.environ['HOME']
+        elif sys.platform.startswith('win'):
+            home = os.environ['HOMEDRIVE'] + '/' +os.environ['HOMEPATH']
+
+        else:
+            home = './'
+        self.configdir = home + '/.mlhim'
+        self.configname = self.configdir + '/' + 'cdg.cfg'
+
+        self.config = ConfigParser.SafeConfigParser({
+                'autosave' : '5',
+                'workspace' : home + '/' + 'MLHIM2'
+                })
+
+        if not os.path.isdir(self.configdir):
+            try:
+                os.mkdir(self.configdir)
+            except:
+                popup_message(None, 'Config directory NOT created.', 'Error creating config dir', wx.ICON_EXCLAMATION)
+
+
+    def read_config(self):
+        self.config.read(self.configname)
+        self.set_panel_configs()
+
+    def save_config(self):
+        #self.get_panel_configs()
+        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')
+                self.config.write(configfile)
+        except IOError:
+            popup_message(None, 'Config could not be saved.', 'Error saving config', wx.ICON_EXCLAMATION)
+
+
+    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'))
+
+    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'))
+
+
+    def test_workspace_dir(self, panel):
+        workspace = self.config.get('DEFAULT', 'workspace')
+        if not os.path.exists(workspace):
+            dlg = wx.TextEntryDialog(panel, 'Please choose the workpspace directory.',
+                                  'Workspace', defaultValue=workspace)
+            result = dlg.ShowModal()
+            if result == wx.ID_OK:
+                workspace = dlg.GetValue()
+                self.config.set('DEFAULT', 'workspace', workspace)
+                self.set_panel_configs()
+                self.save_config()
+                if not os.path.isdir(workspace):
+                    try:
+                        os.mkdir(workspace)
+                    except OSError:
+                        popup_message(None, 'Workspace directory NOT created.', 'Error creating workspace dir', wx.ICON_EXCLAMATION)
+
+
+            dlg.Destroy()
+
 # end of class ConfigDialog
 
 class MetadataPanel(wx.Panel):
@@ -1725,6 +1816,8 @@
         self.Bind(wx.EVT_MENU, self.export_xform, id=210)
         self.Bind(wx.EVT_MENU, self.file_validate, id=60)
         self.Bind(wx.EVT_MENU, self.file_quit, id=80)
+        self.Bind(wx.EVT_MENU, self.edit_undo, id=100)
+        self.Bind(wx.EVT_MENU, self.edit_redo, id=110)
         self.Bind(wx.EVT_MENU, self.project_new, id=130)
         self.Bind(wx.EVT_MENU, self.config_options, id=150)
         self.Bind(wx.EVT_MENU, self.config_save, id=160)
@@ -1774,10 +1867,19 @@
         # end wxGlade
 
     def init_things(self):
+
+        # Makes a config dialog
+        self.config_dialog = ConfigDialog(self)
+        self.config_dialog.test_workspace_dir(self)
+
+        # Setup the tree
         self.setup_tree()
+
+        # Setup the metadata
         self.setup_metadata()
         self.button_ok.Hide()
 
+
     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
@@ -1991,38 +2093,54 @@
     def evt_tree_delete_item(self, event):  # wxGlade: MainFrame.<event_handler>
         pass
     def file_new(self, event):  # wxGlade: MainFrame.<event_handler>
+        not_implemented_diag(self)
         print "Event handler `file_new' not implemented"
         event.Skip()
 
     def file_open(self, event):  # wxGlade: MainFrame.<event_handler>
+        not_implemented_diag(self)
         print "Event handler `file_open' not implemented"
         event.Skip()
 
     def file_save(self, event):  # wxGlade: MainFrame.<event_handler>
+        not_implemented_diag(self)
         print "Event handler `file_save' not implemented"
         event.Skip()
 
     def file_save_as(self, event):  # wxGlade: MainFrame.<event_handler>
+        not_implemented_diag(self)
         print "Event handler `file_save_as' not implemented"
         event.Skip()
 
     def file_validate(self, event):  # wxGlade: MainFrame.<event_handler>
+        not_implemented_diag(self)
         print "Event handler `file_validate' not implemented"
         event.Skip()
 
     def file_quit(self, event):  # wxGlade: MainFrame.<event_handler>
-        print "Event handler `file_quit' not implemented"
-        event.Skip()
+        dlg = wx.MessageDialog(self,
+                               _("Are you sure you want to exit?"),
+                               _("Quit Editor"), wx.OK|wx.CANCEL|wx.ICON_QUESTION)
+        result = dlg.ShowModal()
+        dlg.Destroy()
+        if result == wx.ID_OK:
+            self.Close(force=True)
 
     def project_new(self, event):  # wxGlade: MainFrame.<event_handler>
+        not_implemented_diag(self)
         print "Event handler `project_new' not implemented"
         event.Skip()
 
     def config_options(self, event):  # wxGlade: MainFrame.<event_handler>
-        print "Event handler `config_options' not implemented"
-        event.Skip()
+        result = self.config_dialog.ShowModal()
+        if result == wx.ID_OK:
+            self.config_dialog.get_panel_configs()
+            self.config_dialog.save_config()
+            self.config_dialog.update_values()
+
 
     def config_save(self, event):  # wxGlade: MainFrame.<event_handler>
+        not_implemented_diag(self)
         print "Event handler `config_save' not implemented"
         event.Skip()
 
@@ -2063,9 +2181,20 @@
         popup_message(self, '%s.xsd' % info.ccd_id, _('Generated the file'), wx.OK | wx.ICON_INFORMATION)
 
     def export_xform(self, event):  # wxGlade: MainFrame.<event_handler>
+        not_implemented_diag(self)
         print "Event handler `export_xform' not implemented"
         event.Skip()
 
+    def edit_undo(self, event):  # wxGlade: MainFrame.<event_handler>
+        not_implemented_diag(self)
+        print "Event handler `edit_undo' not implemented"
+        event.Skip()
+
+    def edit_redo(self, event):  # wxGlade: MainFrame.<event_handler>
+        not_implemented_diag(self)
+        print "Event handler `edit_redo' not implemented"
+        event.Skip()
+
 # end of class MainFrame
 
 # This class holds the XSD file that will be created.
@@ -2294,6 +2423,9 @@
         return False
 
 
+def not_implemented_diag(self):
+    popup_message(self, 'Not implemented yet.', 'Under construction', wx.ICON_INFORMATION | wx.OK)
+
 info = Info()
 
 if __name__ == "__main__":

=== modified file 'src/2.0/cdd.wxg'
--- src/2.0/cdd.wxg	2012-09-11 22:49:55 +0000
+++ src/2.0/cdd.wxg	2012-09-17 23:10:23 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- generated by wxGlade 0.6.4 on Tue Sep 11 19:48:56 2012 -->
+<!-- generated by wxGlade 0.6.4 on Mon Sep 17 20:08:46 2012 -->
 
 <application path="cdd.py" name="" class="" option="0" language="python" top_window="dialog_config" encoding="UTF-8" use_gettext="1" overwrite="0" 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">
@@ -58,10 +58,12 @@
                     <item>
                         <label>&amp;Undo\tCtrl-Z</label>
                         <id>100</id>
+                        <handler>edit_undo</handler>
                     </item>
                     <item>
                         <label>&amp;Redo\tCtrl-Y</label>
                         <id>110</id>
+                        <handler>edit_redo</handler>
                     </item>
                 </menu>
                 <menu name="" itemid="120" label="&amp;Project">
@@ -2721,4 +2723,159 @@
             </object>
         </object>
     </object>
+    <object class="ConfigDialog" name="dialog_config" base="EditDialog">
+        <style>wxDEFAULT_DIALOG_STYLE</style>
+        <title>Configuration</title>
+        <size>629, 205</size>
+        <object class="wxBoxSizer" name="sizer_13" base="EditBoxSizer">
+            <orient>wxHORIZONTAL</orient>
+            <object class="sizeritem">
+                <border>0</border>
+                <option>0</option>
+                <object class="spacer" name="spacer" base="EditSpacer">
+                    <height>20</height>
+                    <width>20</width>
+                </object>
+            </object>
+            <object class="sizeritem">
+                <flag>wxEXPAND</flag>
+                <border>0</border>
+                <option>1</option>
+                <object class="wxBoxSizer" name="sizer_14" base="EditBoxSizer">
+                    <orient>wxVERTICAL</orient>
+                    <object class="sizeritem">
+                        <border>0</border>
+                        <option>0</option>
+                        <object class="spacer" name="spacer" base="EditSpacer">
+                            <height>20</height>
+                            <width>20</width>
+                        </object>
+                    </object>
+                    <object class="sizeritem">
+                        <flag>wxEXPAND</flag>
+                        <border>0</border>
+                        <option>1</option>
+                        <object class="wxBoxSizer" name="sizer_main" base="EditBoxSizer">
+                            <orient>wxVERTICAL</orient>
+                            <object class="sizeritem">
+                                <flag>wxEXPAND</flag>
+                                <border>0</border>
+                                <option>1</option>
+                                <object class="wxBoxSizer" name="sizer_2" base="EditBoxSizer">
+                                    <orient>wxHORIZONTAL</orient>
+                                    <object class="sizeritem">
+                                        <flag>wxEXPAND</flag>
+                                        <border>7</border>
+                                        <option>1</option>
+                                        <object class="wxStaticBoxSizer" name="sizer_9" base="EditStaticBoxSizer">
+                                            <orient>wxHORIZONTAL</orient>
+                                            <label>Workspace path:</label>
+                                            <object class="sizeritem">
+                                                <border>0</border>
+                                                <option>1</option>
+                                                <object class="wxTextCtrl" name="text_ctrl_workspace" base="EditTextCtrl">
+                                                </object>
+                                            </object>
+                                        </object>
+                                    </object>
+                                </object>
+                            </object>
+                            <object class="sizeritem">
+                                <flag>wxEXPAND</flag>
+                                <border>0</border>
+                                <option>1</option>
+                                <object class="wxBoxSizer" name="sizer_11" base="EditBoxSizer">
+                                    <orient>wxHORIZONTAL</orient>
+                                    <object class="sizeritem">
+                                        <flag>wxEXPAND</flag>
+                                        <border>0</border>
+                                        <option>0</option>
+                                        <object class="wxStaticBoxSizer" name="sizer_12" base="EditStaticBoxSizer">
+                                            <orient>wxHORIZONTAL</orient>
+                                            <label>Autosave:</label>
+                                            <object class="sizeritem">
+                                                <border>0</border>
+                                                <option>0</option>
+                                                <object class="wxTextCtrl" name="text_ctrl_autosave" base="EditTextCtrl">
+                                                    <tooltip>Put the interval in minutes that the current CDD will be automatically saved.</tooltip>
+                                                    <size>70, 27</size>
+                                                </object>
+                                            </object>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem">
+                                        <flag>wxEXPAND</flag>
+                                        <border>0</border>
+                                        <option>1</option>
+                                        <object class="spacer" name="spacer" base="EditSpacer">
+                                            <height>20</height>
+                                            <width>20</width>
+                                        </object>
+                                    </object>
+                                </object>
+                            </object>
+                            <object class="sizeritem">
+                                <flag>wxEXPAND</flag>
+                                <border>0</border>
+                                <option>1</option>
+                                <object class="wxBoxSizer" name="sizer_10" base="EditBoxSizer">
+                                    <orient>wxHORIZONTAL</orient>
+                                    <object class="sizeritem">
+                                        <border>0</border>
+                                        <option>1</option>
+                                        <object class="spacer" name="spacer" base="EditSpacer">
+                                            <height>20</height>
+                                            <width>20</width>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem">
+                                        <flag>wxBOTTOM|wxALIGN_BOTTOM</flag>
+                                        <border>0</border>
+                                        <option>0</option>
+                                        <object class="wxButton" name="button_2" base="EditButton">
+                                            <stockitem>CANCEL</stockitem>
+                                            <label>&amp;Cancel</label>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem">
+                                        <border>0</border>
+                                        <option>0</option>
+                                        <object class="spacer" name="spacer" base="EditSpacer">
+                                            <height>20</height>
+                                            <width>20</width>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem">
+                                        <flag>wxBOTTOM|wxALIGN_BOTTOM</flag>
+                                        <border>0</border>
+                                        <option>0</option>
+                                        <object class="wxButton" name="button_1" base="EditButton">
+                                            <stockitem>OK</stockitem>
+                                            <label>&amp;OK</label>
+                                        </object>
+                                    </object>
+                                </object>
+                            </object>
+                        </object>
+                    </object>
+                    <object class="sizeritem">
+                        <border>0</border>
+                        <option>0</option>
+                        <object class="spacer" name="spacer" base="EditSpacer">
+                            <height>20</height>
+                            <width>20</width>
+                        </object>
+                    </object>
+                </object>
+            </object>
+            <object class="sizeritem">
+                <border>0</border>
+                <option>0</option>
+                <object class="spacer" name="spacer" base="EditSpacer">
+                    <height>20</height>
+                    <width>20</width>
+                </object>
+            </object>
+        </object>
+    </object>
 </application>