diff --git a/src/Mod/Spreadsheet/Spreadsheet.py b/src/Mod/Spreadsheet/Spreadsheet.py index 0eac9d4a9dfc..a166de21ab98 100644 --- a/src/Mod/Spreadsheet/Spreadsheet.py +++ b/src/Mod/Spreadsheet/Spreadsheet.py @@ -479,7 +479,7 @@ def getIcon(self): def attach(self,vobj): self.Object = vobj.Object - def setEdit(self,vobj,mode): + def setEdit(self,vobj,mode=0): if hasattr(self,"editor"): pass else: @@ -487,9 +487,11 @@ def setEdit(self,vobj,mode): addSpreadsheetView(self.editor) return True - def unsetEdit(self,vobj,mode): - del self.editor + def unsetEdit(self,vobj,mode=0): return False + + def doubleClicked(self,vobj): + self.setEdit(vobj) def claimChildren(self): if hasattr(self,"Object"): @@ -543,21 +545,23 @@ def getDataSet(self,obj): baseset = FreeCAD.ActiveDocument.Objects if obj.FilterType == "Object Type": for o in baseset: - t = Draft.getType(o) - if t == "Part": - t = obj.TypeId - if obj.Filter: - if obj.Filter in t: - result.append(obj) - else: - result.append(obj) + if not ("Spreadsheet" in Draft.getType(o)): + t = Draft.getType(o) + if t == "Part": + t = obj.TypeId + if obj.Filter: + if obj.Filter in t: + result.append(o) + else: + result.append(o) elif obj.FilterType == "Object Name": for o in baseset: - if obj.Filter: - if obj.Filter in o.Label: + if not ("Spreadsheet" in Draft.getType(o)): + if obj.Filter: + if obj.Filter in o.Label: + result.append(o) + else: result.append(o) - else: - result.append(o) return result def getCells(self,obj,spreadsheet): @@ -728,10 +732,9 @@ def __init__(self,spreadsheet=None): QtCore.QObject.connect(self.table, QtCore.SIGNAL("cellChanged(int,int)"), self.changeCell) QtCore.QObject.connect(self.table, QtCore.SIGNAL("currentCellChanged(int,int,int,int)"), self.setEditLine) QtCore.QObject.connect(self.lineEdit, QtCore.SIGNAL("returnPressed()"), self.getEditLine) - QtCore.QObject.connect(self, QtCore.SIGNAL("destroyed()"), self.destroy) - def destroy(self): - if DEBUG: print "Closing spreadsheet view" + def closeEvent(self, event): + #if DEBUG: print "Closing spreadsheet view" if self.spreadsheet: # before deleting this view, we remove the reference to it in the object if hasattr(self.spreadsheet,"ViewObject"): @@ -748,7 +751,7 @@ def update(self): controlled = self.spreadsheet.Proxy.getControlledCells(self.spreadsheet) controlling = self.spreadsheet.Proxy.getControllingCells(self.spreadsheet) for cell in self.spreadsheet.Proxy._cells.keys(): - if cell != "Type": + if not cell in ["Type","Object"]: c,r = self.spreadsheet.Proxy.splitKey(cell) c = "abcdefghijklmnopqrstuvwxyz".index(c) r = int(str(r))-1 @@ -834,9 +837,10 @@ def Activated(self): from DraftTools import translate FreeCAD.ActiveDocument.openTransaction(str(translate("Spreadsheet","Create Spreadsheet"))) FreeCADGui.doCommand("import Spreadsheet") - FreeCADGui.doCommand("Spreadsheet.makeSpreadsheet()") + FreeCADGui.doCommand("s = Spreadsheet.makeSpreadsheet()") + FreeCADGui.doCommand("FreeCAD.ActiveDocument.recompute()") + FreeCADGui.doCommand("FreeCADGui.ActiveDocument.setEdit(s.Name,0)") FreeCAD.ActiveDocument.commitTransaction() - FreeCAD.ActiveDocument.recompute() class _Command_Spreadsheet_Controller: