copy / paste object - preliminary part
Started by Vladimir Kokovicalmost 15 years ago1 messages
Hi,
I did a preliminary part of the functions for copy / paste object and now
I expect confirmation that the implementation is correct.
Changed files:
frm/frmMain.cpp, nclude/frm/frmMain.h
New files:
frm/frmPasteObject.cpp, include/frm/frmPasteObject.h
Best regards,
Vladimir Kokovic, DP senior, Belgrade, Serbia
Attachments:
pgadmin3.diffapplication/octet-stream; name=pgadmin3.diffDownload
diff -r -u pgadmin3-original/pgadmin/frm/frmMain.cpp pgadmin3/pgadmin/frm/frmMain.cpp
--- pgadmin3-original/pgadmin/frm/frmMain.cpp 2011-03-16 16:43:41.000000000 +0100
+++ pgadmin3/pgadmin/frm/frmMain.cpp 2011-03-22 14:39:34.000000000 +0100
@@ -77,6 +77,7 @@
#include "slony/slCluster.h"
#include "slony/slSet.h"
#include "schema/pgForeignKey.h"
+#include "frm/frmPasteObject.h"
#if wxDIALOG_UNIT_COMPATIBILITY
@@ -357,6 +358,10 @@
new reassignDropOwnedFactory(menuFactories, editMenu, 0);
editMenu->AppendSeparator();
+ new copyObjectFactory(menuFactories, editMenu, 0);
+ new pasteObjectFactory(menuFactories, editMenu, 0);
+ editMenu->AppendSeparator();
+
new separatorFactory(menuFactories);
toolBar->AddSeparator();
@@ -1369,3 +1374,62 @@
DisplayHelp(wxT("bugreport"), HELP_PGADMIN);
return 0;
}
+
+copyObjectFactory::copyObjectFactory(menuFactoryList *list, wxMenu *mnu, ctlMenuToolbar *toolbar) : contextActionFactory(list)
+{
+ mnu->Append(id, _("&Copy object..."), _("Store object reference for later paste"));
+}
+
+
+wxWindow *copyObjectFactory::StartDialog(frmMain *form, pgObject *obj)
+{
+ form->SetCopytObject(obj);
+ return 0;
+}
+
+
+bool copyObjectFactory::CheckEnable(pgObject *obj)
+{
+ if (!obj)
+ return false;
+
+ if (obj->GetConnection()) {
+ pgTable *table = dynamic_cast<pgTable *>(obj);
+ if (table)
+ return true;
+ pgSchema *schema = dynamic_cast<pgSchema *>(obj);
+ if (schema)
+ return true;
+ }
+ return false;
+}
+
+pasteObjectFactory::pasteObjectFactory(menuFactoryList *list, wxMenu *mnu, ctlMenuToolbar *toolbar) : contextActionFactory(list)
+{
+ mnu->Append(id, _("&Paste object..."), _("Paste object"));
+}
+
+
+wxWindow *pasteObjectFactory::StartDialog(frmMain *form, pgObject *obj)
+{
+ pgObject *copyobj = form->GetCopytObject();
+ if (copyobj) {
+ frmPasteObject *frm = new frmPasteObject(form, copyobj, obj);
+ frm->process();
+ }
+ return 0;
+}
+
+
+bool pasteObjectFactory::CheckEnable(pgObject *obj)
+{
+ if (!obj)
+ return false;
+
+ if (obj->GetConnection()) {
+ pgSchema *schema = dynamic_cast<pgSchema *>(obj);
+ if (schema)
+ return true;
+ }
+ return false;
+}
diff -r -u pgadmin3-original/pgadmin/frm/module.mk pgadmin3/pgadmin/frm/module.mk
--- pgadmin3-original/pgadmin/frm/module.mk 2011-03-12 15:54:17.000000000 +0100
+++ pgadmin3/pgadmin/frm/module.mk 2011-03-22 14:48:51.000000000 +0100
@@ -32,7 +32,8 @@
$(srcdir)/frm/frmRestore.cpp \
$(srcdir)/frm/frmSplash.cpp \
$(srcdir)/frm/frmStatus.cpp \
- $(srcdir)/frm/plugins.cpp
+ $(srcdir)/frm/plugins.cpp \
+ $(srcdir)/frm/frmPasteObject.cpp
EXTRA_DIST += \
$(srcdir)/frm/module.mk
diff -r -u pgadmin3-original/pgadmin/include/frm/frmMain.h pgadmin3/pgadmin/include/frm/frmMain.h
--- pgadmin3-original/pgadmin/include/frm/frmMain.h 2011-03-12 15:54:18.000000000 +0100
+++ pgadmin3/pgadmin/include/frm/frmMain.h 2011-03-22 09:56:50.000000000 +0100
@@ -146,6 +146,14 @@
return pluginsMenu;
}
+ pgObject *GetCopytObject() {
+ return copytObject;
+ }
+
+ void SetCopytObject(pgObject *obj) {
+ copytObject = obj;
+ }
+
wxString GetCurrentNodePath();
bool SetCurrentNode(wxTreeItemId node, const wxString &path);
@@ -185,6 +193,8 @@
pgObject *currentObject;
wxControl *currentControl;
+ pgObject *copytObject;
+
void OnChildFocus(wxChildFocusEvent &event);
void OnEraseBackground(wxEraseEvent &event);
void OnSize(wxSizeEvent &event);
@@ -335,4 +345,20 @@
bool enableButton;
};
+class copyObjectFactory : public contextActionFactory
+{
+public:
+ copyObjectFactory(menuFactoryList *list, wxMenu *mnu, ctlMenuToolbar *toolbar);
+ wxWindow *StartDialog(frmMain *form, pgObject *obj);
+ bool CheckEnable(pgObject *obj);
+};
+
+class pasteObjectFactory : public contextActionFactory
+{
+public:
+ pasteObjectFactory(menuFactoryList *list, wxMenu *mnu, ctlMenuToolbar *toolbar);
+ wxWindow *StartDialog(frmMain *form, pgObject *obj);
+ bool CheckEnable(pgObject *obj);
+};
+
#endif