mirror of
https://github.com/levinsv/pgadmin3.git
synced 2026-05-15 14:15:49 -06:00
wxWidgets 3.0
add plan view unexpand/expand
This commit is contained in:
parent
8cb8ff6af8
commit
2d9e76f826
34 changed files with 1259 additions and 1003 deletions
16
.gitignore
vendored
16
.gitignore
vendored
|
|
@ -20,3 +20,19 @@ Release/hist.log
|
||||||
Release/1.sql
|
Release/1.sql
|
||||||
Release/1.xml
|
Release/1.xml
|
||||||
Release/33.xml
|
Release/33.xml
|
||||||
|
Release_(3.0)/pgAdmin3.Build.CppClean.log
|
||||||
|
Release_(3.0)/pgAdmin3.ilk
|
||||||
|
Release_(3.0)/pgAdmin3.log
|
||||||
|
Release_(3.0)/pgAdmin3.map
|
||||||
|
Release_(3.0)/pgAdmin3.pch
|
||||||
|
Release_(3.0)/pgAdmin3.pdb
|
||||||
|
Release_(3.0)/pgAdmin3.res
|
||||||
|
Release_(3.0)/vc110.pdb
|
||||||
|
Release_(3.0)/Win32/libssh2/vc110.pdb
|
||||||
|
Release_(3.0)/x64/libssh2/vc110.pdb
|
||||||
|
Release_(3.0)/pgAdmin3.lastbuildstate
|
||||||
|
Release_(3.0)/hist.log
|
||||||
|
Release_(3.0)/pgAdmin3.exe.*
|
||||||
|
Release_(3.0)/*.pdb
|
||||||
|
Release_(3.0)/*.rc
|
||||||
|
*.pdb
|
||||||
|
|
|
||||||
|
|
@ -46,3 +46,9 @@ This text Russian language.
|
||||||
09.12.2018
|
09.12.2018
|
||||||
- autocomplite: добавлены имена функций, и возможность подставлять имена колонок таблиц из поля FROM
|
- autocomplite: добавлены имена функций, и возможность подставлять имена колонок таблиц из поля FROM
|
||||||
- при наборе имени функции появляется перечень параметров этой функции
|
- при наборе имени функции появляется перечень параметров этой функции
|
||||||
|
28.12.2010
|
||||||
|
- выполнен переход на wxWidgets 3.0 версия exe файла будет находиться Release_(3.0)
|
||||||
|
- в текстовом представлении плана можно сворачивать узлы
|
||||||
|
- построении плана с замерами в заголовках строк указывается процент времени выполнения узла (только операции узла но не вложенных узлов)
|
||||||
|
-
|
||||||
|
|
||||||
|
|
|
||||||
BIN
Release_(3.0)/libeay32.dll
Normal file
BIN
Release_(3.0)/libeay32.dll
Normal file
Binary file not shown.
BIN
Release_(3.0)/libiconv-2.dll
Normal file
BIN
Release_(3.0)/libiconv-2.dll
Normal file
Binary file not shown.
BIN
Release_(3.0)/libiconv.dll
Normal file
BIN
Release_(3.0)/libiconv.dll
Normal file
Binary file not shown.
BIN
Release_(3.0)/libintl-8.dll
Normal file
BIN
Release_(3.0)/libintl-8.dll
Normal file
Binary file not shown.
BIN
Release_(3.0)/libintl.dll
Normal file
BIN
Release_(3.0)/libintl.dll
Normal file
Binary file not shown.
BIN
Release_(3.0)/libpq.dll
Normal file
BIN
Release_(3.0)/libpq.dll
Normal file
Binary file not shown.
BIN
Release_(3.0)/libxml2.dll
Normal file
BIN
Release_(3.0)/libxml2.dll
Normal file
Binary file not shown.
BIN
Release_(3.0)/libxslt.dll
Normal file
BIN
Release_(3.0)/libxslt.dll
Normal file
Binary file not shown.
BIN
Release_(3.0)/pgAdmin3.exe
Normal file
BIN
Release_(3.0)/pgAdmin3.exe
Normal file
Binary file not shown.
BIN
Release_(3.0)/ssleay32.dll
Normal file
BIN
Release_(3.0)/ssleay32.dll
Normal file
Binary file not shown.
BIN
Release_(3.0)/wxbase30u_net_vc_custom.dll
Normal file
BIN
Release_(3.0)/wxbase30u_net_vc_custom.dll
Normal file
Binary file not shown.
BIN
Release_(3.0)/wxbase30u_vc_custom.dll
Normal file
BIN
Release_(3.0)/wxbase30u_vc_custom.dll
Normal file
Binary file not shown.
BIN
Release_(3.0)/wxbase30u_xml_vc_custom.dll
Normal file
BIN
Release_(3.0)/wxbase30u_xml_vc_custom.dll
Normal file
Binary file not shown.
BIN
Release_(3.0)/wxmsw30u_adv_vc_custom.dll
Normal file
BIN
Release_(3.0)/wxmsw30u_adv_vc_custom.dll
Normal file
Binary file not shown.
BIN
Release_(3.0)/wxmsw30u_aui_vc_custom.dll
Normal file
BIN
Release_(3.0)/wxmsw30u_aui_vc_custom.dll
Normal file
Binary file not shown.
BIN
Release_(3.0)/wxmsw30u_core_vc_custom.dll
Normal file
BIN
Release_(3.0)/wxmsw30u_core_vc_custom.dll
Normal file
Binary file not shown.
BIN
Release_(3.0)/wxmsw30u_html_vc_custom.dll
Normal file
BIN
Release_(3.0)/wxmsw30u_html_vc_custom.dll
Normal file
Binary file not shown.
BIN
Release_(3.0)/wxmsw30u_stc_vc_custom.dll
Normal file
BIN
Release_(3.0)/wxmsw30u_stc_vc_custom.dll
Normal file
Binary file not shown.
BIN
Release_(3.0)/wxmsw30u_xrc_vc_custom.dll
Normal file
BIN
Release_(3.0)/wxmsw30u_xrc_vc_custom.dll
Normal file
Binary file not shown.
|
|
@ -19,6 +19,7 @@
|
||||||
#include "ctl/ctlSQLGrid.h"
|
#include "ctl/ctlSQLGrid.h"
|
||||||
#include "utils/sysSettings.h"
|
#include "utils/sysSettings.h"
|
||||||
#include "frm/frmExport.h"
|
#include "frm/frmExport.h"
|
||||||
|
#include <wx/regex.h>
|
||||||
|
|
||||||
|
|
||||||
#define EXTRAEXTENT_HEIGHT 6
|
#define EXTRAEXTENT_HEIGHT 6
|
||||||
|
|
@ -55,6 +56,7 @@ ctlSQLGrid::ctlSQLGrid(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons
|
||||||
//SetDefaultRenderer(new wxGridCellAutoWrapStringRenderer);
|
//SetDefaultRenderer(new wxGridCellAutoWrapStringRenderer);
|
||||||
SetDefaultRenderer(new CursorCellRenderer);
|
SetDefaultRenderer(new CursorCellRenderer);
|
||||||
|
|
||||||
|
grp=NULL;
|
||||||
|
|
||||||
Connect(wxID_ANY, wxEVT_GRID_LABEL_LEFT_DCLICK, wxGridEventHandler(ctlSQLGrid::OnLabelDoubleClick));
|
Connect(wxID_ANY, wxEVT_GRID_LABEL_LEFT_DCLICK, wxGridEventHandler(ctlSQLGrid::OnLabelDoubleClick));
|
||||||
}
|
}
|
||||||
|
|
@ -400,12 +402,18 @@ void ctlSQLGrid::OnLabelDoubleClick(wxGridEvent &event)
|
||||||
{
|
{
|
||||||
int row = event.GetRow();
|
int row = event.GetRow();
|
||||||
int col = event.GetCol();
|
int col = event.GetCol();
|
||||||
|
|
||||||
|
//SetRowLabelValue(row-1,);
|
||||||
|
//HideRow(row);
|
||||||
}
|
}
|
||||||
void ctlSQLGrid::OnLabelClick(wxGridEvent &event)
|
void ctlSQLGrid::OnLabelClick(wxGridEvent &event)
|
||||||
{
|
{
|
||||||
int row = event.GetRow();
|
int row = event.GetRow();
|
||||||
int col = event.GetCol();
|
int col = event.GetCol();
|
||||||
|
if (row >= 0 && grp) {
|
||||||
|
grp->VisibleGroup(row,GetRowSize(row+1)==0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
// add support for (de)selecting multiple rows and cols with Control pressed
|
// add support for (de)selecting multiple rows and cols with Control pressed
|
||||||
if ( row >= 0 && (event.ControlDown() || event.CmdDown()) )
|
if ( row >= 0 && (event.ControlDown() || event.CmdDown()) )
|
||||||
{
|
{
|
||||||
|
|
@ -561,3 +569,87 @@ wxSize ctlSQLGrid::GetBestSize(int row, int col)
|
||||||
|
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int recurse(ctlSQLGrid *g, int pos,int row, double &transfer) {
|
||||||
|
wxString text;
|
||||||
|
double leveltime=0; //actual time level
|
||||||
|
double lastnode=0;
|
||||||
|
while (row<g->GetNumberRows()) {
|
||||||
|
text = g->GetCellValue(row, 0);
|
||||||
|
int p=0;
|
||||||
|
while (text.at(p)==' ' )
|
||||||
|
{
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
if (p==pos) {
|
||||||
|
//
|
||||||
|
lastnode=0;
|
||||||
|
if (text.at(p)=='-') {
|
||||||
|
// ïîñ÷èòàåì âðåìÿ ðàáîòû óçëà
|
||||||
|
double m=1;
|
||||||
|
// -> Nested Loop (cost=205.13..273.44 rows=4 width=188) (actual time=13.157..13.157 rows=0 loops=1)
|
||||||
|
wxRegEx foundstr(wxT("actual time=.*?\\.\\.([0-9.]+).*?loops=([0-9]+)"),wxRE_ADVANCED);
|
||||||
|
if (foundstr.Matches(text)) {
|
||||||
|
wxString v=foundstr.GetMatch(text,1);
|
||||||
|
v.ToCDouble(&lastnode);
|
||||||
|
v=foundstr.GetMatch(text,2);
|
||||||
|
v.ToDouble(&m);
|
||||||
|
lastnode=lastnode*m;
|
||||||
|
leveltime=leveltime+lastnode;
|
||||||
|
}
|
||||||
|
g->grp->ColoriseRow(row,wxColour(248,240,130));
|
||||||
|
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
g->grp->ColoriseRow(row,wxColour(224,255,224));
|
||||||
|
g->GetTable()->SetRowLabelValue(row,wxEmptyString);
|
||||||
|
}
|
||||||
|
row++;
|
||||||
|
continue;
|
||||||
|
} if (p<pos) {
|
||||||
|
// end level
|
||||||
|
// leveltime ñîäåðæèò âðåìÿ ñóìàððíîå âðåìÿ ðàáîòû óçëîâ ýòîãî óðîâíÿ
|
||||||
|
transfer=leveltime;
|
||||||
|
return row;
|
||||||
|
} if (p>pos) {
|
||||||
|
// nested level
|
||||||
|
//g->SetRowGroup(row-1);
|
||||||
|
wxString s;
|
||||||
|
int newrow=recurse(g,p,row,transfer);
|
||||||
|
//
|
||||||
|
//leveltime=leveltime+transfer;
|
||||||
|
//GroupRows *u=g->getgroup();
|
||||||
|
g->grp->AddGroup(row-1,newrow-1,lastnode-transfer);
|
||||||
|
s << (lastnode-transfer) ;
|
||||||
|
s=s+wxT("-");
|
||||||
|
g->GetTable()->SetRowLabelValue(row-1,s);
|
||||||
|
|
||||||
|
row=newrow;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return row;
|
||||||
|
}
|
||||||
|
void ctlSQLGrid::SetRowGroup(int row) { };
|
||||||
|
bool ctlSQLGrid::FullArrayCollapseRowsPlan()
|
||||||
|
{
|
||||||
|
//wxString colKey = wxString::Format(wxT("%d:"), col) + GetColLabelValue(col);
|
||||||
|
wxString text;
|
||||||
|
//for(int row = 0; row < GetNumberRows(); ++row)
|
||||||
|
if (grp) { delete grp;}
|
||||||
|
grp = new GroupRows(this);
|
||||||
|
double transfersum=0;
|
||||||
|
int r= recurse(this,0,0,transfersum);
|
||||||
|
grp->CalcTime();
|
||||||
|
//for(int row = 0; row < GetNumberRows(); ++row) {
|
||||||
|
// text = GetCellValue(row, 0);
|
||||||
|
// //if (row%2==0) SetRowAttr(row,pAttr);
|
||||||
|
|
||||||
|
//}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -111,6 +111,7 @@ int ctlSQLResult::Execute(const wxString &query, int resultToRetrieve, wxWindow
|
||||||
{
|
{
|
||||||
wxGridTableMessage *msg;
|
wxGridTableMessage *msg;
|
||||||
sqlResultTable *table = (sqlResultTable *)GetTable();
|
sqlResultTable *table = (sqlResultTable *)GetTable();
|
||||||
|
|
||||||
msg = new wxGridTableMessage(table, wxGRIDTABLE_NOTIFY_ROWS_DELETED, 0, GetNumberRows());
|
msg = new wxGridTableMessage(table, wxGRIDTABLE_NOTIFY_ROWS_DELETED, 0, GetNumberRows());
|
||||||
ProcessTableMessage(*msg);
|
ProcessTableMessage(*msg);
|
||||||
delete msg;
|
delete msg;
|
||||||
|
|
@ -177,6 +178,8 @@ void ctlSQLResult::DisplayData(bool single)
|
||||||
*/
|
*/
|
||||||
wxGridTableMessage *msg;
|
wxGridTableMessage *msg;
|
||||||
sqlResultTable *table = (sqlResultTable *)GetTable();
|
sqlResultTable *table = (sqlResultTable *)GetTable();
|
||||||
|
|
||||||
|
|
||||||
msg = new wxGridTableMessage(table, wxGRIDTABLE_NOTIFY_ROWS_DELETED, 0, GetNumberRows());
|
msg = new wxGridTableMessage(table, wxGRIDTABLE_NOTIFY_ROWS_DELETED, 0, GetNumberRows());
|
||||||
ProcessTableMessage(*msg);
|
ProcessTableMessage(*msg);
|
||||||
delete msg;
|
delete msg;
|
||||||
|
|
@ -190,10 +193,13 @@ void ctlSQLResult::DisplayData(bool single)
|
||||||
ProcessTableMessage(*msg);
|
ProcessTableMessage(*msg);
|
||||||
delete msg;
|
delete msg;
|
||||||
if (NumRows()<1000) {
|
if (NumRows()<1000) {
|
||||||
wxGridCellAttr* pAttr = new wxGridCellAttr;
|
|
||||||
pAttr->SetBackgroundColour(wxColour(224,255,224));
|
|
||||||
for(int row = 0; row < NumRows(); ++row) {
|
for(int row = 0; row < NumRows(); ++row) {
|
||||||
if (row%2==0) SetRowAttr(row,pAttr);
|
if (row%2==0) {
|
||||||
|
wxGridCellAttr* pAttr = new wxGridCellAttr;
|
||||||
|
pAttr->SetBackgroundColour(wxColour(224,255,224));
|
||||||
|
SetRowAttr(row,pAttr);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (single)
|
if (single)
|
||||||
|
|
@ -201,6 +207,12 @@ void ctlSQLResult::DisplayData(bool single)
|
||||||
colNames.Add(thread->DataSet()->ColName(0));
|
colNames.Add(thread->DataSet()->ColName(0));
|
||||||
colTypes.Add(wxT(""));
|
colTypes.Add(wxT(""));
|
||||||
colTypClasses.Add(0L);
|
colTypClasses.Add(0L);
|
||||||
|
wxString c=thread->DataSet()->ColName(0);
|
||||||
|
if (c==wxT("QUERY PLAN")) {
|
||||||
|
//
|
||||||
|
isplan=true;
|
||||||
|
FullArrayCollapseRowsPlan();
|
||||||
|
}
|
||||||
|
|
||||||
AutoSizeColumn(0, false, false);
|
AutoSizeColumn(0, false, false);
|
||||||
}
|
}
|
||||||
|
|
@ -215,7 +227,6 @@ void ctlSQLResult::DisplayData(bool single)
|
||||||
colNames.Add(thread->DataSet()->ColName(col));
|
colNames.Add(thread->DataSet()->ColName(col));
|
||||||
colTypes.Add(thread->DataSet()->ColFullType(col));
|
colTypes.Add(thread->DataSet()->ColFullType(col));
|
||||||
colTypClasses.Add(thread->DataSet()->ColTypClass(col));
|
colTypClasses.Add(thread->DataSet()->ColTypClass(col));
|
||||||
|
|
||||||
if (thread->DataSet()->ColTypClass(col) == PGTYPCLASS_NUMERIC)
|
if (thread->DataSet()->ColTypClass(col) == PGTYPCLASS_NUMERIC)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
|
|
@ -63,7 +63,7 @@ wxTreeItemId ctlTree::FindItem(const wxTreeItemId &idParent, const wxString &pre
|
||||||
( ( GetItemText(id) == wxT("Dummy") && !GetItemData(id) ) ||
|
( ( GetItemText(id) == wxT("Dummy") && !GetItemData(id) ) ||
|
||||||
!( (!full&&GetItemText(id).Lower().StartsWith(prefix)) ||
|
!( (!full&&GetItemText(id).Lower().StartsWith(prefix)) ||
|
||||||
(full && //GetItemText(id).Lower().StartsWith(prefix) && GetItemText(id).length()==le)
|
(full && //GetItemText(id).Lower().StartsWith(prefix) && GetItemText(id).length()==le)
|
||||||
GetObject(id)->GetName()==prefix )
|
GetObject(id)!=NULL&&GetObject(id)->GetName()==prefix )
|
||||||
)
|
)
|
||||||
))
|
))
|
||||||
{
|
{
|
||||||
|
|
@ -116,7 +116,7 @@ wxTreeItemId ctlTree::FindItem(const wxTreeItemId &idParent, const wxString &pre
|
||||||
(( GetItemText(id) == wxT("Dummy") && !GetItemData(id) ) ||
|
(( GetItemText(id) == wxT("Dummy") && !GetItemData(id) ) ||
|
||||||
!((!full&&GetItemText(id).Lower().StartsWith(prefix)) ||
|
!((!full&&GetItemText(id).Lower().StartsWith(prefix)) ||
|
||||||
(full && //GetItemText(id).Lower().StartsWith(prefix) && GetItemText(id).length()==le)
|
(full && //GetItemText(id).Lower().StartsWith(prefix) && GetItemText(id).length()==le)
|
||||||
GetObject(id)->GetName()==prefix )
|
GetObject(id)!=NULL&&GetObject(id)->GetName()==prefix )
|
||||||
)
|
)
|
||||||
))
|
))
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -340,8 +340,12 @@ int dlgFunction::Go(bool modal)
|
||||||
}
|
}
|
||||||
|
|
||||||
txtArguments->SetValue(function->GetArgListWithNames());
|
txtArguments->SetValue(function->GetArgListWithNames());
|
||||||
|
if (!isProcedure)
|
||||||
|
{
|
||||||
cbReturntype->Append(function->GetReturnType());
|
cbReturntype->Append(function->GetReturnType());
|
||||||
cbReturntype->SetValue(function->GetReturnType());
|
cbReturntype->SetSelection(0);
|
||||||
|
//cbReturntype->SetValue(function->GetReturnType());
|
||||||
|
}
|
||||||
|
|
||||||
cbLanguage->SetValue(function->GetLanguage());
|
cbLanguage->SetValue(function->GetLanguage());
|
||||||
cbVolatility->SetValue(function->GetVolatility());
|
cbVolatility->SetValue(function->GetVolatility());
|
||||||
|
|
|
||||||
|
|
@ -258,7 +258,13 @@ wxString textEscapeXml(wxString &text)
|
||||||
wxString xmltext=wxEmptyString;
|
wxString xmltext=wxEmptyString;
|
||||||
for ( i = text.begin(); i != text.end(); ++i )
|
for ( i = text.begin(); i != text.end(); ++i )
|
||||||
{
|
{
|
||||||
switch (*i) {
|
#if wxCHECK_VERSION(3, 0, 0)
|
||||||
|
char c=*i;
|
||||||
|
switch (c)
|
||||||
|
#else
|
||||||
|
switch (*i)
|
||||||
|
#endif
|
||||||
|
{
|
||||||
case '&': xmltext+= wxT("&"); break;
|
case '&': xmltext+= wxT("&"); break;
|
||||||
case '\'': xmltext+= wxT("'"); break;
|
case '\'': xmltext+= wxT("'"); break;
|
||||||
case '"': xmltext+= wxT("""); break;
|
case '"': xmltext+= wxT("""); break;
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@
|
||||||
// wxWindows headers
|
// wxWindows headers
|
||||||
#include <wx/grid.h>
|
#include <wx/grid.h>
|
||||||
|
|
||||||
|
class GroupRows;
|
||||||
|
|
||||||
class ctlSQLGrid : public wxGrid
|
class ctlSQLGrid : public wxGrid
|
||||||
{
|
{
|
||||||
|
|
@ -34,20 +35,23 @@ public:
|
||||||
virtual bool CheckRowPresent(int row)
|
virtual bool CheckRowPresent(int row)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
};
|
||||||
wxSize GetBestSize(int row, int col);
|
wxSize GetBestSize(int row, int col);
|
||||||
void OnLabelDoubleClick(wxGridEvent &event);
|
void OnLabelDoubleClick(wxGridEvent &event);
|
||||||
void OnLabelClick(wxGridEvent &event);
|
void OnLabelClick(wxGridEvent &event);
|
||||||
void OnCellRightClick(wxGridEvent &event);
|
void OnCellRightClick(wxGridEvent &event);
|
||||||
|
bool FullArrayCollapseRowsPlan();
|
||||||
void AutoSizeColumn(int col, bool setAsMin = false, bool doLimit = true);
|
void AutoSizeColumn(int col, bool setAsMin = false, bool doLimit = true);
|
||||||
void AutoSizeColumns(bool setAsMin);
|
void AutoSizeColumns(bool setAsMin);
|
||||||
|
wxString GetRowLabelValue( int row );
|
||||||
|
void SetRowGroup(int row);
|
||||||
|
GroupRows *grp;
|
||||||
|
|
||||||
WX_DECLARE_STRING_HASH_MAP( int, ColKeySizeHashMap );
|
WX_DECLARE_STRING_HASH_MAP( int, ColKeySizeHashMap );
|
||||||
|
|
||||||
DECLARE_DYNAMIC_CLASS(ctlSQLGrid)
|
DECLARE_DYNAMIC_CLASS(ctlSQLGrid)
|
||||||
DECLARE_EVENT_TABLE()
|
DECLARE_EVENT_TABLE()
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void OnCopy(wxCommandEvent &event);
|
void OnCopy(wxCommandEvent &event);
|
||||||
void OnMouseWheel(wxMouseEvent &event);
|
void OnMouseWheel(wxMouseEvent &event);
|
||||||
|
|
@ -61,6 +65,115 @@ private:
|
||||||
ColKeySizeHashMap colSizes;
|
ColKeySizeHashMap colSizes;
|
||||||
// Max size for each column
|
// Max size for each column
|
||||||
wxArrayInt colMaxSizes;
|
wxArrayInt colMaxSizes;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
class GroupRows
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
GroupRows( ctlSQLGrid *grid) {
|
||||||
|
g=grid;
|
||||||
|
rowsGroup.Clear();
|
||||||
|
rowsGroup.Add(0,g->GetNumberRows());
|
||||||
|
end.Clear();
|
||||||
|
end.Add(-1,g->GetNumberRows());
|
||||||
|
run.Clear();
|
||||||
|
run.Add(0.0,g->GetNumberRows());
|
||||||
|
};
|
||||||
|
void AddGroup( int rowgroup, int lastrowgroup, double actualtime) {
|
||||||
|
// default group open
|
||||||
|
rowsGroup[rowgroup]=-rowgroup;
|
||||||
|
//beg[rowgroup]=rowgroup;
|
||||||
|
wxASSERT(lastrowgroup>end.Count()," out of bounds");
|
||||||
|
end[rowgroup]=lastrowgroup;
|
||||||
|
run[rowgroup]=actualtime;
|
||||||
|
};
|
||||||
|
void VisibleGroup(int row, bool visible) {
|
||||||
|
int endg=end[row];
|
||||||
|
int grp=IsGroupRow(row);
|
||||||
|
int gg;
|
||||||
|
int r=row+1;
|
||||||
|
if (grp!=0) {
|
||||||
|
|
||||||
|
if (!visible) {
|
||||||
|
// hide group
|
||||||
|
rowsGroup[row]*=-1;
|
||||||
|
for(int i=r;i<(endg+1);i++) {
|
||||||
|
g->HideRow(i);
|
||||||
|
}
|
||||||
|
wxGridCellAttr* pAttrg = new wxGridCellAttr;
|
||||||
|
pAttrg->SetBackgroundColour(wxColour(200,191,232));
|
||||||
|
g->SetRowAttr(row,pAttrg);
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
// show group
|
||||||
|
rowsGroup[row]*=-1;
|
||||||
|
int sizerow=g->GetDefaultRowSize();
|
||||||
|
//pAttr->SetBackgroundColour(wxColour(0,162,232));
|
||||||
|
wxGridCellAttr* pAttrg = new wxGridCellAttr;
|
||||||
|
pAttrg->SetBackgroundColour(wxColour(248,240,130));
|
||||||
|
g->SetRowAttr(row,pAttrg);
|
||||||
|
for(int i=r;i<(endg+1);i++) {
|
||||||
|
gg=IsGroupRow(i);
|
||||||
|
if (gg<=0) {
|
||||||
|
g->SetRowSize(i,sizerow);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
g->SetRowSize(i,sizerow);
|
||||||
|
i=end[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
// 0 - no group, -int - open group ,+int - close gruop
|
||||||
|
int IsGroupRow(int row) {
|
||||||
|
if (end[row]!=-1) {
|
||||||
|
// is group
|
||||||
|
return rowsGroup[row];
|
||||||
|
} else return 0;
|
||||||
|
};
|
||||||
|
void ColoriseRow(int row,const wxColour& color) {
|
||||||
|
//g->GetTable()->SetRowLabelValue(row-1,s);
|
||||||
|
wxGridCellAttr* pAttr = new wxGridCellAttr;
|
||||||
|
pAttr->SetBackgroundColour(color);
|
||||||
|
g->SetRowAttr(row,pAttr);
|
||||||
|
};
|
||||||
|
void CalcTime() {
|
||||||
|
//g->GetTable()->SetRowLabelValue(row-1,s);
|
||||||
|
double sum=0;
|
||||||
|
double total=1;
|
||||||
|
for(int i=0;i<run.Count();i++) {
|
||||||
|
double t=run[i];
|
||||||
|
if (i==0) {
|
||||||
|
total=abs(t);
|
||||||
|
g->GetTable()->SetRowLabelValue(i,"100");
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
wxString str;
|
||||||
|
if (total==0||t==0) {
|
||||||
|
str="";
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
|
||||||
|
t=(t/total)*100;
|
||||||
|
str.Printf(wxT("%5.2f"), t);
|
||||||
|
}
|
||||||
|
g->GetTable()->SetRowLabelValue(i,str);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
private:
|
||||||
|
ctlSQLGrid *g;
|
||||||
|
wxArrayInt rowsGroup, end;
|
||||||
|
wxArrayDouble run;
|
||||||
};
|
};
|
||||||
|
|
||||||
class CursorCellRenderer : public wxGridCellStringRenderer
|
class CursorCellRenderer : public wxGridCellStringRenderer
|
||||||
|
|
|
||||||
|
|
@ -77,9 +77,10 @@ private:
|
||||||
pgQueryThread *thread;
|
pgQueryThread *thread;
|
||||||
pgConn *conn;
|
pgConn *conn;
|
||||||
bool rowcountSuppressed;
|
bool rowcountSuppressed;
|
||||||
|
bool isplan;
|
||||||
};
|
};
|
||||||
|
|
||||||
class sqlResultTable : public wxGridTableBase
|
class sqlResultTable : public wxGridStringTable//wxGridTableBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
sqlResultTable();
|
sqlResultTable();
|
||||||
|
|
|
||||||
|
|
@ -284,7 +284,7 @@ void pgproJob::ShowStatistics(frmMain *form, ctlListView *statistics)
|
||||||
if (wxDTend.IsEmpty()) wxDTend=DateToAnsiStr(wxDateTime::Now());
|
if (wxDTend.IsEmpty()) wxDTend=DateToAnsiStr(wxDateTime::Now());
|
||||||
sql=wxT("select log_time,detail critical,message,application_name from pg_log l where l.log_time>'") + DateToAnsiStr(GetStarted())+
|
sql=wxT("select log_time,detail critical,message,application_name from pg_log l where l.log_time>'") + DateToAnsiStr(GetStarted())+
|
||||||
wxT("'::timestamp - interval '1min' and l.log_time<='")+ wxDTend +
|
wxT("'::timestamp - interval '1min' and l.log_time<='")+ wxDTend +
|
||||||
wxT("'::timestamp and hint='")+GetTryName()+wxT("'");
|
wxT("'::timestamp + interval '1min' and hint='")+GetTryName()+wxT("'");
|
||||||
|
|
||||||
pgSet *stats = GetConnection()->ExecuteSet(sql);
|
pgSet *stats = GetConnection()->ExecuteSet(sql);
|
||||||
wxString critical;
|
wxString critical;
|
||||||
|
|
|
||||||
|
|
@ -142,7 +142,7 @@
|
||||||
<cols>1</cols>
|
<cols>1</cols>
|
||||||
<vgap>5</vgap>
|
<vgap>5</vgap>
|
||||||
<hgap>5</hgap>
|
<hgap>5</hgap>
|
||||||
<growablerows>0,1,2</growablerows>
|
<growablerows>0</growablerows>
|
||||||
<growablecols>0</growablecols>
|
<growablecols>0</growablecols>
|
||||||
<object class="sizeritem">
|
<object class="sizeritem">
|
||||||
<object class="wxPanel" name="pnlDefinitionComposite">
|
<object class="wxPanel" name="pnlDefinitionComposite">
|
||||||
|
|
|
||||||
|
|
@ -196,7 +196,6 @@
|
||||||
<vgap>2</vgap>
|
<vgap>2</vgap>
|
||||||
<hgap>1</hgap>
|
<hgap>1</hgap>
|
||||||
<growablecols>1</growablecols>
|
<growablecols>1</growablecols>
|
||||||
<growablerows>1</growablerows>
|
|
||||||
</object>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
<object class="sizeritem">
|
<object class="sizeritem">
|
||||||
|
|
@ -253,7 +252,6 @@
|
||||||
<flag>wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
|
<flag>wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
|
||||||
<border>4</border>
|
<border>4</border>
|
||||||
</object>
|
</object>
|
||||||
<growablerows>3</growablerows>
|
|
||||||
</object>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
|
|
|
||||||
13
ui/embed-xrc_v3.bat
Normal file
13
ui/embed-xrc_v3.bat
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
@echo off
|
||||||
|
REM #######################################################################
|
||||||
|
REM #
|
||||||
|
REM # pgAdmin III - PostgreSQL Tools
|
||||||
|
REM # Copyright (C) 2002 - 2016, The pgAdmin Development Team
|
||||||
|
REM # This software is released under the PostgreSQL Licence
|
||||||
|
REM #
|
||||||
|
REM # embed-xrc.bat - convert xrc files to c++ files
|
||||||
|
REM #
|
||||||
|
REM #######################################################################
|
||||||
|
|
||||||
|
"D:\PostgreSQL\pgadmin3\pgadmin\Debug_(3.0)\wxrc.exe" -c -o xrcDialogs.cpp *.xrc
|
||||||
|
|
||||||
1966
ui/xrcDialogs.cpp
1966
ui/xrcDialogs.cpp
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue