#include "XGUI_ErrorMgr.h"
#include "XGUI_OperationMgr.h"
+#include "XGUI_ModuleConnector.h"
+#include "XGUI_Workshop.h"
+#include "XGUI_ActionsMgr.h"
#include <ModuleBase_IPropertyPanel.h>
+#include <ModuleBase_IWorkshop.h>
+#include <ModuleBase_IModule.h>
#include <ModuleBase_ModelWidget.h>
#include <ModuleBase_OperationFeature.h>
const QString INVALID_VALUE = "invalid_action";
-XGUI_ErrorMgr::XGUI_ErrorMgr(QObject* theParent /*= 0*/)
+XGUI_ErrorMgr::XGUI_ErrorMgr(QObject* theParent, ModuleBase_IWorkshop* theWorkshop)
: ModuleBase_IErrorMgr(theParent),
myErrorDialog(0),
- myErrorLabel(0)
+ myErrorLabel(0),
+ myWorkshop(theWorkshop)
{
}
}
-bool XGUI_ErrorMgr::canProcessClick(QAction* theAction, const FeaturePtr& theFeature)
+void XGUI_ErrorMgr::updateActions(const FeaturePtr& theFeature)
{
- QString aData = theAction->data().toString();
+ QString anError = myWorkshop->module()->getFeatureError(theFeature);
- bool isActionEnabled = theAction->data() != INVALID_VALUE;
+ //update Ok Action and header of property panel if the current operation started for the feature
+ XGUI_ActionsMgr* anActionsMgr = workshop()->actionsMgr();
+ ModuleBase_OperationFeature* aFOperation = dynamic_cast<ModuleBase_OperationFeature*>
+ (workshop()->operationMgr()->currentOperation());
+ if (aFOperation && aFOperation->feature() == theFeature) {
+ QAction* anOkAction = anActionsMgr->operationStateAction(XGUI_ActionsMgr::Accept);
+ updateActionState(anOkAction, theFeature);
+ }
+}
- QString anError = getFeatureError(theFeature);
+void XGUI_ErrorMgr::updateAcceptAllAction(const FeaturePtr& theFeature)
+{
+ QString anError = myWorkshop->module()->getFeatureError(theFeature);
+
+ XGUI_ActionsMgr* anActionsMgr = workshop()->actionsMgr();
+ if (workshop()->isFeatureOfNested(theFeature)) {
+ QAction* anAcceptAllAction = anActionsMgr->operationStateAction(XGUI_ActionsMgr::AcceptAll, NULL);
+ bool anEnabled = anError.isEmpty();
+ anAcceptAllAction->setEnabled(anEnabled);
+ anAcceptAllAction->setToolTip(anError);
+ }
+}
+
+bool XGUI_ErrorMgr::canProcessClick(QAction* theAction, const FeaturePtr& theFeature)
+{
+ QString anError = myWorkshop->module()->getFeatureError(theFeature);
+ bool isActionEnabled = anError.isEmpty();
if (!isActionEnabled && !anError.isEmpty()) {
if (!myErrorDialog) {
myErrorDialog = new QDialog(QApplication::desktop(), Qt::Popup);
return isActionEnabled;
}
-void XGUI_ErrorMgr::updateActionState(QAction* theAction, const FeaturePtr& theFeature,
- const bool theEnabled)
+void XGUI_ErrorMgr::updateActionState(QAction* theAction, const FeaturePtr& theFeature/*,
+ const bool theEnabled*/)
{
- bool isActionEnabled = theAction->data() != INVALID_VALUE;
- if (theEnabled == isActionEnabled)
- return;
+ QString anError = myWorkshop->module()->getFeatureError(theFeature);
+ bool anEnabled = anError.isEmpty();
- theAction->setIcon(theEnabled ? QIcon(":pictures/button_ok.png"): QIcon(":pictures/button_ok_error.png"));
- QWidget* aWidget = myPropertyPanel->headerWidget();
- if (theEnabled) {
- theAction->setData("");
- aWidget->setToolTip("");
+ bool isActionEnabled = theAction->data() != INVALID_VALUE;
+ if (anEnabled != isActionEnabled) {
+ // update enable state of the button
+ theAction->setIcon(anEnabled ? QIcon(":pictures/button_ok.png"): QIcon(":pictures/button_ok_error.png"));
+ if (anEnabled)
+ theAction->setData("");
+ else
+ theAction->setData(INVALID_VALUE);
}
- else {
- theAction->setData(INVALID_VALUE);
- aWidget->setToolTip(getFeatureError(theFeature));
+ // some operations have no property panel, so it is important to check that it is not null
+ if (myPropertyPanel) {
+ // update controls error information
+ QWidget* aWidget = myPropertyPanel->headerWidget();
+ if (aWidget)
+ aWidget->setToolTip(anError);
}
}
-const char* toString(ModelAPI_ExecState theExecState)
+/*const char* toString(ModelAPI_ExecState theExecState)
{
#define TO_STRING(__NAME__) case __NAME__: return #__NAME__;
switch (theExecState) {
default: return "Unknown ExecState.";
}
#undef TO_STRING
-}
+}*/
/*void XGUI_ErrorMgr::onValidationStateChanged()
{
}
}*/
-QString XGUI_ErrorMgr::getFeatureError(const FeaturePtr& theFeature) const
+/*QString XGUI_ErrorMgr::getFeatureError(const FeaturePtr& theFeature) const
{
QString anError;
// get feature
}
return anError;
-}
+}*/
void XGUI_ErrorMgr::onWidgetChanged()
{
//aWidget->setStyleSheet(anError.isEmpty() ? "" : "background-color:pink;");
}
}
+
+XGUI_Workshop* XGUI_ErrorMgr::workshop() const
+{
+ XGUI_ModuleConnector* aConnector = dynamic_cast<XGUI_ModuleConnector*>(myWorkshop);
+ return aConnector->workshop();
+}