Skip to content

Commit c512ccd

Browse files
author
MPCoreDeveloper
committed
sharp core db viewer multi and single file support
1 parent 2d9e14c commit c512ccd

17 files changed

Lines changed: 1205 additions & 51 deletions

SharpCoreDB.sln

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,14 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpCoreDB.DebugBenchmark"
4646
EndProject
4747
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpCoreDB.DemoJoinsSubQ", "tests\SharpCoreDB.DemoJoinsSubQ\SharpCoreDB.DemoJoinsSubQ.csproj", "{D370F1C9-A05E-44A8-6505-DBE4CB6642F7}"
4848
EndProject
49+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Examples", "Examples", "{2F8A8533-DAA8-4CF9-A6C0-2F663AF7FD2E}"
50+
EndProject
51+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Desktop", "Desktop", "{F4AC329D-E0EF-4EC6-A21B-DD74A344A3A5}"
52+
EndProject
53+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Web", "Web", "{50B921FA-F081-4B7B-A8E0-AF3DCC098CCC}"
54+
EndProject
55+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Mobile", "Mobile", "{1988D03B-D0E7-48E6-B34E-DA0CC959D173}"
56+
EndProject
4957
Global
5058
GlobalSection(SolutionConfigurationPlatforms) = preSolution
5159
Debug|Any CPU = Debug|Any CPU
@@ -217,6 +225,9 @@ Global
217225
{33770ED3-9D15-474F-9D05-0B9A651FC8E6} = {B2C3D4E5-F6A7-4B8C-9D0E-1F2A3B4C5D6E}
218226
{E1F2A3B4-C5D6-7E8F-9A0B-1C2D3E4F5A6B} = {B2C3D4E5-F6A7-4B8C-9D0E-1F2A3B4C5D6E}
219227
{D370F1C9-A05E-44A8-6505-DBE4CB6642F7} = {A1B2C3D4-E5F6-4A7B-8C9D-0E1F2A3B4C5D}
228+
{F4AC329D-E0EF-4EC6-A21B-DD74A344A3A5} = {2F8A8533-DAA8-4CF9-A6C0-2F663AF7FD2E}
229+
{50B921FA-F081-4B7B-A8E0-AF3DCC098CCC} = {2F8A8533-DAA8-4CF9-A6C0-2F663AF7FD2E}
230+
{1988D03B-D0E7-48E6-B34E-DA0CC959D173} = {2F8A8533-DAA8-4CF9-A6C0-2F663AF7FD2E}
220231
EndGlobalSection
221232
GlobalSection(ExtensibilityGlobals) = postSolution
222233
SolutionGuid = {F40825F5-26A1-4E85-9D0A-B0121A7ED5F8}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
// <copyright file="EnumToIntConverter.cs" company="MPCoreDeveloper">
2+
// Copyright (c) 2025-2026 MPCoreDeveloper and GitHub Copilot. All rights reserved.
3+
// Licensed under the MIT License. See LICENSE file in the project root for full license information.
4+
// </copyright>
5+
6+
using Avalonia.Data.Converters;
7+
using System;
8+
using System.Globalization;
9+
10+
namespace SharpCoreDB.Viewer.Converters;
11+
12+
/// <summary>
13+
/// Converts between enum values and integer indices for ComboBox binding.
14+
/// </summary>
15+
public class EnumToIntConverter : IValueConverter
16+
{
17+
public static readonly EnumToIntConverter Instance = new();
18+
19+
public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture)
20+
{
21+
if (value is Enum enumValue)
22+
{
23+
return System.Convert.ToInt32(enumValue);
24+
}
25+
26+
return 0;
27+
}
28+
29+
public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture)
30+
{
31+
if (value is int intValue && targetType.IsEnum)
32+
{
33+
return Enum.ToObject(targetType, intValue);
34+
}
35+
36+
return Enum.ToObject(targetType, 0);
37+
}
38+
}

