Skip to content

Commit

Permalink
Merge branch 'master' of ssh://git.code.sf.net/p/free-cad/code
Browse files Browse the repository at this point in the history
  • Loading branch information
wwmayer committed Jan 16, 2014
2 parents 0869815 + 0972be8 commit 0575915
Show file tree
Hide file tree
Showing 14 changed files with 1,601 additions and 30 deletions.
1 change: 1 addition & 0 deletions src/Gui/Action.cpp
Expand Up @@ -296,6 +296,7 @@ int ActionGroup::checkedAction() const
void ActionGroup::setCheckedAction(int i)
{
_group->actions()[i]->setChecked(true);
this->setIcon(_group->actions()[i]->icon());
}

/**
Expand Down
142 changes: 130 additions & 12 deletions src/Gui/CommandView.cpp
Expand Up @@ -31,6 +31,7 @@
# include <QFile>
# include <QMessageBox>
# include <QTextStream>
# include <boost/bind.hpp>
#endif

#include "Command.h"
Expand Down Expand Up @@ -524,7 +525,22 @@ bool StdCmdToggleClipPlane::isActive(void)
#endif
}

DEF_STD_CMD_ACL(StdCmdDrawStyle);
//===========================================================================
// StdCmdDrawStyle
//===========================================================================
class StdCmdDrawStyle : public Gui::Command
{
public:
StdCmdDrawStyle();
virtual ~StdCmdDrawStyle(){}
virtual void languageChange();
virtual const char* className() const {return "StdCmdDrawStyle";}
void updateIcon(const Gui::MDIView* view);
protected:
virtual void activated(int iMsg);
virtual bool isActive(void);
virtual Gui::Action * createAction(void);
};

StdCmdDrawStyle::StdCmdDrawStyle()
: Command("Std_DrawStyle")
Expand All @@ -533,7 +549,10 @@ StdCmdDrawStyle::StdCmdDrawStyle()
sMenuText = QT_TR_NOOP("Draw style");
sToolTipText = QT_TR_NOOP("Draw style");
sStatusTip = QT_TR_NOOP("Draw style");
sPixmap = "DrawStyleAsIs";
eType = Alter3DView;

this->getGuiApplication()->signalActivateView.connect(boost::bind(&StdCmdDrawStyle::updateIcon, this, _1));
}

Gui::Action * StdCmdDrawStyle::createAction(void)
Expand All @@ -542,8 +561,24 @@ Gui::Action * StdCmdDrawStyle::createAction(void)
pcAction->setDropDownMenu(true);
applyCommandData(pcAction);

pcAction->addAction(QString());
pcAction->addAction(QString());
QAction* a0 = pcAction->addAction(QString());
a0->setCheckable(true);
a0->setIcon(BitmapFactory().pixmap("DrawStyleAsIs"));
a0->setChecked(true);
QAction* a1 = pcAction->addAction(QString());
a1->setCheckable(true);
a1->setIcon(BitmapFactory().pixmap("DrawStyleFlatLines"));
QAction* a2 = pcAction->addAction(QString());
a2->setCheckable(true);
a2->setIcon(BitmapFactory().pixmap("DrawStyleShaded"));
QAction* a3 = pcAction->addAction(QString());
a3->setCheckable(true);
a3->setIcon(BitmapFactory().pixmap("DrawStyleWireFrame"));
QAction* a4 = pcAction->addAction(QString());
a4->setCheckable(true);
a4->setIcon(BitmapFactory().pixmap("DrawStylePoints"));
pcAction->setIcon(a0->icon());

_pcAction = pcAction;
languageChange();
return pcAction;
Expand All @@ -566,23 +601,106 @@ void StdCmdDrawStyle::languageChange()
QCoreApplication::CodecForTr));

a[1]->setText(QCoreApplication::translate(
"Std_DrawStyle", "Wireframe", 0,
"Std_DrawStyle", "Flat lines", 0,
QCoreApplication::CodecForTr));
a[1]->setToolTip(QCoreApplication::translate(
"Std_DrawStyle", "Flat lines mode", 0,
QCoreApplication::CodecForTr));

a[2]->setText(QCoreApplication::translate(
"Std_DrawStyle", "Shaded", 0,
QCoreApplication::CodecForTr));
a[2]->setToolTip(QCoreApplication::translate(
"Std_DrawStyle", "Shaded mode", 0,
QCoreApplication::CodecForTr));

a[3]->setText(QCoreApplication::translate(
"Std_DrawStyle", "Wireframe", 0,
QCoreApplication::CodecForTr));
a[3]->setToolTip(QCoreApplication::translate(
"Std_DrawStyle", "Wireframe mode", 0,
QCoreApplication::CodecForTr));

a[4]->setText(QCoreApplication::translate(
"Std_DrawStyle", "Points", 0,
QCoreApplication::CodecForTr));
a[4]->setToolTip(QCoreApplication::translate(
"Std_DrawStyle", "Points mode", 0,
QCoreApplication::CodecForTr));
}

void StdCmdDrawStyle::updateIcon(const MDIView *view)
{
const Gui::View3DInventor *view3d = dynamic_cast<const Gui::View3DInventor *>(view);
if (!view3d)
return;
Gui::View3DInventorViewer *viewer = view3d->getViewer();
if (!viewer)
return;
std::string mode(viewer->getOverrideMode());
Gui::ActionGroup *actionGroup = dynamic_cast<Gui::ActionGroup *>(_pcAction);
if (!actionGroup)
return;

if (mode == "Flat Lines")
{
actionGroup->setCheckedAction(1);
return;
}
if (mode == "Shaded")
{
actionGroup->setCheckedAction(2);
return;
}
if (mode == "Wireframe")
{
actionGroup->setCheckedAction(3);
return;
}
if (mode == "Point")
{
actionGroup->setCheckedAction(4);
return;
}
actionGroup->setCheckedAction(0);
}

void StdCmdDrawStyle::activated(int iMsg)
{
View3DInventor* view = qobject_cast<View3DInventor*>(getMainWindow()->activeWindow());
if (view) {
SoQtViewer::DrawStyle style = SoQtViewer::VIEW_AS_IS;
if (iMsg == 0)
style = SoQtViewer::VIEW_AS_IS;
else if (iMsg == 1)
style = SoQtViewer::VIEW_LINE;
view->getViewer()->setDrawStyle(SoQtViewer::STILL, style);
Gui::Document *doc = this->getActiveGuiDocument();
std::list<MDIView*> views = doc->getMDIViews();
std::list<MDIView*>::iterator viewIt;
bool oneChangedSignal(false);
for (viewIt = views.begin(); viewIt != views.end(); viewIt++)
{
View3DInventor* view = qobject_cast<View3DInventor*>(*viewIt);
if (view)
{
View3DInventorViewer* viewer;
viewer = view->getViewer();
if (viewer)
{
switch (iMsg)
{
case 1:
(oneChangedSignal) ? viewer->updateOverrideMode("Flat Lines") : viewer->setOverrideMode("Flat Lines");
break;
case 2:
(oneChangedSignal) ? viewer->updateOverrideMode("Shaded") : viewer->setOverrideMode("Shaded");
break;
case 3:
(oneChangedSignal) ? viewer->updateOverrideMode("Wireframe") : viewer->setOverrideMode("Wireframe");
break;
case 4:
(oneChangedSignal) ? viewer->updateOverrideMode("Point") : viewer->setOverrideMode("Point");
break;
default:
(oneChangedSignal) ? viewer->updateOverrideMode("As Is") : viewer->setOverrideMode("As Is");
break;
}
oneChangedSignal = true;
}
}
}
}

Expand Down
13 changes: 13 additions & 0 deletions src/Gui/Document.cpp
Expand Up @@ -893,6 +893,19 @@ void Document::createView(const char* sType)
{
View3DInventor* view3D = new View3DInventor(this, getMainWindow());

//get first view override mode and copy
std::list<MDIView*> theViews = this->getMDIViews();
std::list<MDIView*>::iterator viewIt;
for (viewIt = theViews.begin(); viewIt != theViews.end(); ++viewIt)
{
View3DInventor *tempView = dynamic_cast<View3DInventor *>(*viewIt);
if (!tempView)
continue;
std::string overrideMode = tempView->getViewer()->getOverrideMode();
view3D->getViewer()->setOverrideMode(overrideMode);
break;
}

// attach the viewprovider
std::map<const App::DocumentObject*,ViewProviderDocumentObject*>::const_iterator It1;
for (It1=d->_ViewProviderMap.begin();It1!=d->_ViewProviderMap.end();++It1)
Expand Down

0 comments on commit 0575915

Please sign in to comment.