diff --git a/osrepodbmgr.Core/ChangeLog b/osrepodbmgr.Core/ChangeLog index 34c5c6a..554fc3b 100644 --- a/osrepodbmgr.Core/ChangeLog +++ b/osrepodbmgr.Core/ChangeLog @@ -1,3 +1,8 @@ +2017-05-18 Natalia Portillo + + * Workers.cs: + + 2017-05-18 Natalia Portillo * DBOps.cs: diff --git a/osrepodbmgr.Core/Workers.cs b/osrepodbmgr.Core/Workers.cs index 0bed110..f39f1e3 100644 --- a/osrepodbmgr.Core/Workers.cs +++ b/osrepodbmgr.Core/Workers.cs @@ -40,6 +40,7 @@ using Schemas; using SharpCompress.Compressors.Deflate; using SharpCompress.Compressors.BZip2; using SharpCompress.Compressors.LZMA; +using System.Threading; namespace osrepodbmgr.Core { @@ -53,16 +54,20 @@ namespace osrepodbmgr.Core public delegate void FailedDelegate(string text); public delegate void FinishedWithoutErrorDelegate(); public delegate void FinishedWithTextDelegate(string text); - public delegate void AddFileDelegate(string filename, string hash, bool known); + public delegate void AddFileForOSDelegate(string filename, string hash, bool known); public delegate void AddOSDelegate(DBEntry os, bool existsInRepo, string pathInRepo); + public delegate void AddFileDelegate(DBFile file); +public delegate void AddFilesDelegate(List file); public static event UpdateProgressDelegate UpdateProgress; public static event UpdateProgress2Delegate UpdateProgress2; public static event FailedDelegate Failed; public static event FinishedWithoutErrorDelegate Finished; public static event FinishedWithTextDelegate FinishedWithText; - public static event AddFileDelegate AddFile; + public static event AddFileForOSDelegate AddFileForOS; public static event AddOSDelegate AddOS; +public static event AddFileDelegate AddFile; +public static event AddFilesDelegate AddFiles; static DBCore dbCore; @@ -537,8 +542,8 @@ namespace osrepodbmgr.Core if(UpdateProgress != null) UpdateProgress(null, "Checking files in database", counter, Context.hashes.Count); - if(AddFile != null) - AddFile(kvp.Key, kvp.Value.Sha256, dbCore.DBOps.ExistsFile(kvp.Value.Sha256)); + if(AddFileForOS != null) + AddFileForOS(kvp.Key, kvp.Value.Sha256, dbCore.DBOps.ExistsFile(kvp.Value.Sha256)); counter++; } @@ -619,11 +624,17 @@ namespace osrepodbmgr.Core UpdateProgress(null, "Adding files to database", counter, Context.hashes.Count); if(!dbCore.DBOps.ExistsFile(kvp.Value.Sha256)) - dbCore.DBOps.AddFile(new DBFile + { + DBFile file = new DBFile { Sha256 = kvp.Value.Sha256, ClamTime = null, Crack = false, - Length = kvp.Value.Length, Virus = null, VirusScanned = null, VirusTotalTime = null - }); + Length = kvp.Value.Length, Virus = null, HasVirus = null, VirusTotalTime = null + }; + dbCore.DBOps.AddFile(file); + + if(AddFile != null) + AddFile(file); + } counter++; } @@ -1235,13 +1246,19 @@ namespace osrepodbmgr.Core zipCounter = 0; zipCurrentEntryName = ""; zf.ExtractAll(tmpFolder); - } - catch - { - if(Failed != null) - Failed("Failed extraction"); return; } + catch(ThreadAbortException) + { + return; + } + catch(Exception ex) + { + if(Debugger.IsAttached) + throw; + if(Failed != null) + Failed(string.Format("Exception {0}\n{1}", ex.Message, ex.InnerException)); + } } else { @@ -1787,5 +1804,42 @@ namespace osrepodbmgr.Core if(e.EventType == ZipProgressEventType.Saving_Completed && Finished != null) Finished(); } + + public static void GetFilesFromDb() + { + try + { + ulong count = dbCore.DBOps.GetFilesCount(); + const ulong page = 2500; + ulong offset = 0; + + List files; + + while(dbCore.DBOps.GetFiles(out files, offset, page)) + { + if(files.Count == 0) + break; + + if(UpdateProgress != null) + UpdateProgress(null, string.Format("Loaded file {0} of {1}", offset, count), (long)offset, (long)count); + + if(AddFiles != null) + + AddFiles(files); + + offset += page; + } + + if(Finished != null) + Finished(); + } + catch(Exception ex) + { + if(Debugger.IsAttached) + throw; + if(Failed != null) + Failed(string.Format("Exception {0}\n{1}", ex.Message, ex.InnerException)); + } + } } } diff --git a/osrepodbmgr.Eto/ChangeLog b/osrepodbmgr.Eto/ChangeLog index 00d691b..db86dff 100644 --- a/osrepodbmgr.Eto/ChangeLog +++ b/osrepodbmgr.Eto/ChangeLog @@ -1,3 +1,10 @@ +2017-05-18 Natalia Portillo + + * frmMain.xeto: + * dlgAdd.xeto.cs: + * frmMain.xeto.cs: + + 2017-05-18 Natalia Portillo * dlgSettings.xeto.cs: diff --git a/osrepodbmgr.Eto/dlgAdd.xeto.cs b/osrepodbmgr.Eto/dlgAdd.xeto.cs index f6fa425..9be7d57 100644 --- a/osrepodbmgr.Eto/dlgAdd.xeto.cs +++ b/osrepodbmgr.Eto/dlgAdd.xeto.cs @@ -329,6 +329,7 @@ namespace osrepodbmgr.Eto Workers.UpdateProgress2 -= UpdateProgress2; thdHashFiles = null; + lblProgress.Visible = false; prgProgress.Visible = true; thdCheckFiles = new Thread(Workers.CheckDbForFiles); @@ -336,7 +337,7 @@ namespace osrepodbmgr.Eto Workers.Finished += ChkFilesFinished; Workers.UpdateProgress += UpdateProgress; Workers.UpdateProgress2 += UpdateProgress2; - Workers.AddFile += AddFile; + Workers.AddFileForOS += AddFile; Workers.AddOS += AddOS; thdCheckFiles.Start(); }); @@ -356,7 +357,7 @@ namespace osrepodbmgr.Eto Workers.Finished -= ChkFilesFinished; Workers.UpdateProgress -= UpdateProgress; Workers.UpdateProgress2 -= UpdateProgress2; - Workers.AddFile -= AddFile; + Workers.AddFileForOS -= AddFile; Workers.AddOS -= AddOS; if(thdCheckFiles != null) thdCheckFiles.Abort(); @@ -379,7 +380,7 @@ namespace osrepodbmgr.Eto Workers.Finished -= ChkFilesFinished; Workers.UpdateProgress -= UpdateProgress; Workers.UpdateProgress2 -= UpdateProgress2; - Workers.AddFile -= AddFile; + Workers.AddFileForOS -= AddFile; Workers.AddOS -= AddOS; if(thdCheckFiles != null) @@ -602,7 +603,7 @@ namespace osrepodbmgr.Eto { stopped = true; - Workers.AddFile -= AddFile; + Workers.AddFileForOS -= AddFile; Workers.AddOS -= AddOS; Workers.Failed -= AddFilesToDbFailed; Workers.Failed -= ChkFilesFailed; diff --git a/osrepodbmgr.Eto/frmMain.xeto b/osrepodbmgr.Eto/frmMain.xeto index bd88e31..ea6ac84 100644 --- a/osrepodbmgr.Eto/frmMain.xeto +++ b/osrepodbmgr.Eto/frmMain.xeto @@ -1,34 +1,63 @@ 
- - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/osrepodbmgr.Eto/frmMain.xeto.cs b/osrepodbmgr.Eto/frmMain.xeto.cs index 19ab2f9..95b844a 100644 --- a/osrepodbmgr.Eto/frmMain.xeto.cs +++ b/osrepodbmgr.Eto/frmMain.xeto.cs @@ -26,6 +26,7 @@ // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // using System; +using System.Collections.Generic; using System.Collections.ObjectModel; using System.Threading; using Eto.Drawing; @@ -40,6 +41,8 @@ namespace osrepodbmgr.Eto Thread thdPopulateOSes; Thread thdCompressTo; Thread thdSaveAs; + Thread thdPopulateFiles; + bool populatingFiles; #region XAML UI elements #pragma warning disable 0649 @@ -56,10 +59,22 @@ namespace osrepodbmgr.Eto ButtonMenuItem btnSettings; ButtonMenuItem btnHelp; ButtonMenuItem mnuCompress; + GridView treeFiles; + Label lblProgressFiles1; + ProgressBar prgProgressFiles1; + Label lblProgressFiles2; + ProgressBar prgProgressFiles2; + Button btnStopFiles; + Button btnMarkAsCrack; + Button btnScanWithClamd; + Button btnCheckInVirusTotal; + Button btnPopulateFiles; + TabPage tabOSes; #pragma warning restore 0649 #endregion XAML UI elements ObservableCollection lstOSes; + ObservableCollection lstFiles; public frmMain() { @@ -143,6 +158,58 @@ namespace osrepodbmgr.Eto treeOSes.AllowMultipleSelection = false; + lstFiles = new ObservableCollection(); + + treeFiles.DataStore = lstFiles; + treeFiles.Columns.Add(new GridColumn + { + DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Sha256) }, + HeaderText = "SHA256" + }); + treeFiles.Columns.Add(new GridColumn + { + DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Length).Convert(s => s.ToString()) }, + HeaderText = "Length" + }); + treeFiles.Columns.Add(new GridColumn + { + DataCell = new CheckBoxCell { Binding = Binding.Property(r => r.Crack) }, + HeaderText = "Crack?" + }); + treeFiles.Columns.Add(new GridColumn + { + DataCell = new CheckBoxCell { Binding = Binding.Property(r => r.HasVirus) }, + HeaderText = "Scanned for virus?" + }); + treeFiles.Columns.Add(new GridColumn + { + DataCell = new TextBoxCell { Binding = Binding.Property(r => r.ClamTime).Convert(s => s == null ? "Never" : s.Value.ToString()) }, + HeaderText = "Last scanned with clamd" + }); + treeFiles.Columns.Add(new GridColumn + { + DataCell = new TextBoxCell { Binding = Binding.Property(r => r.VirusTotalTime).Convert(s => s == null ? "Never" : s.Value.ToString()) }, + HeaderText = "Last checked on VirusTotal" + }); + treeFiles.Columns.Add(new GridColumn + { + DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Virus).Convert(s => s ?? "None") }, + HeaderText = "Virus" + }); + + treeFiles.AllowMultipleSelection = false; + treeFiles.CellFormatting += (sender, e) => + { + if(((DBFile)e.Item).HasVirus.HasValue) + { + e.BackgroundColor = ((DBFile)e.Item).HasVirus.Value ? Colors.Red : Colors.Green; + } + else + e.BackgroundColor = Colors.Yellow; + + e.ForegroundColor = Colors.Black; + }; + prgProgress.Indeterminate = true; if(!Context.usableDotNetZip) @@ -530,5 +597,157 @@ namespace osrepodbmgr.Eto Context.path = null; }); } + + protected void OnBtnStopFilesClicked(object sender, EventArgs e) + { + if(populatingFiles) + { + Workers.Failed -= LoadFilesFailed; + Workers.Finished -= LoadFilesFinished; + Workers.UpdateProgress -= UpdateFileProgress; + Workers.AddFile -= AddFile; + Workers.AddFiles -= AddFiles; + + if(thdPopulateFiles != null) + { + thdPopulateFiles.Abort(); + thdPopulateFiles = null; + } + + lstFiles.Clear(); + btnStopFiles.Visible = false; + btnPopulateFiles.Visible = true; + } + } + + protected void OnBtnMarkAsCrackClicked(object sender, EventArgs e) + { + } + + protected void OnBtnScanWithClamdClicked(object sender, EventArgs e) + { + } + + protected void OnBtnCheckInVirusTotalClicked(object sender, EventArgs e) + { + } + + protected void OnBtnPopulateFilesClicked(object sender, EventArgs e) + { + // TODO: Implement + btnMarkAsCrack.Enabled = false; + btnScanWithClamd.Enabled = false; + btnCheckInVirusTotal.Enabled = false; + + tabOSes.Enabled = false; + btnStopFiles.Visible = true; + btnPopulateFiles.Visible = false; + + lblProgressFiles1.Text = "Loading files from database"; + lblProgressFiles1.Visible = true; + lblProgressFiles2.Visible = true; + prgProgressFiles1.Visible = true; + prgProgressFiles2.Visible = true; + prgProgressFiles1.Indeterminate = true; + Workers.Failed += LoadFilesFailed; + Workers.Finished += LoadFilesFinished; + Workers.UpdateProgress += UpdateFileProgress; + Workers.AddFile += AddFile; + Workers.AddFiles += AddFiles; + populatingFiles = true; + thdPopulateFiles = new Thread(Workers.GetFilesFromDb); + thdPopulateFiles.Start(); + } + + public void UpdateFileProgress(string text, string inner, long current, long maximum) + { + Application.Instance.Invoke(delegate + { + if(!string.IsNullOrWhiteSpace(text) && !string.IsNullOrWhiteSpace(inner)) + lblProgressFiles2.Text = string.Format("{0}: {1}", text, inner); + else if(!string.IsNullOrWhiteSpace(inner)) + lblProgressFiles2.Text = inner; + else + lblProgressFiles2.Text = text; + if(maximum > 0) + { + prgProgressFiles2.Indeterminate = false; + prgProgressFiles2.MinValue = 0; + prgProgressFiles2.MaxValue = (int)maximum; + prgProgressFiles2.Value = (int)current; + } + else + prgProgressFiles2.Indeterminate = true; + }); + } + + void AddFile(Core.DBFile file) + { + Application.Instance.Invoke(delegate + { + lstFiles.Add(file); + }); + } + + void AddFiles(List files) + { + Application.Instance.Invoke(delegate + { + List foo = new List(); + foo.AddRange(lstFiles); + foo.AddRange(files); + lstFiles = new ObservableCollection(foo); + }); + } + + + void LoadFilesFailed(string text) + { + Application.Instance.Invoke(delegate + { + MessageBox.Show(string.Format("Error {0} when populating files, exiting...", text), MessageBoxType.Error); + Workers.Failed -= LoadFilesFailed; + Workers.Finished -= LoadFilesFinished; + Workers.UpdateProgress -= UpdateFileProgress; + if(thdPopulateFiles != null) + { + thdPopulateFiles.Abort(); + thdPopulateFiles = null; + } + tabOSes.Enabled = true; + lstFiles.Clear(); + btnStopFiles.Visible = false; + btnPopulateFiles.Visible = true; + populatingFiles = false; + }); + } + + void LoadFilesFinished() + { + Application.Instance.Invoke(delegate + { + Workers.Failed -= LoadFilesFailed; + Workers.Finished -= LoadFilesFinished; + Workers.UpdateProgress -= UpdateFileProgress; + if(thdPopulateFiles != null) + { + thdPopulateFiles.Abort(); + thdPopulateFiles = null; + } + treeFiles.DataStore = lstFiles; + lblProgressFiles1.Visible = false; + lblProgressFiles2.Visible = false; + prgProgressFiles1.Visible = false; + prgProgressFiles2.Visible = false; + btnMarkAsCrack.Visible = true; + btnScanWithClamd.Visible = true; + btnCheckInVirusTotal.Visible = true; + btnStopFiles.Visible = false; + btnPopulateFiles.Visible = false; + populatingFiles = false; + treeFiles.Enabled = true; + tabOSes.Enabled = true; + }); + } } } diff --git a/osrepodbmgr/ChangeLog b/osrepodbmgr/ChangeLog index 8ffadc0..6f52b0c 100644 --- a/osrepodbmgr/ChangeLog +++ b/osrepodbmgr/ChangeLog @@ -1,3 +1,14 @@ +2017-05-18 Natalia Portillo + + * dlgAdd.cs: + * frmMain.cs: + * gtk-gui/dlgAdd.cs: + * gtk-gui/gui.stetic: + + + * gtk-gui/osrepodbmgr.frmMain.cs: + Added code and UI for listing files in the database. + 2017-05-12 Natalia Portillo * frmMain.cs: diff --git a/osrepodbmgr/dlgAdd.cs b/osrepodbmgr/dlgAdd.cs index 761842d..172f8af 100644 --- a/osrepodbmgr/dlgAdd.cs +++ b/osrepodbmgr/dlgAdd.cs @@ -289,7 +289,7 @@ public partial class dlgAdd : Dialog Workers.Finished += ChkFilesFinished; Workers.UpdateProgress += UpdateProgress; Workers.UpdateProgress2 += UpdateProgress2; - Workers.AddFile += AddFile; + Workers.AddFileForOS += AddFile; Workers.AddOS += AddOS; thdCheckFiles.Start(); }); @@ -313,7 +313,7 @@ public partial class dlgAdd : Dialog Workers.Finished -= ChkFilesFinished; Workers.UpdateProgress -= UpdateProgress; Workers.UpdateProgress2 -= UpdateProgress2; - Workers.AddFile -= AddFile; + Workers.AddFileForOS -= AddFile; Workers.AddOS -= AddOS; if(thdPulseProgress != null) thdPulseProgress.Abort(); @@ -338,7 +338,7 @@ public partial class dlgAdd : Dialog Workers.Finished -= ChkFilesFinished; Workers.UpdateProgress -= UpdateProgress; Workers.UpdateProgress2 -= UpdateProgress2; - Workers.AddFile -= AddFile; + Workers.AddFileForOS -= AddFile; Workers.AddOS -= AddOS; if(thdCheckFiles != null) @@ -557,7 +557,7 @@ public partial class dlgAdd : Dialog { stopped = true; - Workers.AddFile -= AddFile; + Workers.AddFileForOS -= AddFile; Workers.AddOS -= AddOS; Workers.Failed -= AddFilesToDbFailed; Workers.Failed -= ChkFilesFailed; diff --git a/osrepodbmgr/frmMain.cs b/osrepodbmgr/frmMain.cs index 27b0f0b..c9d8629 100644 --- a/osrepodbmgr/frmMain.cs +++ b/osrepodbmgr/frmMain.cs @@ -26,6 +26,7 @@ // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // using System; +using System.Collections.Generic; using System.IO; using System.Threading; using Gtk; @@ -36,10 +37,13 @@ namespace osrepodbmgr public partial class frmMain : Window { ListStore osView; + ListStore fileView; Thread thdPulseProgress; Thread thdPopulateOSes; Thread thdCompressTo; Thread thdSaveAs; + Thread thdPopulateFiles; + bool populatingFiles; public frmMain() : base(WindowType.Toplevel) @@ -103,6 +107,36 @@ namespace osrepodbmgr treeOSes.Selection.Mode = SelectionMode.Single; + CellRendererText hashCell = new CellRendererText(); + CellRendererText lengthCell = new CellRendererText(); + CellRendererToggle crackCell = new CellRendererToggle(); + CellRendererToggle virscanCell = new CellRendererToggle(); + CellRendererText clamtimeCell = new CellRendererText(); + CellRendererText vtottimeCell = new CellRendererText(); + CellRendererText virusCell = new CellRendererText(); + + TreeViewColumn hashColumn = new TreeViewColumn("SHA256", hashCell, "text", 0, "background", 7, "foreground", 8); + TreeViewColumn lengthColumn = new TreeViewColumn("Length", lengthCell, "text", 1, "background", 7, "foreground", 8); + TreeViewColumn crackColumn = new TreeViewColumn("Crack?", crackCell, "active", 2); + TreeViewColumn virscanColumn = new TreeViewColumn("Scanned for virus?", virscanCell, "active", 3, "inconsistent", 9); + TreeViewColumn clamtimeColumn = new TreeViewColumn("Last scanned with clamd", clamtimeCell, "text", 4, "background", 7, "foreground", 8); + TreeViewColumn vtottimeColumn = new TreeViewColumn("Last checked on VirusTotal", vtottimeCell, "text", 5, "background", 7, "foreground", 8); + TreeViewColumn virusColumn = new TreeViewColumn("Virus", virusCell, "text", 6, "background", 7, "foreground", 8); + + fileView = new ListStore(typeof(string), typeof(long), typeof(bool), typeof(bool), typeof(string), typeof(string), + typeof(string), typeof(string), typeof(string), typeof(bool), typeof(bool)); + + treeFiles.Model = fileView; + treeFiles.AppendColumn(hashColumn); + treeFiles.AppendColumn(lengthColumn); + treeFiles.AppendColumn(crackColumn); + treeFiles.AppendColumn(virscanColumn); + treeFiles.AppendColumn(clamtimeColumn); + treeFiles.AppendColumn(vtottimeColumn); + treeFiles.AppendColumn(virusColumn); + + treeFiles.Selection.Mode = SelectionMode.Multiple; + thdPulseProgress = new Thread(() => { while(true) @@ -127,7 +161,7 @@ namespace osrepodbmgr Application.Invoke(delegate { MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, - string.Format("Error {0} when populating OSes file, exiting...", text)); + string.Format("Error {0} when populating OSes tree, exiting...", text)); dlgMsg.Run(); dlgMsg.Destroy(); Workers.Failed -= LoadOSesFailed; @@ -566,5 +600,210 @@ namespace osrepodbmgr Context.path = null; }); } + + protected void OnBtnStopFilesClicked(object sender, EventArgs e) + { + if(populatingFiles) + { + Workers.Failed -= LoadFilesFailed; + Workers.Finished -= LoadFilesFinished; + Workers.UpdateProgress -= UpdateFileProgress; + Workers.AddFile -= AddFile; + + if(thdPulseProgress != null) + { + thdPulseProgress.Abort(); + thdPulseProgress = null; + } + if(thdPopulateFiles != null) + { + thdPopulateFiles.Abort(); + thdPopulateFiles = null; + } + + fileView.Clear(); + btnStopFiles.Visible = false; + btnPopulateFiles.Visible = true; + } + } + + protected void OnBtnMarkAsCrackClicked(object sender, EventArgs e) + { + } + + protected void OnBtnScanWithClamdClicked(object sender, EventArgs e) + { + } + + protected void OnBtnCheckInVirusTotalClicked(object sender, EventArgs e) + { + } + + protected void OnBtnPopulateFilesClicked(object sender, EventArgs e) + { + // TODO: Implement + btnMarkAsCrack.Sensitive = false; + btnScanWithClamd.Sensitive = false; + btnCheckInVirusTotal.Sensitive = false; + + notebook1.GetNthPage(0).Sensitive = false; + btnStopFiles.Visible = true; + btnPopulateFiles.Visible = false; + + thdPulseProgress = new Thread(() => + { + while(true) + { + Application.Invoke(delegate + { + prgProgressFiles1.Pulse(); + }); + Thread.Sleep(66); + } + }); + lblProgressFiles1.Text = "Loading files from database"; + lblProgressFiles1.Visible = true; + lblProgressFiles2.Visible = true; + prgProgressFiles1.Visible = true; + prgProgressFiles2.Visible = true; + Workers.Failed += LoadFilesFailed; + Workers.Finished += LoadFilesFinished; + Workers.UpdateProgress += UpdateFileProgress; + Workers.AddFile += AddFile; + Workers.AddFiles += AddFiles; + populatingFiles = true; + thdPulseProgress.Start(); + thdPopulateFiles = new Thread(Workers.GetFilesFromDb); + thdPopulateFiles.Start(); + } + + public void UpdateFileProgress(string text, string inner, long current, long maximum) + { + Application.Invoke(delegate + { + lblProgressFiles2.Text = text; + prgProgressFiles2.Text = inner; + if(maximum > 0) + prgProgressFiles2.Fraction = current / (double)maximum; + else + prgProgressFiles2.Pulse(); + }); + } + + void AddFile(DBFile file) + { + Application.Invoke(delegate + { + if(thdPulseProgress != null) + { + thdPulseProgress.Abort(); + thdPulseProgress = null; + } + + string color; + + if(file.HasVirus.HasValue) + { + color = file.HasVirus.Value ? "red" : "green"; + } + else + color = "yellow"; + + fileView.AppendValues(file.Sha256, file.Length, file.Crack, file.HasVirus.HasValue ? file.HasVirus.Value : false, + file.ClamTime == null ? "Never" : file.ClamTime.Value.ToString(), + file.VirusTotalTime == null ? "Never" : file.VirusTotalTime.Value.ToString(), + file.Virus, color, "black", !file.HasVirus.HasValue); + }); + } + + void AddFiles(List files) + { + Application.Invoke(delegate + { + if(thdPulseProgress != null) + { + thdPulseProgress.Abort(); + thdPulseProgress = null; + } + + foreach(DBFile file in files) + { + string color; + + if(file.HasVirus.HasValue) + { + color = file.HasVirus.Value ? "red" : "green"; + } + else + color = "yellow"; + + fileView.AppendValues(file.Sha256, file.Length, file.Crack, file.HasVirus.HasValue ? file.HasVirus.Value : false, + file.ClamTime == null ? "Never" : file.ClamTime.Value.ToString(), + file.VirusTotalTime == null ? "Never" : file.VirusTotalTime.Value.ToString(), + file.Virus, color, "black", !file.HasVirus.HasValue); + } + }); + } + + void LoadFilesFailed(string text) + { + Application.Invoke(delegate + { + MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + string.Format("Error {0} when populating files, exiting...", text)); + dlgMsg.Run(); + dlgMsg.Destroy(); + Workers.Failed -= LoadFilesFailed; + Workers.Finished -= LoadFilesFinished; + Workers.UpdateProgress -= UpdateFileProgress; + if(thdPulseProgress != null) + { + thdPulseProgress.Abort(); + thdPulseProgress = null; + } + if(thdPopulateFiles != null) + { + thdPopulateFiles.Abort(); + thdPopulateFiles = null; + } + notebook1.GetNthPage(0).Sensitive = true; + fileView.Clear(); + btnStopFiles.Visible = false; + btnPopulateFiles.Visible = true; + populatingFiles = false; + }); + } + + void LoadFilesFinished() + { + Application.Invoke(delegate + { + Workers.Failed -= LoadFilesFailed; + Workers.Finished -= LoadFilesFinished; + Workers.UpdateProgress -= UpdateFileProgress; + if(thdPulseProgress != null) + { + thdPulseProgress.Abort(); + thdPulseProgress = null; + } + if(thdPopulateFiles != null) + { + thdPopulateFiles.Abort(); + thdPopulateFiles = null; + } + lblProgressFiles1.Visible = false; + lblProgressFiles2.Visible = false; + prgProgressFiles1.Visible = false; + prgProgressFiles2.Visible = false; + btnMarkAsCrack.Visible = true; + btnScanWithClamd.Visible = true; + btnCheckInVirusTotal.Visible = true; + btnStopFiles.Visible = false; + btnPopulateFiles.Visible = false; + populatingFiles = false; + treeFiles.Sensitive = true; + notebook1.GetNthPage(0).Sensitive = true; + }); + } } } \ No newline at end of file diff --git a/osrepodbmgr/gtk-gui/dlgAdd.cs b/osrepodbmgr/gtk-gui/dlgAdd.cs index 55d7666..6d8db40 100644 --- a/osrepodbmgr/gtk-gui/dlgAdd.cs +++ b/osrepodbmgr/gtk-gui/dlgAdd.cs @@ -671,7 +671,7 @@ public partial class dlgAdd global::Gtk.ButtonBox.ButtonBoxChild w61 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w60[this.btnDialog])); w61.Expand = false; w61.Fill = false; - if ((this.Child != null)) + if((this.Child != null)) { this.Child.ShowAll(); } diff --git a/osrepodbmgr/gtk-gui/gui.stetic b/osrepodbmgr/gtk-gui/gui.stetic index 841a401..9b72300 100644 --- a/osrepodbmgr/gtk-gui/gui.stetic +++ b/osrepodbmgr/gtk-gui/gui.stetic @@ -12353,15 +12353,14 @@ QNX/QNX/20090229/source.zip 6 - + - None + True + 1 - + - 0 - 0 - 12 + 6 @@ -12375,17 +12374,456 @@ QNX/QNX/20090229/source.zip + + 0 + True + + + + + + 6 + + + + label1 + + + 0 + True + False + False + + + + + + + + 1 + True + + + + + 1 + True + False + False + + + + + + 6 + + + + False + label2 + + + 0 + True + False + False + + + + + + False + + + 1 + True + + + + + 2 + True + False + False + + + + + + 6 + + + + False + True + True + StockItem + gtk-add + + gtk-add + + + 0 + True + False + False + + + + + + False + True + True + StockItem + gtk-remove + + gtk-remove + + + 1 + True + False + False + + + + + + True + True + StockItem + gtk-quit + + gtk-quit + + + End + 2 + True + False + False + + + + + + False + True + TextAndIcon + stock:gtk-preferences Menu + _Settings + True + + + + End + 3 + True + False + False + + + + + + False + True + True + StockItem + gtk-help + + gtk-help + + + End + 4 + True + False + False + + + + + + False + True + TextAndIcon + stock:gtk-directory Menu + Save _As + True + + + + End + 5 + True + False + False + + + + + + True + TextAndIcon + stock:gtk-save Menu + Compress to + True + + + + End + 6 + True + False + False + + + + + + False + True + True + StockItem + gtk-stop + + gtk-stop + + + End + 7 + True + False + False + + + + + 3 + True + False + False + - + - <b>Operating systems</b> - True + Operating systems - label_item + tab + + + + + + 6 + + + + In + + + + False + True + True + + + + + 0 + True + + + + + + 6 + + + + False + label4 + + + 0 + True + False + False + + + + + + False + + + 1 + True + + + + + 1 + True + False + False + + + + + + 6 + + + + False + label6 + + + 0 + True + False + False + + + + + + False + + + 1 + True + + + + + 2 + True + False + False + + + + + + 6 + + + + True + TextOnly + Populate + True + + + + End + 0 + True + False + False + + + + + + False + True + TextOnly + Check with VirusTotal + True + + + + End + 1 + True + False + False + + + + + + False + True + TextOnly + Scan with clamd + True + + + + End + 2 + True + False + False + + + + + + False + True + TextOnly + Mark as crack + True + + + + End + 3 + True + False + False + + + + + + False + True + True + StockItem + gtk-stop + + gtk-stop + + + End + 4 + True + False + False + + + + + 3 + True + False + False + + + + + 1 + + + + + + Files + + + tab @@ -12394,234 +12832,6 @@ QNX/QNX/20090229/source.zip True - - - - 6 - - - - label1 - - - 0 - True - False - False - - - - - - - - 1 - True - - - - - 1 - True - False - False - - - - - - 6 - - - - False - label2 - - - 0 - True - False - False - - - - - - False - - - 1 - True - - - - - 2 - True - False - False - - - - - - 6 - - - - False - True - True - StockItem - gtk-add - - gtk-add - - - 0 - True - False - False - - - - - - False - True - True - StockItem - gtk-remove - - gtk-remove - - - 1 - True - False - False - - - - - - True - True - StockItem - gtk-quit - - gtk-quit - - - End - 2 - True - False - False - - - - - - False - True - TextAndIcon - stock:gtk-preferences Menu - _Settings - True - - - - End - 3 - True - False - False - - - - - - False - True - True - StockItem - gtk-help - - gtk-help - - - End - 4 - True - False - False - - - - - - False - True - TextAndIcon - stock:gtk-directory Menu - Save _As - True - - - - End - 5 - True - False - False - - - - - - True - TextAndIcon - stock:gtk-save Menu - Compress to - True - - - - End - 6 - True - False - False - - - - - - False - True - True - StockItem - gtk-stop - - gtk-stop - - - End - 7 - True - False - False - - - - - 3 - True - False - False - - diff --git a/osrepodbmgr/gtk-gui/osrepodbmgr.frmMain.cs b/osrepodbmgr/gtk-gui/osrepodbmgr.frmMain.cs index e449059..501c5a7 100644 --- a/osrepodbmgr/gtk-gui/osrepodbmgr.frmMain.cs +++ b/osrepodbmgr/gtk-gui/osrepodbmgr.frmMain.cs @@ -6,16 +6,14 @@ namespace osrepodbmgr { private global::Gtk.VBox vbox2; - private global::Gtk.Frame frame1; + private global::Gtk.Notebook notebook1; - private global::Gtk.Alignment GtkAlignment; + private global::Gtk.VBox vbox3; private global::Gtk.ScrolledWindow GtkScrolledWindow; private global::Gtk.TreeView treeOSes; - private global::Gtk.Label lblOSes; - private global::Gtk.HBox hbox2; private global::Gtk.Label lblProgress; @@ -46,6 +44,40 @@ namespace osrepodbmgr private global::Gtk.Button btnStop; + private global::Gtk.Label label1; + + private global::Gtk.VBox vbox4; + + private global::Gtk.ScrolledWindow GtkScrolledWindow1; + + private global::Gtk.TreeView treeFiles; + + private global::Gtk.HBox hbox4; + + private global::Gtk.Label lblProgressFiles1; + + private global::Gtk.ProgressBar prgProgressFiles1; + + private global::Gtk.HBox hbox5; + + private global::Gtk.Label lblProgressFiles2; + + private global::Gtk.ProgressBar prgProgressFiles2; + + private global::Gtk.HBox hbox6; + + private global::Gtk.Button btnPopulateFiles; + + private global::Gtk.Button btnCheckInVirusTotal; + + private global::Gtk.Button btnScanWithClamd; + + private global::Gtk.Button btnMarkAsCrack; + + private global::Gtk.Button btnStopFiles; + + private global::Gtk.Label label3; + protected virtual void Build() { global::Stetic.Gui.Initialize(this); @@ -58,14 +90,15 @@ namespace osrepodbmgr this.vbox2.Name = "vbox2"; this.vbox2.Spacing = 6; // Container child vbox2.Gtk.Box+BoxChild - this.frame1 = new global::Gtk.Frame(); - this.frame1.Name = "frame1"; - this.frame1.ShadowType = ((global::Gtk.ShadowType)(0)); - // Container child frame1.Gtk.Container+ContainerChild - this.GtkAlignment = new global::Gtk.Alignment(0F, 0F, 1F, 1F); - this.GtkAlignment.Name = "GtkAlignment"; - this.GtkAlignment.LeftPadding = ((uint)(12)); - // Container child GtkAlignment.Gtk.Container+ContainerChild + this.notebook1 = new global::Gtk.Notebook(); + this.notebook1.CanFocus = true; + this.notebook1.Name = "notebook1"; + this.notebook1.CurrentPage = 1; + // Container child notebook1.Gtk.Notebook+NotebookChild + this.vbox3 = new global::Gtk.VBox(); + this.vbox3.Name = "vbox3"; + this.vbox3.Spacing = 6; + // Container child vbox3.Gtk.Box+BoxChild this.GtkScrolledWindow = new global::Gtk.ScrolledWindow(); this.GtkScrolledWindow.Name = "GtkScrolledWindow"; this.GtkScrolledWindow.ShadowType = ((global::Gtk.ShadowType)(1)); @@ -75,17 +108,10 @@ namespace osrepodbmgr this.treeOSes.CanFocus = true; this.treeOSes.Name = "treeOSes"; this.GtkScrolledWindow.Add(this.treeOSes); - this.GtkAlignment.Add(this.GtkScrolledWindow); - this.frame1.Add(this.GtkAlignment); - this.lblOSes = new global::Gtk.Label(); - this.lblOSes.Name = "lblOSes"; - this.lblOSes.LabelProp = global::Mono.Unix.Catalog.GetString("Operating systems"); - this.lblOSes.UseMarkup = true; - this.frame1.LabelWidget = this.lblOSes; - this.vbox2.Add(this.frame1); - global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.frame1])); - w4.Position = 0; - // Container child vbox2.Gtk.Box+BoxChild + this.vbox3.Add(this.GtkScrolledWindow); + global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.GtkScrolledWindow])); + w2.Position = 0; + // Container child vbox3.Gtk.Box+BoxChild this.hbox2 = new global::Gtk.HBox(); this.hbox2.Name = "hbox2"; this.hbox2.Spacing = 6; @@ -94,22 +120,22 @@ namespace osrepodbmgr this.lblProgress.Name = "lblProgress"; this.lblProgress.LabelProp = global::Mono.Unix.Catalog.GetString("label1"); this.hbox2.Add(this.lblProgress); - global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.lblProgress])); - w5.Position = 0; - w5.Expand = false; - w5.Fill = false; + global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.lblProgress])); + w3.Position = 0; + w3.Expand = false; + w3.Fill = false; // Container child hbox2.Gtk.Box+BoxChild this.prgProgress = new global::Gtk.ProgressBar(); this.prgProgress.Name = "prgProgress"; this.hbox2.Add(this.prgProgress); - global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.prgProgress])); - w6.Position = 1; - this.vbox2.Add(this.hbox2); - global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.hbox2])); - w7.Position = 1; - w7.Expand = false; - w7.Fill = false; - // Container child vbox2.Gtk.Box+BoxChild + global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.prgProgress])); + w4.Position = 1; + this.vbox3.Add(this.hbox2); + global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.hbox2])); + w5.Position = 1; + w5.Expand = false; + w5.Fill = false; + // Container child vbox3.Gtk.Box+BoxChild this.hbox3 = new global::Gtk.HBox(); this.hbox3.Name = "hbox3"; this.hbox3.Spacing = 6; @@ -118,22 +144,22 @@ namespace osrepodbmgr this.lblProgress2.Name = "lblProgress2"; this.lblProgress2.LabelProp = global::Mono.Unix.Catalog.GetString("label2"); this.hbox3.Add(this.lblProgress2); - global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.hbox3[this.lblProgress2])); - w8.Position = 0; - w8.Expand = false; - w8.Fill = false; + global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.hbox3[this.lblProgress2])); + w6.Position = 0; + w6.Expand = false; + w6.Fill = false; // Container child hbox3.Gtk.Box+BoxChild this.prgProgress2 = new global::Gtk.ProgressBar(); this.prgProgress2.Name = "prgProgress2"; this.hbox3.Add(this.prgProgress2); - global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(this.hbox3[this.prgProgress2])); - w9.Position = 1; - this.vbox2.Add(this.hbox3); - global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.hbox3])); - w10.Position = 2; - w10.Expand = false; - w10.Fill = false; - // Container child vbox2.Gtk.Box+BoxChild + global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.hbox3[this.prgProgress2])); + w7.Position = 1; + this.vbox3.Add(this.hbox3); + global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.hbox3])); + w8.Position = 2; + w8.Expand = false; + w8.Fill = false; + // Container child vbox3.Gtk.Box+BoxChild this.hbox1 = new global::Gtk.HBox(); this.hbox1.Name = "hbox1"; this.hbox1.Spacing = 6; @@ -145,10 +171,10 @@ namespace osrepodbmgr this.btnAdd.UseUnderline = true; this.btnAdd.Label = "gtk-add"; this.hbox1.Add(this.btnAdd); - global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.btnAdd])); - w11.Position = 0; - w11.Expand = false; - w11.Fill = false; + global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.btnAdd])); + w9.Position = 0; + w9.Expand = false; + w9.Fill = false; // Container child hbox1.Gtk.Box+BoxChild this.btnRemove = new global::Gtk.Button(); this.btnRemove.CanFocus = true; @@ -157,10 +183,10 @@ namespace osrepodbmgr this.btnRemove.UseUnderline = true; this.btnRemove.Label = "gtk-remove"; this.hbox1.Add(this.btnRemove); - global::Gtk.Box.BoxChild w12 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.btnRemove])); - w12.Position = 1; - w12.Expand = false; - w12.Fill = false; + global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.btnRemove])); + w10.Position = 1; + w10.Expand = false; + w10.Fill = false; // Container child hbox1.Gtk.Box+BoxChild this.btnQuit = new global::Gtk.Button(); this.btnQuit.CanFocus = true; @@ -169,26 +195,26 @@ namespace osrepodbmgr this.btnQuit.UseUnderline = true; this.btnQuit.Label = "gtk-quit"; this.hbox1.Add(this.btnQuit); - global::Gtk.Box.BoxChild w13 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.btnQuit])); - w13.PackType = ((global::Gtk.PackType)(1)); - w13.Position = 2; - w13.Expand = false; - w13.Fill = false; + global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.btnQuit])); + w11.PackType = ((global::Gtk.PackType)(1)); + w11.Position = 2; + w11.Expand = false; + w11.Fill = false; // Container child hbox1.Gtk.Box+BoxChild this.btnSettings = new global::Gtk.Button(); this.btnSettings.CanFocus = true; this.btnSettings.Name = "btnSettings"; this.btnSettings.UseUnderline = true; this.btnSettings.Label = global::Mono.Unix.Catalog.GetString("_Settings"); - global::Gtk.Image w14 = new global::Gtk.Image(); - w14.Pixbuf = global::Stetic.IconLoader.LoadIcon(this, "gtk-preferences", global::Gtk.IconSize.Menu); - this.btnSettings.Image = w14; + global::Gtk.Image w12 = new global::Gtk.Image(); + w12.Pixbuf = global::Stetic.IconLoader.LoadIcon(this, "gtk-preferences", global::Gtk.IconSize.Menu); + this.btnSettings.Image = w12; this.hbox1.Add(this.btnSettings); - global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.btnSettings])); - w15.PackType = ((global::Gtk.PackType)(1)); - w15.Position = 3; - w15.Expand = false; - w15.Fill = false; + global::Gtk.Box.BoxChild w13 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.btnSettings])); + w13.PackType = ((global::Gtk.PackType)(1)); + w13.Position = 3; + w13.Expand = false; + w13.Fill = false; // Container child hbox1.Gtk.Box+BoxChild this.btnHelp = new global::Gtk.Button(); this.btnHelp.CanFocus = true; @@ -197,41 +223,41 @@ namespace osrepodbmgr this.btnHelp.UseUnderline = true; this.btnHelp.Label = "gtk-help"; this.hbox1.Add(this.btnHelp); - global::Gtk.Box.BoxChild w16 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.btnHelp])); - w16.PackType = ((global::Gtk.PackType)(1)); - w16.Position = 4; - w16.Expand = false; - w16.Fill = false; + global::Gtk.Box.BoxChild w14 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.btnHelp])); + w14.PackType = ((global::Gtk.PackType)(1)); + w14.Position = 4; + w14.Expand = false; + w14.Fill = false; // Container child hbox1.Gtk.Box+BoxChild this.btnSave = new global::Gtk.Button(); this.btnSave.CanFocus = true; this.btnSave.Name = "btnSave"; this.btnSave.UseUnderline = true; this.btnSave.Label = global::Mono.Unix.Catalog.GetString("Save _As"); - global::Gtk.Image w17 = new global::Gtk.Image(); - w17.Pixbuf = global::Stetic.IconLoader.LoadIcon(this, "gtk-directory", global::Gtk.IconSize.Menu); - this.btnSave.Image = w17; + global::Gtk.Image w15 = new global::Gtk.Image(); + w15.Pixbuf = global::Stetic.IconLoader.LoadIcon(this, "gtk-directory", global::Gtk.IconSize.Menu); + this.btnSave.Image = w15; this.hbox1.Add(this.btnSave); - global::Gtk.Box.BoxChild w18 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.btnSave])); - w18.PackType = ((global::Gtk.PackType)(1)); - w18.Position = 5; - w18.Expand = false; - w18.Fill = false; + global::Gtk.Box.BoxChild w16 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.btnSave])); + w16.PackType = ((global::Gtk.PackType)(1)); + w16.Position = 5; + w16.Expand = false; + w16.Fill = false; // Container child hbox1.Gtk.Box+BoxChild this.btnCompress = new global::Gtk.Button(); this.btnCompress.CanFocus = true; this.btnCompress.Name = "btnCompress"; this.btnCompress.UseUnderline = true; this.btnCompress.Label = global::Mono.Unix.Catalog.GetString("Compress to"); - global::Gtk.Image w19 = new global::Gtk.Image(); - w19.Pixbuf = global::Stetic.IconLoader.LoadIcon(this, "gtk-save", global::Gtk.IconSize.Menu); - this.btnCompress.Image = w19; + global::Gtk.Image w17 = new global::Gtk.Image(); + w17.Pixbuf = global::Stetic.IconLoader.LoadIcon(this, "gtk-save", global::Gtk.IconSize.Menu); + this.btnCompress.Image = w17; this.hbox1.Add(this.btnCompress); - global::Gtk.Box.BoxChild w20 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.btnCompress])); - w20.PackType = ((global::Gtk.PackType)(1)); - w20.Position = 6; - w20.Expand = false; - w20.Fill = false; + global::Gtk.Box.BoxChild w18 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.btnCompress])); + w18.PackType = ((global::Gtk.PackType)(1)); + w18.Position = 6; + w18.Expand = false; + w18.Fill = false; // Container child hbox1.Gtk.Box+BoxChild this.btnStop = new global::Gtk.Button(); this.btnStop.CanFocus = true; @@ -240,16 +266,170 @@ namespace osrepodbmgr this.btnStop.UseUnderline = true; this.btnStop.Label = "gtk-stop"; this.hbox1.Add(this.btnStop); - global::Gtk.Box.BoxChild w21 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.btnStop])); - w21.PackType = ((global::Gtk.PackType)(1)); - w21.Position = 7; - w21.Expand = false; - w21.Fill = false; - this.vbox2.Add(this.hbox1); - global::Gtk.Box.BoxChild w22 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.hbox1])); - w22.Position = 3; - w22.Expand = false; - w22.Fill = false; + global::Gtk.Box.BoxChild w19 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.btnStop])); + w19.PackType = ((global::Gtk.PackType)(1)); + w19.Position = 7; + w19.Expand = false; + w19.Fill = false; + this.vbox3.Add(this.hbox1); + global::Gtk.Box.BoxChild w20 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.hbox1])); + w20.Position = 3; + w20.Expand = false; + w20.Fill = false; + this.notebook1.Add(this.vbox3); + // Notebook tab + this.label1 = new global::Gtk.Label(); + this.label1.Name = "label1"; + this.label1.LabelProp = global::Mono.Unix.Catalog.GetString("Operating systems"); + this.notebook1.SetTabLabel(this.vbox3, this.label1); + this.label1.ShowAll(); + // Container child notebook1.Gtk.Notebook+NotebookChild + this.vbox4 = new global::Gtk.VBox(); + this.vbox4.Name = "vbox4"; + this.vbox4.Spacing = 6; + // Container child vbox4.Gtk.Box+BoxChild + this.GtkScrolledWindow1 = new global::Gtk.ScrolledWindow(); + this.GtkScrolledWindow1.Name = "GtkScrolledWindow1"; + this.GtkScrolledWindow1.ShadowType = ((global::Gtk.ShadowType)(1)); + // Container child GtkScrolledWindow1.Gtk.Container+ContainerChild + this.treeFiles = new global::Gtk.TreeView(); + this.treeFiles.Sensitive = false; + this.treeFiles.CanFocus = true; + this.treeFiles.Name = "treeFiles"; + this.GtkScrolledWindow1.Add(this.treeFiles); + this.vbox4.Add(this.GtkScrolledWindow1); + global::Gtk.Box.BoxChild w23 = ((global::Gtk.Box.BoxChild)(this.vbox4[this.GtkScrolledWindow1])); + w23.Position = 0; + // Container child vbox4.Gtk.Box+BoxChild + this.hbox4 = new global::Gtk.HBox(); + this.hbox4.Name = "hbox4"; + this.hbox4.Spacing = 6; + // Container child hbox4.Gtk.Box+BoxChild + this.lblProgressFiles1 = new global::Gtk.Label(); + this.lblProgressFiles1.Name = "lblProgressFiles1"; + this.lblProgressFiles1.LabelProp = global::Mono.Unix.Catalog.GetString("label4"); + this.hbox4.Add(this.lblProgressFiles1); + global::Gtk.Box.BoxChild w24 = ((global::Gtk.Box.BoxChild)(this.hbox4[this.lblProgressFiles1])); + w24.Position = 0; + w24.Expand = false; + w24.Fill = false; + // Container child hbox4.Gtk.Box+BoxChild + this.prgProgressFiles1 = new global::Gtk.ProgressBar(); + this.prgProgressFiles1.Name = "prgProgressFiles1"; + this.hbox4.Add(this.prgProgressFiles1); + global::Gtk.Box.BoxChild w25 = ((global::Gtk.Box.BoxChild)(this.hbox4[this.prgProgressFiles1])); + w25.Position = 1; + this.vbox4.Add(this.hbox4); + global::Gtk.Box.BoxChild w26 = ((global::Gtk.Box.BoxChild)(this.vbox4[this.hbox4])); + w26.Position = 1; + w26.Expand = false; + w26.Fill = false; + // Container child vbox4.Gtk.Box+BoxChild + this.hbox5 = new global::Gtk.HBox(); + this.hbox5.Name = "hbox5"; + this.hbox5.Spacing = 6; + // Container child hbox5.Gtk.Box+BoxChild + this.lblProgressFiles2 = new global::Gtk.Label(); + this.lblProgressFiles2.Name = "lblProgressFiles2"; + this.lblProgressFiles2.LabelProp = global::Mono.Unix.Catalog.GetString("label6"); + this.hbox5.Add(this.lblProgressFiles2); + global::Gtk.Box.BoxChild w27 = ((global::Gtk.Box.BoxChild)(this.hbox5[this.lblProgressFiles2])); + w27.Position = 0; + w27.Expand = false; + w27.Fill = false; + // Container child hbox5.Gtk.Box+BoxChild + this.prgProgressFiles2 = new global::Gtk.ProgressBar(); + this.prgProgressFiles2.Name = "prgProgressFiles2"; + this.hbox5.Add(this.prgProgressFiles2); + global::Gtk.Box.BoxChild w28 = ((global::Gtk.Box.BoxChild)(this.hbox5[this.prgProgressFiles2])); + w28.Position = 1; + this.vbox4.Add(this.hbox5); + global::Gtk.Box.BoxChild w29 = ((global::Gtk.Box.BoxChild)(this.vbox4[this.hbox5])); + w29.Position = 2; + w29.Expand = false; + w29.Fill = false; + // Container child vbox4.Gtk.Box+BoxChild + this.hbox6 = new global::Gtk.HBox(); + this.hbox6.Name = "hbox6"; + this.hbox6.Spacing = 6; + // Container child hbox6.Gtk.Box+BoxChild + this.btnPopulateFiles = new global::Gtk.Button(); + this.btnPopulateFiles.CanFocus = true; + this.btnPopulateFiles.Name = "btnPopulateFiles"; + this.btnPopulateFiles.UseUnderline = true; + this.btnPopulateFiles.Label = global::Mono.Unix.Catalog.GetString("Populate"); + this.hbox6.Add(this.btnPopulateFiles); + global::Gtk.Box.BoxChild w30 = ((global::Gtk.Box.BoxChild)(this.hbox6[this.btnPopulateFiles])); + w30.PackType = ((global::Gtk.PackType)(1)); + w30.Position = 0; + w30.Expand = false; + w30.Fill = false; + // Container child hbox6.Gtk.Box+BoxChild + this.btnCheckInVirusTotal = new global::Gtk.Button(); + this.btnCheckInVirusTotal.CanFocus = true; + this.btnCheckInVirusTotal.Name = "btnCheckInVirusTotal"; + this.btnCheckInVirusTotal.UseUnderline = true; + this.btnCheckInVirusTotal.Label = global::Mono.Unix.Catalog.GetString("Check with VirusTotal"); + this.hbox6.Add(this.btnCheckInVirusTotal); + global::Gtk.Box.BoxChild w31 = ((global::Gtk.Box.BoxChild)(this.hbox6[this.btnCheckInVirusTotal])); + w31.PackType = ((global::Gtk.PackType)(1)); + w31.Position = 1; + w31.Expand = false; + w31.Fill = false; + // Container child hbox6.Gtk.Box+BoxChild + this.btnScanWithClamd = new global::Gtk.Button(); + this.btnScanWithClamd.CanFocus = true; + this.btnScanWithClamd.Name = "btnScanWithClamd"; + this.btnScanWithClamd.UseUnderline = true; + this.btnScanWithClamd.Label = global::Mono.Unix.Catalog.GetString("Scan with clamd"); + this.hbox6.Add(this.btnScanWithClamd); + global::Gtk.Box.BoxChild w32 = ((global::Gtk.Box.BoxChild)(this.hbox6[this.btnScanWithClamd])); + w32.PackType = ((global::Gtk.PackType)(1)); + w32.Position = 2; + w32.Expand = false; + w32.Fill = false; + // Container child hbox6.Gtk.Box+BoxChild + this.btnMarkAsCrack = new global::Gtk.Button(); + this.btnMarkAsCrack.CanFocus = true; + this.btnMarkAsCrack.Name = "btnMarkAsCrack"; + this.btnMarkAsCrack.UseUnderline = true; + this.btnMarkAsCrack.Label = global::Mono.Unix.Catalog.GetString("Mark as crack"); + this.hbox6.Add(this.btnMarkAsCrack); + global::Gtk.Box.BoxChild w33 = ((global::Gtk.Box.BoxChild)(this.hbox6[this.btnMarkAsCrack])); + w33.PackType = ((global::Gtk.PackType)(1)); + w33.Position = 3; + w33.Expand = false; + w33.Fill = false; + // Container child hbox6.Gtk.Box+BoxChild + this.btnStopFiles = new global::Gtk.Button(); + this.btnStopFiles.CanFocus = true; + this.btnStopFiles.Name = "btnStopFiles"; + this.btnStopFiles.UseStock = true; + this.btnStopFiles.UseUnderline = true; + this.btnStopFiles.Label = "gtk-stop"; + this.hbox6.Add(this.btnStopFiles); + global::Gtk.Box.BoxChild w34 = ((global::Gtk.Box.BoxChild)(this.hbox6[this.btnStopFiles])); + w34.PackType = ((global::Gtk.PackType)(1)); + w34.Position = 4; + w34.Expand = false; + w34.Fill = false; + this.vbox4.Add(this.hbox6); + global::Gtk.Box.BoxChild w35 = ((global::Gtk.Box.BoxChild)(this.vbox4[this.hbox6])); + w35.Position = 3; + w35.Expand = false; + w35.Fill = false; + this.notebook1.Add(this.vbox4); + global::Gtk.Notebook.NotebookChild w36 = ((global::Gtk.Notebook.NotebookChild)(this.notebook1[this.vbox4])); + w36.Position = 1; + // Notebook tab + this.label3 = new global::Gtk.Label(); + this.label3.Name = "label3"; + this.label3.LabelProp = global::Mono.Unix.Catalog.GetString("Files"); + this.notebook1.SetTabLabel(this.vbox4, this.label3); + this.label3.ShowAll(); + this.vbox2.Add(this.notebook1); + global::Gtk.Box.BoxChild w37 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.notebook1])); + w37.Position = 0; this.Add(this.vbox2); if((this.Child != null)) { @@ -265,6 +445,14 @@ namespace osrepodbmgr this.btnHelp.Hide(); this.btnSave.Hide(); this.btnStop.Hide(); + this.lblProgressFiles1.Hide(); + this.prgProgressFiles1.Hide(); + this.lblProgressFiles2.Hide(); + this.prgProgressFiles2.Hide(); + this.btnCheckInVirusTotal.Hide(); + this.btnScanWithClamd.Hide(); + this.btnMarkAsCrack.Hide(); + this.btnStopFiles.Hide(); this.Show(); this.DeleteEvent += new global::Gtk.DeleteEventHandler(this.OnDeleteEvent); this.btnAdd.Clicked += new global::System.EventHandler(this.OnBtnAddClicked); @@ -275,6 +463,11 @@ namespace osrepodbmgr this.btnHelp.Clicked += new global::System.EventHandler(this.OnBtnHelpClicked); this.btnSettings.Clicked += new global::System.EventHandler(this.OnBtnSettingsClicked); this.btnQuit.Clicked += new global::System.EventHandler(this.OnBtnQuitClicked); + this.btnStopFiles.Clicked += new global::System.EventHandler(this.OnBtnStopFilesClicked); + this.btnMarkAsCrack.Clicked += new global::System.EventHandler(this.OnBtnMarkAsCrackClicked); + this.btnScanWithClamd.Clicked += new global::System.EventHandler(this.OnBtnScanWithClamdClicked); + this.btnCheckInVirusTotal.Clicked += new global::System.EventHandler(this.OnBtnCheckInVirusTotalClicked); + this.btnPopulateFiles.Clicked += new global::System.EventHandler(this.OnBtnPopulateFilesClicked); } } }