1 // Copyright (C) 2009-2016 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 #include <QHBoxLayout>
26 #include <QListWidget>
27 #include <QPushButton>
28 #include <QVBoxLayout>
30 JM::ResourceCatalog::ResourceCatalog(QWidget *parent, BL::SALOMEServices * salome_services, bool batch_only)
32 _batch_only(batch_only)
34 DEBTRACE("Creating JM::ResourceCatalog");
36 BL_ASSERT(salome_services);
38 _salome_services = salome_services;
40 _refresh_button = new QPushButton("Refresh Resource List");
41 _refresh_button->show();
42 _resource_files_list = new QListWidget(this);
43 _resource_files_list->setSelectionMode(QAbstractItemView::SingleSelection);
44 std::list<std::string> resource_list = _salome_services->getResourceList(_batch_only);
45 std::list<std::string>::iterator it;
46 for (it = resource_list.begin(); it != resource_list.end(); it++)
48 std::string resource = *it;
49 _resource_files_list->addItem(QString(resource.c_str()));
52 _show_button = new QPushButton("Show");
53 _show_button->setEnabled(false);
54 _edit_button = new QPushButton("Edit");
55 _edit_button->setEnabled(false);
56 _add_button = new QPushButton("Add");
57 _remove_button = new QPushButton("Remove");
58 _remove_button->setEnabled(false);
60 QHBoxLayout * button_layout = new QHBoxLayout(this);
61 button_layout->addWidget(_show_button);
62 button_layout->addWidget(_edit_button);
63 button_layout->addWidget(_add_button);
64 button_layout->addWidget(_remove_button);
65 QWidget * layout_widget = new QWidget(this);
66 layout_widget->setLayout(button_layout);
68 QVBoxLayout * mainLayout = new QVBoxLayout(this);
69 mainLayout->addWidget(_refresh_button);
70 mainLayout->addWidget(_resource_files_list);
71 mainLayout->addWidget(layout_widget);
72 setLayout(mainLayout);
75 connect(_refresh_button, SIGNAL(clicked()), this, SLOT(refresh_resource_list()));
76 connect(_show_button, SIGNAL(clicked()), this, SLOT(show_button()));
77 connect(_edit_button, SIGNAL(clicked()), this, SLOT(edit_button()));
78 connect(_add_button, SIGNAL(clicked()), this, SLOT(add_button()));
79 connect(_remove_button, SIGNAL(clicked()), this, SLOT(remove_button()));
80 // Double click on an item
81 connect(_resource_files_list, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(item_choosed(QListWidgetItem*)));
82 // Selection management
83 connect(_resource_files_list, SIGNAL(itemSelectionChanged()), this, SLOT(buttons_management()));
86 JM::ResourceCatalog::~ResourceCatalog()
88 DEBTRACE("Destroying JM::ResourceCatalog");
92 JM::ResourceCatalog::getQListWidget()
94 return _resource_files_list;
98 JM::ResourceCatalog::refresh_resource_list()
100 _resource_files_list->clear();
101 std::list<std::string> resource_list = _salome_services->getResourceList(_batch_only);
102 std::list<std::string>::iterator it;
103 for (it = resource_list.begin(); it != resource_list.end(); it++)
105 std::string resource = *it;
106 _resource_files_list->addItem(QString(resource.c_str()));
111 JM::ResourceCatalog::item_choosed(QListWidgetItem * item)
113 DEBTRACE("JM::ResourceCatalog::item_choosed");
114 JM::SalomeResource * resource_widget = new JM::SalomeResource(this,
116 item->text().toUtf8().constData());
117 resource_widget->exec();
118 delete resource_widget;
122 JM::ResourceCatalog::buttons_management()
124 QList<QListWidgetItem *> item_list = _resource_files_list->selectedItems();
126 // Test if an item is selected
127 if (item_list.size() == 0)
129 _show_button->setEnabled(false);
130 _edit_button->setEnabled(false);
131 _remove_button->setEnabled(false);
135 _show_button->setEnabled(true);
136 _edit_button->setEnabled(true);
137 _remove_button->setEnabled(true);
142 JM::ResourceCatalog::show_button()
144 QList<QListWidgetItem *> item_list = _resource_files_list->selectedItems();
145 item_choosed(item_list.at(0));
149 JM::ResourceCatalog::add_button()
151 JM::EditSalomeResource * resource_widget = new JM::EditSalomeResource(this,
153 resource_widget->exec();
154 delete resource_widget;
155 refresh_resource_list();
159 JM::ResourceCatalog::remove_button()
161 QList<QListWidgetItem *> item_list = _resource_files_list->selectedItems();
162 QString item_name = item_list.at(0)->text();
163 _salome_services->removeResource(item_name.toUtf8().constData());
164 refresh_resource_list();
168 JM::ResourceCatalog::edit_button()
170 QList<QListWidgetItem *> item_list = _resource_files_list->selectedItems();
171 QString item_name = item_list.at(0)->text();
172 JM::EditSalomeResource * resource_widget = new JM::EditSalomeResource(this,
174 item_name.toUtf8().constData());
175 resource_widget->exec();
176 delete resource_widget;
177 refresh_resource_list();