From: ttp Date: Thu, 17 Jul 2008 11:49:37 +0000 (+0000) Subject: AppliStation-GUI,無人インストールのGUIの可変。アイコン表示の試作。 X-Git-Tag: v1.1.0~50 X-Git-Url: http://git.sourceforge.jp/view?p=applistation%2FAppliStation.git;a=commitdiff_plain;h=b84c03d933677cd9b7f685b8d44330b7e96155a7;ds=sidebyside AppliStation-GUI,無人インストールのGUIの可変。アイコン表示の試作。 git-svn-id: http://localhost/svn/AppliStation/trunk@936 34ed2c89-c49f-4a4b-abdb-c318350108cf --- diff --git a/AppliStation/AppliStation.Util/GUIUtils.cs b/AppliStation/AppliStation.Util/GUIUtils.cs new file mode 100644 index 0000000..7e235d6 --- /dev/null +++ b/AppliStation/AppliStation.Util/GUIUtils.cs @@ -0,0 +1,83 @@ +using System; +using System.IO; +using System.Drawing; +using System.Drawing.Imaging; +using NaGet.Packages; +using NaGet.Packages.Install; + +namespace AppliStation.Util +{ + /// + /// GUIに関する雑多な関数 + /// + public sealed class GUIUtils + { + /// + /// パッケージに対応するアイコンを返す + /// + /// パッケージ + /// 対応するアイコン。検出できなかった場合はnull。 + public static Icon GetIconForPackage(InstalledPackage pkg) + { + string iconPath = pkg.UninstallInfo.IconPath; + if (! string.IsNullOrEmpty(iconPath)) { + if (iconPath.EndsWith(",0") || iconPath.EndsWith(",-0")) { + iconPath = iconPath.Substring(0, iconPath.LastIndexOf(',')); + } + if (File.Exists(iconPath)) { + return Icon.ExtractAssociatedIcon(iconPath); + } + } else if (pkg.Type == InstallerType.ARCHIVE) { + string progGrp = Path.Combine(NaGet.Env.ArchiveProgramGroup, pkg.Name); + if (Directory.Exists(progGrp)) { + string[] lnkFiles = Directory.GetFiles(progGrp, "*.lnk"); + + if (lnkFiles.Length >= 1) { + using (NaGet.InteropServices.ShellLink link = new NaGet.InteropServices.ShellLink(lnkFiles[0])) { + if (File.Exists(link.GetPath(0))) { + return Icon.ExtractAssociatedIcon(link.GetPath(0)); + } + } + } + } + } + return null; + } + + /// + /// グレーアウトアイコンを作るための ImageAttributes を作って返す。 + /// + /// 透明度。(1.0が不透明、0.0が完全透明) + /// 生成されたImageAttributes + public static ImageAttributes GetImageAttributeToGrayOut(float alpha) + { + // RGB比率として、YIQカラーモデルの値を採用する + const float r = 0.298912f; + const float g = 0.586611f; + const float b = 0.114478f; + + ColorMatrix cm = new ColorMatrix(new float[][]{ + new float[]{r, r, r, 0, 0}, + new float[]{g, g, g, 0, 0}, + new float[]{b, b, b, 0, 0}, + new float[]{0, 0, 0, alpha, 0}, + new float[]{0, 0, 0, 0, 1}, + }); + ImageAttributes ia = new ImageAttributes(); + ia.SetColorMatrix(cm); + + return ia; + } + + public static void Graphics_DrawCenterImage(Graphics g, Image img, Rectangle b, ImageAttributes ia) + { + int x = b.Left + (b.Width - img.Width ) / 2; + int y = b.Top + (b.Height - img.Height) / 2; + + g.DrawImage(img, + new Rectangle(x, y, img.Width, img.Height), + 0, 0, img.Width, img.Height, + GraphicsUnit.Pixel, ia); + } + } +} diff --git a/AppliStation/AppliStation.Util/PackageUtils.cs b/AppliStation/AppliStation.Util/PackageUtils.cs deleted file mode 100644 index dc46626..0000000 --- a/AppliStation/AppliStation.Util/PackageUtils.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System; -using System.IO; -using System.Drawing; -using NaGet.Packages; -using NaGet.Packages.Install; - -namespace AppliStation.Util -{ - public sealed class PackageUtils - { - - public static Icon GetIconForPackage(InstalledPackage pkg) - { - string iconPath = pkg.UninstallInfo.IconPath; - if (! string.IsNullOrEmpty(iconPath)) { - if (iconPath.EndsWith(",0") || iconPath.EndsWith(",-0")) { - iconPath = iconPath.Substring(0, iconPath.LastIndexOf(',')); - } - if (File.Exists(iconPath)) { - return Icon.ExtractAssociatedIcon(iconPath); - } - } else if (pkg.Type == InstallerType.ARCHIVE) { - string progGrp = Path.Combine(NaGet.Env.ArchiveProgramGroup, pkg.Name); - if (Directory.Exists(progGrp)) { - string[] lnkFiles = Directory.GetFiles(progGrp, "*.lnk"); - - if (lnkFiles.Length >= 1) { - using (NaGet.InteropServices.ShellLink link = new NaGet.InteropServices.ShellLink(lnkFiles[0])) { - if (File.Exists(link.GetPath(0))) { - return Icon.ExtractAssociatedIcon(link.GetPath(0)); - } - } - } - } - } - return null; - } - - } -} diff --git a/AppliStation/AppliStation.csproj b/AppliStation/AppliStation.csproj index f0979b9..319fb8f 100644 --- a/AppliStation/AppliStation.csproj +++ b/AppliStation/AppliStation.csproj @@ -67,7 +67,7 @@ - + diff --git a/AppliStation/InstallationConfirmForm.Designer.cs b/AppliStation/InstallationConfirmForm.Designer.cs index a0bc4f5..9f57717 100644 --- a/AppliStation/InstallationConfirmForm.Designer.cs +++ b/AppliStation/InstallationConfirmForm.Designer.cs @@ -1,4 +1,4 @@ - + namespace AppliStation { partial class InstallationConfirmForm @@ -41,12 +41,13 @@ namespace AppliStation this.nameColumnHeader = new System.Windows.Forms.ColumnHeader(); this.versionColumnHeader = new System.Windows.Forms.ColumnHeader(); this.currentVersionColumnHeader = new System.Windows.Forms.ColumnHeader(); - this.instOptsColumnHeader = new System.Windows.Forms.ColumnHeader(); + this.silentInstColumnHeader = new System.Windows.Forms.ColumnHeader(); this.instListViewContextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components); this.silentInstallStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.instListToolStripSeparator = new System.Windows.Forms.ToolStripSeparator(); this.selectAllInstsStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.unselectAllInstsStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.instListViewSilentInstallImageList = new System.Windows.Forms.ImageList(this.components); this.tableLayoutPanel1.SuspendLayout(); this.btnPanel.SuspendLayout(); this.instListViewContextMenuStrip.SuspendLayout(); @@ -134,20 +135,23 @@ namespace AppliStation this.nameColumnHeader, this.versionColumnHeader, this.currentVersionColumnHeader, - this.instOptsColumnHeader}); + this.silentInstColumnHeader}); this.instsListView.ContextMenuStrip = this.instListViewContextMenuStrip; this.instsListView.Dock = System.Windows.Forms.DockStyle.Fill; this.instsListView.GridLines = true; this.instsListView.Location = new System.Drawing.Point(5, 53); this.instsListView.Margin = new System.Windows.Forms.Padding(5, 3, 5, 5); this.instsListView.Name = "instsListView"; + this.instsListView.OwnerDraw = true; this.instsListView.ShowItemToolTips = true; this.instsListView.Size = new System.Drawing.Size(382, 173); this.instsListView.TabIndex = 2; this.instsListView.UseCompatibleStateImageBehavior = false; this.instsListView.View = System.Windows.Forms.View.Details; this.instsListView.ItemChecked += new System.Windows.Forms.ItemCheckedEventHandler(this.InstsListViewItemChecked); + this.instsListView.DrawSubItem += new System.Windows.Forms.DrawListViewSubItemEventHandler(this.InstsListViewDrawSubItem); this.instsListView.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.InstsListViewColumnClick); + this.instsListView.DrawColumnHeader += new System.Windows.Forms.DrawListViewColumnHeaderEventHandler(this.InstsListViewDrawColumnHeader); // // nameColumnHeader // @@ -164,10 +168,10 @@ namespace AppliStation this.currentVersionColumnHeader.Text = "現バージョン"; this.currentVersionColumnHeader.Width = 64; // - // instOptsColumnHeader + // silentInstColumnHeader // - this.instOptsColumnHeader.Text = ""; - this.instOptsColumnHeader.Width = 48; + this.silentInstColumnHeader.Text = "自動インストール"; + this.silentInstColumnHeader.Width = 28; // // instListViewContextMenuStrip // @@ -177,7 +181,7 @@ namespace AppliStation this.selectAllInstsStripMenuItem, this.unselectAllInstsStripMenuItem}); this.instListViewContextMenuStrip.Name = "packageListViewContextMenuStrip"; - this.instListViewContextMenuStrip.Size = new System.Drawing.Size(220, 98); + this.instListViewContextMenuStrip.Size = new System.Drawing.Size(220, 76); this.instListViewContextMenuStrip.Opening += new System.ComponentModel.CancelEventHandler(this.InstsListViewContextMenuStripOpening); // // silentInstallStripMenuItem @@ -206,6 +210,12 @@ namespace AppliStation this.unselectAllInstsStripMenuItem.Text = "全ての選択を解除(&U)"; this.unselectAllInstsStripMenuItem.Click += new System.EventHandler(this.UnselectAllInstsStripMenuItemClick); // + // instListViewSilentInstallImageList + // + this.instListViewSilentInstallImageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("instListViewSilentInstallImageList.ImageStream"))); + this.instListViewSilentInstallImageList.TransparentColor = System.Drawing.Color.Transparent; + this.instListViewSilentInstallImageList.Images.SetKeyName(0, "automatic-install.png"); + // // InstallationConfirmForm // this.AcceptButton = this.okButton; @@ -227,9 +237,10 @@ namespace AppliStation this.instListViewContextMenuStrip.ResumeLayout(false); this.ResumeLayout(false); } + private System.Windows.Forms.ImageList instListViewSilentInstallImageList; + private System.Windows.Forms.ColumnHeader silentInstColumnHeader; private System.Windows.Forms.ToolStripSeparator instListToolStripSeparator; private System.Windows.Forms.ToolStripMenuItem silentInstallStripMenuItem; - private System.Windows.Forms.ColumnHeader instOptsColumnHeader; private System.Windows.Forms.ToolStripMenuItem unselectAllInstsStripMenuItem; private System.Windows.Forms.ToolStripMenuItem selectAllInstsStripMenuItem; private System.Windows.Forms.ContextMenuStrip instListViewContextMenuStrip; diff --git a/AppliStation/InstallationConfirmForm.cs b/AppliStation/InstallationConfirmForm.cs index 13f812f..f8a6356 100644 --- a/AppliStation/InstallationConfirmForm.cs +++ b/AppliStation/InstallationConfirmForm.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Drawing; using System.Windows.Forms; using NaGet.Packages; @@ -16,7 +16,7 @@ namespace AppliStation private PackageListsManager pkgListMan; /// - /// ƒpƒbƒP[ƒWƒCƒ“ƒXƒg[ƒ‹ˆ—‚̏W‡ + /// パッケージインストール処理の集合 /// public Installation[] Installations { get { return installations; } @@ -43,7 +43,7 @@ namespace AppliStation // InitializeComponent(); - // ŠÇ—ŽÒŒ ŒÀ‚Å“®‚¢‚Ä‚¢‚é‚È‚ç‚Îrunas‚ª•K—v‚É‚Í‚È‚ç‚È‚¢‚Ì‚Å•\Ž¦‚µ‚È‚¢ + // 管理者権限で動いているならばrunasが必要にはならないので表示しない if (NaGet.Utils.IsAdministrators()) { runasCheckBox.Checked = false; runasCheckBox.Visible = false; @@ -69,7 +69,11 @@ namespace AppliStation itemData[versionColumnHeader.Index] = pkg.Version; itemData[currentVersionColumnHeader.Index] = (curPkg != null)? curPkg.Version : "-"; - itemData[instOptsColumnHeader.Index] = inst.Silent? "ƒTƒCƒŒƒ“ƒg" : string.Empty; + itemData[silentInstColumnHeader.Index] = + (inst.SupportsSilentOnly)? "無人インストールのみサポート" : + (inst.Silent)? "無人インストール" : + (inst.IsSupportsSilent)? "マニュアルでインストール" : + "マニュアルでしかインストールできません"; ListViewItem item = new ListViewItem(itemData); item.Tag = inst; @@ -84,6 +88,49 @@ namespace AppliStation instsListView.Refresh(); } + #region instsListViewのオーナードドロー関連 + + void InstsListViewDrawSubItem(object sender, DrawListViewSubItemEventArgs e) + { + if (e.Header == silentInstColumnHeader) { + Installation inst = ((Installation) e.Item.Tag); + + //e.DrawBackground(); + e.Graphics.Clip.Intersect(e.Bounds); + + if (inst.Silent) { + AppliStation.Util.GUIUtils.Graphics_DrawCenterImage( + e.Graphics, + instListViewSilentInstallImageList.Images[0], + e.Bounds, null); + } else if (inst.IsSupportsSilent) { + AppliStation.Util.GUIUtils.Graphics_DrawCenterImage( + e.Graphics, + instListViewSilentInstallImageList.Images[0], + e.Bounds, + AppliStation.Util.GUIUtils.GetImageAttributeToGrayOut(0.5f)); + } + } else { + e.DrawDefault = true; + } + } + + void InstsListViewDrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e) + { + if (e.Header == silentInstColumnHeader) { + e.DrawBackground(); + e.Graphics.Clip.Intersect(e.Bounds); + AppliStation.Util.GUIUtils.Graphics_DrawCenterImage( + e.Graphics, + instListViewSilentInstallImageList.Images[0], + e.Bounds, null); + } else { + e.DrawDefault = true; + } + } + + #endregion + void InstsListViewItemChecked(object sender, ItemCheckedEventArgs e) { System.Windows.Forms.ListView.CheckedListViewItemCollection checkeds = instsListView.CheckedItems; @@ -115,7 +162,7 @@ namespace AppliStation } AppliStation.Util.NativeMethods.ColumnHeader_SetSortState(instsListView, e.Column, order); - // ƒ\[ƒg‘Ώۗñ‚̐F•t‚¯ + // ソート対象列の色付け try { // SendMessage(hWnd, LVM_SETSELECTEDCOLUMN, column, NULL); AppliStation.Util.NativeMethods.SendMessage(instsListView.Handle, 0x1000+140, (uint) e.Column, 0); @@ -181,7 +228,7 @@ namespace AppliStation } /// - /// ƒCƒ“ƒXƒg[ƒ‹‚·‚é‚悤‘I‘ð‚³‚ê‚½ƒpƒbƒP[ƒW‚Ì”z—ñ + /// インストールするよう選択されたパッケージの配列 /// public Installation[] CheckedInstallations { get { @@ -193,10 +240,10 @@ namespace AppliStation } } - #region runasŠÖ˜A + #region runas関連 /// - /// runas‚ÅŽÀs‚·‚é‚©”Û‚© + /// runasで実行するか否か /// public bool UseRunas { set { @@ -210,23 +257,23 @@ namespace AppliStation } /// - /// ‘I‘ð‚³‚ê‚½ƒpƒbƒP[ƒW‚𒲍¸‚µ‚āARunas‚ðŽg‚¤‚ׂ«‚©‚¢‚È‚©‚ð•Ô‚· + /// 選択されたパッケージを調査して、Runasを使うべきかいなかを返す /// public bool GetShouldUseRunas() { if (NaGet.Utils.IsAdministrators()) { - // ŠÇ—ŽÒŒ ŒÀ‚Å“®‚¢‚Ä‚¢‚éê‡‚Í•s—v + // 管理者権限で動いている場合は不要 return false; } else if (NaGet.Utils.IsUACEnabled()) { - // UAC‚ª“K—p‚³‚ê‚Ä‚¢‚éê‡‚Í•W€‚Å‚Í•s—v‚Æ‚·‚é + // UACが適用されている場合は標準では不要とする return false; } - // ‚ЂƂ‚łàPCƒ^[ƒQƒbƒg‚ȃCƒ“ƒXƒg[ƒ‰‚ª‚ ‚ê‚ΕK—v‚Æ‚·‚é + // ひとつでもPCターゲットなインストーラがあれば必要とする foreach (Installation inst in CheckedInstallations) { if (inst.TargetPC) return true; } - // ‚»‚êˆÈŠO‚Í•s—v + // それ以外は不要 return false; } @@ -246,5 +293,6 @@ namespace AppliStation } #endregion + } } diff --git a/AppliStation/InstallationConfirmForm.resx b/AppliStation/InstallationConfirmForm.resx index 4b5ab9b..e4165ce 100644 --- a/AppliStation/InstallationConfirmForm.resx +++ b/AppliStation/InstallationConfirmForm.resx @@ -139,4 +139,38 @@ 17, 17 + + 225, 17 + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADW + BAAAAk1TRnQBSQFMAwEBAAEEAQABBAEAAQ4BAAEOAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABOAMA + AQ4DAAEBAQABIAUAAUABDB4AAdMCAAEDAdMCAAEZAdICAAExAdMCAAFEAc4CAQGwAZQBEAFJAekBmwEP + AUUB6AGhAQ4BOgHkAaoBDAEzAeIBpgEMATsB4wHTAgEBobAAAdMCAAETAdMCAQGWAcwCAgHCAcUBCQEG + AdYBvgENAQgB3AFUASQBlwH7AkkB8QH/AlYB8gH/AikB7wH/AksB8gH/AlIB8gH/AaYBDAE7AeOsAAHT + AgABAgHQAgEBrQGdAWcBPQH/AZsBYgE0Af8BmwFgATAB/wGcAWABMAH/AUUBPQG7Af8CRAHxAf8C2AH8 + Af8CcwH1Af8C2AH8Af8CSwHyAf8BqgEMATMB4qwAAdICAAExAaABVwEnAfsBnwFiATEB/wGiAWQBMgH/ + AaQBZQEzAf8BqAFtAT0B/wFHAUEBwgH/AikB7wH/AmMB9AH/AvgB/gH/AnMB9QH/AikB7wH/AaoBDAEz + AeKsAAHTAgABWgGlAWsBPwH/AZ8BYgExAf8BqgFpATUB/wGtAWsBNgH/AboBiAFiAf8BSwFGAccB/wJN + AfIB/wLbAfwB/wJjAfQB/wLYAfwB/wJWAfIB/wGqAQwBMwHirAAB0wIAARwBtQE9ASAB8wGpAWgBNQH/ + Aa8BbAE3Af8BtQFwATgB/wHSAbMBmwH/AU4BTAHPAf8CQAHxAf8CTQHyAf8CKQHvAf8CRAHxAf8CSQHx + Af8BqgEMATMB4rAAAdMCAQGhAa0BbwE+Af8BsAFtATgB/wGlAXUBTAH/AZoCnAH/AVQBWQGrAf8BQgE8 + AbwB/wFGAT0BuwH/AUcBPwG8Af8BjgEWAVUB7QG5AQgBJgHaAdICAQGRsAAB0wIAAQ8B0AEEAQIBwwGR + AXgBXwH/AT0BhQGvAf8BMQGUAdIB/wEvAZQB0wH/ATABfgGtAf8BcQFjAVsB/gHTAgEBoQHTAgABArwA + AdMCAAENAZEBMgFIAeoBOwGhAeIB/wFEAaYB4wH/AUEBpAHjAf8BMQGcAeAB/wFpAVEBdwH0AdMCAAEk + wAAB0wIAAWgBPgGjAeIB/wFZAa8B5gH/AXQBvAHqAf8BbwG5AeoB/wFNAaoB5QH/ATMBngHhAf8B0gIB + AYLAAAHTAgEBgwFIAagB5AH/AW4BuQHpAf8BnQHPAfEB/wGQAckB7wH/AV8BsgHnAf8BNwGgAeEB/wHT + AgEBlsAAAdICAAFZAUMBpAHiAf8BYwG0AegB/wGFAcQB7QH/AX0BwAHsAf8BVgGuAeYB/wE2AZ8B4QH/ + AdICAAF1wAAB0wIAAQEBzQEEAQcBvgFMAakB5QH/AVcBrwHmAf8BUwGsAeUB/wFDAaUB4wH/AcIBCwEU + Ac4B0wIAAQjEAAHTAgABDQHTAgEBmgHAAQ8BFQHQAb8BEQEbAdQB0wIBAaEB0wIAARe4AAFCAU0BPgcA + AT4DAAEoAwABOAMAAQ4DAAEBAQABAQUAAXAXAAP/AQAB4AcAAcAHAAGABwABgAcAAYAHAAGABwABwAcA + AcABDAYAAeABHAYAAeABHAYAAeABHAYAAeABHAYAAeABHAYAAfABPAYACw== + + + + 45 + \ No newline at end of file diff --git a/AppliStation/PackageInfoForm.cs b/AppliStation/PackageInfoForm.cs index c2321dd..1f18a43 100644 --- a/AppliStation/PackageInfoForm.cs +++ b/AppliStation/PackageInfoForm.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Drawing; using System.Windows.Forms; using NaGet.Packages.Install; @@ -34,7 +34,7 @@ namespace AppliStation iconLabel.Image = null; iconLabel.Size = Size.Empty; if (isInstalledPackage) { - Icon icon = AppliStation.Util.PackageUtils.GetIconForPackage((InstalledPackage) pkg); + Icon icon = AppliStation.Util.GUIUtils.GetIconForPackage((InstalledPackage) pkg); if (icon != null) { iconLabel.Image = icon.ToBitmap(); iconLabel.Size = icon.Size; @@ -57,7 +57,7 @@ namespace AppliStation statusLinkLabel.Links.Clear(); if (string.IsNullOrEmpty(instPath)) { - statusLinkLabel.Text = "î•ñ‚ª’ñ‹Ÿ‚³‚ê‚Ä‚¢‚Ü‚¹‚ñ"; + statusLinkLabel.Text = "情報が提供されていません"; statusLinkLabel.Enabled = false; } else { statusLinkLabel.Text = instPath; @@ -85,7 +85,7 @@ namespace AppliStation } else { tabControl1.Visible = true; foreach (Installer inst in pkg.Installer) { - TabPage page = new TabPage(string.Format("ƒCƒ“ƒXƒg[ƒ‰ ‚»‚Ì{0}", tabControl1.TabCount+1)); + TabPage page = new TabPage(string.Format("インストーラ その{0}", tabControl1.TabCount+1)); page.Dock = DockStyle.Fill; InstallerInfoForm instForm = new InstallerInfoForm(); @@ -106,73 +106,73 @@ namespace AppliStation switch (license ?? string.Empty) { case "": if (string.IsNullOrEmpty(publicSiteUrl)) { - linklabel.Text = "ƒtƒŠ[ƒ\ƒtƒgƒEƒFƒA (–³ž)"; + linklabel.Text = "フリーソフトウェア (無償)"; linklabel.Enabled = false; } else { - linklabel.Text = "ƒtƒŠ[ƒ\ƒtƒgƒEƒFƒA (Ú×‚ÍŒöŽ®ƒTƒCƒg‚È‚Ç‚ÅŠm”F‚µ‚Ä‚­‚¾‚³‚¢)"; - addLinkToLinkLabel(linklabel, "ŒöŽ®ƒTƒCƒg", publicSiteUrl); + linklabel.Text = "フリーソフトウェア (詳細は公式サイトなどで確認してください)"; + addLinkToLinkLabel(linklabel, "公式サイト", publicSiteUrl); } break; - #region ƒI[ƒvƒ“ƒ\[ƒX‚©‚ƒRƒs[ƒŒƒtƒg + #region オープンソースかつコピーレフト case "GPL": - linklabel.Text = "GPL (ƒI[ƒvƒ“ƒ\[ƒX)"; + linklabel.Text = "GPL (オープンソース)"; addLinkToLinkLabel(linklabel, "GPL", @"http://www.gnu.org/licenses/gpl.ja.html"); - addLinkToLinkLabel(linklabel, "ƒI[ƒvƒ“ƒ\[ƒX", @"http://creativecommons.org/licenses/GPL/2.0/deed.ja"); + addLinkToLinkLabel(linklabel, "オープンソース", @"http://creativecommons.org/licenses/GPL/2.0/deed.ja"); break; case "GPLv2": case "GPLv2+": - linklabel.Text = "GPLv2 (ƒI[ƒvƒ“ƒ\[ƒX)"; + linklabel.Text = "GPLv2 (オープンソース)"; addLinkToLinkLabel(linklabel, "GPLv2", @"http://www.gnu.org/licenses/gpl-2.0.html"); break; case "GPLv3": case "GPLv3+": - linklabel.Text = "GPLv3 (ƒI[ƒvƒ“ƒ\[ƒX)"; + linklabel.Text = "GPLv3 (オープンソース)"; addLinkToLinkLabel(linklabel, "GPLv3", @"http://www.gnu.org/licenses/gpl-3.0.html"); break; case "LGPL": - linklabel.Text = "LGPL (ƒI[ƒvƒ“ƒ\[ƒX)"; + linklabel.Text = "LGPL (オープンソース)"; addLinkToLinkLabel(linklabel, "LGPL", @"http://www.gnu.org/licenses/lgpl.ja.html"); - addLinkToLinkLabel(linklabel, "ƒI[ƒvƒ“ƒ\[ƒX", @"http://creativecommons.org/licenses/LGPL/2.1/deed.ja"); + addLinkToLinkLabel(linklabel, "オープンソース", @"http://creativecommons.org/licenses/LGPL/2.1/deed.ja"); break; case "LGPLv2": case "LGPLv2+": - linklabel.Text = "LGPLv2 (ƒI[ƒvƒ“ƒ\[ƒX)"; + linklabel.Text = "LGPLv2 (オープンソース)"; addLinkToLinkLabel(linklabel, "LGPLv2", @"http://www.gnu.org/licenses/lgpl-2.1.html"); break; case "LGPLv3": case "LGPLv3+": - linklabel.Text = "LGPLv3 (ƒI[ƒvƒ“ƒ\[ƒX)"; + linklabel.Text = "LGPLv3 (オープンソース)"; addLinkToLinkLabel(linklabel, "LGPLv3", @"http://www.gnu.org/licenses/lgpl-3.0.html"); break; case "MPL": - linklabel.Text = "MPL (ƒI[ƒvƒ“ƒ\[ƒX)"; + linklabel.Text = "MPL (オープンソース)"; addLinkToLinkLabel(linklabel, "MPL", @"http://www.mozilla.org/MPL/MPL-1.1.html"); break; case "CPL": - linklabel.Text = "CPL (ƒI[ƒvƒ“ƒ\[ƒX)"; + linklabel.Text = "CPL (オープンソース)"; linklabel.Links.Add(0, linklabel.Text.Length, @"http://sourceforge.jp/projects/opensource/wiki/licenses%2FCommon_Public_License"); break; #endregion - #region ƒI[ƒvƒ“ƒ\[ƒX‚¾‚ªAƒRƒs[ƒŒƒtƒg‚Å‚È‚¢ + #region オープンソースだが、コピーレフトでない case "MIT": - linklabel.Text = "MITƒ‰ƒCƒZƒ“ƒX (ƒI[ƒvƒ“ƒ\[ƒX)"; - addLinkToLinkLabel(linklabel, "MITƒ‰ƒCƒZƒ“ƒX", @"http://www.opensource.org/licenses/mit-license.php"); + linklabel.Text = "MITライセンス (オープンソース)"; + addLinkToLinkLabel(linklabel, "MITライセンス", @"http://www.opensource.org/licenses/mit-license.php"); break; case "BSD": - linklabel.Text = "C³ÏBSDƒ‰ƒCƒZƒ“ƒX (ƒI[ƒvƒ“ƒ\[ƒX)"; - addLinkToLinkLabel(linklabel, "BSDƒ‰ƒCƒZƒ“ƒX", @"http://www.opensource.org/licenses/bsd-license.php"); + linklabel.Text = "修正済BSDライセンス (オープンソース)"; + addLinkToLinkLabel(linklabel, "BSDライセンス", @"http://www.opensource.org/licenses/bsd-license.php"); break; case "Artistic": - linklabel.Text = "Artisticƒ‰ƒCƒZƒ“ƒX (ƒI[ƒvƒ“ƒ\[ƒX)"; - addLinkToLinkLabel(linklabel, "Artisticƒ‰ƒCƒZƒ“ƒX", @"http://www.perlfoundation.org/artistic_license_2_0"); + linklabel.Text = "Artisticライセンス (オープンソース)"; + addLinkToLinkLabel(linklabel, "Artisticライセンス", @"http://www.perlfoundation.org/artistic_license_2_0"); break; #endregion case "NYSL": - linklabel.Text = "ŽÏ‚é‚È‚èÄ‚­‚È‚èD‚«‚É‚µ‚냉ƒCƒZƒ“ƒX"; + linklabel.Text = "煮るなり焼くなり好きにしろライセンス"; linklabel.Links.Add(0, linklabel.Text.Length, @"http://www.kmonos.net/nysl/"); break; case "Public Domain": - linklabel.Text = "ƒpƒuƒŠƒbƒNƒhƒƒCƒ“ (’˜ìŒ ‹A‘®‚È‚µ)"; + linklabel.Text = "パブリックドメイン (著作権帰属なし)"; linklabel.Links.Add(0, linklabel.Text.Length, @"http://e-words.jp/w/E38391E38396E383AAE38383E382AFE38389E383A1E382A4E383B3.html"); break; default: @@ -192,26 +192,26 @@ namespace AppliStation { switch (instType) { case InstallerType.ARCHIVE: - typeValueLabel.Text = "Ž©ŒÈ‰ð“€‘ŒÉ‚Ü‚½‚͏‘ŒÉ"; + typeValueLabel.Text = "自己解凍書庫または書庫"; break; case InstallerType.EXEC_INSTALLER: - typeValueLabel.Text = "ƒCƒ“ƒXƒg[ƒ‰Œ`Ž®"; + typeValueLabel.Text = "インストーラ形式"; break; case InstallerType.MSI_PACKAGE: - typeValueLabel.Text = "MSIƒtƒ@ƒCƒ‹Œ`Ž®"; + typeValueLabel.Text = "MSIファイル形式"; break; default: - typeValueLabel.Text = "•s–¾‚ȃCƒ“ƒXƒg[ƒ‹Œ`Ž®(ƒCƒ“ƒXƒg[ƒ‹•s”\)"; + typeValueLabel.Text = "不明なインストール形式(インストール不能)"; break; } } /// - /// ƒŠƒ“ƒNƒ‰ƒxƒ‹‚̃Šƒ“ƒN‘}“ü•Ö—˜ƒƒ\ƒbƒh + /// リンクラベルのリンク挿入便利メソッド /// - /// ‘ΏۃŠƒ“ƒNƒ‰ƒxƒ‹ - /// ƒŠƒ“ƒN‘Ώە¶Žš—ñ - /// ƒŠƒ“ƒNƒIƒuƒWƒFƒNƒg + /// 対象リンクラベル + /// リンク対象文字列 + /// リンクオブジェクト private static void addLinkToLinkLabel(LinkLabel linkLabel, string word, string link) { int pos = linkLabel.Text.IndexOf(word, 0); diff --git a/AppliStation/PackageUninstallConfirmForm.cs b/AppliStation/PackageUninstallConfirmForm.cs index b1b9cd8..2cc85fe 100644 --- a/AppliStation/PackageUninstallConfirmForm.cs +++ b/AppliStation/PackageUninstallConfirmForm.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.IO; using System.Drawing; using System.Windows.Forms; @@ -22,7 +22,7 @@ namespace AppliStation label2.Text = string.Format("{0}({1})", uninstallPackage.Name, uninstallPackage.Version); label2.Font = new Font(SystemFonts.DefaultFont.FontFamily, SystemFonts.DefaultFont.Size*1.5f); - Icon icon = AppliStation.Util.PackageUtils.GetIconForPackage(uninstallPackage); + Icon icon = AppliStation.Util.GUIUtils.GetIconForPackage(uninstallPackage); if (icon != null) { iconLabel.Image = icon.ToBitmap(); iconLabel.Size = icon.Size; @@ -37,17 +37,17 @@ namespace AppliStation // InitializeComponent(); - // ŠÇ—ŽÒŒ ŒÀ‚Å“®‚¢‚Ä‚¢‚é‚È‚ç‚Îrunas‚ª•K—v‚É‚Í‚È‚ç‚È‚¢‚Ì‚Å•\Ž¦‚µ‚È‚¢ + // 管理者権限で動いているならばrunasが必要にはならないので表示しない if (NaGet.Utils.IsAdministrators()) { runasCheckBox.Checked = false; runasCheckBox.Visible = false; } } - #region runasŠÖ˜A + #region runas関連 /// - /// runas‚ÅŽÀs‚·‚é‚©”Û‚© + /// runasで実行するか否か /// public bool UseRunas { set { @@ -61,12 +61,12 @@ namespace AppliStation } /// - /// ‘I‘ð‚³‚ê‚½ƒpƒbƒP[ƒW‚𒲍¸‚µ‚āARunas‚ðŽg‚¤‚ׂ«‚©‚¢‚È‚©‚ð•Ô‚· + /// 選択されたパッケージを調査して、Runasを使うべきかいなかを返す /// public bool GetShouldUseRunas() { if (NaGet.Utils.IsAdministrators()) { - // ŠÇ—ŽÒŒ ŒÀ‚Å“®‚¢‚Ä‚¢‚éê‡‚Í•s—v + // 管理者権限で動いている場合は不要 return false; }