diff --git a/Dizzy/GlobalConfig.cs b/Dizzy/GlobalConfig.cs
index 1170a10..dcfcf67 100644
--- a/Dizzy/GlobalConfig.cs
+++ b/Dizzy/GlobalConfig.cs
@@ -8,7 +8,13 @@ namespace Dizzy
public static class GlobalConfig
{
+ /* La password non può venire memorizzata nel database (o almeno
+ * non per ora) per motivi di sicurezza, e quindi viene memorizzata
+ * temporaneamente qui */
public static string password;
+
+ /* Questa proprietà ci permette di capire se abbiamo effettuato
+ * l'autenticazione, ovvero se i dati di autenticazione sono presenti */
private static bool _authenticated;
public static bool authenticated {
get {
@@ -18,8 +24,13 @@ namespace Dizzy
lock(typeof(GlobalConfig)) { _authenticated = value; }
}
}
+
+
+
+ /* Alcune variabili che ci torneranno utili in seguito */
private static SQLiteConnection conn;
+ /* Piccolo buffer */
private static string val;
static GlobalConfig ()
@@ -30,6 +41,27 @@ namespace Dizzy
Init ();
}
+ /* Carichiamo i valori di default senza sovrascrivere personalizzazioni
+ * già esistenti */
+ public static void LoadDefaults () {
+
+ /* Il server di default */
+ if (GetValue("server") == "")
+ InsertValue("server", "poisson.phc.unipi.it");
+
+ /* La cartella dove trovare le cartelle di tutti gli utenti,
+ * o più genericamente i file */
+ if (GetValue("folder") == "")
+ InsertValue("folder", "/nobackup");
+
+ /* Dove si trova l'indice */
+ if (GetValue("index") == "")
+ InsertValue("index", "/nobackup/robol/index.db");
+
+ }
+
+
+
public static string GetValue(string field)
{
diff --git a/Dizzy/MainWindow.cs b/Dizzy/MainWindow.cs
index 07cf962..26d4da9 100644
--- a/Dizzy/MainWindow.cs
+++ b/Dizzy/MainWindow.cs
@@ -29,14 +29,25 @@ public partial class MainWindow : Gtk.Window
if (downloadpath != "")
downloadpathchooser.SetFilename(downloadpath);
-
-
this.protocol = new Protocol ();
Log.StatusBarUpdate += this.OnStatusBarUpdate;
+
+ /* Carichiamo i valori di default della configurazione */
+ GlobalConfig.LoadDefaults ();
+
+ /* Facciamo in modo che il pannello di configurazione rispecchi
+ * le scelte dell'utente */
+ RefreshConfigPanel ();
}
+ public void RefreshConfigPanel () {
+ entryConfigurationFolder.Text = GlobalConfig.GetValue("folder");
+ entryConfigurationIndex.Text = GlobalConfig.GetValue("index");
+ entryConfigurationServer.Text = GlobalConfig.GetValue("server");
+ }
+
public void OnStatusBarUpdate (string message)
{
dizzystatus.Push(0, message);
@@ -132,6 +143,17 @@ public partial class MainWindow : Gtk.Window
Search ();
}
+ protected virtual void OnButtonUpdateConfigurationClicked (object sender, System.EventArgs e)
+ {
+ /* Salviamo il contenuto delle entry nel database */
+ GlobalConfig.InsertValue("server", entryConfigurationServer.Text);
+ GlobalConfig.InsertValue("folder", entryConfigurationFolder.Text);
+ GlobalConfig.InsertValue("index", entryConfigurationIndex.Text );
+ }
+
+
+
+
diff --git a/Dizzy/Protocol.cs b/Dizzy/Protocol.cs
index 399b661..3189547 100644
--- a/Dizzy/Protocol.cs
+++ b/Dizzy/Protocol.cs
@@ -155,7 +155,7 @@ namespace Dizzy
try {
lock(typeof(GlobalConfig)){
Log.Info ("Aggiornamento della lista avviato");
- s.Get("/nobackup/robol/index.db", GlobalConfig.ListFileName());
+ s.Get(GlobalConfig.GetValue("index"), GlobalConfig.ListFileName());
Log.Info ("Lista Aggiornata");
s.Close ();
}}
diff --git a/Dizzy/SFTPConnection.cs b/Dizzy/SFTPConnection.cs
index f407a78..6ab1810 100644
--- a/Dizzy/SFTPConnection.cs
+++ b/Dizzy/SFTPConnection.cs
@@ -27,7 +27,7 @@ namespace Dizzy
// Inizializziamo il protocollo
this.user = user;
- this.sftp = new Sftp ("poisson.phc.unipi.it", user);
+ this.sftp = new Sftp (GlobalConfig.GetValue("server"), user);
this.sftp.Password = password;
this.sftp.OnTransferStart += new FileTransferEvent(this.TransferStartedHandler);
@@ -66,53 +66,6 @@ namespace Dizzy
sftp.Connect (22);
}
- public ArrayList SearchFiles()
- {
- ArrayList matches = new ArrayList ();
- Console.WriteLine(" => Scan della nobackup");
- // ArrayList users = sftp.GetFileList ("/nobackup/");
- ArrayList users = new ArrayList();
- users.Add("robol");
- users.Add("bianchi");
- foreach(string folder in users)
- {
- if (folder == ".")
- continue;
- else if (folder == "..")
- continue;
- Console.WriteLine(" => Scan di {0}", folder);
- try { matches.AddRange (GetFolderContent(folder)); }
- catch(Exception e) { Console.WriteLine (e.Message); }
- }
- Console.WriteLine(" => Scan terminato");
- return matches;
- }
-
- protected ArrayList GetFolderContent(string folder)
- {
- ArrayList matches, files;
- File f;
- string user;
- files = sftp.GetFileList("/nobackup/" + folder + "/");
- matches = new ArrayList ();
- foreach(string entry in files)
- {
- // Controllo che non sia una cartella. Evidentemente
- // questo metodo non è affidabile, ma per ora è il meglio
- // che SFTP ci permetta di fare.
- if(entry.IndexOf(".") == -1)
- matches.AddRange(GetFolderContent(folder + "/" + entry));
- else if(!entry.StartsWith("."))
- {
- user = folder;
- if(user.Contains("/"))
- user = user.Substring(0, user.IndexOf("/"));
- f = new File("/nobackup/" + folder + "/" + entry, user );
- matches.Add(f);
- }
- }
- return matches;
- }
public void Download(File f, string downloadFolder)
{
@@ -121,7 +74,11 @@ namespace Dizzy
public void Upload(string filename)
{
- this.sftp.Put(filename, "/nobackup/" + this.user + "/");
+ /* Normalizziamo il nome della cartella sul server */
+ string folder = GlobalConfig.GetValue("folder");
+ if (!folder.EndsWith("/"))
+ folder = folder + "/";
+ this.sftp.Put(filename, folder + this.user + "/");
}
public void Disconnect ()
diff --git a/gtk-gui/Dizzy.AuthDialog.cs b/gtk-gui/Dizzy.AuthDialog.cs
index a657f08..15fef70 100644
--- a/gtk-gui/Dizzy.AuthDialog.cs
+++ b/gtk-gui/Dizzy.AuthDialog.cs
@@ -69,7 +69,6 @@ namespace Dizzy {
w3.Fill = false;
// Container child vbox2.Gtk.Box+BoxChild
this.table1 = new Gtk.Table(((uint)(2)), ((uint)(2)), false);
- this.table1.Name = "table1";
this.table1.RowSpacing = ((uint)(6));
this.table1.ColumnSpacing = ((uint)(6));
// Container child table1.Gtk.Table+TableChild
diff --git a/gtk-gui/MainWindow.cs b/gtk-gui/MainWindow.cs
index ed15da2..9fc6b09 100644
--- a/gtk-gui/MainWindow.cs
+++ b/gtk-gui/MainWindow.cs
@@ -78,6 +78,24 @@ public partial class MainWindow {
private Gtk.Button button184;
+ private Gtk.Button ButtonUpdateConfiguration;
+
+ private Gtk.Label label11;
+
+ private Gtk.Table table3;
+
+ private Gtk.Entry entryConfigurationFolder;
+
+ private Gtk.Entry entryConfigurationIndex;
+
+ private Gtk.Entry entryConfigurationServer;
+
+ private Gtk.Label label12;
+
+ private Gtk.Label label13;
+
+ private Gtk.Label label14;
+
private Gtk.FileChooserButton uploadChooserButton;
private Gtk.Label label7;
@@ -102,14 +120,13 @@ public partial class MainWindow {
this.notebook1 = new Gtk.Notebook();
this.notebook1.CanFocus = true;
this.notebook1.Name = "notebook1";
- this.notebook1.CurrentPage = 0;
+ this.notebook1.CurrentPage = 2;
// Container child notebook1.Gtk.Notebook+NotebookChild
this.vbox3 = new Gtk.VBox();
this.vbox3.Name = "vbox3";
this.vbox3.Spacing = 6;
// Container child vbox3.Gtk.Box+BoxChild
this.table1 = new Gtk.Table(((uint)(2)), ((uint)(3)), false);
- this.table1.Name = "table1";
this.table1.RowSpacing = ((uint)(6));
this.table1.ColumnSpacing = ((uint)(6));
this.table1.BorderWidth = ((uint)(5));
@@ -271,7 +288,7 @@ public partial class MainWindow {
this.notebook1.SetTabLabel(this.vbox2, this.label3);
this.label3.ShowAll();
// Container child notebook1.Gtk.Notebook+NotebookChild
- this.table2 = new Gtk.Table(((uint)(5)), ((uint)(2)), false);
+ this.table2 = new Gtk.Table(((uint)(7)), ((uint)(2)), false);
this.table2.Name = "table2";
this.table2.RowSpacing = ((uint)(6));
this.table2.ColumnSpacing = ((uint)(6));
@@ -380,17 +397,128 @@ public partial class MainWindow {
w28.XOptions = ((Gtk.AttachOptions)(4));
w28.YOptions = ((Gtk.AttachOptions)(4));
// Container child table2.Gtk.Table+TableChild
+ this.ButtonUpdateConfiguration = new Gtk.Button();
+ this.ButtonUpdateConfiguration.CanFocus = true;
+ this.ButtonUpdateConfiguration.Name = "ButtonUpdateConfiguration";
+ this.ButtonUpdateConfiguration.UseUnderline = true;
+ this.ButtonUpdateConfiguration.Label = Mono.Unix.Catalog.GetString("Aggiorna\nconfigurazione");
+ this.table2.Add(this.ButtonUpdateConfiguration);
+ Gtk.Table.TableChild w29 = ((Gtk.Table.TableChild)(this.table2[this.ButtonUpdateConfiguration]));
+ w29.TopAttach = ((uint)(6));
+ w29.BottomAttach = ((uint)(7));
+ w29.LeftAttach = ((uint)(1));
+ w29.RightAttach = ((uint)(2));
+ w29.XOptions = ((Gtk.AttachOptions)(4));
+ w29.YOptions = ((Gtk.AttachOptions)(4));
+ // Container child table2.Gtk.Table+TableChild
+ this.label11 = new Gtk.Label();
+ this.label11.Name = "label11";
+ this.label11.Xalign = 0F;
+ this.label11.LabelProp = Mono.Unix.Catalog.GetString("<b>Opzioni di connessione</b>");
+ this.label11.UseMarkup = true;
+ this.table2.Add(this.label11);
+ Gtk.Table.TableChild w30 = ((Gtk.Table.TableChild)(this.table2[this.label11]));
+ w30.TopAttach = ((uint)(5));
+ w30.BottomAttach = ((uint)(6));
+ w30.XOptions = ((Gtk.AttachOptions)(4));
+ w30.YOptions = ((Gtk.AttachOptions)(4));
+ // Container child table2.Gtk.Table+TableChild
+ this.table3 = new Gtk.Table(((uint)(3)), ((uint)(2)), false);
+ this.table3.Name = "table3";
+ this.table3.RowSpacing = ((uint)(6));
+ this.table3.ColumnSpacing = ((uint)(6));
+ // Container child table3.Gtk.Table+TableChild
+ this.entryConfigurationFolder = new Gtk.Entry();
+ this.entryConfigurationFolder.CanFocus = true;
+ this.entryConfigurationFolder.Name = "entryConfigurationFolder";
+ this.entryConfigurationFolder.Text = Mono.Unix.Catalog.GetString("/nobackup");
+ this.entryConfigurationFolder.IsEditable = true;
+ this.entryConfigurationFolder.InvisibleChar = '•';
+ this.table3.Add(this.entryConfigurationFolder);
+ Gtk.Table.TableChild w31 = ((Gtk.Table.TableChild)(this.table3[this.entryConfigurationFolder]));
+ w31.TopAttach = ((uint)(1));
+ w31.BottomAttach = ((uint)(2));
+ w31.LeftAttach = ((uint)(1));
+ w31.RightAttach = ((uint)(2));
+ w31.YOptions = ((Gtk.AttachOptions)(4));
+ // Container child table3.Gtk.Table+TableChild
+ this.entryConfigurationIndex = new Gtk.Entry();
+ this.entryConfigurationIndex.CanFocus = true;
+ this.entryConfigurationIndex.Name = "entryConfigurationIndex";
+ this.entryConfigurationIndex.Text = Mono.Unix.Catalog.GetString("/nobackup/robol/index.db");
+ this.entryConfigurationIndex.IsEditable = true;
+ this.entryConfigurationIndex.InvisibleChar = '•';
+ this.table3.Add(this.entryConfigurationIndex);
+ Gtk.Table.TableChild w32 = ((Gtk.Table.TableChild)(this.table3[this.entryConfigurationIndex]));
+ w32.TopAttach = ((uint)(2));
+ w32.BottomAttach = ((uint)(3));
+ w32.LeftAttach = ((uint)(1));
+ w32.RightAttach = ((uint)(2));
+ w32.YOptions = ((Gtk.AttachOptions)(4));
+ // Container child table3.Gtk.Table+TableChild
+ this.entryConfigurationServer = new Gtk.Entry();
+ this.entryConfigurationServer.CanFocus = true;
+ this.entryConfigurationServer.Name = "entryConfigurationServer";
+ this.entryConfigurationServer.Text = Mono.Unix.Catalog.GetString("poisson.phc.unipi.it");
+ this.entryConfigurationServer.IsEditable = true;
+ this.entryConfigurationServer.InvisibleChar = '•';
+ this.table3.Add(this.entryConfigurationServer);
+ Gtk.Table.TableChild w33 = ((Gtk.Table.TableChild)(this.table3[this.entryConfigurationServer]));
+ w33.LeftAttach = ((uint)(1));
+ w33.RightAttach = ((uint)(2));
+ w33.YOptions = ((Gtk.AttachOptions)(4));
+ // Container child table3.Gtk.Table+TableChild
+ this.label12 = new Gtk.Label();
+ this.label12.Name = "label12";
+ this.label12.Xalign = 0F;
+ this.label12.LabelProp = Mono.Unix.Catalog.GetString("Server");
+ this.label12.Wrap = true;
+ this.table3.Add(this.label12);
+ Gtk.Table.TableChild w34 = ((Gtk.Table.TableChild)(this.table3[this.label12]));
+ w34.XOptions = ((Gtk.AttachOptions)(4));
+ w34.YOptions = ((Gtk.AttachOptions)(4));
+ // Container child table3.Gtk.Table+TableChild
+ this.label13 = new Gtk.Label();
+ this.label13.Name = "label13";
+ this.label13.Xalign = 0F;
+ this.label13.LabelProp = Mono.Unix.Catalog.GetString("Cartella condivisa");
+ this.label13.Wrap = true;
+ this.table3.Add(this.label13);
+ Gtk.Table.TableChild w35 = ((Gtk.Table.TableChild)(this.table3[this.label13]));
+ w35.TopAttach = ((uint)(1));
+ w35.BottomAttach = ((uint)(2));
+ w35.XOptions = ((Gtk.AttachOptions)(4));
+ w35.YOptions = ((Gtk.AttachOptions)(4));
+ // Container child table3.Gtk.Table+TableChild
+ this.label14 = new Gtk.Label();
+ this.label14.Name = "label14";
+ this.label14.Xalign = 0F;
+ this.label14.LabelProp = Mono.Unix.Catalog.GetString("File di indice");
+ this.label14.Wrap = true;
+ this.table3.Add(this.label14);
+ Gtk.Table.TableChild w36 = ((Gtk.Table.TableChild)(this.table3[this.label14]));
+ w36.TopAttach = ((uint)(2));
+ w36.BottomAttach = ((uint)(3));
+ w36.XOptions = ((Gtk.AttachOptions)(4));
+ w36.YOptions = ((Gtk.AttachOptions)(4));
+ this.table2.Add(this.table3);
+ Gtk.Table.TableChild w37 = ((Gtk.Table.TableChild)(this.table2[this.table3]));
+ w37.TopAttach = ((uint)(6));
+ w37.BottomAttach = ((uint)(7));
+ w37.XOptions = ((Gtk.AttachOptions)(4));
+ w37.YOptions = ((Gtk.AttachOptions)(4));
+ // Container child table2.Gtk.Table+TableChild
this.uploadChooserButton = new Gtk.FileChooserButton(Mono.Unix.Catalog.GetString("Seleziona un file"), ((Gtk.FileChooserAction)(0)));
this.uploadChooserButton.Name = "uploadChooserButton";
this.table2.Add(this.uploadChooserButton);
- Gtk.Table.TableChild w29 = ((Gtk.Table.TableChild)(this.table2[this.uploadChooserButton]));
- w29.TopAttach = ((uint)(4));
- w29.BottomAttach = ((uint)(5));
- w29.XOptions = ((Gtk.AttachOptions)(4));
- w29.YOptions = ((Gtk.AttachOptions)(4));
+ Gtk.Table.TableChild w38 = ((Gtk.Table.TableChild)(this.table2[this.uploadChooserButton]));
+ w38.TopAttach = ((uint)(4));
+ w38.BottomAttach = ((uint)(5));
+ w38.XOptions = ((Gtk.AttachOptions)(4));
+ w38.YOptions = ((Gtk.AttachOptions)(4));
this.notebook1.Add(this.table2);
- Gtk.Notebook.NotebookChild w30 = ((Gtk.Notebook.NotebookChild)(this.notebook1[this.table2]));
- w30.Position = 2;
+ Gtk.Notebook.NotebookChild w39 = ((Gtk.Notebook.NotebookChild)(this.notebook1[this.table2]));
+ w39.Position = 2;
// Notebook tab
this.label7 = new Gtk.Label();
this.label7.Name = "label7";
@@ -398,17 +526,17 @@ public partial class MainWindow {
this.notebook1.SetTabLabel(this.table2, this.label7);
this.label7.ShowAll();
this.vbox1.Add(this.notebook1);
- Gtk.Box.BoxChild w31 = ((Gtk.Box.BoxChild)(this.vbox1[this.notebook1]));
- w31.Position = 0;
+ Gtk.Box.BoxChild w40 = ((Gtk.Box.BoxChild)(this.vbox1[this.notebook1]));
+ w40.Position = 0;
// Container child vbox1.Gtk.Box+BoxChild
this.dizzystatus = new Gtk.Statusbar();
this.dizzystatus.Name = "dizzystatus";
this.dizzystatus.Spacing = 6;
this.vbox1.Add(this.dizzystatus);
- Gtk.Box.BoxChild w32 = ((Gtk.Box.BoxChild)(this.vbox1[this.dizzystatus]));
- w32.Position = 1;
- w32.Expand = false;
- w32.Fill = false;
+ Gtk.Box.BoxChild w41 = ((Gtk.Box.BoxChild)(this.vbox1[this.dizzystatus]));
+ w41.Position = 1;
+ w41.Expand = false;
+ w41.Fill = false;
this.Add(this.vbox1);
if ((this.Child != null)) {
this.Child.ShowAll();
@@ -422,6 +550,7 @@ public partial class MainWindow {
this.tasklist.CursorChanged += new System.EventHandler(this.OnTasklistCursorChanged);
this.downloadpathchooser.SelectionChanged += new System.EventHandler(this.OnDownloadPathSelectionChanged);
this.blockTransfer.Clicked += new System.EventHandler(this.OnBlockTransferClicked);
+ this.ButtonUpdateConfiguration.Clicked += new System.EventHandler(this.OnButtonUpdateConfigurationClicked);
this.button184.Clicked += new System.EventHandler(this.OnUploadRequested);
this.button183.Clicked += new System.EventHandler(this.OnListUpdateRequired);
this.button182.Clicked += new System.EventHandler(this.OnDisconnectionRequested);
diff --git a/gtk-gui/gui.stetic b/gtk-gui/gui.stetic
index 13e4012..25a4a0c 100644
--- a/gtk-gui/gui.stetic
+++ b/gtk-gui/gui.stetic
@@ -8,7 +8,7 @@
<widget-library name="glade-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
<widget-library name="../bin/Release/Dizzy.exe" internal="true" />
</import>
- <widget class="Gtk.Window" id="MainWindow" design-size="547 349">
+ <widget class="Gtk.Window" id="MainWindow" design-size="654 405">
<property name="MemberName" />
<property name="Title" translatable="yes">Dizzy 0.1</property>
<property name="Icon">stock:stock_connect Menu</property>
@@ -25,7 +25,7 @@
<widget class="Gtk.Notebook" id="notebook1">
<property name="MemberName" />
<property name="CanFocus">True</property>
- <property name="CurrentPage">0</property>
+ <property name="CurrentPage">2</property>
<child>
<widget class="Gtk.VBox" id="vbox3">
<property name="MemberName" />
@@ -298,7 +298,7 @@ Libro</property>
<child>
<widget class="Gtk.Table" id="table2">
<property name="MemberName" />
- <property name="NRows">5</property>
+ <property name="NRows">7</property>
<property name="NColumns">2</property>
<property name="RowSpacing">6</property>
<property name="ColumnSpacing">6</property>
@@ -310,6 +310,9 @@ Libro</property>
<placeholder />
</child>
<child>
+ <placeholder />
+ </child>
+ <child>
<widget class="Gtk.Alignment" id="alignment1">
<property name="MemberName" />
<child>
@@ -487,6 +490,203 @@ Libro</property>
</packing>
</child>
<child>
+ <widget class="Gtk.Button" id="ButtonUpdateConfiguration">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Type">TextOnly</property>
+ <property name="Label" translatable="yes">Aggiorna
+configurazione</property>
+ <property name="UseUnderline">True</property>
+ <signal name="Clicked" handler="OnButtonUpdateConfigurationClicked" />
+ </widget>
+ <packing>
+ <property name="TopAttach">6</property>
+ <property name="BottomAttach">7</property>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label11">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="LabelProp" translatable="yes"><b>Opzioni di connessione</b></property>
+ <property name="UseMarkup">True</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">5</property>
+ <property name="BottomAttach">6</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Table" id="table3">
+ <property name="MemberName" />
+ <property name="NRows">3</property>
+ <property name="NColumns">2</property>
+ <property name="RowSpacing">6</property>
+ <property name="ColumnSpacing">6</property>
+ <child>
+ <widget class="Gtk.Entry" id="entryConfigurationFolder">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Text" translatable="yes">/nobackup</property>
+ <property name="IsEditable">True</property>
+ <property name="InvisibleChar">•</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">1</property>
+ <property name="BottomAttach">2</property>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">True</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Entry" id="entryConfigurationIndex">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Text" translatable="yes">/nobackup/robol/index.db</property>
+ <property name="IsEditable">True</property>
+ <property name="InvisibleChar">•</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">2</property>
+ <property name="BottomAttach">3</property>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">True</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Entry" id="entryConfigurationServer">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Text" translatable="yes">poisson.phc.unipi.it</property>
+ <property name="IsEditable">True</property>
+ <property name="InvisibleChar">•</property>
+ </widget>
+ <packing>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">True</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label12">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="LabelProp" translatable="yes">Server</property>
+ <property name="Wrap">True</property>
+ </widget>
+ <packing>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label13">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="LabelProp" translatable="yes">Cartella condivisa</property>
+ <property name="Wrap">True</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">1</property>
+ <property name="BottomAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label14">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="LabelProp" translatable="yes">File di indice</property>
+ <property name="Wrap">True</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">2</property>
+ <property name="BottomAttach">3</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="TopAttach">6</property>
+ <property name="BottomAttach">7</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
<widget class="Gtk.FileChooserButton" id="uploadChooserButton">
<property name="MemberName" />
</widget>