tools/SharpCoreDB.Viewer/Resources/Strings.de-DE.json

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,5 +51,35 @@
5151
"ExecutingQuery": "Abfrage wird ausgeführt...",
5252
"QueryExecutedSuccess": "Abfrage erfolgreich ausgeführt. {0} Zeilen zurückgegeben.",
5353
"QueryExecutedAffected": "{0} Zeilen betroffen.",
54-
"ErrorQueryFailed": "Abfrage fehlgeschlagen: {0}"
54+
"ErrorQueryFailed": "Abfrage fehlgeschlagen: {0}",
55+
"ToolsMenu": "Werkzeuge",
56+
"ToolsTitle": "Datenbank-Werkzeuge",
57+
"ToolsSubtitle": "Datenbankformate konvertieren und Wartungsaufgaben durchführen",
58+
"DatabaseFormat": "Datenbankformat:",
59+
"FormatDirectory": "Verzeichnis (Mehrere Dateien)",
60+
"FormatDirectoryDesc": "Traditionelles Format mit separaten Dateien pro Tabelle",
61+
"FormatSingleFile": "Einzelne Datei (.scdb)",
62+
"FormatSingleFileDesc": "Modernes Format mit allen Daten in einer Datei",
63+
"SourceDatabase": "Quelldatenbank",
64+
"TargetDatabase": "Zieldatenbank",
65+
"SourceFormat": "Quellformat",
66+
"TargetFormat": "Zielformat",
67+
"SourcePath": "Quellpfad:",
68+
"TargetPath": "Zielpfad:",
69+
"SourcePathPlaceholder": "Quelldatenbank auswählen...",
70+
"TargetPathPlaceholder": "Zieldatenbank auswählen...",
71+
"Convert": "Konvertieren",
72+
"Close": "Schließen",
73+
"BrowseSourceDatabase": "Nach Quelldatenbank suchen",
74+
"BrowseTargetDatabase": "Nach Zieldatenbank suchen",
75+
"SwapFormats": "Quell- und Zielformate tauschen",
76+
"ConversionProgress": "Konvertierungsfortschritt",
77+
"ConvertingDatabase": "Datenbank wird konvertiert...",
78+
"ConvertingProgress": "Konvertiere... {0}%",
79+
"ConversionComplete": "✅ Konvertierung erfolgreich abgeschlossen!",
80+
"ErrorSourcePathRequired": "Bitte wählen Sie eine Quelldatenbank",
81+
"ErrorTargetPathRequired": "Bitte wählen Sie eine Zieldatenbank",
82+
"ErrorSourceNotFound": "Quelldatenbank nicht gefunden",
83+
"ErrorSameFormat": "Quell- und Zielformat müssen unterschiedlich sein",
84+
"ErrorConversionFailed": "Konvertierung fehlgeschlagen: {0}"
5585
}

tools/SharpCoreDB.Viewer/Resources/Strings.en-US.json

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,5 +51,35 @@
5151
"QueryExecutedSuccess": "Query executed successfully. {0} rows returned.",
5252
"QueryExecutedAffected": "{0} rows affected.",
5353
"ErrorQueryFailed": "Query failed: {0}",
54-
"ErrorIncorrectPassword": "⚠️ Incorrect password or corrupted database. Please check your password and try again."
54+
"ErrorIncorrectPassword": "⚠️ Incorrect password or corrupted database. Please check your password and try again.",
55+
"ToolsMenu": "Tools",
56+
"ToolsTitle": "Database Tools",
57+
"ToolsSubtitle": "Convert database formats and perform maintenance tasks",
58+
"DatabaseFormat": "Database Format:",
59+
"FormatDirectory": "Directory (Multiple Files)",
60+
"FormatDirectoryDesc": "Traditional format with separate files per table",
61+
"FormatSingleFile": "Single File (.scdb)",
62+
"FormatSingleFileDesc": "Modern format with all data in one file",
63+
"SourceDatabase": "Source Database",
64+
"TargetDatabase": "Target Database",
65+
"SourceFormat": "Source Format",
66+
"TargetFormat": "Target Format",
67+
"SourcePath": "Source Path:",
68+
"TargetPath": "Target Path:",
69+
"SourcePathPlaceholder": "Select source database...",
70+
"TargetPathPlaceholder": "Select target database...",
71+
"Convert": "Convert",
72+
"Close": "Close",
73+
"BrowseSourceDatabase": "Browse for Source Database",
74+
"BrowseTargetDatabase": "Browse for Target Database",
75+
"SwapFormats": "Swap source and target formats",
76+
"ConversionProgress": "Conversion Progress",
77+
"ConvertingDatabase": "Converting database...",
78+
"ConvertingProgress": "Converting... {0}%",
79+
"ConversionComplete": "✅ Conversion completed successfully!",
80+
"ErrorSourcePathRequired": "Please select a source database",
81+
"ErrorTargetPathRequired": "Please select a target database",
82+
"ErrorSourceNotFound": "Source database not found",
83+
"ErrorSameFormat": "Source and target formats must be different",
84+
"ErrorConversionFailed": "Conversion failed: {0}"
5585
}

