NCL Composer  0.1.5
 All Classes Functions Variables Pages
RunGingaConfig.cpp
1 /* Copyright (c) 2011 Telemidia/PUC-Rio.
2  * All rights reserved. This program and the accompanying materials
3  * are made available under the terms of the Eclipse Public License v1.0
4  * which accompanies this distribution, and is available at
5  * http://www.eclipse.org/legal/epl-v10.html
6  *
7  * Contributors:
8  * Telemidia/PUC-Rio - initial API and implementation
9  */
10 #include "RunGingaConfig.h"
11 #include "ui_RunGingaConfig.h"
12 
13 #include <QDebug>
14 #include <QFileDialog>
15 #include <QMessageBox>
16 
17 #include <core/util/ComposerSettings.h>
18 using namespace composer::core::util;
19 
20 namespace composer {
21 namespace gui {
22 
23 RunGingaConfig::RunGingaConfig(QWidget *parent):
24  IPreferencesPage(parent), ui(new Ui::RunGingaConfig)
25 {
26  ui->setupUi(this);
27 
28  // \fixme fix the tab order
29  setTabOrder(ui->lineEdit_RemoteIP, ui->lineEdit_RemoteUser);
30  setTabOrder(ui->lineEdit_RemoteUser, ui->lineEdit_RemotePassword);
31  setTabOrder(ui->lineEdit_RemotePassword, ui->lineEdit_RemoteCmd);
32  setTabOrder(ui->lineEdit_RemoteCmd, ui->lineEdit_RemoteStopCmd);
33 
34  initializeDefaultValues(); // After that I can assume all values exists.
35  loadValuesFromSettings(); // Load the values from settings to UI
36 
37  connect(ui->localginga_Group, SIGNAL(toggled(bool)),
38  this, SLOT(changeToLocal(bool)));
39 
40  connect(ui->remotevm_Group, SIGNAL(toggled(bool)),
41  this, SLOT(changeToRemote(bool)));
42 
43  connect(ui->pushButton_Browse, SIGNAL(pressed()),
44  this, SLOT(browseButtonPressed()));
45 
46  ui->pushButton_Browse->setEnabled(true);
47 }
48 
49 RunGingaConfig::~RunGingaConfig()
50 {
51 
52 }
53 
54 void RunGingaConfig::initializeDefaultValues()
55 {
56  GlobalSettings settings;
57  settings.beginGroup("runginga");
58 
59  if(!settings.contains("remote_ip"))
60  settings.setValue("remote_ip", "192.168.1.101");
61 
62  if(!settings.contains("remote_user"))
63  settings.setValue("remote_user", "root");
64 
65  if(!settings.contains("remote_password"))
66  settings.setValue("remote_password", "telemidia");
67 
68  if(!settings.contains("remote_start_cmd"))
69  settings.setValue("remote_start_cmd", "/misc/launcher.sh");
70 
71  if(!settings.contains("remote_stop_cmd"))
72  settings.setValue("remote_stop_cmd", "killall -9 ginga");
73 
74  if(!settings.contains("remote_path"))
75  settings.setValue("remote_path", "/misc/ncl30");
76 
77  if(!settings.contains("run_remote"))
78  settings.setValue("run_remote", false);
79 
80  if(!settings.contains("local_ginga_cmd"))
81  settings.setValue("local_ginga_cmd", "ginga");
82 
83  if(!settings.contains("local_ginga_args"))
84  settings.setValue("local_ginga_args", "--ncl\n${nclpath}");
85 
86  settings.endGroup();
87 }
88 
89 void RunGingaConfig::setDefaultValues()
90 {
91  GlobalSettings settings;
92  settings.remove("runginga/*");
93 }
94 
95 void RunGingaConfig::loadValuesFromSettings()
96 {
97  GlobalSettings settings;
98  settings.beginGroup("runginga");
99  //Enable/disable remote_run
100  ui->remotevm_Group->setChecked(settings.value("run_remote").toBool());
101  ui->localginga_Group->setChecked(!settings.value("run_remote").toBool());
102 
103  //Remote Run data
104  ui->lineEdit_RemoteIP->setText(settings.value("remote_ip").toString());
105  ui->lineEdit_RemoteUser->setText(settings.value("remote_user").toString());
106  ui->lineEdit_RemotePassword->setText(settings.value("remote_password").toString());
107  ui->lineEdit_RemoteCmd->setText(settings.value("remote_start_cmd").toString());
108  ui->lineEdit_RemoteStopCmd->setText(settings.value("remote_stop_cmd").toString());
109  ui->lineEdit_RemotePath->setText(settings.value("remote_path").toString());
110 
111  //Local Run data
112  ui->lineEdit_local_Command->setText(settings.value("local_ginga_cmd").toString());
113  ui->plainTextEdit_local_Args->setPlainText(settings.value("local_ginga_args").toString());
114  settings.endGroup();
115 }
116 
117 void RunGingaConfig::applyValues()
118 {
119  GlobalSettings settings;
120 
121  settings.beginGroup("runginga");
122  settings.setValue("remote_ip", ui->lineEdit_RemoteIP->text());
123  settings.setValue("remote_user", ui->lineEdit_RemoteUser->text());
124  settings.setValue("remote_password", ui->lineEdit_RemotePassword->text());
125  settings.setValue("remote_start_cmd", ui->lineEdit_RemoteCmd->text());
126  settings.setValue("remote_stop_cmd", ui->lineEdit_RemoteStopCmd->text());
127  settings.setValue("remote_path", ui->lineEdit_RemotePath->text());
128 
129  settings.setValue("run_remote", ui->remotevm_Group->isChecked());
130 
131  settings.setValue("local_ginga_cmd", ui->lineEdit_local_Command->text());
132  settings.setValue("local_ginga_args",
133  ui->plainTextEdit_local_Args->toPlainText());
134  settings.endGroup();
135 }
136 
137 void RunGingaConfig::changeToLocal(bool toLocal)
138 {
139  if(ui->remotevm_Group->isChecked() == toLocal)
140  ui->remotevm_Group->setChecked(!toLocal);
141 }
142 
143 void RunGingaConfig::changeToRemote(bool toRemote)
144 {
145 #ifndef WITH_LIBSSH2
146  if(toRemote)
147  {
148  QMessageBox::warning(this, tr("Error"),
149  tr("You can not enable remote because your system was not compiled with support for it!"));
150  changeToLocal(true);
151  return;
152  }
153 #endif
154 
155  if(ui->localginga_Group->isChecked() == toRemote)
156  ui->localginga_Group->setChecked(!toRemote);
157 }
158 
159 void RunGingaConfig::browseButtonPressed()
160 {
161  QString gingaPath = QFileDialog::getOpenFileName(this,
162  tr("Ginga executable location"),
163  ui->lineEdit_local_Command->text());
164  if(gingaPath != "")
165  {
166 #ifdef WIN32
167  gingaPath = gingaPath.replace("\\", "/");
168 #endif
169  ui->lineEdit_local_Command->setText(gingaPath);
170  }
171 }
172 
173 } } //end namespace