Aggiunto supporto ai filtri nella ricerca.

Leonardo Robol [2010-02-10 16:44]
Aggiunto supporto ai filtri nella ricerca.
Filename
Dizzy/File.cs
Dizzy/Log.cs
Dizzy/MainWindow.cs
Dizzy/Protocol.cs
gtk-gui/Dizzy.AuthDialog.cs
gtk-gui/MainWindow.cs
gtk-gui/gui.stetic
diff --git a/Dizzy/File.cs b/Dizzy/File.cs
index 85e0d17..06c7a74 100644
--- a/Dizzy/File.cs
+++ b/Dizzy/File.cs
@@ -15,11 +15,13 @@ namespace Dizzy

 		public FileType(string filename) {

-			if(filename.EndsWith(".avi"))
+			if(filename.EndsWith(".avi") || filename.EndsWith(".mpeg") ||
+			   filename.EndsWith(".mpg"))
 				type = VIDEO;
-			else if(filename.EndsWith(".pdf"))
+			else if(filename.EndsWith(".pdf") || filename.EndsWith(".dvi") ||
+			        filename.EndsWith(".djvu") || filename.EndsWith(".ps"))
 				type = BOOK;
-			else if(filename.EndsWith(".mp3"))
+			else if(filename.EndsWith(".mp3") || filename.EndsWith(".ogg"))
 				type = AUDIO;
 			else
 				type = UNKNOWN;
@@ -31,11 +33,11 @@ namespace Dizzy
 			if(type == VIDEO)
 				return "Video";
 			else if(type == BOOK)
-				return "Book";
+				return "Libro";
 			else if(type == AUDIO)
 				return "Audio";
 			else
-				return "Sconosciuto";
+				return "Qualsiasi";
 		}
 	}

diff --git a/Dizzy/Log.cs b/Dizzy/Log.cs
index 0f9750a..9e322b0 100644
--- a/Dizzy/Log.cs
+++ b/Dizzy/Log.cs
@@ -47,7 +47,7 @@ namespace Dizzy
 			Console.WriteLine (message);

 			try {StatusBarUpdate(message);}
-			catch (Exception e) { Log.Error ("Impossibile loggare sulla statusbar"); }
+			catch (Exception e) { Log.Error ("Impossibile loggare sulla statusbar" + e.Message); }
 		}

 		public static void Lock (string message)
diff --git a/Dizzy/MainWindow.cs b/Dizzy/MainWindow.cs
index dac3760..1be172a 100644
--- a/Dizzy/MainWindow.cs
+++ b/Dizzy/MainWindow.cs
@@ -75,7 +75,7 @@ public partial class MainWindow : Gtk.Window
 	{
 		this.files.Clear ();
 		EventManager.SearchStarted ();
-		this.protocol.Search (searchBox.Text);
+		this.protocol.Search (searchBox.Text, searchUserBox.Text, typeBox.ActiveText);
 	}

 	protected virtual void OnRowActivated (object o, Gtk.RowActivatedArgs args)
diff --git a/Dizzy/Protocol.cs b/Dizzy/Protocol.cs
index ef066a2..fa33361 100644
--- a/Dizzy/Protocol.cs
+++ b/Dizzy/Protocol.cs
@@ -31,10 +31,10 @@ namespace Dizzy

 		ArrayList threads = new ArrayList  ();

-		Thread finder, listUpdater;
+		Thread finder;

 		// Dati letti dal thread che cerca per capire cosa cercare
-		string keyword;
+		string keyword, user, type;

 		GlobalConfig config;

@@ -51,7 +51,7 @@ namespace Dizzy
 			// this.UpdateFileList ();
 		}

