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
|
//////////////////////////////////////////////////////////////////////////
//
// pgAdmin III - PostgreSQL Tools
//
// Copyright (C) 2002 - 2014, 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));
// 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();
}
|