pgadmin3/include/schema/pgRule.h
2020-07-07 22:19:12 +05:00

183 lines
3.5 KiB
C++

//////////////////////////////////////////////////////////////////////////
//
// pgAdmin III - PostgreSQL Tools
//
// Copyright (C) 2002 - 2016, The pgAdmin Development Team
// This software is released under the PostgreSQL Licence
//
// pgRule.h PostgreSQL Rule
//
//////////////////////////////////////////////////////////////////////////
#ifndef PGRULE_H
#define PGRULE_H
#include "pgSchema.h"
class pgRuleObject : public pgSchemaObject
{
public:
pgRuleObject(pgSchema *newSchema, pgaFactory &factory, const wxString &newName = wxEmptyString) : pgSchemaObject(newSchema, factory, newName) {}
wxString GetFormattedDefinition();
wxString GetDefinition() const
{
return definition;
}
void iSetDefinition(const wxString &s)
{
definition = s;
}
protected:
wxString definition;
};
//////////////////////////////////////////////////////////7
class pgRuleFactory : public pgSchemaObjFactory
{
public:
pgRuleFactory();
virtual dlgProperty *CreateDialog(frmMain *frame, pgObject *node, pgObject *parent);
virtual pgObject *CreateObjects(pgCollection *obj, ctlTree *browser, const wxString &restr = wxEmptyString);
virtual pgCollection *CreateCollection(pgObject *obj);
int GetClosedIconId()
{
return closedId;
}
protected:
int closedId;
};
extern pgRuleFactory ruleFactory;
class pgRule : public pgRuleObject
{
public:
pgRule(pgSchema *newSchema, const wxString &newName = wxT(""));
~pgRule();
int GetIconId();
wxString GetTranslatedMessage(int kindOfMessage) const;
void ShowTreeDetail(ctlTree *browser, frmMain *form = 0, ctlListView *properties = 0, ctlSQLBox *sqlPane = 0);
bool CanDropCascaded()
{
return GetSchema()->GetMetaType() != PGM_CATALOG;
}
wxString GetEvent() const
{
return event;
}
void iSetEvent(const wxString &s)
{
event = s;
}
wxString GetCondition() const
{
return condition;
}
void iSetCondition(const wxString &s)
{
condition = s;
}
wxString GetAction() const
{
return action;
}
void iSetAction(const wxString &s)
{
action = s;
}
bool GetDoInstead() const
{
return doInstead;
}
void iSetDoInstead(const bool b)
{
doInstead = b;
}
bool GetEnabled() const
{
return enabled;
}
void SetEnabled(ctlTree *browser, const bool b);
void iSetEnabled(const bool b)
{
enabled = b;
}
wxString GetQuotedFullTable() const
{
return quotedFullTable;
}
void iSetQuotedFullTable(const wxString &s)
{
quotedFullTable = s;
}
void iSetParentIsTable(const bool b)
{
parentistable = b;
}
bool GetParentIsTable()
{
return parentistable;
}
bool GetSystemObject() const
{
return GetName() == wxT("_RETURN");
}
bool CanDrop()
{
return !GetSystemObject() && GetSchema()->CanDrop();
}
bool CanCreate()
{
return GetSchema()->CanCreate();
}
bool DropObject(wxFrame *frame, ctlTree *browser, bool cascaded);
wxString GetSql(ctlTree *browser);
pgObject *Refresh(ctlTree *browser, const wxTreeItemId item);
bool HasStats()
{
return false;
}
bool HasDepends()
{
return true;
}
bool HasReferences()
{
return true;
}
private:
wxString event, condition, action, quotedFullTable;
bool doInstead, enabled, parentistable;
};
class pgRuleCollection : public pgSchemaObjCollection
{
public:
pgRuleCollection(pgaFactory *factory, pgSchema *sch);
wxString GetTranslatedMessage(int kindOfMessage) const;
};
class enabledisableRuleFactory : public contextActionFactory
{
public:
enabledisableRuleFactory(menuFactoryList *list, wxMenu *mnu, ctlMenuToolbar *toolbar);
wxWindow *StartDialog(frmMain *form, pgObject *obj);
bool CheckEnable(pgObject *obj);
bool CheckChecked(pgObject *obj);
};
#endif