File: frmReport.h

package info (click to toggle)
pgadmin3 1.20.0~beta2-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 73,704 kB
  • ctags: 18,591
  • sloc: cpp: 193,786; ansic: 18,736; sh: 5,154; pascal: 1,120; yacc: 927; makefile: 516; lex: 421; xml: 126; perl: 40
file content (168 lines) | stat: -rw-r--r-- 5,597 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
//////////////////////////////////////////////////////////////////////////
//
// pgAdmin III - PostgreSQL Tools
//
// Copyright (C) 2002 - 2014, The pgAdmin Development Team
// This software is released under the PostgreSQL Licence
//
// frmReport.h - The report file dialogue
//
//////////////////////////////////////////////////////////////////////////

#ifndef FRMREPORT_H
#define FRMREPORT_H

#include "dlg/dlgClasses.h"
#include "ctl/ctlListView.h"
#include "ctl/ctlSQLResult.h"

// Class declarations
class frmReport : public pgDialog
{
public:
	frmReport(wxWindow *p);
	~frmReport();

	void SetReportTitle(const wxString &t);

	void XmlAddHeaderValue(const wxString &name, const wxString &value);
	int XmlCreateSection(const wxString &name);
	void XmlSetSectionTableHeader(const int section, const int columns, const wxChar *name, ...);
	void XmlAddSectionTableRow(const int section, const int number, const int columns, const wxChar *value, ...);
	void XmlAddSectionTableFromListView(const int section, ctlListView *list);
	void XmlAddSectionTableFromGrid(const int section, ctlSQLResult *grid);
	void XmlSetSectionTableInfo(const int section, const wxString &info)
	{
		sectionTableInfo[section - 1] = info;
	};
	void XmlSetSectionSql(int section, const wxString &sql);
	void XmlAddSectionValue(const int section, const wxString &name, const wxString &value);

private:
	void OnChange(wxCommandEvent &ev);
	void OnHelp(wxCommandEvent &ev);
	void OnOK(wxCommandEvent &ev);
	void OnCancel(wxCommandEvent &ev);
	void OnBrowseFile(wxCommandEvent &ev);
	void OnBrowseStylesheet(wxCommandEvent &ev);

	wxString GetSectionTableColumns(const int section);
	wxString GetSectionTableRows(const int section);
	wxString GetSectionTable(const int section);
	wxString GetSection(const int section);
	wxString GetXmlReport(const wxString &stylesheet);
	wxString XslProcessReport(const wxString &xml, const wxString &xsl);

	wxString GetCssLink(const wxString &file);
	wxString GetEmbeddedCss(const wxString &css);
	const wxString GetDefaultCss();
	wxString GetDefaultXsl(const wxString &css);

	wxWindow *parent;
	wxString header;
	wxArrayString sectionName, sectionData, sectionTableHeader, sectionTableRows, sectionTableInfo, sectionSql;

	DECLARE_EVENT_TABLE()
};

///////////////////////////////////////////////////////
// Report Factory base class
///////////////////////////////////////////////////////
class reportBaseFactory : public actionFactory
{
protected:
	reportBaseFactory(menuFactoryList *list) : actionFactory(list) {}
	wxWindow *StartDialog(frmMain *form, pgObject *obj);
	frmMain *GetFrmMain()
	{
		return parent;
	};
	virtual void GenerateReport(frmReport *report, pgObject *object) {};

	frmMain *parent;
public:
	bool CheckEnable(pgObject *obj)
	{
		return false;
	};
};


///////////////////////////////////////////////////////
// Object properties report
///////////////////////////////////////////////////////
class reportObjectPropertiesFactory : public reportBaseFactory
{
public:
	reportObjectPropertiesFactory(menuFactoryList *list, wxMenu *mnu, ctlMenuToolbar *toolbar);
	bool CheckEnable(pgObject *obj);
	void GenerateReport(frmReport *report, pgObject *object);
};

///////////////////////////////////////////////////////
// Object DDL report
///////////////////////////////////////////////////////
class reportObjectDdlFactory : public reportBaseFactory
{
public:
	reportObjectDdlFactory(menuFactoryList *list, wxMenu *mnu, ctlMenuToolbar *toolbar);
	bool CheckEnable(pgObject *obj);
	void GenerateReport(frmReport *report, pgObject *object);
};

///////////////////////////////////////////////////////
// Object Data dictionary report
///////////////////////////////////////////////////////
class reportObjectDataDictionaryFactory : public reportBaseFactory
{
public:
	reportObjectDataDictionaryFactory(menuFactoryList *list, wxMenu *mnu, ctlMenuToolbar *toolbar);
	bool CheckEnable(pgObject *obj);
	void GenerateReport(frmReport *report, pgObject *object);
};

///////////////////////////////////////////////////////
// Object statistics report
///////////////////////////////////////////////////////
class reportObjectStatisticsFactory : public reportBaseFactory
{
public:
	reportObjectStatisticsFactory(menuFactoryList *list, wxMenu *mnu, ctlMenuToolbar *toolbar);
	bool CheckEnable(pgObject *obj);
	void GenerateReport(frmReport *report, pgObject *object);
};

///////////////////////////////////////////////////////
// Object dependencies report
///////////////////////////////////////////////////////
class reportObjectDependenciesFactory : public reportBaseFactory
{
public:
	reportObjectDependenciesFactory(menuFactoryList *list, wxMenu *mnu, ctlMenuToolbar *toolbar);
	bool CheckEnable(pgObject *obj);
	void GenerateReport(frmReport *report, pgObject *object);
};

///////////////////////////////////////////////////////
// Object Dependents report
///////////////////////////////////////////////////////
class reportObjectDependentsFactory : public reportBaseFactory
{
public:
	reportObjectDependentsFactory(menuFactoryList *list, wxMenu *mnu, ctlMenuToolbar *toolbar);
	bool CheckEnable(pgObject *obj);
	void GenerateReport(frmReport *report, pgObject *object);
};

///////////////////////////////////////////////////////
// Object list report
///////////////////////////////////////////////////////
class reportObjectListFactory : public reportBaseFactory
{
public:
	reportObjectListFactory(menuFactoryList *list, wxMenu *mnu, ctlMenuToolbar *toolbar);
	bool CheckEnable(pgObject *obj);
	void GenerateReport(frmReport *report, pgObject *object);
};

#endif