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.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
|
||||
- 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 "utils/sysSettings.h"
|
||||
#include "frm/frmExport.h"
|
||||
#include <wx/regex.h>
|
||||
|
||||
|
||||
#define EXTRAEXTENT_HEIGHT 6
|
||||
|
|
@ -55,6 +56,7 @@ ctlSQLGrid::ctlSQLGrid(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons
|
|||
//SetDefaultRenderer(new wxGridCellAutoWrapStringRenderer);
|
||||
SetDefaultRenderer(new CursorCellRenderer);
|
||||
|
||||
grp=NULL;
|
||||
|
||||
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 col = event.GetCol();
|
||||
|
||||
//SetRowLabelValue(row-1,);
|
||||
//HideRow(row);
|
||||
}
|
||||
void ctlSQLGrid::OnLabelClick(wxGridEvent &event)
|
||||
{
|
||||
int row = event.GetRow();
|
||||
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
|
||||
if ( row >= 0 && (event.ControlDown() || event.CmdDown()) )
|
||||
{
|
||||
|
|
@ -561,3 +569,87 @@ wxSize ctlSQLGrid::GetBestSize(int row, int col)
|
|||
|
||||
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;
|
||||
sqlResultTable *table = (sqlResultTable *)GetTable();
|
||||
|
||||
msg = new wxGridTableMessage(table, wxGRIDTABLE_NOTIFY_ROWS_DELETED, 0, GetNumberRows());
|
||||
ProcessTableMessage(*msg);
|
||||
delete msg;
|
||||
|
|
@ -177,6 +178,8 @@ void ctlSQLResult::DisplayData(bool single)
|
|||
*/
|
||||
wxGridTableMessage *msg;
|
||||
sqlResultTable *table = (sqlResultTable *)GetTable();
|
||||
|
||||
|
||||
msg = new wxGridTableMessage(table, wxGRIDTABLE_NOTIFY_ROWS_DELETED, 0, GetNumberRows());
|
||||
ProcessTableMessage(*msg);
|
||||
delete msg;
|
||||
|
|
@ -190,10 +193,13 @@ void ctlSQLResult::DisplayData(bool single)
|
|||
ProcessTableMessage(*msg);
|
||||
delete msg;
|
||||
if (NumRows()<1000) {
|
||||
wxGridCellAttr* pAttr = new wxGridCellAttr;
|
||||
pAttr->SetBackgroundColour(wxColour(224,255,224));
|
||||
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)
|
||||
|
|
@ -201,6 +207,12 @@ void ctlSQLResult::DisplayData(bool single)
|
|||
colNames.Add(thread->DataSet()->ColName(0));
|
||||
colTypes.Add(wxT(""));
|
||||
colTypClasses.Add(0L);
|
||||
wxString c=thread->DataSet()->ColName(0);
|
||||
if (c==wxT("QUERY PLAN")) {
|
||||
//
|
||||
isplan=true;
|
||||
FullArrayCollapseRowsPlan();
|
||||
}
|
||||
|
||||
AutoSizeColumn(0, false, false);
|
||||
}
|
||||
|
|
@ -215,7 +227,6 @@ void ctlSQLResult::DisplayData(bool single)
|
|||
colNames.Add(thread->DataSet()->ColName(col));
|
||||
colTypes.Add(thread->DataSet()->ColFullType(col));
|
||||
colTypClasses.Add(thread->DataSet()->ColTypClass(col));
|
||||
|
||||
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) ) ||
|
||||
!( (!full&&GetItemText(id).Lower().StartsWith(prefix)) ||
|
||||
(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) ) ||
|
||||
!((!full&&GetItemText(id).Lower().StartsWith(prefix)) ||
|
||||
(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());
|
||||
if (!isProcedure)
|
||||
{
|
||||
cbReturntype->Append(function->GetReturnType());
|
||||
cbReturntype->SetValue(function->GetReturnType());
|
||||
cbReturntype->SetSelection(0);
|
||||
//cbReturntype->SetValue(function->GetReturnType());
|
||||
}
|
||||
|
||||
cbLanguage->SetValue(function->GetLanguage());
|
||||
cbVolatility->SetValue(function->GetVolatility());
|
||||
|
|
|
|||
|
|
@ -258,7 +258,13 @@ wxString textEscapeXml(wxString &text)
|
|||
wxString xmltext=wxEmptyString;
|
||||
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;
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
// wxWindows headers
|
||||
#include <wx/grid.h>
|
||||
|
||||
class GroupRows;
|
||||
|
||||
class ctlSQLGrid : public wxGrid
|
||||
{
|
||||
|
|
@ -34,14 +35,17 @@ public:
|
|||
virtual bool CheckRowPresent(int row)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
};
|
||||
wxSize GetBestSize(int row, int col);
|
||||
void OnLabelDoubleClick(wxGridEvent &event);
|
||||
void OnLabelClick(wxGridEvent &event);
|
||||
void OnCellRightClick(wxGridEvent &event);
|
||||
|
||||
bool FullArrayCollapseRowsPlan();
|
||||
void AutoSizeColumn(int col, bool setAsMin = false, bool doLimit = true);
|
||||
void AutoSizeColumns(bool setAsMin);
|
||||
wxString GetRowLabelValue( int row );
|
||||
void SetRowGroup(int row);
|
||||
GroupRows *grp;
|
||||
|
||||
WX_DECLARE_STRING_HASH_MAP( int, ColKeySizeHashMap );
|
||||
|
||||
|
|
@ -61,6 +65,115 @@ private:
|
|||
ColKeySizeHashMap colSizes;
|
||||
// Max size for each column
|
||||
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
|
||||
|
|
|
|||
|
|
@ -77,9 +77,10 @@ private:
|
|||
pgQueryThread *thread;
|
||||
pgConn *conn;
|
||||
bool rowcountSuppressed;
|
||||
bool isplan;
|
||||
};
|
||||
|
||||
class sqlResultTable : public wxGridTableBase
|
||||
class sqlResultTable : public wxGridStringTable//wxGridTableBase
|
||||
{
|
||||
public:
|
||||
sqlResultTable();
|
||||
|
|
|
|||
|
|
@ -284,7 +284,7 @@ void pgproJob::ShowStatistics(frmMain *form, ctlListView *statistics)
|
|||
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())+
|
||||
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);
|
||||
wxString critical;
|
||||
|
|
|
|||
|
|
@ -142,7 +142,7 @@
|
|||
<cols>1</cols>
|
||||
<vgap>5</vgap>
|
||||
<hgap>5</hgap>
|
||||
<growablerows>0,1,2</growablerows>
|
||||
<growablerows>0</growablerows>
|
||||
<growablecols>0</growablecols>
|
||||
<object class="sizeritem">
|
||||
<object class="wxPanel" name="pnlDefinitionComposite">
|
||||
|
|
|
|||
|
|
@ -196,7 +196,6 @@
|
|||
<vgap>2</vgap>
|
||||
<hgap>1</hgap>
|
||||
<growablecols>1</growablecols>
|
||||
<growablerows>1</growablerows>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem">
|
||||
|
|
@ -253,7 +252,6 @@
|
|||
<flag>wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
|
||||
<border>4</border>
|
||||
</object>
|
||||
<growablerows>3</growablerows>
|
||||
</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