]> SALOME platform Git repositories - modules/jobmanager.git/blob - src/genericgui/JM_ResourceCatalog.cxx
Salome HOME
Merge from V6_main_20120808 08Aug12
[modules/jobmanager.git] / src / genericgui / JM_ResourceCatalog.cxx
1 // Copyright (C) 2009-2012  CEA/DEN, EDF R&D
2 //
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.
7 //
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.
12 //
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
16 //
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 //
19
20 #include "JM_ResourceCatalog.hxx"
21 #include "BL_Traces.hxx"
22 #include "JM_SalomeResource.hxx"
23 #include "JM_EditSalomeResource.hxx"
24
25 JM::ResourceCatalog::ResourceCatalog(QWidget *parent, BL::SALOMEServices * salome_services) : QWidget(parent)
26 {
27   DEBTRACE("Creating JM::ResourceCatalog");
28   BL_ASSERT(parent);
29   BL_ASSERT(salome_services);
30   _parent = parent;
31   _salome_services = salome_services;
32
33   _refresh_button = new QPushButton("Refresh Resource List");
34   _refresh_button->show();
35   _resource_files_list = new QListWidget(this);
36   _resource_files_list->setSelectionMode(QAbstractItemView::SingleSelection);
37   std::list<std::string> resource_list = _salome_services->getResourceList();
38   std::list<std::string>::iterator it;
39   for (it = resource_list.begin(); it != resource_list.end(); it++)
40   {
41     std::string resource = *it;
42     _resource_files_list->addItem(QString(resource.c_str()));
43   }
44
45   _show_button = new QPushButton("Show");
46   _show_button->setEnabled(false);
47   _edit_button = new QPushButton("Edit");
48   _edit_button->setEnabled(false);
49   _add_button = new QPushButton("Add");
50   _remove_button = new QPushButton("Remove");
51   _remove_button->setEnabled(false);
52
53   QHBoxLayout * button_layout = new QHBoxLayout(this);
54   button_layout->addWidget(_show_button);
55   button_layout->addWidget(_edit_button);
56   button_layout->addWidget(_add_button);
57   button_layout->addWidget(_remove_button);
58   QWidget * layout_widget = new QWidget(this);
59   layout_widget->setLayout(button_layout);
60
61   QVBoxLayout * mainLayout = new QVBoxLayout(this);
62   mainLayout->addWidget(_refresh_button);
63   mainLayout->addWidget(_resource_files_list);
64   mainLayout->addWidget(layout_widget);
65   setLayout(mainLayout);
66
67   // Buttons
68   connect(_refresh_button, SIGNAL(clicked()), this, SLOT(refresh_resource_list()));
69   connect(_show_button, SIGNAL(clicked()), this, SLOT(show_button()));
70   connect(_edit_button, SIGNAL(clicked()), this, SLOT(edit_button()));
71   connect(_add_button, SIGNAL(clicked()), this, SLOT(add_button()));
72   connect(_remove_button, SIGNAL(clicked()), this, SLOT(remove_button()));
73   // Double click on an item
74   connect(_resource_files_list, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(item_choosed(QListWidgetItem*)));
75   // Selection management
76   connect(_resource_files_list, SIGNAL(itemSelectionChanged()), this, SLOT(buttons_management()));
77 }
78
79 JM::ResourceCatalog::~ResourceCatalog()
80 {
81   DEBTRACE("Destroying JM::ResourceCatalog");
82 }
83
84 QListWidget * 
85 JM::ResourceCatalog::getQListWidget()
86 {
87   return _resource_files_list;
88 }
89
90 void
91 JM::ResourceCatalog::refresh_resource_list()
92 {
93   _resource_files_list->clear();
94   std::list<std::string> resource_list = _salome_services->getResourceList();
95   std::list<std::string>::iterator it;
96   for (it = resource_list.begin(); it != resource_list.end(); it++)
97   {
98     std::string resource = *it;
99     _resource_files_list->addItem(QString(resource.c_str()));
100   }
101 }
102
103 void
104 JM::ResourceCatalog::item_choosed(QListWidgetItem * item)
105 {
106   DEBTRACE("JM::ResourceCatalog::item_choosed");
107   JM::SalomeResource * resource_widget = new JM::SalomeResource(this,
108                                                                 _salome_services,
109                                                                 item->text().toStdString());
110   resource_widget->exec();
111   delete resource_widget;
112 }
113
114 void
115 JM::ResourceCatalog::buttons_management()
116 {
117   QList<QListWidgetItem *> item_list = _resource_files_list->selectedItems();
118   
119   // Test if an item is selected
120   if (item_list.size() == 0)
121   {
122     _show_button->setEnabled(false);
123     _edit_button->setEnabled(false);
124     _remove_button->setEnabled(false);
125   }
126   else
127   {
128     _show_button->setEnabled(true);
129     _edit_button->setEnabled(true);
130     _remove_button->setEnabled(true);
131   }
132 }
133
134 void
135 JM::ResourceCatalog::show_button()
136 {
137   QList<QListWidgetItem *> item_list = _resource_files_list->selectedItems();
138   item_choosed(item_list.at(0));
139 }
140
141 void
142 JM::ResourceCatalog::add_button()
143 {
144   JM::EditSalomeResource * resource_widget = new JM::EditSalomeResource(this,
145                                                                         _salome_services);
146   resource_widget->exec();
147   delete resource_widget;
148   refresh_resource_list();
149 }
150
151 void
152 JM::ResourceCatalog::remove_button()
153 {
154   QList<QListWidgetItem *> item_list = _resource_files_list->selectedItems();
155   QString item_name = item_list.at(0)->text();
156   _salome_services->removeResource(item_name.toStdString());
157   refresh_resource_list();
158 }
159
160 void
161 JM::ResourceCatalog::edit_button()
162 {
163   QList<QListWidgetItem *> item_list = _resource_files_list->selectedItems();
164   QString item_name = item_list.at(0)->text();
165   JM::EditSalomeResource * resource_widget = new JM::EditSalomeResource(this,
166                                                                         _salome_services,
167                                                                         item_name.toStdString());
168   resource_widget->exec();
169   delete resource_widget;
170   refresh_resource_list();
171 }