From 58313b085305fd607e6fa5f74cbeb4d85ba8b74f Mon Sep 17 00:00:00 2001 From: jriegel Date: Sun, 11 Mar 2012 23:59:00 +0100 Subject: [PATCH] implementing commands --- src/Mod/Assembly/Gui/AppAssemblyGuiPy.cpp | 2 +- src/Mod/Assembly/Gui/Command.cpp | 25 ++++++++++++++++--- src/Mod/Assembly/Gui/ViewProviderAssembly.cpp | 8 ++++++ src/Mod/Assembly/Gui/ViewProviderAssembly.h | 2 ++ src/Mod/Assembly/Gui/Workbench.cpp | 22 ++++++++-------- 5 files changed, 44 insertions(+), 15 deletions(-) diff --git a/src/Mod/Assembly/Gui/AppAssemblyGuiPy.cpp b/src/Mod/Assembly/Gui/AppAssemblyGuiPy.cpp index f2218e0b3..de412629a 100644 --- a/src/Mod/Assembly/Gui/AppAssemblyGuiPy.cpp +++ b/src/Mod/Assembly/Gui/AppAssemblyGuiPy.cpp @@ -62,7 +62,7 @@ static PyObject * setActiveAssembly(PyObject *self, PyObject *args) ActiveAsmObject = Item; ActiveGuiDoc = Gui::Application::Instance->getDocument(Item->getDocument()); ActiveVp = dynamic_cast (ActiveGuiDoc->getViewProvider(Item)) ; - ActiveGuiDoc->signalHighlightObject(*ActiveVp,Gui::Blue); + ActiveGuiDoc->signalHighlightObject(*ActiveVp,Gui::Underlined); }else{ ActiveGuiDoc->signalHighlightObject(*ActiveVp,Gui::None); diff --git a/src/Mod/Assembly/Gui/Command.cpp b/src/Mod/Assembly/Gui/Command.cpp index 453d6f7b6..eaee42af0 100644 --- a/src/Mod/Assembly/Gui/Command.cpp +++ b/src/Mod/Assembly/Gui/Command.cpp @@ -23,16 +23,21 @@ #include "PreCompiled.h" #ifndef _PreComp_ +# include #endif #include #include #include #include +#include + +#include using namespace std; +extern Assembly::Item *ActiveAsmObject; //=========================================================================== @@ -78,9 +83,23 @@ CmdAssemblyAddNewComponent::CmdAssemblyAddNewComponent() void CmdAssemblyAddNewComponent::activated(int iMsg) { - // load the file with the module - //Command::doCommand(Command::Gui, "import Assembly, AssemblyGui"); - + Assembly::ItemAssembly *dest = 0; + + unsigned int n = getSelection().countObjectsOfType(Assembly::ItemAssembly::getClassTypeId()); + if (n >= 1) { + std::vector Sel = getSelection().getObjectsOfType(Assembly::ItemAssembly::getClassTypeId()); + dest = dynamic_cast(Sel.front()); + }else if(ActiveAsmObject && ActiveAsmObject->getTypeId().isDerivedFrom(Assembly::ItemAssembly::getClassTypeId())) { + dest = dynamic_cast(ActiveAsmObject); + } + + openCommand("Insert Component"); + std::string CompName = getUniqueObjectName("Product"); + doCommand(Doc,"App.activeDocument().addObject('Assembly::ItemAssembly','%s')",CompName.c_str()); + if(dest){ + std::string fatherName = dest->getNameInDocument(); + doCommand(Doc,"App.activeDocument().%s.Items = App.activeDocument().%s.Items + [App.activeDocument().%s] ",fatherName.c_str(),fatherName.c_str(),CompName.c_str()); + } } //=========================================================================== diff --git a/src/Mod/Assembly/Gui/ViewProviderAssembly.cpp b/src/Mod/Assembly/Gui/ViewProviderAssembly.cpp index 13a2794bb..74a475d9f 100644 --- a/src/Mod/Assembly/Gui/ViewProviderAssembly.cpp +++ b/src/Mod/Assembly/Gui/ViewProviderAssembly.cpp @@ -30,6 +30,8 @@ #include #include +#include + using namespace AssemblyGui; PROPERTY_SOURCE(AssemblyGui::ViewProviderItemAssembly,AssemblyGui::ViewProviderItem) @@ -49,3 +51,9 @@ bool ViewProviderItemAssembly::doubleClicked(void) } +std::vector ViewProviderItemAssembly::claimChildren(void)const +{ + + return static_cast(getObject())->Items.getValues(); + +} diff --git a/src/Mod/Assembly/Gui/ViewProviderAssembly.h b/src/Mod/Assembly/Gui/ViewProviderAssembly.h index 3fff1a9ba..747b28ee8 100644 --- a/src/Mod/Assembly/Gui/ViewProviderAssembly.h +++ b/src/Mod/Assembly/Gui/ViewProviderAssembly.h @@ -41,6 +41,8 @@ public: virtual bool doubleClicked(void); + virtual std::vector claimChildren(void)const; + }; diff --git a/src/Mod/Assembly/Gui/Workbench.cpp b/src/Mod/Assembly/Gui/Workbench.cpp index ec04ec9dc..d0032a087 100644 --- a/src/Mod/Assembly/Gui/Workbench.cpp +++ b/src/Mod/Assembly/Gui/Workbench.cpp @@ -107,20 +107,20 @@ void Workbench::activated() addTaskWatcher(Watcher); Gui::Control().showTaskView(); - App::Document *doc = App::GetApplication().getActiveDocument(); - if(!doc){ - // create a new document + //App::Document *doc = App::GetApplication().getActiveDocument(); + //if(!doc){ + // // create a new document - Gui::Command::doCommand(Gui::Command::Doc,"App.newDocument()"); - doc = App::GetApplication().getActiveDocument(); + // Gui::Command::doCommand(Gui::Command::Doc,"App.newDocument()"); + // doc = App::GetApplication().getActiveDocument(); - } - // now we should have a document! - assert(doc); + //} + //// now we should have a document! + //assert(doc); - if(doc->countObjects()==0){ - Gui::Command::doCommand(Gui::Command::Doc,"App.activeDocument().addObject('Assembly::ItemAssembly','Product')"); - } + //if(doc->countObjects()==0){ + // Gui::Command::doCommand(Gui::Command::Doc,"App.activeDocument().addObject('Assembly::ItemAssembly','Product')"); + //} }