tools/SharpCoreDB.Viewer/Resources/Strings.es-ES.json

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,5 +51,35 @@
5151
"ExecutingQuery": "Ejecutando consulta...",
5252
"QueryExecutedSuccess": "Consulta ejecutada con éxito. {0} filas devueltas.",
5353
"QueryExecutedAffected": "{0} filas afectadas.",
54-
"ErrorQueryFailed": "Consulta fallida: {0}"
54+
"ErrorQueryFailed": "Consulta fallida: {0}",
55+
"ToolsMenu": "Herramientas",
56+
"ToolsTitle": "Herramientas de base de datos",
57+
"ToolsSubtitle": "Convertir formatos de base de datos y realizar tareas de mantenimiento",
58+
"DatabaseFormat": "Formato de base de datos:",
59+
"FormatDirectory": "Directorio (Múltiples archivos)",
60+
"FormatDirectoryDesc": "Formato tradicional con archivos separados por tabla",
61+
"FormatSingleFile": "Archivo único (.scdb)",
62+
"FormatSingleFileDesc": "Formato moderno con todos los datos en un archivo",
63+
"SourceDatabase": "Base de datos de origen",
64+
"TargetDatabase": "Base de datos de destino",
65+
"SourceFormat": "Formato de origen",
66+
"TargetFormat": "Formato de destino",
67+
"SourcePath": "Ruta de origen:",
68+
"TargetPath": "Ruta de destino:",
69+
"SourcePathPlaceholder": "Seleccionar base de datos de origen...",
70+
"TargetPathPlaceholder": "Seleccionar base de datos de destino...",
71+
"Convert": "Convertir",
72+
"Close": "Cerrar",
73+
"BrowseSourceDatabase": "Buscar base de datos de origen",
74+
"BrowseTargetDatabase": "Buscar base de datos de destino",
75+
"SwapFormats": "Intercambiar formatos de origen y destino",
76+
"ConversionProgress": "Progreso de conversión",
77+
"ConvertingDatabase": "Convirtiendo base de datos...",
78+
"ConvertingProgress": "Convirtiendo... {0}%",
79+
"ConversionComplete": "✅ ¡Conversión completada con éxito!",
80+
"ErrorSourcePathRequired": "Por favor, seleccione una base de datos de origen",
81+
"ErrorTargetPathRequired": "Por favor, seleccione una base de datos de destino",
82+
"ErrorSourceNotFound": "Base de datos de origen no encontrada",
83+
"ErrorSameFormat": "Los formatos de origen y destino deben ser diferentes",
84+
"ErrorConversionFailed": "Conversión fallida: {0}"
5585
}

