diff --git a/src/Gui/CommandDoc.cpp b/src/Gui/CommandDoc.cpp index 8e1e79cfb..8bbe611c0 100644 --- a/src/Gui/CommandDoc.cpp +++ b/src/Gui/CommandDoc.cpp @@ -52,6 +52,8 @@ #include "Placement.h" #include "WaitCursor.h" #include "ViewProvider.h" +#include +#include #include "MergeDocuments.h" using namespace Gui; @@ -1022,6 +1024,46 @@ bool StdCmdPlacement::isActive(void) return (Gui::Control().activeDialog()==0); } +//=========================================================================== +// Std_Edit +//=========================================================================== +DEF_STD_CMD_A(StdCmdEdit); + +StdCmdEdit::StdCmdEdit() + :Command("Std_Edit") +{ + sGroup = QT_TR_NOOP("Edit"); + sMenuText = QT_TR_NOOP("Toggle &Editmode"); + sToolTipText = QT_TR_NOOP("Toggles the selected object's edit mode"); + sWhatsThis = "Std_Edit"; + sStatusTip = QT_TR_NOOP("Enters or leaves the selected object's edit mode"); +#if QT_VERSION >= 0x040200 + sPixmap = "edit-edit"; +#endif + eType = ForEdit; +} + +void StdCmdEdit::activated(int iMsg) +{ + Gui::MDIView* view = Gui::getMainWindow()->activeWindow(); + if (view && view->isDerivedFrom(Gui::View3DInventor::getClassTypeId())) { + Gui::View3DInventorViewer* viewer = static_cast(view)->getViewer(); + if (viewer->isEditingViewProvider()) { + doCommand(Command::Gui,"Gui.activeDocument().resetEdit()"); + } else { + if (Selection().getCompleteSelection().size() > 0) { + SelectionSingleton::SelObj obj = Selection().getCompleteSelection()[0]; + doCommand(Command::Gui,"Gui.activeDocument().setEdit(\"%s\",0)",obj.FeatName); + } + } + } +} + +bool StdCmdEdit::isActive(void) +{ + return (Selection().getCompleteSelection().size() > 0) || (Gui::Control().activeDialog() != 0); +} + namespace Gui { @@ -1054,6 +1096,7 @@ void CreateDocCommands(void) rcCmdMgr.addCommand(new StdCmdRefresh()); rcCmdMgr.addCommand(new StdCmdTransform()); rcCmdMgr.addCommand(new StdCmdPlacement()); + rcCmdMgr.addCommand(new StdCmdEdit()); } } // namespace Gui diff --git a/src/Gui/Icons/edit-edit.svg b/src/Gui/Icons/edit-edit.svg new file mode 100644 index 000000000..d63fb7ce7 --- /dev/null +++ b/src/Gui/Icons/edit-edit.svg @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/src/Gui/Icons/resource.qrc b/src/Gui/Icons/resource.qrc index 78a314d16..82548cd39 100644 --- a/src/Gui/Icons/resource.qrc +++ b/src/Gui/Icons/resource.qrc @@ -45,6 +45,7 @@ edit-select-all.svg edit-redo.svg edit-undo.svg + edit-edit.svg help-browser.svg preferences-system.svg window-new.svg diff --git a/src/Gui/Workbench.cpp b/src/Gui/Workbench.cpp index b3e1115d0..749278fb0 100644 --- a/src/Gui/Workbench.cpp +++ b/src/Gui/Workbench.cpp @@ -440,7 +440,7 @@ MenuItem* StdWorkbench::setupMenuBar() const *edit << "Std_Undo" << "Std_Redo" << "Separator" << "Std_Cut" << "Std_Copy" << "Std_Paste" << "Std_DuplicateSelection" << "Separator" << "Std_Refresh" << "Std_SelectAll" << "Std_Delete" << "Std_Placement" - << "Separator" << "Std_DlgPreferences"; + << "Std_Edit" << "Separator" << "Std_DlgPreferences"; // Standard views MenuItem* stdviews = new MenuItem; diff --git a/src/Mod/Arch/ArchAxis.py b/src/Mod/Arch/ArchAxis.py index 53b425b75..dc9cca650 100644 --- a/src/Mod/Arch/ArchAxis.py +++ b/src/Mod/Arch/ArchAxis.py @@ -340,10 +340,9 @@ class _AxisTaskPanel: self.obj.Angles = a FreeCAD.ActiveDocument.recompute() - def finish(self): + def accept(self): self.resetObject() - if self.obj: - self.obj.ViewObject.finishEditing() + FreeCADGui.ActiveDocument.resetEdit() def retranslateUi(self, TaskPanel): TaskPanel.setWindowTitle(QtGui.QApplication.translate("Arch", "Axes", None, QtGui.QApplication.UnicodeUTF8)) diff --git a/src/Mod/Arch/ArchComponent.py b/src/Mod/Arch/ArchComponent.py index 6b8b33af1..b6065fa04 100644 --- a/src/Mod/Arch/ArchComponent.py +++ b/src/Mod/Arch/ArchComponent.py @@ -222,8 +222,7 @@ class ComponentTaskPanel: def accept(self): FreeCAD.ActiveDocument.recompute() - if self.obj: - self.obj.ViewObject.finishEditing() + FreeCADGui.ActiveDocument.resetEdit() return True def editObject(self,wid,col): @@ -308,7 +307,7 @@ class ViewProviderComponent: def unsetEdit(self,vobj,mode): FreeCADGui.Control.closeDialog() - return + return False class ArchSelectionObserver: def __init__(self,origin,watched): diff --git a/src/Mod/Draft/DraftGui.py b/src/Mod/Draft/DraftGui.py index 831220e51..9d942fe14 100644 --- a/src/Mod/Draft/DraftGui.py +++ b/src/Mod/Draft/DraftGui.py @@ -147,12 +147,10 @@ class DraftTaskPanel: def getStandardButtons(self): return int(QtGui.QDialogButtonBox.Cancel) def accept(self): - if FreeCAD.activeDraftCommand: - FreeCAD.activeDraftCommand.finish() + FreeCADGui.ActiveDocument.resetEdit() return True def reject(self): - if FreeCAD.activeDraftCommand: - FreeCAD.activeDraftCommand.finish() + FreeCADGui.ActiveDocument.resetEdit() return True class DraftToolBar: