mirror of
https://github.com/levinsv/pgadmin3.git
synced 2026-05-15 06:05:49 -06:00
100 lines
2.4 KiB
C++
100 lines
2.4 KiB
C++
//////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// pgAdmin III - PostgreSQL Tools
|
|
//
|
|
// Copyright (C) 2002 - 2016, The pgAdmin Development Team
|
|
// This software is released under the PostgreSQL Licence
|
|
//
|
|
// ctlResultGrid.cpp - debugger
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
#include "pgAdmin3.h"
|
|
|
|
// wxWindows headers
|
|
#include <wx/wx.h>
|
|
|
|
// App headers
|
|
#include "debugger/ctlResultGrid.h"
|
|
|
|
IMPLEMENT_CLASS( ctlResultGrid, wxGrid )
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
// ctlResultGrid constructor
|
|
//
|
|
// We use a ctlResultGrid to display the result set from a query. This class
|
|
// is a minor extension of the wxGrid class.
|
|
|
|
ctlResultGrid::ctlResultGrid( wxWindow *parent, wxWindowID id )
|
|
: wxGrid( parent, id )
|
|
{
|
|
SetFont(settings->GetSystemFont());
|
|
|
|
CreateGrid( 0, 0 );
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
// fillGrid()
|
|
//
|
|
// Given a result set handle, this function copies the values in that result
|
|
// set into the grid.
|
|
|
|
void ctlResultGrid::FillResult(pgSet *set)
|
|
{
|
|
// Clear out the old results (if any) and resize
|
|
// grid to match the result set
|
|
if( GetNumberRows())
|
|
DeleteRows( 0, GetNumberRows());
|
|
if( GetNumberCols())
|
|
DeleteCols( 0, GetNumberCols());
|
|
|
|
if (!set)
|
|
return;
|
|
|
|
int rowCount = set->NumRows();
|
|
int colCount = set->NumCols();
|
|
|
|
// If this PGresult represents a non-query command
|
|
// (like an INSERT), there won't be any columns in
|
|
// the result set - just return
|
|
if( colCount == 0 )
|
|
return;
|
|
|
|
// Disable repaints to we don't flicker too much
|
|
|
|
BeginBatch();
|
|
|
|
AppendRows(rowCount);
|
|
AppendCols(colCount);
|
|
|
|
EnableEditing(false);
|
|
|
|
// Copy the column names from the result set into the column headers
|
|
int row = 0,
|
|
col;
|
|
for(col = 0; col < colCount; ++col)
|
|
SetColLabelValue(col, set->ColName(col));
|
|
wxGridCellAttr* pAttr = new wxGridCellAttr;
|
|
pAttr->SetBackgroundColour(wxColour(128,128,128));
|
|
//SetDefaultCellBackgroundColour(wxColour(128,128,128));
|
|
|
|
// Now copy each value from the result set into the grid
|
|
while(!set->Eof())
|
|
{
|
|
for(col = 0; col < colCount; ++col)
|
|
{
|
|
if(set->IsNull(col))
|
|
SetCellValue(row, col, wxT(""));
|
|
else
|
|
SetCellValue(row, col, set->GetVal(col));
|
|
}
|
|
row++;
|
|
set->MoveNext();
|
|
}
|
|
|
|
// Resize each column to fit its content
|
|
AutoSizeColumns(false);
|
|
|
|
// Enable repaints
|
|
EndBatch();
|
|
}
|