void ShowAddin(object data) { AddinHeader sinfo = null; Addin installed = null; AddinHeader updateInfo = null; string repo = ""; string downloadSize = null; topHeaderBox.Hide (); if (data is Addin) { installed = (Addin) data; sinfo = SetupService.GetAddinHeader (installed); updateInfo = GetUpdate (installed); selectedEntry.Clear (); foreach (var prop in sinfo.Properties) { if (prop.Name.StartsWith ("PreviewImage")) previewImages.Add (new ImageContainer (installed, prop.Value)); } string icon32 = sinfo.Properties.GetPropertyValue ("Icon32"); if (icon32.Length > 0) titleIcon = new ImageContainer (installed, icon32); } else if (data is AddinRepositoryEntry) { AddinRepositoryEntry entry = (AddinRepositoryEntry) data; sinfo = entry.Addin; installed = AddinManager.Registry.GetAddin (Addin.GetIdName (sinfo.Id)); if (installed != null && Addin.CompareVersions (installed.Version, sinfo.Version) > 0) updateInfo = sinfo; selectedEntry.Add (entry); string rname = !string.IsNullOrEmpty (entry.RepositoryName) ? entry.RepositoryName : entry.RepositoryUrl; repo = "<small><b>" + Catalog.GetString ("Available in repository:") + "</b>\n" + GLib.Markup.EscapeText (rname) + "\n\n</small>"; foreach (var prop in sinfo.Properties) { if (prop.Name.StartsWith ("PreviewImage")) previewImages.Add (new ImageContainer (entry, prop.Value)); } string icon32 = sinfo.Properties.GetPropertyValue ("Icon32"); if (icon32.Length > 0) titleIcon = new ImageContainer (entry, icon32); int size; if (int.TryParse (sinfo.Properties.GetPropertyValue ("DownloadSize"), out size)) { float fs = ((float)size) / 1048576f; downloadSize = fs.ToString ("0.00 MB"); } } else selectedEntry.Clear (); if (installed != null) selectedAddin.Add (installed); string missingDepsTxt = null; if (sinfo == null) { btnDisable.Visible = false; btnUninstall.Visible = false; btnUpdate.Visible = false; } else { string version; string newVersion = null; if (installed != null) { btnInstall.Visible = false; btnUpdate.Visible = updateInfo != null && AllowInstall; btnDisable.Visible = true; btnDisable.Label = installed.Enabled ? "Disable" : "Enable"; btnDisable.Visible = installed.Description.CanDisable; btnUninstall.Visible = installed.Description.CanUninstall; version = installed.Version; var missingDeps = Services.GetMissingDependencies (installed); if (updateInfo != null) { newVersion = updateInfo.Version; labelHeader.Markup = "<b><span color='black'>" + Catalog.GetString ("Update available") + "</span></b>"; // topHeaderBox.BackgroundColor = new Gdk.Color (0, 132, 208); imageHeader.Pixbuf = Gdk.Pixbuf.LoadFromResource ("software-update-available.png"); topHeaderBox.BackgroundColor = new Gdk.Color (255, 176, 0); topHeaderBox.Show (); } else if (missingDeps.Any ()) { labelHeader.Markup = "<b><span color='black'>" + Catalog.GetString ("This add-in can't be loaded due to missing dependencies") + "</span></b>"; topHeaderBox.BackgroundColor = new Gdk.Color (255, 176, 0); imageHeader.SetFromStock (Gtk.Stock.DialogWarning, Gtk.IconSize.Menu); topHeaderBox.Show (); missingDepsTxt = ""; foreach (var mdep in missingDeps) { if (mdep.Found != null) missingDepsTxt += "\n" + string.Format (Catalog.GetString ("Required: {0} v{1}, found v{2}"), mdep.Addin, mdep.Required, mdep.Found); else missingDepsTxt += "\n" + string.Format (Catalog.GetString ("Missing: {0} v{1}"), mdep.Addin, mdep.Required); } } } else { btnInstall.Visible = AllowInstall; btnUpdate.Visible = false; btnDisable.Visible = false; btnUninstall.Visible = false; version = sinfo.Version; } labelName.Markup = "<b><big>" + GLib.Markup.EscapeText(sinfo.Name) + "</big></b>"; string ver; if (newVersion != null) { ver = "<small><b>" + Catalog.GetString ("Installed version") + ":</b> " + version + "</small>\n"; ver += "<small><b>" + Catalog.GetString ("Repository version") + ":</b> " + newVersion + "</small>"; } else ver = "<small><b>" + Catalog.GetString ("Version") + " " + version + "</b></small>"; if (downloadSize != null) ver += "\n<small><b>" + Catalog.GetString ("Download size") + ":</b> " + downloadSize + "</small>"; if (missingDepsTxt != null) ver += "\n\n" + GLib.Markup.EscapeText (Catalog.GetString ("The following depedencies required by this add-in are not available:")) + missingDepsTxt; labelVersion.Markup = ver; string desc = GLib.Markup.EscapeText (sinfo.Description); labelDesc.Markup = repo + GLib.Markup.EscapeText (desc); foreach (var img in previewImages) vboxDesc.PackStart (img, false, false, 0); urlButton.Visible = !string.IsNullOrEmpty (sinfo.Url); infoUrl = sinfo.Url; if (titleIcon != null) { boxTitle.PackEnd (titleIcon, false, false, 0); labelName.WidthRequest = titleWidth - 32; labelVersion.WidthRequest = titleWidth - 32; } else { labelName.WidthRequest = titleWidth; labelVersion.WidthRequest = titleWidth; } if (IsRealized) SetComponentsBg (); } }
public void ShowAddins(object[] data) { selectedEntry.Clear(); selectedAddin.Clear(); eboxButs.Visible = true; topHeaderBox.Hide(); urlButton.Hide(); if (titleIcon != null) { boxTitle.Remove(titleIcon); titleIcon.Destroy(); titleIcon = null; } foreach (var img in previewImages) { ((Gtk.Container)img.Parent).Remove(img); img.Destroy(); } previewImages.Clear(); if (data.Length == 1) { headerBox.Show(); ShowAddin(data[0]); } else if (data.Length > 1) { headerBox.Hide(); StringBuilder sb = new StringBuilder(); sb.Append(Catalog.GetString("Multiple selection:\n\n")); bool allowUpdate = AllowInstall; bool allowInstall = true; bool allowUninstall = AllowInstall; bool allowEnable = true; bool allowDisable = true; foreach (object o in data) { Addin installed; if (o is Addin) { Addin a = (Addin)o; installed = a; selectedAddin.Add(a); sb.Append(a.Name); } else { AddinRepositoryEntry entry = (AddinRepositoryEntry)o; selectedEntry.Add(entry); sb.Append(entry.Addin.Name); installed = AddinManager.Registry.GetAddin(Addin.GetIdName(entry.Addin.Id)); } if (installed != null) { if (GetUpdate(installed) == null) { allowUpdate = false; } allowInstall = false; if (installed.Enabled) { allowEnable = false; } else { allowDisable = false; } } else { allowEnable = allowDisable = allowUninstall = allowUpdate = false; } sb.Append('\n'); labelDesc.Text = sb.ToString(); if (allowEnable) { btnDisable.Visible = true; btnDisable.Label = Catalog.GetString("Enable"); } else if (allowDisable) { btnDisable.Visible = true; btnDisable.Label = Catalog.GetString("Disable"); } else { btnDisable.Visible = false; } btnInstall.Visible = allowInstall; btnUninstall.Visible = allowUninstall; btnUpdate.Visible = allowUpdate; } } else { headerBox.Hide(); btnDisable.Visible = false; btnInstall.Visible = false; btnUninstall.Visible = false; btnUpdate.Visible = false; eboxButs.Visible = false; labelDesc.Text = Catalog.GetString("No selection"); } }
public void ShowAddins(object[] data) { selectedEntry.Clear (); selectedAddin.Clear (); eboxButs.Visible = true; topHeaderBox.Hide (); urlButton.Hide (); if (titleIcon != null) { boxTitle.Remove (titleIcon); titleIcon.Destroy (); titleIcon = null; } foreach (var img in previewImages) { ((Gtk.Container)img.Parent).Remove (img); img.Destroy (); } previewImages.Clear (); if (data.Length == 1) { headerBox.Show (); ShowAddin (data[0]); } else if (data.Length > 1) { headerBox.Hide (); StringBuilder sb = new StringBuilder (); sb.Append (Catalog.GetString ("Multiple selection:\n\n")); bool allowUpdate = AllowInstall; bool allowInstall = true; bool allowUninstall = AllowInstall; bool allowEnable = true; bool allowDisable = true; foreach (object o in data) { Addin installed; if (o is Addin) { Addin a = (Addin)o; installed = a; selectedAddin.Add (a); sb.Append (a.Name); } else { AddinRepositoryEntry entry = (AddinRepositoryEntry) o; selectedEntry.Add (entry); sb.Append (entry.Addin.Name); installed = AddinManager.Registry.GetAddin (Addin.GetIdName (entry.Addin.Id)); } if (installed != null) { if (GetUpdate (installed) == null) allowUpdate = false; allowInstall = false; if (installed.Enabled) allowEnable = false; else allowDisable = false; } else allowEnable = allowDisable = allowUninstall = allowUpdate = false; sb.Append ('\n'); labelDesc.Text = sb.ToString (); if (allowEnable) { btnDisable.Visible = true; btnDisable.Label = Catalog.GetString ("Enable"); } else if (allowDisable) { btnDisable.Visible = true; btnDisable.Label = Catalog.GetString ("Disable"); } else btnDisable.Visible = false; btnInstall.Visible = allowInstall; btnUninstall.Visible = allowUninstall; btnUpdate.Visible = allowUpdate; } } else { headerBox.Hide (); btnDisable.Visible = false; btnInstall.Visible = false; btnUninstall.Visible = false; btnUpdate.Visible = false; eboxButs.Visible = false; labelDesc.Text = Catalog.GetString ("No selection"); } }
void ShowAddin(object data) { AddinHeader sinfo = null; Addin installed = null; AddinHeader updateInfo = null; string repo = ""; string downloadSize = null; topHeaderBox.Hide(); if (data is Addin) { installed = (Addin)data; sinfo = SetupService.GetAddinHeader(installed); var entry = GetUpdate(installed); if (entry != null) { updateInfo = entry.Addin; selectedEntry.Add(entry); } foreach (var prop in sinfo.Properties) { if (prop.Name.StartsWith("PreviewImage")) { previewImages.Add(new ImageContainer(installed, prop.Value)); } } string icon32 = sinfo.Properties.GetPropertyValue("Icon32"); if (icon32.Length > 0) { titleIcon = new ImageContainer(installed, icon32); } } else if (data is AddinRepositoryEntry) { AddinRepositoryEntry entry = (AddinRepositoryEntry)data; sinfo = entry.Addin; installed = AddinManager.Registry.GetAddin(Addin.GetIdName(sinfo.Id)); if (installed != null && Addin.CompareVersions(installed.Version, sinfo.Version) > 0) { updateInfo = sinfo; } selectedEntry.Add(entry); string rname = !string.IsNullOrEmpty(entry.RepositoryName) ? entry.RepositoryName : entry.RepositoryUrl; repo = "<small><b>" + Catalog.GetString("Available in repository:") + "</b>\n" + GLib.Markup.EscapeText(rname) + "\n\n</small>"; foreach (var prop in sinfo.Properties) { if (prop.Name.StartsWith("PreviewImage")) { previewImages.Add(new ImageContainer(entry, prop.Value)); } } string icon32 = sinfo.Properties.GetPropertyValue("Icon32"); if (icon32.Length > 0) { titleIcon = new ImageContainer(entry, icon32); } int size; if (int.TryParse(sinfo.Properties.GetPropertyValue("DownloadSize"), out size)) { float fs = ((float)size) / 1048576f; downloadSize = fs.ToString("0.00 MB"); } } else { selectedEntry.Clear(); } if (installed != null) { selectedAddin.Add(installed); } string missingDepsTxt = null; if (sinfo == null) { btnDisable.Visible = false; btnUninstall.Visible = false; btnUpdate.Visible = false; } else { string version; string newVersion = null; if (installed != null) { btnInstall.Visible = false; btnUpdate.Visible = updateInfo != null && AllowInstall; btnDisable.Visible = true; btnDisable.Label = installed.Enabled ? Catalog.GetString("Disable") : Catalog.GetString("Enable"); btnDisable.Visible = installed.Description.CanDisable; btnUninstall.Visible = installed.Description.CanUninstall; version = installed.Version; var missingDeps = Services.GetMissingDependencies(installed); if (updateInfo != null) { newVersion = updateInfo.Version; labelHeader.Markup = "<b><span color='black'>" + Catalog.GetString("Update available") + "</span></b>"; // topHeaderBox.BackgroundColor = new Gdk.Color (0, 132, 208); imageHeader.Pixbuf = Gdk.Pixbuf.LoadFromResource("update-16.png"); topHeaderBox.BackgroundColor = new Gdk.Color(255, 176, 0); topHeaderBox.Show(); } else if (missingDeps.Any()) { labelHeader.Markup = "<b><span color='black'>" + Catalog.GetString("This extension package can't be loaded due to missing dependencies") + "</span></b>"; topHeaderBox.BackgroundColor = new Gdk.Color(255, 176, 0); imageHeader.SetFromStock(Gtk.Stock.DialogWarning, Gtk.IconSize.Menu); topHeaderBox.Show(); missingDepsTxt = ""; foreach (var mdep in missingDeps) { if (mdep.Found != null) { missingDepsTxt += "\n" + string.Format(Catalog.GetString("Required: {0} v{1}, found v{2}"), mdep.Addin, mdep.Required, mdep.Found); } else { missingDepsTxt += "\n" + string.Format(Catalog.GetString("Missing: {0} v{1}"), mdep.Addin, mdep.Required); } } } } else { btnInstall.Visible = AllowInstall; btnUpdate.Visible = false; btnDisable.Visible = false; btnUninstall.Visible = false; version = sinfo.Version; } labelName.Markup = "<b><big>" + GLib.Markup.EscapeText(sinfo.Name) + "</big></b>"; string ver; if (newVersion != null) { ver = "<small><b>" + Catalog.GetString("Installed version") + ":</b> " + version + "</small>\n"; ver += "<small><b>" + Catalog.GetString("Repository version") + ":</b> " + newVersion + "</small>"; } else { ver = "<small><b>" + Catalog.GetString("Version") + " " + version + "</b></small>"; } if (downloadSize != null) { ver += "\n<small><b>" + Catalog.GetString("Download size") + ":</b> " + downloadSize + "</small>"; } if (missingDepsTxt != null) { ver += "\n\n" + GLib.Markup.EscapeText(Catalog.GetString("The following dependencies required by this extension package are not available:")) + missingDepsTxt; } labelVersion.Markup = ver; string desc = GLib.Markup.EscapeText(sinfo.Description); labelDesc.Markup = repo + GLib.Markup.EscapeText(desc); foreach (var img in previewImages) { vboxDesc.PackStart(img, false, false, 0); } urlButton.Visible = !string.IsNullOrEmpty(sinfo.Url); infoUrl = sinfo.Url; if (titleIcon != null) { boxTitle.PackEnd(titleIcon, false, false, 0); labelName.WidthRequest = titleWidth - 32; labelVersion.WidthRequest = titleWidth - 32; } else { labelName.WidthRequest = titleWidth; labelVersion.WidthRequest = titleWidth; } if (IsRealized) { SetComponentsBg(); } } }