コード例 #1
0
 def callback(evt):
     _ = evt
     try:
         plugin_.execute(self.project)
     except Exception, e:
         log.error('PluginError: %s', e)
         wx.MessageBox('PluginError: %s' % e)
コード例 #2
0
 def callback(evt):
     _ = evt
     try:
         plugin_.execute(self.project)
     except Exception, e:
         log.error('PluginError: %s', e)
         wx.MessageBox('PluginError: %s' % e)
コード例 #3
0
    def _open(self):
        """ open or create a project """
        # read recent projects
        app_data_path = get_app_data_path()
        recent_file = os.path.join(app_data_path, 'recent_projects')
        # noinspection PyBroadException
        try:
            recent_projects = open(recent_file).read().split('\n')
        except:
            recent_projects = []

        sample_projects = [
            os.path.join(SAMPLE_DIR, f) for f in os.listdir(SAMPLE_DIR)
        ]

        # prompt
        from project_dialog_xrc import xrcProjectDialog
        dlg = xrcProjectDialog(self)
        dlg.set_recent_paths(recent_projects + sample_projects)
        if wx.ID_OK == dlg.ShowModal():
            path = dlg.get_path()

            # prompt and create if not exists
            if not os.path.exists(path):
                dlg = wx.MessageDialog(self, 'Folder not exists, create now?',
                                       'Warning', wx.YES_NO | wx.ICON_QUESTION)

                if dlg.ShowModal() == wx.ID_NO:
                    return

                try:
                    os.makedirs(path)
                except Exception, e:
                    log.error(e, "create project folder failed")
                    wx.MessageBox("Failed to create folder: %s" % path)
                    return

            self._load_project(path)
            #             try:
            #                 project = Project(path, False)
            #                 project.load()
            #                 self.update_project(project)
            #             except Exception, e:
            #                 log.error(e, "Failed to open/create project")
            #                 wx.MessageBox("Failed to open/create project: %s" % e)
            #             else:

            # save recent files
            # noinspection PyBroadException
            try:
                recent_projects.remove(path)
            except:
                pass
            recent_projects.insert(0, path)
            open(recent_file, 'w').write('\n'.join(recent_projects))
コード例 #4
0
    def _open(self):        
        """ open or create a project """
        # read recent projects
        app_data_path = get_app_data_path()
        recent_file = os.path.join(app_data_path, 'recent_projects')
        # noinspection PyBroadException
        try:
            recent_projects = open(recent_file).read().split('\n')
        except:
            recent_projects = []

        sample_projects = [os.path.join(SAMPLE_DIR, f) for f in os.listdir(SAMPLE_DIR)]

        # prompt 
        from project_dialog_xrc import xrcProjectDialog
        dlg = xrcProjectDialog(self)
        dlg.set_recent_paths(recent_projects + sample_projects)
        if wx.ID_OK == dlg.ShowModal():            
            path = dlg.get_path()    
            
            # prompt and create if not exists
            if not os.path.exists(path):
                dlg = wx.MessageDialog(self, 'Folder not exists, create now?',
                                       'Warning',
                                       wx.YES_NO | wx.ICON_QUESTION)
                                
                if dlg.ShowModal() == wx.ID_NO:
                    return
                
                try:
                    os.makedirs(path)
                except Exception, e:
                    log.error(e, "create project folder failed")
                    wx.MessageBox("Failed to create folder: %s" % path)
                    return
                                                   
            self._load_project(path)
#             try:
#                 project = Project(path, False)
#                 project.load()
#                 self.update_project(project)
#             except Exception, e:        
#                 log.error(e, "Failed to open/create project")
#                 wx.MessageBox("Failed to open/create project: %s" % e)
#             else:
            
            # save recent files
            # noinspection PyBroadException
            try:
                recent_projects.remove(path)
            except:
                pass
            recent_projects.insert(0, path)
            open(recent_file, 'w').write('\n'.join(recent_projects))
コード例 #5
0
ファイル: frame.py プロジェクト: TimothyZhang/structer
 def OnClose(self, evt):        
     self.editor_panel.grid.DisableCellEditControl()
     
     # debug
     if self.editor_context.read_only and self.editor_context.is_modified():            
         log.error('modified in a readonly frame!')
     
     if not self.editor_context.read_only and self.editor_context.is_modified():
         self.Raise()
         r = wx.MessageBox("Save before exit?", "Confirm",  wx.YES_NO | wx.CANCEL, self)
         if r == wx.YES:
             if not self.save():
                 log.alert("save failed!")                                        
                 return                
         elif r == wx.CANCEL:                    
             return
     
     self.editor_context.project.explorer.remove_editor(self)
     evt.Skip()
