DataSourceSelectorWidget.cpp
Go to the documentation of this file.
1 /* Copyright (C) 2008 National Institute For Space Research (INPE) - Brazil.
2 
3  This file is part of the TerraLib - a Framework for building GIS enabled applications.
4 
5  TerraLib is free software: you can redistribute it and/or modify
6  it under the terms of the GNU Lesser General Public License as published by
7  the Free Software Foundation, either version 3 of the License,
8  or (at your option) any later version.
9 
10  TerraLib is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU Lesser General Public License for more details.
14 
15  You should have received a copy of the GNU Lesser General Public License
16  along with TerraLib. See COPYING. If not, write to
17  TerraLib Team at <terralib-team@terralib.org>.
18  */
19 
20 /*!
21  \file terralib/qt/widgets/connector/DataSourceSelectorWidget.cpp
22 
23  \brief A dialog for connecting to a data source.
24 */
25 
26 // TerraLib
27 #include "../../../../core/translator/Translator.h"
28 #include "../../../../dataaccess/datasource/DataSourceInfoManager.h"
29 #include "../../Exception.h"
30 #include "../connector/AbstractDataSourceConnector.h"
31 #include "../core/DataSourceType.h"
32 #include "../core/DataSourceTypeManager.h"
34 #include "ui_DataSourceSelectorWidgetForm.h"
35 
36 // Qt
37 #include <QIcon>
38 #include <QMessageBox>
39 
41  : QWidget(parent, f),
42  m_ui(new Ui::DataSourceSelectorWidgetForm),
43  m_addButtonEnabled(true),
44  m_removeButtonEnabled(true),
45  m_editButtonEnabled(true),
46  m_createButtonEnabled(true)
47 {
48 // add controls
49  m_ui->setupUi(this);
50 
51 // clear some widgets
52  m_ui->m_datasourceTypeTitleLabel->clear();
53  m_ui->m_datasourceDescriptionLabel->clear();
54 
55 // add button icons
56  m_ui->m_addDataSourceToolButton->setIcon(QIcon::fromTheme("list-add"));
57  m_ui->m_removeDataSourceToolButton->setIcon(QIcon::fromTheme("list-remove"));
58  m_ui->m_editDataSourceToolButton->setIcon(QIcon::fromTheme("preferences-system"));
59  m_ui->m_createDataSourceToolButton->setIcon(QIcon::fromTheme("datasource-new"));
60 
61 // add the list of data sources available in the system
62  std::map<std::string, DataSourceType*>::const_iterator it = DataSourceTypeManager::getInstance().begin();
63  std::map<std::string, DataSourceType*>::const_iterator itend = DataSourceTypeManager::getInstance().end();
64 
65  while(it != itend)
66  {
67  QString dsName = QString::fromUtf8(it->second->getName().c_str());
68  QIcon icon = it->second->getIcon(DataSourceType::ICON_DATASOURCE_SMALL);
69  QString title = QString::fromUtf8(it->second->getTitle().c_str());
70  QString description = QString::fromUtf8(it->second->getDescription().c_str());
71 
72  QListWidgetItem* item = new QListWidgetItem(icon, title);
73 
74  item->setToolTip(description);
75 
76  item->setData(Qt::UserRole, QVariant(dsName));
77 
78  m_ui->m_datasourceTypeListWidget->addItem(item);
79 
80  ++it;
81  }
82 
83 //verify if datasourceTypeListWidget has any item and set the first one as selected equals true.
84  if(m_ui->m_datasourceTypeListWidget->count() > 0)
85  {
86  QListWidgetItem* item = m_ui->m_datasourceTypeListWidget->item(0);
87  m_ui->m_datasourceTypeListWidget->setItemSelected(item, true);
89  m_ui->m_datasourceTypeListWidget->setCurrentItem(item);
90  }
91 
92 // connect signal and slots
93  connect(m_ui->m_addDataSourceToolButton, SIGNAL(pressed()), this, SLOT(addDataSourcePushButtonPressed()));
94  connect(m_ui->m_removeDataSourceToolButton, SIGNAL(pressed()), this, SLOT(removeDataSourcePushButtonPressed()));
95  connect(m_ui->m_editDataSourceToolButton, SIGNAL(pressed()), this, SLOT(editDataSourcePushButtonPressed()));
96  connect(m_ui->m_createDataSourceToolButton, SIGNAL(pressed()), this, SLOT(createDataSourcePushButtonPressed()));
97  connect(m_ui->m_datasourceTypeListWidget, SIGNAL(itemPressed(QListWidgetItem*)), this, SLOT(dataSourceTypePressed(QListWidgetItem*)));
98  connect(m_ui->m_datasourceListWidget, SIGNAL(itemPressed(QListWidgetItem*)), this, SLOT(dataSourcePressed(QListWidgetItem*)));
99  connect(m_ui->m_datasourceListWidget, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(dataSourceDoubleClicked(QListWidgetItem*)));
100 
101 }
102 
104  default;
105 
106 Ui::DataSourceSelectorWidgetForm* te::qt::widgets::DataSourceSelectorWidget::getForm() const
107 {
108  return m_ui.get();
109 }
110 
111 void te::qt::widgets::DataSourceSelectorWidget::setSelectionMode(QAbstractItemView::SelectionMode mode)
112 {
113  m_ui->m_datasourceListWidget->setSelectionMode(mode);
114 }
115 
117 {
118  m_addButtonEnabled = enabled;
119  m_editButtonEnabled = enabled;
120  m_removeButtonEnabled = enabled;
121  m_createButtonEnabled = enabled;
122 }
123 
125 {
126  if(button == BUTTON_ADD_DATASOURCE)
127  m_addButtonEnabled = enabled;
128  else if(button == BUTTON_EDIT_DATASOURCE)
129  m_editButtonEnabled = enabled;
130  else if(button == BUTTON_REMOVE_DATASOURCE)
131  m_removeButtonEnabled = enabled;
132  else if(button == BUTTON_CREATE_DATASOURCE)
133  m_createButtonEnabled = enabled;
134 }
135 
136 //void te::qt::widgets::DataSourceSelectorWidget::selectDataSourceType(int row)
137 //{
138 // if((row < 0) || (row >= m_ui->m_datasourceTypeListWidget->count()))
139 // return;
140 //
141 // QListWidgetItem* item = m_ui->m_datasourceTypeListWidget->item(row);
142 //
143 // if(item == 0)
144 // return;
145 //
146 // //m_ui->m_datasourceTypeListWidget->setSele
147 //}
148 
149 std::list<te::da::DataSourceInfoPtr> te::qt::widgets::DataSourceSelectorWidget::getSelecteds() const
150 {
151  std::list<te::da::DataSourceInfoPtr> selecteds;
152 
153  QList<QListWidgetItem*> items = m_ui->m_datasourceListWidget->selectedItems();
154 
155  for(QList<QListWidgetItem*>::Iterator it = items.begin(); it != items.end(); ++it)
156  {
157  QListWidgetItem* item = *it;
158 
159  QVariant udata = item->data(Qt::UserRole);
160 
161  QString id = udata.toString();
162 
163  if(id.isEmpty())
164  throw Exception(TE_TR("Selected data source has no identification!"));
165 
166  te::da::DataSourceInfoPtr selected(te::da::DataSourceInfoManager::getInstance().get(id.toUtf8().data()));
167 
168  if(selected.get() == nullptr)
169  throw Exception(TE_TR("Could not find selected data source!"));
170 
171  selecteds.push_back(selected);
172  }
173 
174  return selecteds;
175 }
176 
178 {
179  int count = m_ui->m_datasourceTypeListWidget->count();
180  int found = -1;
181 
182  for(int i=0; i<count; i++)
183  {
184  QListWidgetItem* item = m_ui->m_datasourceTypeListWidget->item(i);
185 
186  if(item->data(Qt::UserRole).toString() == dsType)
187  {
188  found = i;
189  break;
190  }
191  }
192 
193  if (found != -1)
194  {
195  QListWidgetItem* item = m_ui->m_datasourceTypeListWidget->item(found);
196 
197  m_ui->m_datasourceTypeListWidget->setCurrentItem(item);
198  dataSourceTypePressed(item);
199  }
200 }
201 
203 {
204  int count = m_ui->m_datasourceTypeListWidget->count();
205 
206  for(int i=0; i<count; i++)
207  {
208  QListWidgetItem* item = m_ui->m_datasourceTypeListWidget->item(i);
209 
210  std::string name = item->data(Qt::UserRole).toString().toUtf8().data();
211 
213 
214  if(type->hasDatabaseSupport())
215  item->setHidden(!visible);
216  }
217 }
218 
220 {
221  int count = m_ui->m_datasourceTypeListWidget->count();
222 
223  for(int i=0; i<count; i++)
224  {
225  QListWidgetItem* item = m_ui->m_datasourceTypeListWidget->item(i);
226 
227  std::string name = item->data(Qt::UserRole).toString().toUtf8().data();
228 
230 
231  if(type->hasFileSupport())
232  item->setHidden(!visible);
233  }
234 }
235 
237 {
238  int count = m_ui->m_datasourceTypeListWidget->count();
239 
240  for(int i=0; i<count; i++)
241  {
242  QListWidgetItem* item = m_ui->m_datasourceTypeListWidget->item(i);
243 
244  std::string name = item->data(Qt::UserRole).toString().toUtf8().data();
245 
247 
248  if(type->hasRasterSupport())
249  item->setHidden(!visible);
250  }
251 }
252 
254 {
255  int count = m_ui->m_datasourceTypeListWidget->count();
256 
257  for(int i=0; i<count; i++)
258  {
259  QListWidgetItem* item = m_ui->m_datasourceTypeListWidget->item(i);
260 
261  std::string name = item->data(Qt::UserRole).toString().toUtf8().data();
262 
264 
265  if(type->hasVectorialSupport())
266  item->setHidden(!visible);
267  }
268 }
269 
271 {
272  int count = m_ui->m_datasourceTypeListWidget->count();
273 
274  for (int i = 0; i<count; i++)
275  {
276  QListWidgetItem* item = m_ui->m_datasourceTypeListWidget->item(i);
277 
278  if (item->data(Qt::UserRole).toString() == dsType)
279  {
280  item->setHidden(false);
281 
282  m_ui->m_datasourceTypeListWidget->setCurrentItem(item);
283  dataSourceTypePressed(item);
284  }
285  else
286  {
287  item->setHidden(true);
288  }
289  }
290 }
291 
293 {
294  QListWidgetItem* item = m_ui->m_datasourceTypeListWidget->currentItem();
295 
296  if(item == nullptr)
297  return;
298 
299  QVariant udata = item->data(Qt::UserRole);
300 
301  QString dsTypeId = udata.toString();
302 
303  if(dsTypeId.isEmpty())
304  return;
305 
306  try
307  {
308  const DataSourceType* dsType = DataSourceTypeManager::getInstance().get(dsTypeId.toUtf8().data());
309 
310  if(dsType == nullptr)
311  throw Exception(TE_TR("Unknown data source type!"));
312 
313  std::unique_ptr<QWidget> connectorw(dsType->getWidget(DataSourceType::WIDGET_DATASOURCE_CONNECTOR, this));
314 
315  if(connectorw.get() == nullptr)
316  throw Exception(TE_TR("This type of data source hasn't provide a dialog for adding a new data source"));
317 
318  AbstractDataSourceConnector* connector = dynamic_cast<AbstractDataSourceConnector*>(connectorw.get());
319 
320  if(connector == nullptr)
321  throw Exception(TE_TR("Wrong type of object for adding a new data source!"));
322 
323  std::list<te::da::DataSourceInfoPtr> datasources;
324 
325  connector->connect(datasources);
326 
327  for(std::list<te::da::DataSourceInfoPtr>::iterator it = datasources.begin(); it != datasources.end(); ++it)
328  {
329  if(it->get() == nullptr)
330  return;
331 
332  QListWidgetItem* item = new QListWidgetItem(QString::fromUtf8((*it)->getTitle().c_str()));
333  item->setData(Qt::UserRole, QVariant(QString::fromUtf8((*it)->getId().c_str())));
334  m_ui->m_datasourceListWidget->addItem(item);
335  m_ui->m_datasourceListWidget->setCurrentItem(item);
336  dataSourcePressed(item);
337  }
338  }
339  catch(const std::exception& e)
340  {
341  QMessageBox::warning(this,
342  tr("TerraLib Qt Components"),
343  tr(e.what()));
344  }
345  catch(...)
346  {
347  QMessageBox::warning(this,
348  tr("TerraLib Qt Components"),
349  tr("Unknown error while adding a new data source!"));
350  }
351 }
352 
354 {
355  std::list<te::da::DataSourceInfoPtr> selecteds = getSelecteds();
356 
357  if(selecteds.empty())
358  return;
359 
360  try
361  {
362  QListWidgetItem* item = m_ui->m_datasourceTypeListWidget->currentItem();
363 
364  QVariant udata = item->data(Qt::UserRole);
365 
366  QString dsTypeName = udata.toString();
367 
368  if(dsTypeName.isEmpty())
369  throw Exception(TE_TR("Unknown data source type!"));
370 
371  const DataSourceType* dsType = DataSourceTypeManager::getInstance().get(dsTypeName.toUtf8().data());
372 
373  if(dsType == nullptr)
374  throw Exception(TE_TR("Could not find data source type!"));
375 
376  std::unique_ptr<QWidget> connectorw(dsType->getWidget(DataSourceType::WIDGET_DATASOURCE_CONNECTOR, this));
377 
378  if(connectorw.get() == nullptr)
379  throw Exception(TE_TR("This type of data source hasn't provide a dialog for removing data sources"));
380 
381  AbstractDataSourceConnector* connector = dynamic_cast<AbstractDataSourceConnector*>(connectorw.get());
382 
383  if(connector == nullptr)
384  throw Exception(TE_TR("Wrong type of object for removing a data source!"));
385 
386  connector->remove(selecteds);
387 
388  QList<QListWidgetItem*> items = m_ui->m_datasourceListWidget->selectedItems();
389 
390  for(QList<QListWidgetItem*>::Iterator it = items.begin(); it != items.end(); ++it)
391  {
392  item = *it;
393 
394  int itemRow = m_ui->m_datasourceListWidget->row(item);
395 
396  item = m_ui->m_datasourceListWidget->takeItem(itemRow);
397 
398  delete item;
399  }
400 
401  if(m_ui->m_datasourceListWidget->count() == 0)
402  {
403  m_ui->m_removeDataSourceToolButton->setEnabled(false);
404  m_ui->m_editDataSourceToolButton->setEnabled(false);
405  m_ui->m_datasourceDescriptionLabel->clear();
406  //emit hasSelectedDataSource(false);
407  }
408  else
409  {
410  //item = m_ui->m_datasourceListWidget->item(0);
411 
412  //if(item == 0)
413  // throw Exception(TE_TR("Could not automatically select the first data source item!"));
414 
415  //m_ui->m_datasourceListWidget->setCurrentItem(item, QItemSelectionModel::Select);
416  //dataSourcePressed(item);
417  m_ui->m_datasourceDescriptionLabel->clear();
418 
419  //emit hasSelectedDataSource(!m_ui->m_datasourceListWidget->selectedItems().empty());
420  }
421  }
422  catch(const std::exception& e)
423  {
424  QMessageBox::warning(this,
425  tr("TerraLib Qt Components"),
426  tr(e.what()));
427  }
428  catch(...)
429  {
430  QMessageBox::warning(this,
431  tr("TerraLib Qt Components"),
432  tr("Unknown error while removing a data source!"));
433  }
434 }
435 
437 {
438  std::list<te::da::DataSourceInfoPtr> selecteds = getSelecteds();
439 
440  if(selecteds.empty())
441  return;
442 
443  try
444  {
445  QListWidgetItem* item = m_ui->m_datasourceTypeListWidget->currentItem();
446 
447  QVariant udata = item->data(Qt::UserRole);
448 
449  QString dsTypeName = udata.toString();
450 
451  if(dsTypeName.isEmpty())
452  throw Exception(TE_TR("Unknown data source type!"));
453 
454  const DataSourceType* dsType = DataSourceTypeManager::getInstance().get(dsTypeName.toUtf8().data());
455 
456  if(dsType == nullptr)
457  throw Exception(TE_TR("Could not find data source type!"));
458 
459  std::unique_ptr<QWidget> connectorw(dsType->getWidget(DataSourceType::WIDGET_DATASOURCE_CONNECTOR, this));
460 
461  if(connectorw.get() == nullptr)
462  throw Exception(TE_TR("This type of data source hasn't provide a dialog for removing data sources"));
463 
464  AbstractDataSourceConnector* connector = dynamic_cast<AbstractDataSourceConnector*>(connectorw.get());
465 
466  if(connector == nullptr)
467  throw Exception(TE_TR("Wrong type of object for removing a data source!"));
468 
469  connector->update(selecteds);
470 
471  QList<QListWidgetItem*> items = m_ui->m_datasourceListWidget->selectedItems();
472 
473  for(QList<QListWidgetItem*>::Iterator it = items.begin(); it != items.end(); ++it)
474  {
475  item = *it;
476 
477  QVariant udata = item->data(Qt::UserRole);
478 
479  QString dsId = udata.toString();
480 
481  if(dsId.isEmpty())
482  throw Exception(TE_TR("Invalid data source id!"));
483 
485 
486  item->setText(QString::fromUtf8(ds->getTitle().c_str()));
487  }
488 
489  if(items.isEmpty())
490  throw Exception(TE_TR("Update should not remove data source selection!"));
491 
492  dataSourcePressed(*(items.begin()));
493  m_ui->m_datasourceListWidget->update();
494  }
495  catch(const std::exception& e)
496  {
497  QMessageBox::warning(this,
498  tr("TerraLib Qt Components"),
499  tr(e.what()));
500  }
501  catch(...)
502  {
503  QMessageBox::warning(this,
504  tr("TerraLib Qt Components"),
505  tr("Unknown error while updating data source information!"));
506  }
507 }
508 
510 {
511  QListWidgetItem* item = m_ui->m_datasourceTypeListWidget->currentItem();
512 
513  if(item == nullptr)
514  return;
515 
516  QVariant udata = item->data(Qt::UserRole);
517 
518  QString dsTypeId = udata.toString();
519 
520  if(dsTypeId.isEmpty())
521  return;
522 
523  try
524  {
525  const DataSourceType* dsType = DataSourceTypeManager::getInstance().get(dsTypeId.toUtf8().data());
526 
527  if(dsType == nullptr)
528  throw Exception(TE_TR("Unknown data source type!"));
529 
530  std::unique_ptr<QWidget> connectorw(dsType->getWidget(DataSourceType::WIDGET_DATASOURCE_CONNECTOR, this));
531 
532  if(connectorw.get() == nullptr)
533  throw Exception(TE_TR("This type of data source hasn't provide a dialog for adding a new data source"));
534 
535  AbstractDataSourceConnector* connector = dynamic_cast<AbstractDataSourceConnector*>(connectorw.get());
536 
537  if(connector == nullptr)
538  throw Exception(TE_TR("Wrong type of object for adding a new data source!"));
539 
540  std::list<te::da::DataSourceInfoPtr> datasources;
541 
542  connector->create(datasources);
543 
544  for(std::list<te::da::DataSourceInfoPtr>::iterator it = datasources.begin(); it != datasources.end(); ++it)
545  {
546  if(it->get() == nullptr)
547  return;
548 
549  QListWidgetItem* item = new QListWidgetItem(QString::fromUtf8((*it)->getTitle().c_str()));
550  item->setData(Qt::UserRole, QVariant(QString::fromUtf8((*it)->getId().c_str())));
551  m_ui->m_datasourceListWidget->addItem(item);
552  m_ui->m_datasourceListWidget->setCurrentItem(item);
553  dataSourcePressed(item);
554  }
555  }
556  catch(const std::exception& e)
557  {
558  QMessageBox::warning(this,
559  tr("TerraLib Qt Components"),
560  tr(e.what()));
561  }
562  catch(...)
563  {
564  QMessageBox::warning(this,
565  tr("TerraLib Qt Components"),
566  tr("Unknown error while adding a new data source!"));
567  }
568 }
569 
571 {
572  m_ui->m_datasourceTypeTitleLabel->clear();
573  m_ui->m_datasourceListWidget->clear();
574  m_ui->m_datasourceDescriptionLabel->clear();
575  //m_ui->m_selectPushButton->setEnabled(false);
576  m_ui->m_addDataSourceToolButton->setEnabled(false);
577  m_ui->m_removeDataSourceToolButton->setEnabled(false);
578  m_ui->m_editDataSourceToolButton->setEnabled(false);
579  m_ui->m_createDataSourceToolButton->setEnabled(false);
580 
581  //emit hasSelectedDataSource(false);
582 
583  if(item == nullptr)
584  return;
585 
586  QVariant udata = item->data(Qt::UserRole);
587 
588  QString dsTypeName = udata.toString();
589 
590  if(dsTypeName.isEmpty())
591  return;
592 
593  m_ui->m_datasourceTypeTitleLabel->setText(item->text());
594 
595  std::vector<te::da::DataSourceInfoPtr> datasources;
596 
597  te::da::DataSourceInfoManager::getInstance().getByType(dsTypeName.toUtf8().data(), datasources);
598 
599  for(std::size_t i = 0; i < datasources.size(); ++i)
600  {
601  const te::da::DataSourceInfoPtr& datasource = datasources[i];
602 
603  if(datasource.get() == nullptr)
604  continue;
605 
606  const std::string& title = datasource->getTitle();
607 
608  const std::string& id = datasource->getId();
609 
610  QListWidgetItem* item = new QListWidgetItem(title.c_str());
611 
612  item->setData(Qt::UserRole, QVariant(QString(id.c_str())));
613 
614  m_ui->m_datasourceListWidget->addItem(item);
615  }
616 
617  //if(m_ui->m_datasourceListWidget->count() != 0)
618  //{
619  // QListWidgetItem* selected = m_ui->m_datasourceListWidget->item(0);
620 
621  // m_ui->m_datasourceListWidget->setCurrentItem(selected, QItemSelectionModel::Select);
622  // dataSourcePressed(selected);
623  //}
624 
625  m_ui->m_addDataSourceToolButton->setEnabled(m_addButtonEnabled);
626  m_ui->m_createDataSourceToolButton->setEnabled(m_createButtonEnabled);
627 
628  const DataSourceType* dsType = DataSourceTypeManager::getInstance().get(dsTypeName.toUtf8().data());
629 
630  if(dsType != nullptr)
631  m_ui->m_datasourceDescriptionLabel->setText(QString::fromUtf8(dsType->getDescription().c_str()));
632 }
633 
635 {
636  m_ui->m_datasourceDescriptionLabel->clear();
637 
638  if(item == nullptr)
639  return;
640 
641  QVariant udata = item->data(Qt::UserRole);
642 
643  QString id = udata.toString();
644 
645  if(id.isEmpty())
646  return;
647 
649 
650  if(ds.get() == nullptr)
651  {
652  QMessageBox::warning(this,
653  tr("TerraLib Qt Components"),
654  tr("The selected data source is not registered in the system.\nThis may be an error on the connector implementation!"));
655 
656  return;
657  }
658 
659  m_ui->m_datasourceDescriptionLabel->setText(QString::fromUtf8(ds->getDescription().c_str()));
660 
661  m_ui->m_removeDataSourceToolButton->setEnabled(m_removeButtonEnabled);
662  m_ui->m_editDataSourceToolButton->setEnabled(m_editButtonEnabled);
663  //m_ui->m_createDataSourceToolButton->setEnabled(m_createButtonEnabled);
664 
665  //emit hasSelectedDataSource(true);
666 }
667 
669 {
670  item->setSelected(true);
671 }
672 
673 //void te::qt::widgets::DataSourceSelectorDialog::add(DataSourcePtr ds)
674 //{
675 // if(ds.get() == 0)
676 // return;
677 //
678 // DataSourceManager::getInstance().add(ds);
679 //
680 // const std::string& title = ds->getTitle();
681 //
682 // const std::string& id = ds->getId();
683 //
684 // QListWidgetItem* item = new QListWidgetItem(title.c_str());
685 //
686 // item->setData(Qt::UserRole, QVariant(QString(id.c_str())));
687 //
688 // m_ui->m_datasourceListWidget->addItem(item);
689 //
690 // dataSourcePressed(item);
691 //}
692 //
693 //void te::qt::widgets::DataSourceSelectorDialog::update(DataSourcePtr ds)
694 //{
695 // if(ds.get() == 0)
696 // return;
697 //
698 // QListWidgetItem* item = m_ui->m_datasourceListWidget->currentItem();
699 //
700 // if(item == 0)
701 // return; // should be an exception!
702 //
703 // item->setData(Qt::UserRole, QVariant(QString::fromUtf8(ds->getId())));
704 //
705 // item->setText(QString::fromUtf8(ds->getTitle()));
706 //
707 // m_ui->m_datasourceListWidget->update();
708 //
709 // dataSourcePressed(item);
710 //}
711 
712 
Base exception class for plugin module.
virtual bool hasDatabaseSupport() const =0
static te::dt::Date ds(2010, 01, 01)
#define TE_TR(message)
It marks a string in order to get translated.
Definition: Translator.h:242
virtual void create(std::list< te::da::DataSourceInfoPtr > &datasources)=0
A dialog for selecting a data source.
virtual void update(std::list< te::da::DataSourceInfoPtr > &datasources)=0
static DataSourceTypeManager & getInstance()
It returns a reference to the singleton instance.
virtual bool hasVectorialSupport() const =0
virtual void remove(std::list< te::da::DataSourceInfoPtr > &datasources)=0
void setSelectionMode(QAbstractItemView::SelectionMode mode)
virtual bool hasRasterSupport() const =0
Ui::DataSourceSelectorWidgetForm * getForm() const
std::list< te::da::DataSourceInfoPtr > getSelecteds() const
A base class for widgets that allows application to create, edit or remove data sources.
virtual std::string getDescription() const =0
std::unique_ptr< Ui::DataSourceSelectorWidgetForm > m_ui
virtual void connect(std::list< te::da::DataSourceInfoPtr > &datasources)=0
DataSourceSelectorWidget(QWidget *parent=0, Qt::WindowFlags f=0)
virtual QWidget * getWidget(int widgetType, QWidget *parent=0, Qt::WindowFlags f=0) const =0
boost::shared_ptr< DataSourceInfo > DataSourceInfoPtr
virtual bool hasFileSupport() const =0
A base class for the suppported types of data source.