From 257cdd8f423f1530b8df6f53e242de629fee4e85 Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Mon, 28 Jun 2021 15:47:42 +0200 Subject: [PATCH] Draft: Implemented edit mode for Draft texts --- src/Mod/Draft/draftviewproviders/view_text.py | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/src/Mod/Draft/draftviewproviders/view_text.py b/src/Mod/Draft/draftviewproviders/view_text.py index 6230929619..db80e8c881 100644 --- a/src/Mod/Draft/draftviewproviders/view_text.py +++ b/src/Mod/Draft/draftviewproviders/view_text.py @@ -145,6 +145,7 @@ class ViewProviderText(ViewProviderDraftAnnotation): self.onChanged(vobj, "Justification") self.onChanged(vobj, "LineSpacing") self.onChanged(vobj, "ScaleMultiplier") + self.Object = vobj.Object def getDisplayModes(self, vobj): """Return the display modes that this viewprovider supports.""" @@ -222,6 +223,47 @@ class ViewProviderText(ViewProviderDraftAnnotation): self.text2d.spacing = vobj.LineSpacing self.text3d.spacing = vobj.LineSpacing + def setEdit(self,vobj,mode): + + import FreeCADGui + self.text = '' + FreeCADGui.draftToolBar.sourceCmd = self + FreeCADGui.draftToolBar.taskUi() + FreeCADGui.draftToolBar.textUi() + FreeCADGui.draftToolBar.textValue.setPlainText("\n".join(vobj.Object.Text)) + FreeCADGui.draftToolBar.textValue.setFocus() + + def unsetEdit(self,vobj=None,mode=0): + + import FreeCADGui + FreeCADGui.Control.closeDialog() + return True + + def doubleClicked(self,vobj): + + self.setEdit(vobj,None) + + def createObject(self): + + import FreeCADGui + if hasattr(self,"Object"): + txt = [t.replace("\"","\\\"") for t in self.text] + # If the last element is an empty string "" we remove it + if not txt[-1]: + txt.pop() + t_list = ['"' + l + '"' for l in txt] + list_as_text = ", ".join(t_list) + string = '[' + list_as_text + ']' + FreeCADGui.doCommand("FreeCAD.ActiveDocument."+self.Object.Name+".Text = "+string) + FreeCAD.ActiveDocument.recompute() + self.finish() + + def finish(self,args=None): + + import FreeCADGui + FreeCADGui.draftToolBar.sourceCmd = None + FreeCADGui.draftToolBar.offUi() + # Alias for compatibility with v0.18 and earlier ViewProviderDraftText = ViewProviderText