Implemented copy function for text element's keys

This commit is contained in:
Thorsten Sommer 2023-02-15 20:32:47 +01:00
parent bbc10de9ff
commit 8314e7157b
Signed by: tsommer
GPG Key ID: 371BBA77A02C0108
4 changed files with 48 additions and 18 deletions

View File

@ -58,23 +58,11 @@ public class GodotCSV : IGenerator
foreach (var section in sections.OrderBy(n => n.DataKey))
foreach (var textElement in section.TextElements.OrderBy(n => n.Code))
{
//
// Build the path to the text element:
//
var textElementPath = new List<string>(section.Depth + 2)
{
textElement.Code
};
var parent = section;
while (parent is not null)
{
textElementPath.Add(parent.DataKey);
parent = parent.Parent;
}
// Get the key for this text element:
var key = await TextElementProcessor.GetKey(textElement.Id);
// Write the path to the text element as key:
await writer.WriteAsync($"{string.Join(".", textElementPath.ReverseIt())}{delimiter}");
await writer.WriteAsync($"{key}{delimiter}");
// Load all translations:
var translations = textElement.Translations.DistinctBy(n => n.Culture).ToDictionary(translation => translation.Culture, translation => translation.Text);

View File

@ -128,4 +128,36 @@ public static class TextElementProcessor
{
}
}
public static async Task<string> GetKey(int id)
{
await using var db = ProcessorMeta.ServiceProvider.GetRequiredService<DataContext>();
var textElement = await db.TextElements.FirstAsync(n => n.Id == id);
//
// Build the path to the text element:
//
var textElementPath = new List<string>(textElement.Section.Depth + 2)
{
textElement.Code
};
var parent = textElement.Section;
while (parent is not null)
{
// Load the parent's parent section:
await db.Entry(parent).Reference(n => n.Parent).LoadAsync();
// Add the parent's key to the path:
textElementPath.Add(parent.DataKey);
// Go to parent's parent:
parent = parent.Parent;
}
textElementPath.Add("I18N");
// Write the path to the text element as key:
return $"{string.Join(".", textElementPath.ReverseIt())}";
}
}

View File

@ -2,5 +2,5 @@
public static class Version
{
public static string Text => $"v0.9.5 (2023-02-15), .NET {Environment.Version}";
public static string Text => $"v0.9.6 (2023-02-15), .NET {Environment.Version}";
}

View File

@ -86,6 +86,13 @@ public partial class TextElements : UserControl
}
}
};
// When the user press Ctrl + C, copy the text element's key to the clipboard:
this.listTextElements.KeyDown += (sender, e) =>
{
if (e is {Control: true, KeyCode: Keys.C})
this.buttonCopyKey.PerformClick();
};
}
// Loads all the text elements for the current section.
@ -236,8 +243,11 @@ public partial class TextElements : UserControl
private async void textBoxFilter_KeyUp(object sender, KeyEventArgs e) => await this.LoadTextElements();
private void buttonCopyKey_Click(object sender, EventArgs e)
private async void buttonCopyKey_Click(object sender, EventArgs e)
{
if(this.DesignMode || this.currentTextElement is null)
return;
Clipboard.SetText(await TextElementProcessor.GetKey(this.currentTextElement.Id));
}
}