From ec8906d37c1e31403d3599a9f53c12517b12dfc4 Mon Sep 17 00:00:00 2001 From: IcySon55 Date: Mon, 21 Aug 2017 12:29:58 -0400 Subject: [PATCH] Revised label management and improved usability. Implemented lot deletion. Slight code style updates to the Kuriimu UI. --- src/Kuriimu/Editor.Designer.cs | 42 +++++-- src/Kuriimu/Editor.cs | 124 ++++++++++--------- src/Kuriimu/Editor.resx | 7 +- src/Kuriimu/Kuriimu.csproj | 3 + src/Kuriimu/Properties/Resources.Designer.cs | 10 ++ src/Kuriimu/Properties/Resources.resx | 3 + src/Kuriimu/images/menu-labels.png | Bin 0 -> 759 bytes 7 files changed, 117 insertions(+), 72 deletions(-) create mode 100644 src/Kuriimu/images/menu-labels.png diff --git a/src/Kuriimu/Editor.Designer.cs b/src/Kuriimu/Editor.Designer.cs index 65cf412a..10503e8b 100644 --- a/src/Kuriimu/Editor.Designer.cs +++ b/src/Kuriimu/Editor.Designer.cs @@ -64,7 +64,6 @@ private void InitializeComponent() this.splMain = new System.Windows.Forms.SplitContainer(); this.treEntries = new System.Windows.Forms.TreeView(); this.mnuLabels = new System.Windows.Forms.ContextMenuStrip(this.components); - this.newLabelToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.removeLabelToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.tlsEntries = new System.Windows.Forms.ToolStrip(); this.tslEntries = new System.Windows.Forms.ToolStripLabel(); @@ -74,6 +73,7 @@ private void InitializeComponent() this.tsbEntryProperties = new System.Windows.Forms.ToolStripButton(); this.tsbSortEntries = new System.Windows.Forms.ToolStripButton(); this.tsbShowTextPreview = new System.Windows.Forms.ToolStripButton(); + this.tsbManageLabels = new System.Windows.Forms.ToolStripDropDownButton(); this.splContent = new System.Windows.Forms.SplitContainer(); this.splText = new System.Windows.Forms.SplitContainer(); this.txtEdit = new System.Windows.Forms.TextBox(); @@ -133,6 +133,7 @@ private void InitializeComponent() this.scbFontSize = new System.Windows.Forms.ToolStripComboBox(); this.imlEntries = new System.Windows.Forms.ImageList(this.components); this.imlScreenshots = new System.Windows.Forms.ImageList(this.components); + this.newLabelToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.mnuMain.SuspendLayout(); this.pnlMain.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.splMain)).BeginInit(); @@ -501,20 +502,11 @@ private void InitializeComponent() // mnuLabels // this.mnuLabels.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.newLabelToolStripMenuItem, this.removeLabelToolStripMenuItem}); this.mnuLabels.Name = "mnuLabels"; - this.mnuLabels.Size = new System.Drawing.Size(149, 48); + this.mnuLabels.Size = new System.Drawing.Size(149, 26); this.mnuLabels.Opening += new System.ComponentModel.CancelEventHandler(this.mnuLabels_Opening); // - // newLabelToolStripMenuItem - // - this.newLabelToolStripMenuItem.Image = global::Kuriimu.Properties.Resources.menu_label; - this.newLabelToolStripMenuItem.Name = "newLabelToolStripMenuItem"; - this.newLabelToolStripMenuItem.Size = new System.Drawing.Size(148, 22); - this.newLabelToolStripMenuItem.Text = "New Label..."; - this.newLabelToolStripMenuItem.Click += new System.EventHandler(this.newLabelToolStripMenuItem_Click); - // // removeLabelToolStripMenuItem // this.removeLabelToolStripMenuItem.Enabled = false; @@ -536,7 +528,8 @@ private void InitializeComponent() this.tsbEntryDelete, this.tsbEntryProperties, this.tsbSortEntries, - this.tsbShowTextPreview}); + this.tsbShowTextPreview, + this.tsbManageLabels}); this.tlsEntries.Location = new System.Drawing.Point(0, 0); this.tlsEntries.Name = "tlsEntries"; this.tlsEntries.Padding = new System.Windows.Forms.Padding(2, 1, 2, 1); @@ -617,6 +610,19 @@ private void InitializeComponent() this.tsbShowTextPreview.Text = "Show Text Preview"; this.tsbShowTextPreview.Click += new System.EventHandler(this.tsbShowTextPreview_Click); // + // tsbManageLabels + // + this.tsbManageLabels.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.tsbManageLabels.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.tsbManageLabels.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.newLabelToolStripMenuItem}); + this.tsbManageLabels.Enabled = false; + this.tsbManageLabels.Image = global::Kuriimu.Properties.Resources.menu_labels; + this.tsbManageLabels.ImageTransparentColor = System.Drawing.Color.Magenta; + this.tsbManageLabels.Name = "tsbManageLabels"; + this.tsbManageLabels.Size = new System.Drawing.Size(29, 22); + this.tsbManageLabels.Text = "Show Text Preview"; + // // splContent // this.splContent.Dock = System.Windows.Forms.DockStyle.Fill; @@ -670,6 +676,7 @@ private void InitializeComponent() this.txtEdit.Size = new System.Drawing.Size(442, 255); this.txtEdit.TabIndex = 0; this.txtEdit.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtEdit_KeyDown); + this.txtEdit.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.txtEdit_KeyPress); this.txtEdit.KeyUp += new System.Windows.Forms.KeyEventHandler(this.txtEdit_KeyUp); // // tlsEdit @@ -1281,6 +1288,14 @@ private void InitializeComponent() this.imlScreenshots.ImageSize = new System.Drawing.Size(96, 64); this.imlScreenshots.TransparentColor = System.Drawing.Color.Transparent; // + // newLabelToolStripMenuItem + // + this.newLabelToolStripMenuItem.Image = global::Kuriimu.Properties.Resources.menu_label; + this.newLabelToolStripMenuItem.Name = "newLabelToolStripMenuItem"; + this.newLabelToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.newLabelToolStripMenuItem.Text = "New Label..."; + this.newLabelToolStripMenuItem.Click += new System.EventHandler(this.newLabelToolStripMenuItem_Click); + // // Editor // this.AllowDrop = true; @@ -1450,7 +1465,8 @@ private void InitializeComponent() private System.Windows.Forms.ToolStripButton tsbLotCreate; private System.Windows.Forms.ToolStripButton tsbLotDelete; private System.Windows.Forms.ContextMenuStrip mnuLabels; - private System.Windows.Forms.ToolStripMenuItem newLabelToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem removeLabelToolStripMenuItem; + private System.Windows.Forms.ToolStripDropDownButton tsbManageLabels; + private System.Windows.Forms.ToolStripMenuItem newLabelToolStripMenuItem; } } \ No newline at end of file diff --git a/src/Kuriimu/Editor.cs b/src/Kuriimu/Editor.cs index 3d8b7749..370fa185 100644 --- a/src/Kuriimu/Editor.cs +++ b/src/Kuriimu/Editor.cs @@ -751,7 +751,10 @@ private void UpdateLot() private void UpdateLabels() { - for (var i = mnuLabels.Items.Count - 1; i > 1; i--) + // Clear Labels + for (var i = tsbManageLabels.DropDownItems.Count - 1; i > 0; i--) + tsbManageLabels.DropDownItems.RemoveAt(i); + for (var i = mnuLabels.Items.Count - 1; i > 0; i--) mnuLabels.Items.RemoveAt(i); if (_lot == null) return; @@ -759,22 +762,31 @@ private void UpdateLabels() imlEntries.Images.Clear(); imlEntries.Images.Add("0", GenerateColorSquare(SystemColors.Window, 14, 14)); + if (_settings.Labels.Count > 0) + { + tsbManageLabels.DropDownItems.Add(new ToolStripSeparator()); mnuLabels.Items.Add(new ToolStripSeparator()); + } + foreach (var label in _settings.Labels) { + // Images imlEntries.Images.Add((_settings.Labels.IndexOf(label) + 1).ToString(), GenerateColorSquare(ColorTranslator.FromHtml(label.Color), 14, 14)); - var tsiLabel = new ToolStripMenuItem(label.Name, GenerateColorSquare(ColorTranslator.FromHtml(label.Color))); - mnuLabels.Items.Add(tsiLabel); - var tsiLabelSet = new ToolStripMenuItem("Set " + label.Name, Resources.menu_set, tsiSetLabel_Click) { Tag = label }; - tsiLabel.DropDownItems.Add(tsiLabelSet); + // Manage + var tsiLabel = new ToolStripMenuItem(label.Name, GenerateColorSquare(ColorTranslator.FromHtml(label.Color))); + tsbManageLabels.DropDownItems.Add(tsiLabel); var tsiLabelEdit = new ToolStripMenuItem("Edit " + label.Name, Resources.menu_edit, tsiEditLabel_Click) { Tag = label }; tsiLabel.DropDownItems.Add(tsiLabelEdit); var tsiLabelDelete = new ToolStripMenuItem("Delete " + label.Name, Resources.menu_delete, tsiDeleteLabel_Click) { Tag = label }; tsiLabel.DropDownItems.Add(tsiLabelDelete); + + // Set + var tsiSetLabel = new ToolStripMenuItem(label.Name, GenerateColorSquare(ColorTranslator.FromHtml(label.Color)), tsiSetLabel_Click) { Tag = label }; + mnuLabels.Items.Add(tsiSetLabel); } } @@ -795,24 +807,14 @@ private void newLabelToolStripMenuItem_Click(object sender, EventArgs e) { if (_settings == null) return; - var lbl = new LabelForm(string.Empty, ColorTranslator.ToHtml(Color.Black), _settings.Labels.Select(o => o.Name).ToList(), true); + var lblForm = new LabelForm(string.Empty, ColorTranslator.ToHtml(Color.Black), _settings.Labels.Select(o => o.Name).ToList(), true); - if (lbl.ShowDialog() == DialogResult.OK && (lbl.NameChanged || lbl.ColorChanged)) + if (lblForm.ShowDialog() == DialogResult.OK && (lblForm.NameChanged || lblForm.ColorChanged)) { - var label = new Kontract.Label(lbl.NewName, lbl.NewColor); + var label = new Kontract.Label(lblForm.NewName, lblForm.NewColor); _settings.Labels.Add(label); _settings.Save(Path.Combine(Application.StartupPath, "Kuriimu.settings")); UpdateLabels(); - - var entry = (TextEntry)treEntries.SelectedNode?.Tag; - var lotEntry = !entry.IsSubEntry ? _lot.LotEntries.FirstOrDefault(o => o.Entry == entry.Name) : _lot.LotEntries.FirstOrDefault(o => o.Entry == entry.ParentEntry.Name).LotSubEntries.FirstOrDefault(o => o.Entry == entry.Name); - lotEntry.Label = label.Name; var newIndex = _settings.Labels.IndexOf(label) + 1; - - if (newIndex == treEntries.SelectedNode.ImageIndex) return; - treEntries.SelectedNode.ImageIndex = newIndex; - treEntries.SelectedNode.SelectedImageIndex = newIndex; - _hasChanges = true; - UpdateForm(); } } @@ -853,17 +855,17 @@ private void tsiEditLabel_Click(object sender, EventArgs e) if (_settings == null) return; var label = (Kontract.Label)((ToolStripItem)sender).Tag; - var lbl = new LabelForm(label.Name, label.Color, _settings.Labels.Select(o => o.Name).ToList()); + var lblForm = new LabelForm(label.Name, label.Color, _settings.Labels.Select(o => o.Name).ToList()); - if (lbl.ShowDialog() == DialogResult.OK && (lbl.NameChanged || lbl.ColorChanged)) + if (lblForm.ShowDialog() == DialogResult.OK && (lblForm.NameChanged || lblForm.ColorChanged)) { var previousLabel = label.Name; - label.Name = lbl.NewName; - label.Color = lbl.NewColor; + label.Name = lblForm.NewName; + label.Color = lblForm.NewColor; _settings.Save(Path.Combine(Application.StartupPath, "Kuriimu.settings")); UpdateLabels(); - if (lbl.NameChanged) + if (lblForm.NameChanged) foreach (var entry in _entries) { var lotEntry = _lot.LotEntries.FirstOrDefault(o => o.Entry == entry.Name); @@ -893,7 +895,7 @@ private void tsiDeleteLabel_Click(object sender, EventArgs e) if (_settings == null) return; var label = (Kontract.Label)((ToolStripItem)sender).Tag; - if (MessageBox.Show($"Are you sure you want to delete the {label.Name} label?", "Confirm Deletion", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes) return; + if (MessageBox.Show($"Are you sure you want to delete the {label.Name} label?", "Confirm Label Deletion", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes) return; foreach (var entry in _entries) { @@ -1010,19 +1012,16 @@ private void UpdateForm() { Text = $"{Settings.Default.ApplicationName} v{FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).ProductVersion}" + (FileName() != string.Empty ? " - " + FileName() : string.Empty) + (_hasChanges ? "*" : string.Empty) + (_textAdapter != null ? " - " + _textAdapter.Description + " Adapter (" + _textAdapter.Name + ")" : string.Empty); - TextEntry entry = (TextEntry)treEntries.SelectedNode?.Tag; + var entry = (TextEntry)treEntries.SelectedNode?.Tag; - if (_fileOpen) - tslEntries.Text = (_textAdapter.Entries?.Count() + " Entries").Trim(); - else - tslEntries.Text = "Entries"; + tslEntries.Text = _fileOpen ? (_textAdapter.Entries?.Count() + " Entries").Trim() : "Entries"; if (_textAdapter != null) { - bool itemSelected = _fileOpen && treEntries.SelectedNode != null; - bool canAdd = _fileOpen && _textAdapter.CanAddEntries; - bool canRename = itemSelected && _textAdapter.CanRenameEntries && entry.ParentEntry == null; - bool canDelete = itemSelected && _textAdapter.CanDeleteEntries && entry.ParentEntry == null; + var itemSelected = _fileOpen && treEntries.SelectedNode != null; + var canAdd = _fileOpen && _textAdapter.CanAddEntries; + var canRename = itemSelected && _textAdapter.CanRenameEntries && entry.ParentEntry == null; + var canDelete = itemSelected && _textAdapter.CanDeleteEntries && entry.ParentEntry == null; splMain.Enabled = _fileOpen; splContent.Enabled = _fileOpen; @@ -1054,13 +1053,14 @@ private void UpdateForm() tsbEntryProperties.Enabled = itemSelected && _textAdapter.EntriesHaveExtendedProperties; sortEntriesToolStripMenuItem.Enabled = _fileOpen && _textAdapter.CanSortEntries; sortEntriesToolStripMenuItem.Image = _textAdapter.SortEntries ? Resources.menu_sorted : Resources.menu_unsorted; + tsbManageLabels.Enabled = _fileOpen; tsbShowTextPreview.Enabled = _fileOpen; tsbShowTextPreview.Checked = Settings.Default.ShowTextPreview; tsbSortEntries.Enabled = _fileOpen && _textAdapter.CanSortEntries; tsbSortEntries.Image = _textAdapter.SortEntries ? Resources.menu_sorted : Resources.menu_unsorted; // Preview - tsbPreviewEnabled.Enabled = _gameHandler != null ? _gameHandler.HandlerCanGeneratePreviews : false; + tsbPreviewEnabled.Enabled = _gameHandler?.HandlerCanGeneratePreviews ?? false; tsbPreviewEnabled.Image = Settings.Default.PreviewEnabled ? Resources.menu_preview_visible : Resources.menu_preview_invisible; tsbPreviewEnabled.Text = Settings.Default.PreviewEnabled ? "Disable Preview" : "Enable Preview"; tsbPreviewSave.Enabled = Settings.Default.PreviewEnabled && _gameHandler.HandlerCanGeneratePreviews && _gameHandlerPages != null && _gameHandlerPages.Count > 0; @@ -1127,25 +1127,25 @@ private void tsbExportKUP_Click(object sender, EventArgs e) private void tsbImportKUP_Click(object sender, EventArgs e) { - OpenFileDialog ofd = new OpenFileDialog(); - ofd.Title = "Import KUP..."; - ofd.InitialDirectory = Settings.Default.LastDirectory; - ofd.Filter = "Kuriimu Archive (*.kup)|*.kup"; - - if (ofd.ShowDialog() == DialogResult.OK) - { - try - { - //var bmp = (Bitmap)Image.FromFile(filename); - //_imageAdapter.Bitmap = bmp; - UpdatePreview(); - //MessageBox.Show(filename + " imported successfully.", "Import Successful", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - catch (Exception ex) - { - MessageBox.Show(ex.ToString(), ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } + //OpenFileDialog ofd = new OpenFileDialog(); + //ofd.Title = "Import KUP..."; + //ofd.InitialDirectory = Settings.Default.LastDirectory; + //ofd.Filter = "Kuriimu Archive (*.kup)|*.kup"; + + //if (ofd.ShowDialog() == DialogResult.OK) + //{ + // try + // { + // //var bmp = (Bitmap)Image.FromFile(filename); + // //_imageAdapter.Bitmap = bmp; + // UpdatePreview(); + // //MessageBox.Show(filename + " imported successfully.", "Import Successful", MessageBoxButtons.OK, MessageBoxIcon.Information); + // } + // catch (Exception ex) + // { + // MessageBox.Show(ex.ToString(), ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error); + // } + //} } private void tsbBatchExportKUP_Click(object sender, EventArgs e) @@ -1348,9 +1348,9 @@ private void treEntries_Leave(object sender, EventArgs e) // Text private void txtEdit_KeyUp(object sender, KeyEventArgs e) { - TextEntry entry = (TextEntry)treEntries.SelectedNode.Tag; - string next = string.Empty; - string previous = string.Empty; + var entry = (TextEntry)treEntries.SelectedNode.Tag; + var previous = string.Empty; + var next = string.Empty; previous = _gameHandler.GetKuriimuString(entry.EditedText); next = txtEdit.Text.Replace("", "\0").Replace("\r\n", _textAdapter.LineEndings); @@ -1370,6 +1370,9 @@ private void txtEdit_KeyDown(object sender, KeyEventArgs e) { if (e.Control & e.KeyCode == Keys.A) txtEdit.SelectAll(); + + if (e.Control & (e.KeyCode != Keys.V && e.KeyCode != Keys.C && e.KeyCode != Keys.X && e.KeyCode != Keys.Z && e.KeyCode != Keys.Left && e.KeyCode != Keys.Right)) + e.SuppressKeyPress = true; } private void txtOriginal_KeyDown(object sender, KeyEventArgs e) @@ -1390,7 +1393,10 @@ private void tsbLotCreate_Click(object sender, EventArgs e) private void tsbLotDelete_Click(object sender, EventArgs e) { - + if (MessageBox.Show($"Are you sure you want to delete the lot for {_textAdapter.FileInfo.Name}?\r\nAll labels, notes, and screenshots will be deleted.", "Confirm Lot Deletion", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes) return; + _lot = null; + File.Delete(_textAdapter.FileInfo.FullName + ".lot"); + UpdateForm(); } private void txtLotNotes_KeyUp(object sender, KeyEventArgs e) @@ -1407,5 +1413,9 @@ private void txtLotNotes_KeyUp(object sender, KeyEventArgs e) UpdateForm(); } + + private void txtEdit_KeyPress(object sender, KeyPressEventArgs e) + { + } } } \ No newline at end of file diff --git a/src/Kuriimu/Editor.resx b/src/Kuriimu/Editor.resx index 5b99d74b..ff2944db 100644 --- a/src/Kuriimu/Editor.resx +++ b/src/Kuriimu/Editor.resx @@ -135,11 +135,14 @@ 413, 17 + + 519, 17 + 960, 17 - - 519, 17 + + 960, 17 630, 17 diff --git a/src/Kuriimu/Kuriimu.csproj b/src/Kuriimu/Kuriimu.csproj index 5f869f43..1eb09c70 100644 --- a/src/Kuriimu/Kuriimu.csproj +++ b/src/Kuriimu/Kuriimu.csproj @@ -271,6 +271,9 @@ + + + diff --git a/src/Kuriimu/Properties/Resources.Designer.cs b/src/Kuriimu/Properties/Resources.Designer.cs index 1b314d53..40a21e92 100644 --- a/src/Kuriimu/Properties/Resources.Designer.cs +++ b/src/Kuriimu/Properties/Resources.Designer.cs @@ -320,6 +320,16 @@ internal static System.Drawing.Bitmap menu_label_remove { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap menu_labels { + get { + object obj = ResourceManager.GetObject("menu_labels", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// diff --git a/src/Kuriimu/Properties/Resources.resx b/src/Kuriimu/Properties/Resources.resx index 4e0fb218..6d69655c 100644 --- a/src/Kuriimu/Properties/Resources.resx +++ b/src/Kuriimu/Properties/Resources.resx @@ -262,4 +262,7 @@ ..\images\menu-set.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\images\menu-labels.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/src/Kuriimu/images/menu-labels.png b/src/Kuriimu/images/menu-labels.png new file mode 100644 index 0000000000000000000000000000000000000000..90ddfabb8a1f1aebb269fbfe7ea178a11c9d33e3 GIT binary patch literal 759 zcmV-q@Hy z#oU~Mg_RY8Sy&jDL716Y1*pauN&PdRg_}Wo;09R6$1||9v0*b@_3z)m&TE>Rr-L{k zEy1<5nLtBP6fxm&nd;v^e_U1pHUIthk3q%Ftq$bT|Ns7p0jYE(?8|~hv)Z3Oe_Yph zcTZXPu1;3 zhcrLnVz~U}JHwA3%na#3Lp=)$@_@0in*|sxM!$dmcHFsOL67h1I}GRF|7Ea|i+%~hd)i>wpHxw5+CM1*qHSYi>wi_VLcTb*V0D0ls=Z_zm^qrmAF7Dmi zXyWa?Ykq&f*VcDDKo|XoyT~p&x(uj!8_?$K56_)rczE_K11vfj1QZn+{`2$e|NHkZ zoL^Azs<5c2EXYN(uR~m98yZ>()V$}_jT>j4UA~Nwa6oC3ABcfThCvEMi)w2-$U8aJ zeE>QSM2qX|I|0RcfS41A*@2i9st=qiSfQFlpf36cN+TQ+64I<