-		public void Search(string keyword)
+		public void Search(string keyword, string user, string type)
 		{
 			if (this.finder != null && this.finder.IsAlive)
 			{
@@ -68,6 +68,8 @@ namespace Dizzy
 			{
 				Log.Info ("Avvio la ricerca nel database");
 				this.keyword = keyword;
+				this.user = user;
+				this.type = type;
 				this.finder = new Thread(new ThreadStart (this._Search));
 				this.finder.Start ();
 			}
@@ -90,7 +92,7 @@ namespace Dizzy
 			FileList list = new FileList (ref this.config);

 			ArrayList files;
-			try { files = list.Search (this.keyword); }
+			try { files = list.Search (this.keyword, this.type, this.user); }
 			catch (Exception e) {
 				// Probabilmente stiamo solamente scaricando il database,
 				// ma tant'è.
@@ -450,22 +452,29 @@ namespace Dizzy
 			this.connection = new SQLiteConnection(connectionString);
 		}

-		public ArrayList Search(string keyword) {
+		public ArrayList Search(string keyword, string type, string user) {

 			this.connection.Open ();
 			ArrayList matches = new ArrayList ();

 			// Eseguiamo la query
 			SQLiteCommand sqlCmd = this.connection.CreateCommand ();
-			sqlCmd.CommandText = "SELECT * from files WHERE name LIKE '%" + keyword + "%';";
+			sqlCmd.CommandText = "SELECT * from files WHERE name LIKE '%" + keyword + "%'";
 			SQLiteDataReader reader = sqlCmd.ExecuteReader ();

+			File tmp;
 			while(reader.Read())
 			{
-				matches.Add (new File(reader.GetString(0),   // Path
+				tmp = new File(reader.GetString(0),   // Path
 				                      reader.GetString(2),   // User
 				                      reader.GetString(1),   // Name
-				                      reader.GetInt32(3)));  // Size
+				                      reader.GetInt32(3));  // Size
+
+				if ( (type == "Qualsiasi" || tmp.type.Name() == type) &&
+				     (user == "" || user == tmp.user) )
+				{
+					matches.Add (tmp);
+				}
 			}

 			this.connection.Close ();
diff --git a/gtk-gui/Dizzy.AuthDialog.cs b/gtk-gui/Dizzy.AuthDialog.cs
index 220c412..6695d49 100644
--- a/gtk-gui/Dizzy.AuthDialog.cs
+++ b/gtk-gui/Dizzy.AuthDialog.cs
@@ -59,6 +59,7 @@ namespace Dizzy {
             w2.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 a626dac..950bdc5 100644
--- a/gtk-gui/MainWindow.cs
+++ b/gtk-gui/MainWindow.cs
@@ -62,6 +62,14 @@ public partial class MainWindow {

     private Gtk.Label label5;

+    private Gtk.Alignment alignment3;
+
+    private Gtk.Label label8;
+
+    private Gtk.Alignment alignment4;
+
+    private Gtk.Label label9;
+
     private Gtk.Button button182;

     private Gtk.Button button183;
@@ -70,10 +78,6 @@ public partial class MainWindow {

     private Gtk.FileChooserButton filechooserbutton1;

-    private Gtk.Label label8;
-
-    private Gtk.Label label9;
-
     private Gtk.Label label7;

     private Gtk.Statusbar dizzystatus;
@@ -82,7 +86,7 @@ public partial class MainWindow {
         Stetic.Gui.Initialize(this);
         // Widget MainWindow
         this.Name = "MainWindow";
-        this.Title = Mono.Unix.Catalog.GetString("Dizzy PreRelease");
+        this.Title = Mono.Unix.Catalog.GetString("Dizzy 0.1");
         this.Icon = Stetic.IconLoader.LoadIcon(this, "stock_connect", Gtk.IconSize.Menu, 16);
         this.WindowPosition = ((Gtk.WindowPosition)(4));
         this.DefaultWidth = 640;
@@ -96,13 +100,14 @@ public partial class MainWindow {
         this.notebook1 = new Gtk.Notebook();
         this.notebook1.CanFocus = true;
         this.notebook1.Name = "notebook1";
-        this.notebook1.CurrentPage = 2;
+        this.notebook1.CurrentPage = 0;
         // 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));
@@ -164,7 +169,7 @@ public partial class MainWindow {
         w5.YOptions = ((Gtk.AttachOptions)(4));
         // Container child table1.Gtk.Table+TableChild
         this.typeBox = Gtk.ComboBox.NewText();
-        this.typeBox.AppendText(Mono.Unix.Catalog.GetString("Qualsias"));
+        this.typeBox.AppendText(Mono.Unix.Catalog.GetString("Qualsiasi"));
         this.typeBox.AppendText(Mono.Unix.Catalog.GetString("Audio"));
         this.typeBox.AppendText(Mono.Unix.Catalog.GetString("Video"));
         this.typeBox.AppendText(Mono.Unix.Catalog.GetString("Libro"));
@@ -255,7 +260,7 @@ public partial class MainWindow {
         this.table2.Name = "table2";
         this.table2.RowSpacing = ((uint)(6));
         this.table2.ColumnSpacing = ((uint)(6));
-        this.table2.BorderWidth = ((uint)(5));
+        this.table2.BorderWidth = ((uint)(15));
         // Container child table2.Gtk.Table+TableChild
         this.alignment1 = new Gtk.Alignment(0.5F, 0.5F, 1F, 1F);
         this.alignment1.Name = "alignment1";
@@ -263,7 +268,7 @@ public partial class MainWindow {
         this.label10 = new Gtk.Label();
         this.label10.Name = "label10";
         this.label10.Xalign = 0F;
-        this.label10.LabelProp = Mono.Unix.Catalog.GetString("<b>Utility</b>");
+        this.label10.LabelProp = Mono.Unix.Catalog.GetString("<b>Carica nuovi file</b>");
         this.label10.UseMarkup = true;
         this.alignment1.Add(this.label10);
         this.table2.Add(this.alignment1);
@@ -287,19 +292,50 @@ public partial class MainWindow {
         w20.XOptions = ((Gtk.AttachOptions)(4));
         w20.YOptions = ((Gtk.AttachOptions)(4));
         // Container child table2.Gtk.Table+TableChild
+        this.alignment3 = new Gtk.Alignment(0F, 0.5F, 1F, 1F);
+        this.alignment3.Name = "alignment3";
+        // Container child alignment3.Gtk.Container+ContainerChild
+        this.label8 = new Gtk.Label();
+        this.label8.Name = "label8";
+        this.label8.Xalign = 0F;
+        this.label8.LabelProp = Mono.Unix.Catalog.GetString("La password verrà richiesta alla prima necessità di connessione, ma le connessioni già attive non verranno terminate. ");
+        this.label8.Wrap = true;
+        this.alignment3.Add(this.label8);
+        this.table2.Add(this.alignment3);
+        Gtk.Table.TableChild w22 = ((Gtk.Table.TableChild)(this.table2[this.alignment3]));
+        w22.TopAttach = ((uint)(1));
+        w22.BottomAttach = ((uint)(2));
+        w22.YOptions = ((Gtk.AttachOptions)(4));
+        // Container child table2.Gtk.Table+TableChild
+        this.alignment4 = new Gtk.Alignment(0.5F, 0.5F, 1F, 1F);
+        this.alignment4.Name = "alignment4";
+        // Container child alignment4.Gtk.Container+ContainerChild
+        this.label9 = new Gtk.Label();
+        this.label9.Name = "label9";
+        this.label9.Xalign = 0F;
+        this.label9.LabelProp = Mono.Unix.Catalog.GetString("La lista sul server viene aggiornata in automatico ogni ora. Aggiornare quando si è alla ricerca di novità.");
+        this.label9.Wrap = true;
+        this.alignment4.Add(this.label9);
+        this.table2.Add(this.alignment4);
+        Gtk.Table.TableChild w24 = ((Gtk.Table.TableChild)(this.table2[this.alignment4]));
+        w24.TopAttach = ((uint)(2));
+        w24.BottomAttach = ((uint)(3));
+        w24.XOptions = ((Gtk.AttachOptions)(4));
+        w24.YOptions = ((Gtk.AttachOptions)(4));
+        // Container child table2.Gtk.Table+TableChild
         this.button182 = new Gtk.Button();
         this.button182.CanFocus = true;
         this.button182.Name = "button182";
         this.button182.UseUnderline = true;
         this.button182.Label = Mono.Unix.Catalog.GetString("Disconnetti");
         this.table2.Add(this.button182);
-        Gtk.Table.TableChild w21 = ((Gtk.Table.TableChild)(this.table2[this.button182]));
-        w21.TopAttach = ((uint)(1));
-        w21.BottomAttach = ((uint)(2));
-        w21.LeftAttach = ((uint)(1));
-        w21.RightAttach = ((uint)(2));
-        w21.XOptions = ((Gtk.AttachOptions)(4));
-        w21.YOptions = ((Gtk.AttachOptions)(4));
+        Gtk.Table.TableChild w25 = ((Gtk.Table.TableChild)(this.table2[this.button182]));
+        w25.TopAttach = ((uint)(1));
+        w25.BottomAttach = ((uint)(2));
+        w25.LeftAttach = ((uint)(1));
+        w25.RightAttach = ((uint)(2));
+        w25.XOptions = ((Gtk.AttachOptions)(4));
+        w25.YOptions = ((Gtk.AttachOptions)(4));
         // Container child table2.Gtk.Table+TableChild
         this.button183 = new Gtk.Button();
         this.button183.CanFocus = true;
@@ -307,13 +343,13 @@ public partial class MainWindow {
         this.button183.UseUnderline = true;
         this.button183.Label = Mono.Unix.Catalog.GetString("Aggiorna lista");
         this.table2.Add(this.button183);
-        Gtk.Table.TableChild w22 = ((Gtk.Table.TableChild)(this.table2[this.button183]));
-        w22.TopAttach = ((uint)(2));
-        w22.BottomAttach = ((uint)(3));
-        w22.LeftAttach = ((uint)(1));
-        w22.RightAttach = ((uint)(2));
-        w22.XOptions = ((Gtk.AttachOptions)(4));
-        w22.YOptions = ((Gtk.AttachOptions)(4));
+        Gtk.Table.TableChild w26 = ((Gtk.Table.TableChild)(this.table2[this.button183]));
+        w26.TopAttach = ((uint)(2));
+        w26.BottomAttach = ((uint)(3));
+        w26.LeftAttach = ((uint)(1));
+        w26.RightAttach = ((uint)(2));
+        w26.XOptions = ((Gtk.AttachOptions)(4));
+        w26.YOptions = ((Gtk.AttachOptions)(4));
         // Container child table2.Gtk.Table+TableChild
         this.button184 = new Gtk.Button();
         this.button184.CanFocus = true;
@@ -321,45 +357,25 @@ public partial class MainWindow {
         this.button184.UseUnderline = true;
         this.button184.Label = Mono.Unix.Catalog.GetString("Carica file");
         this.table2.Add(this.button184);
-        Gtk.Table.TableChild w23 = ((Gtk.Table.TableChild)(this.table2[this.button184]));
-        w23.TopAttach = ((uint)(4));
-        w23.BottomAttach = ((uint)(5));
-        w23.LeftAttach = ((uint)(1));
-        w23.RightAttach = ((uint)(2));
-        w23.XOptions = ((Gtk.AttachOptions)(4));
-        w23.YOptions = ((Gtk.AttachOptions)(4));
+        Gtk.Table.TableChild w27 = ((Gtk.Table.TableChild)(this.table2[this.button184]));
+        w27.TopAttach = ((uint)(4));
+        w27.BottomAttach = ((uint)(5));
+        w27.LeftAttach = ((uint)(1));
+        w27.RightAttach = ((uint)(2));
+        w27.XOptions = ((Gtk.AttachOptions)(4));
+        w27.YOptions = ((Gtk.AttachOptions)(4));
         // Container child table2.Gtk.Table+TableChild
         this.filechooserbutton1 = new Gtk.FileChooserButton(Mono.Unix.Catalog.GetString("Seleziona un file"), ((Gtk.FileChooserAction)(0)));
         this.filechooserbutton1.Name = "filechooserbutton1";
         this.table2.Add(this.filechooserbutton1);
-        Gtk.Table.TableChild w24 = ((Gtk.Table.TableChild)(this.table2[this.filechooserbutton1]));
-        w24.TopAttach = ((uint)(4));
-        w24.BottomAttach = ((uint)(5));
-        w24.XOptions = ((Gtk.AttachOptions)(4));
-        w24.YOptions = ((Gtk.AttachOptions)(4));
-        // Container child table2.Gtk.Table+TableChild
-        this.label8 = new Gtk.Label();
-        this.label8.Name = "label8";
-        this.label8.LabelProp = Mono.Unix.Catalog.GetString("Il programma chiederà nuovamente utente e password quando necessario");
-        this.label8.Wrap = true;
-        this.table2.Add(this.label8);
-        Gtk.Table.TableChild w25 = ((Gtk.Table.TableChild)(this.table2[this.label8]));
-        w25.TopAttach = ((uint)(1));
-        w25.BottomAttach = ((uint)(2));
-        w25.YOptions = ((Gtk.AttachOptions)(4));
-        // Container child table2.Gtk.Table+TableChild
-        this.label9 = new Gtk.Label();
-        this.label9.Name = "label9";
-        this.label9.LabelProp = Mono.Unix.Catalog.GetString("Aggiornare la lista permette di trovare i file più recenti. Ogni volta che il programma viene avviato cerca di farlo autonomamente. La lista sul server viene aggiornata ogni ora.");
-        this.label9.Wrap = true;
-        this.table2.Add(this.label9);
-        Gtk.Table.TableChild w26 = ((Gtk.Table.TableChild)(this.table2[this.label9]));
-        w26.TopAttach = ((uint)(2));
-        w26.BottomAttach = ((uint)(3));
-        w26.YOptions = ((Gtk.AttachOptions)(4));
+        Gtk.Table.TableChild w28 = ((Gtk.Table.TableChild)(this.table2[this.filechooserbutton1]));
+        w28.TopAttach = ((uint)(4));
+        w28.BottomAttach = ((uint)(5));
+        w28.XOptions = ((Gtk.AttachOptions)(4));
+        w28.YOptions = ((Gtk.AttachOptions)(4));
         this.notebook1.Add(this.table2);
-        Gtk.Notebook.NotebookChild w27 = ((Gtk.Notebook.NotebookChild)(this.notebook1[this.table2]));
-        w27.Position = 2;
+        Gtk.Notebook.NotebookChild w29 = ((Gtk.Notebook.NotebookChild)(this.notebook1[this.table2]));
+        w29.Position = 2;
         // Notebook tab
         this.label7 = new Gtk.Label();
         this.label7.Name = "label7";
@@ -367,17 +383,17 @@ public partial class MainWindow {
         this.notebook1.SetTabLabel(this.table2, this.label7);
         this.label7.ShowAll();
         this.vbox1.Add(this.notebook1);
-        Gtk.Box.BoxChild w28 = ((Gtk.Box.BoxChild)(this.vbox1[this.notebook1]));
-        w28.Position = 0;
+        Gtk.Box.BoxChild w30 = ((Gtk.Box.BoxChild)(this.vbox1[this.notebook1]));
+        w30.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 w29 = ((Gtk.Box.BoxChild)(this.vbox1[this.dizzystatus]));
-        w29.Position = 1;
-        w29.Expand = false;
-        w29.Fill = false;
+        Gtk.Box.BoxChild w31 = ((Gtk.Box.BoxChild)(this.vbox1[this.dizzystatus]));
+        w31.Position = 1;
+        w31.Expand = false;
+        w31.Fill = false;
         this.Add(this.vbox1);
         if ((this.Child != null)) {
             this.Child.ShowAll();
diff --git a/gtk-gui/gui.stetic b/gtk-gui/gui.stetic
index 27c0187..4d2582b 100644
--- a/gtk-gui/gui.stetic
+++ b/gtk-gui/gui.stetic
@@ -8,9 +8,9 @@
     <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="568 349">
+  <widget class="Gtk.Window" id="MainWindow" design-size="547 349">
     <property name="MemberName" />
-    <property name="Title" translatable="yes">Dizzy PreRelease</property>
+    <property name="Title" translatable="yes">Dizzy 0.1</property>
     <property name="Icon">stock:stock_connect Menu</property>
     <property name="WindowPosition">CenterOnParent</property>
     <property name="DefaultWidth">640</property>
@@ -25,7 +25,7 @@
           <widget class="Gtk.Notebook" id="notebook1">
             <property name="MemberName" />
             <property name="CanFocus">True</property>
-            <property name="CurrentPage">2</property>
+            <property name="CurrentPage">0</property>
             <child>
               <widget class="Gtk.VBox" id="vbox3">
                 <property name="MemberName" />
@@ -145,7 +145,7 @@
                       <widget class="Gtk.ComboBox" id="typeBox">
                         <property name="MemberName" />
                         <property name="IsTextCombo">True</property>
-                        <property name="Items" translatable="yes">Qualsias
+                        <property name="Items" translatable="yes">Qualsiasi
 Audio
 Video
 Libro</property>
@@ -281,7 +281,7 @@ Libro</property>
                 <property name="NColumns">2</property>
                 <property name="RowSpacing">6</property>
                 <property name="ColumnSpacing">6</property>
-                <property name="BorderWidth">5</property>
+                <property name="BorderWidth">15</property>
                 <child>
                   <placeholder />
                 </child>
@@ -295,7 +295,7 @@ Libro</property>
                       <widget class="Gtk.Label" id="label10">
                         <property name="MemberName" />
                         <property name="Xalign">0</property>
-                        <property name="LabelProp" translatable="yes">&lt;b&gt;Utility&lt;/b&gt;</property>
+                        <property name="LabelProp" translatable="yes">&lt;b&gt;Carica nuovi file&lt;/b&gt;</property>
                         <property name="UseMarkup">True</property>
                       </widget>
                     </child>
@@ -339,6 +339,58 @@ Libro</property>
                   </packing>
                 </child>
                 <child>
+                  <widget class="Gtk.Alignment" id="alignment3">
+                    <property name="MemberName" />
+                    <property name="Xalign">0</property>
+                    <child>
+                      <widget class="Gtk.Label" id="label8">
+                        <property name="MemberName" />
+                        <property name="Xalign">0</property>
+                        <property name="LabelProp" translatable="yes">La password verrà richiesta alla prima necessità di connessione, ma le connessioni già attive non verranno terminate. </property>
+                        <property name="Wrap">True</property>
+                      </widget>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="TopAttach">1</property>
+                    <property name="BottomAttach">2</property>
+                    <property name="AutoSize">False</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.Alignment" id="alignment4">
+                    <property name="MemberName" />
+                    <child>
+                      <widget class="Gtk.Label" id="label9">
+                        <property name="MemberName" />
+                        <property name="Xalign">0</property>
+                        <property name="LabelProp" translatable="yes">La lista sul server viene aggiornata in automatico ogni ora. Aggiornare quando si è alla ricerca di novità.</property>
+                        <property name="Wrap">True</property>
+                      </widget>
+                    </child>
+                  </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>
+                <child>
                   <widget class="Gtk.Button" id="button182">
                     <property name="MemberName" />
                     <property name="CanFocus">True</property>
@@ -430,44 +482,6 @@ Libro</property>
                     <property name="YShrink">False</property>
                   </packing>
                 </child>
-                <child>
-                  <widget class="Gtk.Label" id="label8">
-                    <property name="MemberName" />
-                    <property name="LabelProp" translatable="yes">Il programma chiederà nuovamente utente e password quando necessario</property>
-                    <property name="Wrap">True</property>
-                  </widget>
-                  <packing>
-                    <property name="TopAttach">1</property>
-                    <property name="BottomAttach">2</property>
-                    <property name="AutoSize">False</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="label9">
-                    <property name="MemberName" />
-                    <property name="LabelProp" translatable="yes">Aggiornare la lista permette di trovare i file più recenti. Ogni volta che il programma viene avviato cerca di farlo autonomamente. La lista sul server viene aggiornata ogni ora.</property>
-                    <property name="Wrap">True</property>
-                  </widget>
-                  <packing>
-                    <property name="TopAttach">2</property>
-                    <property name="BottomAttach">3</property>
-                    <property name="AutoSize">False</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>
               </widget>
               <packing>
                 <property name="Position">2</property>
@@ -691,7 +705,7 @@ Libro</property>
       </widget>
     </child>
   </widget>
-  <widget class="Gtk.Dialog" id="Dizzy.ErrorDialog" design-size="400 300">
+  <widget class="Gtk.Dialog" id="Dizzy.ErrorDialog" design-size="210 131">
     <property name="MemberName" />
     <property name="WindowPosition">CenterOnParent</property>
     <property name="Buttons">2</property>
@@ -701,7 +715,43 @@ Libro</property>
         <property name="MemberName" />
         <property name="BorderWidth">2</property>
         <child>
-          <placeholder />
+          <widget class="Gtk.HBox" id="hbox2">
+            <property name="MemberName" />
+            <property name="Spacing">6</property>
+            <child>
+              <widget class="Gtk.Image" id="image1">
+                <property name="MemberName" />
+                <property name="WidthRequest">64</property>
+                <property name="HeightRequest">64</property>
+                <property name="Pixbuf">stock:gtk-dialog-error Menu</property>
+              </widget>
+              <packing>
+                <property name="Position">0</property>
+                <property name="AutoSize">True</property>
+                <property name="Expand">False</property>
+                <property name="Fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="Gtk.Label" id="message">
+                <property name="MemberName" />
+                <property name="LabelProp" translatable="yes">label4</property>
+                <property name="UseMarkup">True</property>
+              </widget>
+              <packing>
+                <property name="Position">1</property>
+                <property name="AutoSize">True</property>
+                <property name="Expand">False</property>
+                <property name="Fill">False</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="Position">0</property>
+            <property name="AutoSize">True</property>
+            <property name="Expand">False</property>
+            <property name="Fill">False</property>
+          </packing>
         </child>
       </widget>
     </child>
ViewGit