tools/SharpCoreDB.Viewer/Resources/Strings.fr-FR.json

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,5 +51,35 @@
5151
"ExecutingQuery": "Exécution de la requête...",
5252
"QueryExecutedSuccess": "Requête exécutée avec succès. {0} lignes retournées.",
5353
"QueryExecutedAffected": "{0} lignes affectées.",
54-
"ErrorQueryFailed": "Échec de la requête : {0}"
54+
"ErrorQueryFailed": "Échec de la requête : {0}",
55+
"ToolsMenu": "Outils",
56+
"ToolsTitle": "Outils de base de données",
57+
"ToolsSubtitle": "Convertir les formats de base de données et effectuer des tâches de maintenance",
58+
"DatabaseFormat": "Format de base de données :",
59+
"FormatDirectory": "Répertoire (Plusieurs fichiers)",
60+
"FormatDirectoryDesc": "Format traditionnel avec des fichiers séparés par table",
61+
"FormatSingleFile": "Fichier unique (.scdb)",
62+
"FormatSingleFileDesc": "Format moderne avec toutes les données dans un fichier",
63+
"SourceDatabase": "Base de données source",
64+
"TargetDatabase": "Base de données cible",
65+
"SourceFormat": "Format source",
66+
"TargetFormat": "Format cible",
67+
"SourcePath": "Chemin source :",
68+
"TargetPath": "Chemin cible :",
69+
"SourcePathPlaceholder": "Sélectionner la base de données source...",
70+
"TargetPathPlaceholder": "Sélectionner la base de données cible...",
71+
"Convert": "Convertir",
72+
"Close": "Fermer",
73+
"BrowseSourceDatabase": "Rechercher la base de données source",
74+
"BrowseTargetDatabase": "Rechercher la base de données cible",
75+
"SwapFormats": "Échanger les formats source et cible",
76+
"ConversionProgress": "Progression de la conversion",
77+
"ConvertingDatabase": "Conversion de la base de données...",
78+
"ConvertingProgress": "Conversion en cours... {0}%",
79+
"ConversionComplete": "✅ Conversion terminée avec succès !",
80+
"ErrorSourcePathRequired": "Veuillez sélectionner une base de données source",
81+
"ErrorTargetPathRequired": "Veuillez sélectionner une base de données cible",
82+
"ErrorSourceNotFound": "Base de données source introuvable",
83+
"ErrorSameFormat": "Les formats source et cible doivent être différents",
84+
"ErrorConversionFailed": "Échec de la conversion : {0}"
5585
}

tools/SharpCoreDB.Viewer/Resources/Strings.it-IT.json

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
"ErrorPasswordRequired": "Inserisci una password",
3434
"ErrorDatabaseNotFound": "Il percorso del database non esiste",
3535
"ErrorConnectionFailed": "Connessione fallita: {0}",
36-
"ErrorIncorrectPassword": "?? Password errata o database corrotto. Verifica la tua password e riprova.",
36+
"ErrorIncorrectPassword": "⚠️ Password errata o database corrotto. Verifica la tua password e riprova.",
3737
"ErrorTableLoadFailed": "Caricamento delle tabelle fallito: {0}",
3838
"ConnectedTo": "Connesso a: {0}",
3939
"SelectNewDatabaseLocation": "Seleziona la posizione per il nuovo database SharpCoreDB",
@@ -51,5 +51,35 @@
5151
"ExecutingQuery": "Esecuzione della query...",
5252
"QueryExecutedSuccess": "Query eseguita con successo. {0} righe restituite.",
5353
"QueryExecutedAffected": "{0} righe interessate.",
54-
"ErrorQueryFailed": "Query fallita: {0}"
54+
"ErrorQueryFailed": "Query fallita: {0}",
55+
"ToolsMenu": "Strumenti",
56+
"ToolsTitle": "Strumenti del database",
57+
"ToolsSubtitle": "Converti formati di database ed esegui attività di manutenzione",
58+
"DatabaseFormat": "Formato del database:",
59+
"FormatDirectory": "Directory (File multipli)",
60+
"FormatDirectoryDesc": "Formato tradizionale con file separati per tabella",
61+
"FormatSingleFile": "File singolo (.scdb)",
62+
"FormatSingleFileDesc": "Formato moderno con tutti i dati in un file",
63+
"SourceDatabase": "Database di origine",
64+
"TargetDatabase": "Database di destinazione",
65+
"SourceFormat": "Formato di origine",
66+
"TargetFormat": "Formato di destinazione",
67+
"SourcePath": "Percorso di origine:",
68+
"TargetPath": "Percorso di destinazione:",
69+
"SourcePathPlaceholder": "Seleziona database di origine...",
70+
"TargetPathPlaceholder": "Seleziona database di destinazione...",
71+
"Convert": "Converti",
72+
"Close": "Chiudi",
73+
"BrowseSourceDatabase": "Cerca database di origine",
74+
"BrowseTargetDatabase": "Cerca database di destinazione",
75+
"SwapFormats": "Scambia formati di origine e destinazione",
76+
"ConversionProgress": "Progresso della conversione",
77+
"ConvertingDatabase": "Conversione del database in corso...",
78+
"ConvertingProgress": "Conversione in corso... {0}%",
79+
"ConversionComplete": "✅ Conversione completata con successo!",
80+
"ErrorSourcePathRequired": "Seleziona un database di origine",
81+
"ErrorTargetPathRequired": "Seleziona un database di destinazione",
82+
"ErrorSourceNotFound": "Database di origine non trovato",
83+
"ErrorSameFormat": "I formati di origine e destinazione devono essere diversi",
84+
"ErrorConversionFailed": "Conversione fallita: {0}"
5585
}

