30
30
wxWindowID CTL_NTBKPANELS = ::wxNewId();
32
gqbController::gqbController(gqbModel *_model, wxWindow *gqbParent, wxNotebook *gridParent, wxSize size=wxSize(GQB_MIN_WIDTH, GQB_MIN_HEIGHT))
32
gqbController::gqbController(gqbModel *_model, wxWindow *gqbParent, ctlAuiNotebook *gridParent, wxSize size = wxSize(GQB_MIN_WIDTH, GQB_MIN_HEIGHT))
37
wxSize tablesBrowserSize = wxSize(200,800); //Initial Size
39
// Initialize Main Splitter
40
gqbMainContainer = new wxSplitterWindow(gqbParent,GQB_HORZ_SASH,wxDefaultPosition,wxDefaultSize,wxSP_3D);
41
tabs = new wxNotebook(gqbMainContainer, CTL_NTBKPANELS, wxDefaultPosition, wxDefaultSize);
43
// Initialize view container with tables browser
44
// GQB-TODO: change 976 with a enum value of events.h
45
gqbContainer = new gqbSplitter(gqbMainContainer,976,wxDefaultPosition,wxDefaultSize,wxSP_3D);
47
// Initialize view canvas and tables tree
48
browserPanel = new wxPanel(gqbContainer, wxID_ANY,wxDefaultPosition,tablesBrowserSize);
49
tablesBrowser = new gqbBrowser(browserPanel, GQB_BROWSER, wxDefaultPosition, wxDefaultSize, wxTR_HAS_BUTTONS | wxSIMPLE_BORDER,this);
50
view=new gqbView(gqbContainer, gridParent, size, this, model);
53
view->SetDropTarget(new DnDText(tablesBrowser));
55
// Set Scroll Bar & split
56
view->SetScrollbars( 10, 10, 127, 80 );
57
gqbContainer->SplitVertically(browserPanel,view);
59
tabs->InsertPage(ti_colsGridPanel, view->getColsGridPanel(), _("Columns"));
60
tabs->InsertPage(ti_criteriaPanel, view->getCriteriaPanel(), _("Criteria"));
61
tabs->InsertPage(ti_orderPanel, view->getOrderPanel(), _("Ordering"));
62
tabs->InsertPage(ti_joinsPanel, view->getJoinsPanel(), _("Joins"));
63
gqbMainContainer->SplitHorizontally(gqbContainer,tabs);
65
// Fix Sash resize bug
66
gqbContainer->setTablesBrowser(tablesBrowser);
67
gqbContainer->setBrowserPanel(browserPanel);
37
wxSize tablesBrowserSize = wxSize(200, 800); //Initial Size
39
// Initialize Main Splitter
40
gqbMainContainer = new wxSplitterWindow(gqbParent, GQB_HORZ_SASH, wxDefaultPosition, wxDefaultSize, wxSP_3D);
41
tabs = new wxNotebook(gqbMainContainer, CTL_NTBKPANELS, wxDefaultPosition, wxDefaultSize);
43
// Initialize view container with tables browser
44
// GQB-TODO: change 976 with a enum value of events.h
45
gqbContainer = new gqbSplitter(gqbMainContainer, 976, wxDefaultPosition, wxDefaultSize, wxSP_3D);
47
// Initialize view canvas and tables tree
48
browserPanel = new wxPanel(gqbContainer, wxID_ANY, wxDefaultPosition, tablesBrowserSize);
49
tablesBrowser = new gqbBrowser(browserPanel, GQB_BROWSER, wxDefaultPosition, wxDefaultSize, wxTR_HAS_BUTTONS | wxSIMPLE_BORDER, this);
50
view = new gqbView(gqbContainer, gridParent, size, this, model);
53
view->SetDropTarget(new DnDText(tablesBrowser));
55
// Set Scroll Bar & split
56
view->SetScrollbars( 10, 10, 127, 80 );
57
gqbContainer->SplitVertically(browserPanel, view);
59
tabs->InsertPage(ti_colsGridPanel, view->getColsGridPanel(), _("Columns"));
60
tabs->InsertPage(ti_criteriaPanel, view->getCriteriaPanel(), _("Criteria"));
61
tabs->InsertPage(ti_orderPanel, view->getOrderPanel(), _("Ordering"));
62
tabs->InsertPage(ti_joinsPanel, view->getJoinsPanel(), _("Joins"));
63
gqbMainContainer->SplitHorizontally(gqbContainer, tabs);
65
// Fix Sash resize bug
66
gqbContainer->setTablesBrowser(tablesBrowser);
67
gqbContainer->setBrowserPanel(browserPanel);
72
72
gqbController::~gqbController()
82
82
// Add a table to the model
83
gqbQueryObject* gqbController::addTableToModel(gqbTable *table, wxPoint p)
83
gqbQueryObject *gqbController::addTableToModel(gqbTable *table, wxPoint p)
85
gqbQueryObject *added = model->addTable(table,p);
86
view->newTableAdded(added);
85
gqbQueryObject *added = model->addTable(table, p);
86
view->newTableAdded(added);
91
91
// Remove a table from the model
92
void gqbController::removeTableFromModel(gqbQueryObject *mtable, gqbGridProjTable *gridTable=NULL, gqbGridOrderTable *orderLTable=NULL, gqbGridOrderTable *orderRTable=NULL)
92
void gqbController::removeTableFromModel(gqbQueryObject *mtable, gqbGridProjTable *gridTable = NULL, gqbGridOrderTable *orderLTable = NULL, gqbGridOrderTable *orderRTable = NULL)
94
model->deleteTable(mtable);
95
gridTable->removeAllRows(mtable); // GQB-TODO: move this functions to model??
96
orderLTable->emptyTableData(mtable);
97
orderRTable->emptyTableData(mtable);
94
model->deleteTable(mtable);
95
gridTable->removeAllRows(mtable); // GQB-TODO: move this functions to model??
96
orderLTable->emptyTableData(mtable);
97
orderRTable->emptyTableData(mtable);
101
101
// Add (Select to be use in projection) a column for table in a model
102
void gqbController::processColumnInModel(gqbQueryObject *table, gqbColumn *column, gqbGridProjTable *gridTable=NULL)
102
void gqbController::processColumnInModel(gqbQueryObject *table, gqbColumn *column, gqbGridProjTable *gridTable = NULL)
104
if(!table->existsColumn(column))
106
table->addColumn(column);
109
gridTable->AppendItem(0,table);
110
gridTable->AppendItem(1,column);
111
gridTable->AppendItem(2,NULL);
116
// Removes but don't delete because we needed the column at table [this is just a pointer to it]
117
table->removeColumn(column);
120
gridTable->removeRow(table,column);
104
if(!table->existsColumn(column))
106
table->addColumn(column);
109
gridTable->AppendItem(0, table);
110
gridTable->AppendItem(1, column);
111
gridTable->AppendItem(2, NULL);
116
// Removes but don't delete because we needed the column at table [this is just a pointer to it]
117
table->removeColumn(column);
120
gridTable->removeRow(table, column);
126
126
// Get selected item at position pt, marks item as selected and if there is a previous selected then unselect it
127
gqbObject* gqbController::getModelSelected(wxPoint &pt, gqbQueryObject *lastSelected, gqbQueryJoin *lastJoinSelected, bool mark)
127
gqbObject *gqbController::getModelSelected(wxPoint &pt, gqbQueryObject *lastSelected, gqbQueryJoin *lastJoinSelected, bool mark)
129
gqbQueryObject *sel=NULL;
130
gqbQueryJoin *jSel=NULL;
131
gqbIteratorBase *iterator=model->createDownQueryIterator();
129
gqbQueryObject *sel = NULL;
130
gqbQueryJoin *jSel = NULL;
131
gqbIteratorBase *iterator = model->createDownQueryIterator();
134
while(!found && iterator->HasNext())
136
// Try to find if click over a table
137
sel=(gqbQueryObject *)iterator->Next();
138
if( ((pt.x - sel->position.x > 0 )&&(sel->position.x + sel->getWidth() > pt.x)) && ((pt.y - sel->position.y > 0)&&(sel->position.y + sel->getHeight() > pt.y)) )
140
// GQB-TODO: this function should be move to the view to allow to
134
while(!found && iterator->HasNext())
136
// Try to find if click over a table
137
sel = (gqbQueryObject *)iterator->Next();
138
if( ((pt.x - sel->position.x > 0 ) && (sel->position.x + sel->getWidth() > pt.x)) && ((pt.y - sel->position.y > 0) && (sel->position.y + sel->getHeight() > pt.y)) )
140
// GQB-TODO: this function should be move to the view to allow to
141
141
// recalculate it if the graphBehavior changes
143
sel->setSelected(true);
150
// Try to find if user click over a Join
151
if(sel->getHaveJoins())
153
gqbIteratorBase *joinsIterator = sel->createJoinsIterator();
154
while(joinsIterator->HasNext())
156
// GQB-TODO: don't pass anchor because join it's passed as parameter yet.
157
jSel = (gqbQueryJoin *) joinsIterator->Next();
158
wxPoint o = jSel->getSourceAnchor();
159
wxPoint d = jSel->getDestAnchor();
161
if(view->clickOnJoin(jSel,pt,o,d))
164
jSel->setSelected(true);
171
delete joinsIterator;
181
if(lastSelected && lastSelected!=sel) // Unselect previous table selected if exists
182
lastSelected->setSelected(false);
183
// Unselect previous join selected if exists
184
if(lastJoinSelected && lastJoinSelected!=jSel)
185
lastJoinSelected->setSelected(false);
143
sel->setSelected(true);
150
// Try to find if user click over a Join
151
if(sel->getHaveJoins())
153
gqbIteratorBase *joinsIterator = sel->createJoinsIterator();
154
while(joinsIterator->HasNext())
156
// GQB-TODO: don't pass anchor because join it's passed as parameter yet.
157
jSel = (gqbQueryJoin *) joinsIterator->Next();
158
wxPoint o = jSel->getSourceAnchor();
159
wxPoint d = jSel->getDestAnchor();
161
if(view->clickOnJoin(jSel, pt, o, d))
164
jSel->setSelected(true);
171
delete joinsIterator;
181
if(lastSelected && lastSelected != sel) // Unselect previous table selected if exists
182
lastSelected->setSelected(false);
183
// Unselect previous join selected if exists
184
if(lastJoinSelected && lastJoinSelected != jSel)
185
lastJoinSelected->setSelected(false);
197
197
// Unselect any previously selected item in the model
198
void gqbController::unsetModelSelected(bool queryTable=true)
198
void gqbController::unsetModelSelected(bool queryTable = true)
200
gqbQueryObject *sel=NULL;
201
gqbQueryJoin *jSel=NULL;
203
if(queryTable) // QueryTable
205
gqbIteratorBase *iterator=model->createQueryIterator();
206
while(iterator->HasNext())
208
sel=(gqbQueryObject *)iterator->Next();
209
if(sel->getSelected())
211
sel->setSelected(false);
217
if(!queryTable) // QueryJoin
219
gqbIteratorBase *iterator=model->createQueryIterator();
220
gqbQueryObject *sel=NULL;
221
while(iterator->HasNext())
223
sel=(gqbQueryObject *)iterator->Next();
224
if(sel->getHaveJoins())
226
gqbIteratorBase *joinsIterator = sel->createJoinsIterator();
227
while(joinsIterator->HasNext())
229
// GQB-TODO: don't pass anchor because join it's passed as parameter yet.
230
jSel = (gqbQueryJoin *) joinsIterator->Next();
231
if(jSel->getSelected())
233
jSel->setSelected(false);
237
delete joinsIterator;
200
gqbQueryObject *sel = NULL;
201
gqbQueryJoin *jSel = NULL;
203
if(queryTable) // QueryTable
205
gqbIteratorBase *iterator = model->createQueryIterator();
206
while(iterator->HasNext())
208
sel = (gqbQueryObject *)iterator->Next();
209
if(sel->getSelected())
211
sel->setSelected(false);
217
if(!queryTable) // QueryJoin
219
gqbIteratorBase *iterator = model->createQueryIterator();
220
gqbQueryObject *sel = NULL;
221
while(iterator->HasNext())
223
sel = (gqbQueryObject *)iterator->Next();
224
if(sel->getHaveJoins())
226
gqbIteratorBase *joinsIterator = sel->createJoinsIterator();
227
while(joinsIterator->HasNext())
229
// GQB-TODO: don't pass anchor because join it's passed as parameter yet.
230
jSel = (gqbQueryJoin *) joinsIterator->Next();
231
if(jSel->getSelected())
233
jSel->setSelected(false);
237
delete joinsIterator;
246
246
// Generate the SQL Sentence from the model
247
247
wxString gqbController::generateSQL()
249
wxString sentence=wxT("");
250
if(model->tablesCount()>0)
252
sentence+=wxT("SELECT \n");
249
wxString sentence = wxT("");
250
if(model->tablesCount() > 0)
252
sentence += wxT("SELECT \n");
254
254
// Add selected columns for Query
255
gqbQueryObject *sel=NULL;
256
gqbIteratorBase *iteratorRestrictions=NULL;
257
gqbIteratorBase *iteratorModel=NULL;
258
gqbIteratorBase *iteratorJoins=NULL;
260
// Projection Part [Select x,x,x...]
261
gqbObjsArray *cols=model->getOrderedColumns();
262
gqbObjsArray *tables=model->getColumnsParents();
263
wxArrayString *alias=model->getColumnsAlias();
265
int i,size=cols->GetCount();
269
if(alias->Item(i).length()>0)
271
if(((gqbQueryObject*)tables->Item(i))->getAlias().length()>0)
273
sentence += wxT(" ") +
274
qtIdent(((gqbQueryObject*)tables->Item(i))->getAlias()) +
276
qtIdent(((gqbColumn*)cols->Item(i))->getName()) +
278
qtIdent(alias->Item(i)) +
283
sentence += wxT(" ") +
284
qtIdent(((gqbQueryObject*)tables->Item(i))->getName()) +
286
qtIdent(((gqbColumn*)cols->Item(i))->getName()) +
288
qtIdent(alias->Item(i)) +
294
if(((gqbQueryObject*)tables->Item(i))->getAlias().length()>0)
296
sentence += wxT(" ") +
297
qtIdent(((gqbQueryObject*)tables->Item(i))->getAlias()) +
299
qtIdent(((gqbColumn*)cols->Item(i))->getName()) +
304
sentence += wxT(" ") +
305
qtIdent(((gqbQueryObject*)tables->Item(i))->getName()) +
307
qtIdent(((gqbColumn*)cols->Item(i))->getName()) +
314
sentence+=wxT(" * \n");
318
sentence.Truncate(sentence.Length()-3);
322
sentence+=wxT("FROM \n");
324
iteratorModel=model->createQueryIterator();
325
while(iteratorModel->HasNext())
327
sel=(gqbQueryObject *)iteratorModel->Next();
328
gqbSchema *schema = (gqbSchema *)sel->parent->getOwner();
329
if(sel->getAlias().length()>0)
331
sentence += wxT(" ") +
332
qtIdent(schema->getName()) +
334
qtIdent(sel->getName()) +
336
qtIdent(sel->getAlias()) +
341
sentence += wxT(" ") +
342
qtIdent(schema->getName()) +
344
qtIdent(sel->getName()) +
349
sentence.Truncate(sentence.Length()-3); // remove last ", "
353
bool first=true, truncAnd=false;
355
iteratorModel->ResetIterator();
356
while(iteratorModel->HasNext())
358
sel=(gqbQueryObject *)iteratorModel->Next();
359
if(sel->getHaveJoins())
362
iteratorJoins=sel->createJoinsIterator();
363
while(iteratorJoins->HasNext())
368
sentence+= wxT("\nWHERE \n");
370
tmp = (gqbQueryJoin *)iteratorJoins->Next();
372
if(tmp->getSourceQTable()->getAlias().length()>0)
373
sentence+= wxT(" ") +
374
qtIdent(tmp->getSourceQTable()->getAlias()) +
376
qtIdent(tmp->getSourceCol());
378
sentence+= wxT(" ") +
379
qtIdent(tmp->getSourceQTable()->getName()) +
381
qtIdent(tmp->getSourceCol());
383
switch(tmp->getKindofJoin())
386
sentence+= wxT(" = ");
389
sentence+= wxT(" > ");
392
sentence+= wxT(" < ");
395
sentence+= wxT(" >= ");
398
sentence+= wxT(" <= ");
403
if(tmp->getDestQTable()->getAlias().length()>0)
404
sentence += qtIdent(tmp->getDestQTable()->getAlias()) +
406
qtIdent(tmp->getDestCol()) +
409
sentence += qtIdent(tmp->getDestQTable()->getName()) +
411
qtIdent(tmp->getDestCol()) +
414
delete iteratorJoins;
417
delete iteratorModel;
419
gqbRestrictions *restrictions=model->getRestrictions();
421
// Remove last " AND " from joins if there isn't restrictions, only left white space
422
if(truncAnd && (restrictions->restrictionsCount()<=0))
423
sentence.Truncate(sentence.Length()-5);
425
// Never found a join
426
if (!truncAnd && (restrictions->restrictionsCount()>0))
427
sentence+= wxT("\nWHERE \n");
429
//GQB-TODO: VALIDATE RESTRICTIONS
430
iteratorRestrictions=restrictions->createRestrictionsIterator();
431
gqbQueryRestriction *r = NULL;
433
while(iteratorRestrictions->HasNext())
435
r=(gqbQueryRestriction *)iteratorRestrictions->Next();
436
sentence += wxT(" ") +
439
r->getRestriction() +
446
delete iteratorRestrictions;
448
if(restrictions->restrictionsCount()>0)
450
if(r->getConnector().Contains(wxT("AND")))
452
sentence.Truncate(sentence.Length()-6);
456
sentence.Truncate(sentence.Length()-5);
460
gqbObjsArray* orderByColumns=model->getOrdByColumns();
461
gqbObjsArray* orderByParents=model->getOrdByParents();
462
charArray* typeOfOrder=model->getOrdByKind();
464
size=orderByColumns->GetCount();
467
sentence+=wxT("\nORDER BY\n");
469
wxString typeOrder=wxT("");
472
switch(typeOfOrder->Item(i))
475
typeOrder=wxT(" ASC");
478
typeOrder=wxT(" DESC");
481
if(((gqbQueryObject*)orderByParents->Item(i))->getAlias().length()>0)
482
sentence += wxT(" ") +
483
qtIdent(((gqbQueryObject*)orderByParents->Item(i))->getAlias()) +
485
qtIdent(((gqbColumn*)orderByColumns->Item(i))->getName()) +
489
sentence += wxT(" ") +
490
qtIdent(((gqbQueryObject*)orderByParents->Item(i))->getName()) +
492
qtIdent(((gqbColumn*)orderByColumns->Item(i))->getName()) +
498
sentence.Truncate(sentence.Length()-3);
501
} // Close Tables Count > 0 on model
506
gqbQueryRestriction* gqbController::addRestriction()
508
return model->addRestriction();
512
gqbQueryJoin* gqbController::addJoin(gqbQueryObject *sTable, gqbColumn *sColumn, gqbQueryObject *dTable, gqbColumn *dColumn, type_Join kind)
514
return sTable->addJoin(sTable,dTable,sColumn,dColumn,kind);
255
gqbQueryObject *sel = NULL;
256
gqbIteratorBase *iteratorRestrictions = NULL;
257
gqbIteratorBase *iteratorModel = NULL;
258
gqbIteratorBase *iteratorJoins = NULL;
260
// Projection Part [Select x,x,x...]
261
gqbObjsArray *cols = model->getOrderedColumns();
262
gqbObjsArray *tables = model->getColumnsParents();
263
wxArrayString *alias = model->getColumnsAlias();
265
int i, size = cols->GetCount();
267
for(i = 0; i < size; i++)
269
if(alias->Item(i).length() > 0)
271
if(((gqbQueryObject *)tables->Item(i))->getAlias().length() > 0)
273
sentence += wxT(" ") +
274
qtIdent(((gqbQueryObject *)tables->Item(i))->getAlias()) +
276
qtIdent(((gqbColumn *)cols->Item(i))->getName()) +
278
qtIdent(alias->Item(i)) +
283
sentence += wxT(" ") +
284
qtIdent(((gqbQueryObject *)tables->Item(i))->getName()) +
286
qtIdent(((gqbColumn *)cols->Item(i))->getName()) +
288
qtIdent(alias->Item(i)) +
294
if(((gqbQueryObject *)tables->Item(i))->getAlias().length() > 0)
296
sentence += wxT(" ") +
297
qtIdent(((gqbQueryObject *)tables->Item(i))->getAlias()) +
299
qtIdent(((gqbColumn *)cols->Item(i))->getName()) +
304
sentence += wxT(" ") +
305
qtIdent(((gqbQueryObject *)tables->Item(i))->getName()) +
307
qtIdent(((gqbColumn *)cols->Item(i))->getName()) +
314
sentence += wxT(" * \n");
318
sentence.Truncate(sentence.Length() - 3);
319
sentence += wxT("\n");
322
sentence += wxT("FROM \n");
324
iteratorModel = model->createQueryIterator();
325
while(iteratorModel->HasNext())
327
sel = (gqbQueryObject *)iteratorModel->Next();
328
gqbSchema *schema = (gqbSchema *)sel->parent->getOwner();
329
if(sel->getAlias().length() > 0)
331
sentence += wxT(" ") +
332
qtIdent(schema->getName()) +
334
qtIdent(sel->getName()) +
336
qtIdent(sel->getAlias()) +
341
sentence += wxT(" ") +
342
qtIdent(schema->getName()) +
344
qtIdent(sel->getName()) +
349
sentence.Truncate(sentence.Length() - 3); // remove last ", "
353
bool first = true, truncAnd = false;
355
iteratorModel->ResetIterator();
356
while(iteratorModel->HasNext())
358
sel = (gqbQueryObject *)iteratorModel->Next();
359
if(sel->getHaveJoins())
362
iteratorJoins = sel->createJoinsIterator();
363
while(iteratorJoins->HasNext())
368
sentence += wxT("\nWHERE \n");
370
tmp = (gqbQueryJoin *)iteratorJoins->Next();
372
if(tmp->getSourceQTable()->getAlias().length() > 0)
373
sentence += wxT(" ") +
374
qtIdent(tmp->getSourceQTable()->getAlias()) +
376
qtIdent(tmp->getSourceCol());
378
sentence += wxT(" ") +
379
qtIdent(tmp->getSourceQTable()->getName()) +
381
qtIdent(tmp->getSourceCol());
383
switch(tmp->getKindofJoin())
386
sentence += wxT(" = ");
389
sentence += wxT(" > ");
392
sentence += wxT(" < ");
395
sentence += wxT(" >= ");
398
sentence += wxT(" <= ");
403
if(tmp->getDestQTable()->getAlias().length() > 0)
404
sentence += qtIdent(tmp->getDestQTable()->getAlias()) +
406
qtIdent(tmp->getDestCol()) +
409
sentence += qtIdent(tmp->getDestQTable()->getName()) +
411
qtIdent(tmp->getDestCol()) +
414
delete iteratorJoins;
417
delete iteratorModel;
419
gqbRestrictions *restrictions = model->getRestrictions();
421
// Remove last " AND " from joins if there isn't restrictions, only left white space
422
if(truncAnd && (restrictions->restrictionsCount() <= 0))
423
sentence.Truncate(sentence.Length() - 5);
425
// Never found a join
426
if (!truncAnd && (restrictions->restrictionsCount() > 0))
427
sentence += wxT("\nWHERE \n");
429
//GQB-TODO: VALIDATE RESTRICTIONS
430
iteratorRestrictions = restrictions->createRestrictionsIterator();
431
gqbQueryRestriction *r = NULL;
433
while(iteratorRestrictions->HasNext())
435
r = (gqbQueryRestriction *)iteratorRestrictions->Next();
436
sentence += wxT(" ") +
439
r->getRestriction() +
446
delete iteratorRestrictions;
448
if(restrictions->restrictionsCount() > 0)
450
if(r->getConnector().Contains(wxT("AND")))
452
sentence.Truncate(sentence.Length() - 6);
456
sentence.Truncate(sentence.Length() - 5);
460
gqbObjsArray *orderByColumns = model->getOrdByColumns();
461
gqbObjsArray *orderByParents = model->getOrdByParents();
462
charArray *typeOfOrder = model->getOrdByKind();
464
size = orderByColumns->GetCount();
467
sentence += wxT("\nORDER BY\n");
469
wxString typeOrder = wxT("");
470
for(i = 0; i < size; i++)
472
switch(typeOfOrder->Item(i))
475
typeOrder = wxT(" ASC");
478
typeOrder = wxT(" DESC");
481
if(((gqbQueryObject *)orderByParents->Item(i))->getAlias().length() > 0)
482
sentence += wxT(" ") +
483
qtIdent(((gqbQueryObject *)orderByParents->Item(i))->getAlias()) +
485
qtIdent(((gqbColumn *)orderByColumns->Item(i))->getName()) +
489
sentence += wxT(" ") +
490
qtIdent(((gqbQueryObject *)orderByParents->Item(i))->getName()) +
492
qtIdent(((gqbColumn *)orderByColumns->Item(i))->getName()) +
498
sentence.Truncate(sentence.Length() - 3);
500
sentence += wxT(";");
501
} // Close Tables Count > 0 on model
506
gqbQueryRestriction *gqbController::addRestriction()
508
return model->addRestriction();
512
gqbQueryJoin *gqbController::addJoin(gqbQueryObject *sTable, gqbColumn *sColumn, gqbQueryObject *dTable, gqbColumn *dColumn, type_Join kind)
514
return sTable->addJoin(sTable, dTable, sColumn, dColumn, kind);
518
518
void gqbController::removeJoin(gqbQueryJoin *join)
520
join->getSourceQTable()->removeJoin(join,true);
520
join->getSourceQTable()->removeJoin(join, true);
524
524
void gqbController::setPointerMode(pointerMode pm)
526
view->setPointerMode(pm);
526
view->setPointerMode(pm);
530
530
void gqbController::emptyModel()
532
view->emptyPanelsData();
532
view->emptyPanelsData();
537
537
void gqbController::calcGridColsSizes()
539
// Recalculate best internals sizes for all columns inside grids.
540
((gqbGridPanel *)view->getColsGridPanel())->SetGridColsSize();
541
((gqbCriteriaPanel *)view->getCriteriaPanel())->SetGridColsSize();
542
((gqbOrderPanel *)view->getOrderPanel())->SetGridColsSize();
543
((gqbJoinsPanel *)view->getJoinsPanel())->SetGridColsSize();
539
// Recalculate best internals sizes for all columns inside grids.
540
((gqbGridPanel *)view->getColsGridPanel())->SetGridColsSize();
541
((gqbCriteriaPanel *)view->getCriteriaPanel())->SetGridColsSize();
542
((gqbOrderPanel *)view->getOrderPanel())->SetGridColsSize();
543
((gqbJoinsPanel *)view->getJoinsPanel())->SetGridColsSize();
547
547
void gqbController::setSashVertPosition(int pos)
549
gqbContainer->UpdateSize();
550
gqbContainer->SetSashPosition(pos,true);
551
gqbContainer->SetMinimumPaneSize(pos);
552
gqbContainer->UpdateSize();
549
gqbContainer->UpdateSize();
550
gqbContainer->SetSashPosition(pos, true);
551
gqbContainer->SetMinimumPaneSize(pos);
552
gqbContainer->UpdateSize();
555
int gqbController::getSashHorizPosition(){
555
int gqbController::getSashHorizPosition()
556
557
return gqbMainContainer->GetSashPosition();
560
561
void gqbController::setSashHorizPosition(int pos)
562
gqbMainContainer->UpdateSize();
563
gqbMainContainer->SetSashPosition(pos,true);
563
gqbMainContainer->UpdateSize();
564
gqbMainContainer->SetSashPosition(pos, true);
565
if(pos>=150 && pos<=200)
567
gqbMainContainer->SetMinimumPaneSize(pos);
571
gqbMainContainer->SetMinimumPaneSize(150);
573
gqbMainContainer->UpdateSize();
566
if(pos >= 150 && pos <= 200)
568
gqbMainContainer->SetMinimumPaneSize(pos);
572
gqbMainContainer->SetMinimumPaneSize(150);
574
gqbMainContainer->UpdateSize();