guicommon/MarketClientAssistant.hpp

Go to the documentation of this file.
00001 /*
00002   This file is part of OpenFLUID software
00003   Copyright (c) 2007-2010 INRA-Montpellier SupAgro
00004 
00005 
00006  == GNU General Public License Usage ==
00007 
00008   OpenFLUID is free software: you can redistribute it and/or modify
00009   it under the terms of the GNU General Public License as published by
00010   the Free Software Foundation, either version 3 of the License, or
00011   (at your option) any later version.
00012 
00013   OpenFLUID is distributed in the hope that it will be useful,
00014   but WITHOUT ANY WARRANTY; without even the implied warranty of
00015   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016   GNU General Public License for more details.
00017 
00018   You should have received a copy of the GNU General Public License
00019   along with OpenFLUID.  If not, see <http://www.gnu.org/licenses/>.
00020 
00021   In addition, as a special exception, INRA gives You the additional right
00022   to dynamically link the code of OpenFLUID with code not covered
00023   under the GNU General Public License ("Non-GPL Code") and to distribute
00024   linked combinations including the two, subject to the limitations in this
00025   paragraph. Non-GPL Code permitted under this exception must only link to
00026   the code of OpenFLUID dynamically through the OpenFLUID libraries
00027   interfaces, and only for building OpenFLUID plugins. The files of
00028   Non-GPL Code may be link to the OpenFLUID libraries without causing the
00029   resulting work to be covered by the GNU General Public License. You must
00030   obey the GNU General Public License in all respects for all of the
00031   OpenFLUID code and other code used in conjunction with OpenFLUID
00032   except the Non-GPL Code covered by this exception. If you modify
00033   this OpenFLUID, you may extend this exception to your version of the file,
00034   but you are not obligated to do so. If you do not wish to provide this
00035   exception without modification, you must delete this exception statement
00036   from your version and license this OpenFLUID solely under the GPL without
00037   exception.
00038 
00039 
00040  == Other Usage ==
00041 
00042   Other Usage means a use of OpenFLUID that is inconsistent with the GPL
00043   license, and requires a written agreement between You and INRA.
00044   Licensees for Other Usage of OpenFLUID may use this file in accordance
00045   with the terms contained in the written agreement between You and INRA.
00046  */
00047 
00056 #ifndef __MARKETCLIENTASSISTANT_HPP__
00057 #define __MARKETCLIENTASSISTANT_HPP__
00058 
00059 #include <gtkmm.h>
00060 #include <openfluid/market.hpp>
00061 
00062 #include <openfluid/dllexport.hpp>
00063 #include <openfluid/guicommon/MarketPackWidget.hpp>
00064 #include <openfluid/guicommon/MarketBuildOptionsDialog.hpp>
00065 
00066 namespace openfluid { namespace guicommon {
00067 
00068 
00069 class DLLEXPORT MarketClientAssistant : public Gtk::Assistant
00070 {
00071 
00072   private:
00073 
00074     // ===== Package selection =====//
00075     Gtk::VBox m_SelectionPageBox;
00076 
00077     Gtk::HBox m_URLBox;
00078     Gtk::Label m_URLLabel;
00079     Gtk::ComboBox m_URLCombo;
00080     Glib::RefPtr<Gtk::ListStore> m_RefURLComboBoxModel;
00081 
00082     class URLComboColumns : public Gtk::TreeModel::ColumnRecord
00083     {
00084       public:
00085 
00086         Gtk::TreeModelColumn<Glib::ustring> m_Name;
00087         Gtk::TreeModelColumn<Glib::ustring> m_URL;
00088 
00089         URLComboColumns() { add(m_Name); add(m_URL); }
00090     };
00091 
00092     URLComboColumns m_URLColumns;
00093 
00094 
00095     Gtk::VBox m_AvailPacksBox;
00096 
00097     Gtk::ScrolledWindow m_AvailPacksSWindow;
00098 
00099     Gtk::HBox m_ActionButtonsBox;
00100     Gtk::Button m_SelectAllButton;
00101     Gtk::Button m_SelectNoneButton;
00102     Gtk::Button m_CommonBuildConfigButton;
00103 
00104     std::list<MarketPackWidget*> mp_AvailPacksWidgets;
00105 
00106     void onURLComboChanged();
00107 
00108     void onPackageInstallModified();
00109 
00110     void onSelectAllClicked();
00111 
00112     void onSelectNoneClicked();
00113 
00114     void onCommonBuildConfigClicked();
00115 
00116 
00117     // ===== Licenses =====//
00118     Gtk::VBox m_LicensesPageBox;
00119 
00120     Gtk::Label m_LicensesLabel;
00121 
00122     Gtk::HBox m_LicensesReviewBox;
00123     Gtk::TreeView m_LicensesTreeView;
00124 
00125     Glib::RefPtr<Gtk::ListStore> m_RefLicenseTreeViewModel;
00126 
00127     class LicensesTreeViewColumns : public Gtk::TreeModel::ColumnRecord
00128     {
00129       public:
00130 
00131         Gtk::TreeModelColumn<Glib::ustring> m_ID;
00132 
00133         LicensesTreeViewColumns() { add(m_ID); }
00134     };
00135 
00136     LicensesTreeViewColumns m_LicensesColumns;
00137 
00138     Glib::RefPtr<Gtk::TreeSelection> m_RefLicensesTreeSelection;
00139 
00140     Gtk::TextView m_LicensesTextView;
00141 
00142     Glib::RefPtr<Gtk::TextBuffer> m_RefLicenseTextBuffer;
00143 
00144 
00145     Gtk::ScrolledWindow m_LicensesListSWindow;
00146     Gtk::ScrolledWindow m_LicensesReviewSWindow;
00147 
00148     Gtk::RadioButton m_LicensesAcceptRadio;
00149     Gtk::RadioButton m_LicensesDoNotRadio;
00150 
00151 
00152     void onLicensesTreeviewChanged();
00153 
00154     void onLicenseRadioClicked();
00155 
00156     // ===== Download and install =====//
00157     Gtk::VBox m_InstallPageBox;
00158 
00159     Gtk::TreeView m_InstallTreeView;
00160     Glib::RefPtr<Gtk::TreeView> m_RefInstallTreeView;
00161 
00162     Glib::RefPtr<Gtk::ListStore> m_RefInstallTreeViewModel;
00163 
00164     class InstallTreeViewColumns : public Gtk::TreeModel::ColumnRecord
00165     {
00166       public:
00167 
00168         Gtk::TreeModelColumn<Glib::ustring> m_ID;
00169         Gtk::TreeModelColumn<Glib::ustring> m_Format;
00170         Gtk::TreeModelColumn<Glib::ustring> m_Status;
00171 
00172         InstallTreeViewColumns() { add(m_ID); add(m_Format); add(m_Status);}
00173     };
00174 
00175     InstallTreeViewColumns m_InstallColumns;
00176 
00177 
00178     Gtk::ScrolledWindow m_InstallSWindow;
00179     Gtk::ProgressBar m_InstallProgressBar;
00180     Gtk::Button m_ViewLogButton;
00181     Gtk::Alignment m_LogButtonAlign;
00182 
00183     void onInstallTimeoutOnce();
00184 
00185     void onViewLogClicked();
00186 
00187 
00188     void setupSelectionPage();
00189     void setupConfirmationPage();
00190     void setupLicensesPage();
00191     void setupDownloadPage();
00192 
00193 
00194     void onApply();
00195     void onCancel();
00196     void onClose();
00197     void onPrepare(Gtk::Widget* Widget);
00198 
00199     void updateAvailPacksTreeview();
00200 
00201     void updateInstallTreeview();
00202 
00203     void initializeLicencesTreeView();
00204 
00205     openfluid::market::MarketClient m_MarketClient;
00206 
00207     int m_InstallationTimeout;
00208 
00209   public:
00210     MarketClientAssistant();
00211 
00212     virtual ~MarketClientAssistant();
00213 
00214 
00215 };
00216 
00217 } } //namespaces
00218 
00219 
00220 #endif /* __MARKETCLIENTASSISTANT_HPP__ */

Generated using Doxygen 1.7.3
Creative Commons License Creative Commons By-NC-ND license