1 // Copyright (C) 2009-2014 CEA/DEN, EDF R&D
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License, or (at your option) any later version.
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 // Lesser General Public License for more details.
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
20 #include "JM_ResourceCatalog.hxx"
21 #include "BL_Traces.hxx"
22 #include "JM_SalomeResource.hxx"
23 #include "JM_EditSalomeResource.hxx"
25 JM::ResourceCatalog::ResourceCatalog(QWidget *parent, BL::SALOMEServices * salome_services, bool batch_only)
27 _batch_only(batch_only)
29 DEBTRACE("Creating JM::ResourceCatalog");
31 BL_ASSERT(salome_services);
33 _salome_services = salome_services;
35 _refresh_button = new QPushButton("Refresh Resource List");
36 _refresh_button->show();
37 _resource_files_list = new QListWidget(this);
38 _resource_files_list->setSelectionMode(QAbstractItemView::SingleSelection);
39 std::list<std::string> resource_list = _salome_services->getResourceList(_batch_only);
40 std::list<std::string>::iterator it;
41 for (it = resource_list.begin(); it != resource_list.end(); it++)
43 std::string resource = *it;
44 _resource_files_list->addItem(QString(resource.c_str()));
47 _show_button = new QPushButton("Show");
48 _show_button->setEnabled(false);
49 _edit_button = new QPushButton("Edit");
50 _edit_button->setEnabled(false);
51 _add_button = new QPushButton("Add");
52 _remove_button = new QPushButton("Remove");
53 _remove_button->setEnabled(false);
55 QHBoxLayout * button_layout = new QHBoxLayout(this);
56 button_layout->addWidget(_show_button);
57 button_layout->addWidget(_edit_button);
58 button_layout->addWidget(_add_button);
59 button_layout->addWidget(_remove_button);
60 QWidget * layout_widget = new QWidget(this);
61 layout_widget->setLayout(button_layout);
63 QVBoxLayout * mainLayout = new QVBoxLayout(this);
64 mainLayout->addWidget(_refresh_button);
65 mainLayout->addWidget(_resource_files_list);
66 mainLayout->addWidget(layout_widget);
67 setLayout(mainLayout);
70 connect(_refresh_button, SIGNAL(clicked()), this, SLOT(refresh_resource_list()));
71 connect(_show_button, SIGNAL(clicked()), this, SLOT(show_button()));
72 connect(_edit_button, SIGNAL(clicked()), this, SLOT(edit_button()));
73 connect(_add_button, SIGNAL(clicked()), this, SLOT(add_button()));
74 connect(_remove_button, SIGNAL(clicked()), this, SLOT(remove_button()));
75 // Double click on an item
76 connect(_resource_files_list, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(item_choosed(QListWidgetItem*)));
77 // Selection management
78 connect(_resource_files_list, SIGNAL(itemSelectionChanged()), this, SLOT(buttons_management()));
81 JM::ResourceCatalog::~ResourceCatalog()
83 DEBTRACE("Destroying JM::ResourceCatalog");
87 JM::ResourceCatalog::getQListWidget()
89 return _resource_files_list;
93 JM::ResourceCatalog::refresh_resource_list()
95 _resource_files_list->clear();
96 std::list<std::string> resource_list = _salome_services->getResourceList(_batch_only);
97 std::list<std::string>::iterator it;
98 for (it = resource_list.begin(); it != resource_list.end(); it++)
100 std::string resource = *it;
101 _resource_files_list->addItem(QString(resource.c_str()));
106 JM::ResourceCatalog::item_choosed(QListWidgetItem * item)
108 DEBTRACE("JM::ResourceCatalog::item_choosed");
109 JM::SalomeResource * resource_widget = new JM::SalomeResource(this,
111 item->text().toStdString());
112 resource_widget->exec();
113 delete resource_widget;
117 JM::ResourceCatalog::buttons_management()
119 QList<QListWidgetItem *> item_list = _resource_files_list->selectedItems();
121 // Test if an item is selected
122 if (item_list.size() == 0)
124 _show_button->setEnabled(false);
125 _edit_button->setEnabled(false);
126 _remove_button->setEnabled(false);
130 _show_button->setEnabled(true);
131 _edit_button->setEnabled(true);
132 _remove_button->setEnabled(true);
137 JM::ResourceCatalog::show_button()
139 QList<QListWidgetItem *> item_list = _resource_files_list->selectedItems();
140 item_choosed(item_list.at(0));
144 JM::ResourceCatalog::add_button()
146 JM::EditSalomeResource * resource_widget = new JM::EditSalomeResource(this,
148 resource_widget->exec();
149 delete resource_widget;
150 refresh_resource_list();
154 JM::ResourceCatalog::remove_button()
156 QList<QListWidgetItem *> item_list = _resource_files_list->selectedItems();
157 QString item_name = item_list.at(0)->text();
158 _salome_services->removeResource(item_name.toStdString());
159 refresh_resource_list();
163 JM::ResourceCatalog::edit_button()
165 QList<QListWidgetItem *> item_list = _resource_files_list->selectedItems();
166 QString item_name = item_list.at(0)->text();
167 JM::EditSalomeResource * resource_widget = new JM::EditSalomeResource(this,
169 item_name.toStdString());
170 resource_widget->exec();
171 delete resource_widget;
172 refresh_resource_list();