tools/SharpCoreDB.Viewer/Resources/Strings.nl-NL.json

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,5 +51,35 @@
5151
"ExecutingQuery": "Query uitvoeren...",
5252
"QueryExecutedSuccess": "Query succesvol uitgevoerd. {0} rijen geretourneerd.",
5353
"QueryExecutedAffected": "{0} rijen aangepast.",
54-
"ErrorQueryFailed": "Query mislukt: {0}"
54+
"ErrorQueryFailed": "Query mislukt: {0}",
55+
"ToolsMenu": "Gereedschappen",
56+
"ToolsTitle": "Database Gereedschappen",
57+
"ToolsSubtitle": "Converteer database formaten en voer onderhoudstaken uit",
58+
"DatabaseFormat": "Database Formaat:",
59+
"FormatDirectory": "Map (Meerdere Bestanden)",
60+
"FormatDirectoryDesc": "Traditioneel formaat met aparte bestanden per tabel",
61+
"FormatSingleFile": "Enkel Bestand (.scdb)",
62+
"FormatSingleFileDesc": "Modern formaat met alle data in één bestand",
63+
"SourceDatabase": "Bron Database",
64+
"TargetDatabase": "Doel Database",
65+
"SourceFormat": "Bron Formaat",
66+
"TargetFormat": "Doel Formaat",
67+
"SourcePath": "Bron Pad:",
68+
"TargetPath": "Doel Pad:",
69+
"SourcePathPlaceholder": "Selecteer bron database...",
70+
"TargetPathPlaceholder": "Selecteer doel database...",
71+
"Convert": "Converteer",
72+
"Close": "Sluiten",
73+
"BrowseSourceDatabase": "Bladeren naar Bron Database",
74+
"BrowseTargetDatabase": "Bladeren naar Doel Database",
75+
"SwapFormats": "Wissel bron en doel formaten",
76+
"ConversionProgress": "Conversie Voortgang",
77+
"ConvertingDatabase": "Database converteren...",
78+
"ConvertingProgress": "Converteren... {0}%",
79+
"ConversionComplete": "✅ Conversie succesvol voltooid!",
80+
"ErrorSourcePathRequired": "Selecteer een bron database",
81+
"ErrorTargetPathRequired": "Selecteer een doel database",
82+
"ErrorSourceNotFound": "Bron database niet gevonden",
83+
"ErrorSameFormat": "Bron en doel formaten moeten verschillend zijn",
84+
"ErrorConversionFailed": "Conversie mislukt: {0}"
5585
}

0 commit comments

Comments
 (0)