コード例 #6
0
    def _add_child(self, parent_tree_item_id, child_fs_node):
        """Adds a fs_node to a tree item"""
        try:
            label = self.node_tool.get_name(child_fs_node)
            lower_label = label.lower()

            # find a pos to insert(sort by label)
            child_tree_item_id, cookie = self.GetFirstChild(
                parent_tree_item_id)
            index = 0
            while child_tree_item_id.IsOk():
                child_label = self.GetItemText(child_tree_item_id)
                if lower_label < child_label.lower():
                    break
                index += 1
                child_tree_item_id, cookie = self.GetNextChild(
                    parent_tree_item_id, cookie)

            if index < self.GetChildrenCount(parent_tree_item_id):
                child_tree_item_id = self.InsertItemBefore(
                    parent_tree_item_id,
                    index,
                    text=label,
                    image=self.get_image_id_by_node(child_fs_node),
                    data=wx.TreeItemData(child_fs_node))
            else:
                child_tree_item_id = self.AppendItem(
                    parent_tree_item_id,
                    text=label,
                    image=self.get_image_id_by_node(child_fs_node),
                    data=wx.TreeItemData(child_fs_node))

            self._fs_node_to_tree_item_id[child_fs_node] = child_tree_item_id

            if self._add_children(child_tree_item_id):
                self.SetItemHasChildren(child_tree_item_id, True)

            return child_tree_item_id
        except Exception, e:
            log.error('failed to add child: %s', child_fs_node.uuid)
            print e
            raise
コード例 #7
0
ファイル: frame.py プロジェクト: TimothyZhang/structer
    def OnClose(self, evt):
        self.editor_panel.grid.DisableCellEditControl()

        # debug
        if self.editor_context.read_only and self.editor_context.is_modified():
            log.error('modified in a readonly frame!')

        if not self.editor_context.read_only and self.editor_context.is_modified(
        ):
            self.Raise()
            r = wx.MessageBox("Save before exit?", "Confirm",
                              wx.YES_NO | wx.CANCEL, self)
            if r == wx.YES:
                if not self.save():
                    log.alert("save failed!")
                    return
            elif r == wx.CANCEL:
                return

        self.editor_context.project.explorer.remove_editor(self)
        evt.Skip()
コード例 #8
0
 def _add_child(self, parent_tree_item_id, child_fs_node):
     """Adds a fs_node to a tree item"""
     try:
         label = self.node_tool.get_name(child_fs_node)
         lower_label = label.lower()
         
         # find a pos to insert(sort by label)
         child_tree_item_id, cookie = self.GetFirstChild(parent_tree_item_id)
         index = 0
         while child_tree_item_id.IsOk():
             child_label = self.GetItemText(child_tree_item_id)
             if lower_label < child_label.lower():
                 break
             index += 1
             child_tree_item_id, cookie = self.GetNextChild(parent_tree_item_id, cookie)
         
         if index < self.GetChildrenCount(parent_tree_item_id):
             child_tree_item_id = self.InsertItemBefore(parent_tree_item_id,
                                                        index,
                                                        text=label,
                                                        image=self.get_image_id_by_node(child_fs_node),
                                                        data=wx.TreeItemData(child_fs_node))
         else:
             child_tree_item_id = self.AppendItem(parent_tree_item_id, 
                                                  text=label,
                                                  image=self.get_image_id_by_node(child_fs_node),
                                                  data=wx.TreeItemData(child_fs_node))
         
         self._fs_node_to_tree_item_id[child_fs_node] = child_tree_item_id        
         
         if self._add_children(child_tree_item_id):
             self.SetItemHasChildren(child_tree_item_id, True)
 
         return child_tree_item_id
     except Exception, e:
         log.error('failed to add child: %s', child_fs_node.uuid)
         print e
         raise
コード例 #9
0
                        data['__uuid__'] = obj.uuid
                    except Exception, e:
                        log.alert(e, "Failed to create object: %s", data2)
                        success = False                    
            
            # to be deleted
            for obj in objects.itervalues():
                try:
                    self.project.delete_object(obj)
                    self._objects.pop(obj.uuid)
                except Exception, e:
                    log.alert(e, "Failed to delete object: %s", obj)
                    success = False
                        
        else:
            obj = self._objects
            obj.raw_data = self.attr_data
            try:
                self.project.save_object(obj)
            except Exception, e:
                log.error(e, "Failed to save: %s", obj.uuid)
                success = False    
        
        return success
    
    def get_title(self):
        if self.is_batch():
            return 'Batch Edit %s' % self.clazz.name
        else:
            return '%s - %s' % (self._objects.name, self._objects.uuid)