Neuer commit ohne Changes

This commit is contained in:
OliverT87 2025-06-26 10:29:12 +02:00
parent f3588f2b25
commit b35804f547
8 changed files with 414 additions and 376 deletions

View File

@ -0,0 +1,17 @@
using System;
namespace Project_Periodensystem.Controller
{
/// <summary>
/// Interface für Navigation - trennt Controller von UI-Dependencies
/// Controller definiert WAS navigiert wird, View definiert WIE
/// </summary>
public interface INavigationService
{
void NavigateToPeriodicTable();
void NavigateToAbout();
void NavigateToLanding();
void ToggleTheme();
void ShowExportConfirmation();
}
}

View File

@ -9,17 +9,22 @@ namespace Project_Periodensystem.Controller
/// <summary>
/// Controller für das Periodensystem - verwaltet die Geschäftslogik
/// und trennt View von Model gemäß MVC-Pattern
/// SAUBERE ARCHITEKTUR: Verwendet Interface für Navigation
/// </summary>
public class PeriodensystemController
{
// Nullable Field um Warning zu vermeiden
private List<Element> _elements = new List<Element>();
// Navigation Service Interface (KEINE direkte UI-Dependency!)
private readonly INavigationService? _navigationService;
/// <summary>
/// Konstruktor - initialisiert den Controller
/// Konstruktor - optional mit Navigation Service
/// </summary>
public PeriodensystemController()
public PeriodensystemController(INavigationService? navigationService = null)
{
_navigationService = navigationService;
LoadElements();
}
@ -346,5 +351,91 @@ namespace Project_Periodensystem.Controller
return (lightest, heaviest);
}
// ===== NAVIGATION CONTROLLER METHODS (SAUBERES MVC MIT INTERFACE) =====
/// <summary>
/// Behandelt Navigation zum Periodensystem (Controller-Logic)
/// </summary>
public void HandleNavigateToPeriodicTable()
{
try
{
Logger.Log("Controller: Navigation zum Periodensystem angefordert");
_navigationService?.NavigateToPeriodicTable();
}
catch (Exception ex)
{
Logger.LogException(ex, "HandleNavigateToPeriodicTable");
}
}
/// <summary>
/// Behandelt Navigation zur About-Seite (Controller-Logic)
/// </summary>
public void HandleNavigateToAbout()
{
try
{
Logger.Log("Controller: Navigation zu About angefordert");
_navigationService?.NavigateToAbout();
}
catch (Exception ex)
{
Logger.LogException(ex, "HandleNavigateToAbout");
}
}
/// <summary>
/// Behandelt Navigation zur Landing Page (Controller-Logic)
/// </summary>
public void HandleNavigateToLanding()
{
try
{
Logger.Log("Controller: Navigation zur Landing Page angefordert");
_navigationService?.NavigateToLanding();
}
catch (Exception ex)
{
Logger.LogException(ex, "HandleNavigateToLanding");
}
}
/// <summary>
/// Behandelt Theme-Wechsel (Controller-Logic)
/// </summary>
public void HandleToggleTheme()
{
try
{
Logger.Log("Controller: Theme-Wechsel angefordert");
_navigationService?.ToggleTheme();
}
catch (Exception ex)
{
Logger.LogException(ex, "HandleToggleTheme");
}
}
/// <summary>
/// Behandelt Daten-Export (Controller-Logic)
/// </summary>
public void HandleExportData()
{
try
{
Logger.Log("Controller: Daten-Export angefordert");
// Geschäftslogik für Export
SaveElements(); // Persistierung
_navigationService?.ShowExportConfirmation();
}
catch (Exception ex)
{
Logger.LogException(ex, "HandleExportData");
}
}
}
}

View File

@ -5,14 +5,17 @@ using Avalonia.Interactivity;
using Avalonia.Markup.Xaml;
using Avalonia.VisualTree;
using Project_Periodensystem.Model;
using Project_Periodensystem.Controller;
namespace Project_Periodensystem.View
{
/// <summary>
/// Code-Behind für die About-Seite
/// Code-Behind für die About-Seite - SAUBERES MVC
/// </summary>
public partial class AboutPage : UserControl
{
private PeriodensystemController? _controller;
/// <summary>
/// Konstruktor
/// </summary>
@ -21,54 +24,63 @@ namespace Project_Periodensystem.View
InitializeComponent();
}
/// <summary>
/// Controller setzen (Dependency Injection für MVC)
/// </summary>
public void SetController(PeriodensystemController controller)
{
_controller = controller ?? throw new ArgumentNullException(nameof(controller));
Logger.Log("AboutPage: Controller gesetzt (MVC-Pattern)");
}
private void InitializeComponent()
{
AvaloniaXamlLoader.Load(this);
}
/// <summary>
/// Zurück-Button - Navigation zur Landing Page
/// Zurück-Button - Navigation zur Landing Page - SAUBERES MVC
/// </summary>
private void BackButton_Click(object? sender, RoutedEventArgs e)
{
try
{
var mainWindow = TopLevel.GetTopLevel(this) as Window;
if (mainWindow != null)
if (_controller != null)
{
var landingPage = new LandingPage();
mainWindow.Content = landingPage;
Logger.Log("Navigation zurück zur Landing Page");
// Controller übernimmt Navigation
_controller.HandleNavigateToLanding();
}
else
{
Logger.LogError("Controller nicht gesetzt - kann nicht navigieren");
}
}
catch (System.Exception ex)
catch (Exception ex)
{
Logger.Log($"Fehler bei Navigation zurück: {ex.Message}");
Logger.LogException(ex, "BackButton_Click");
}
}
/// <summary>
/// Event-Handler für Theme-Button - VEREINHEITLICHT mit anderen Seiten
/// Event-Handler für Theme-Button - SAUBERES MVC
/// </summary>
private void ThemeButton_Click(object? sender, RoutedEventArgs e)
{
try
{
// GLEICHE LOGIK wie auf LandingPage und PeriodicTablePage
var app = Application.Current;
if (app != null)
if (_controller != null)
{
var currentTheme = app.ActualThemeVariant;
app.RequestedThemeVariant = currentTheme == Avalonia.Styling.ThemeVariant.Dark
? Avalonia.Styling.ThemeVariant.Light
: Avalonia.Styling.ThemeVariant.Dark;
Logger.Log($"Theme gewechselt zu: {app.RequestedThemeVariant}");
// Controller übernimmt Theme-Logik
_controller.HandleToggleTheme();
}
else
{
Logger.LogError("Controller nicht gesetzt - kann Theme nicht wechseln");
}
}
catch (Exception ex)
{
Logger.Log($"Fehler beim Theme-Wechsel: {ex.Message}");
Logger.LogException(ex, "ThemeButton_Click");
}
}
}

View File

@ -4,14 +4,18 @@ using Avalonia.Controls;
using Avalonia.Interactivity;
using Project_Periodensystem.Model;
using Project_Periodensystem.Persistence;
using Project_Periodensystem.Controller;
namespace Project_Periodensystem.View
{
/// <summary>
/// Code-Behind für die Landing Page
/// Code-Behind für die Landing Page - SAUBERES MVC
/// Keine direkte Navigation mehr, nur Controller-Aufrufe
/// </summary>
public partial class LandingPage : UserControl
{
private PeriodensystemController? _controller;
/// <summary>
/// Konstruktor
/// </summary>
@ -21,84 +25,80 @@ namespace Project_Periodensystem.View
}
/// <summary>
/// Event-Handler für Periodensystem-Button
/// Controller setzen (Dependency Injection für MVC)
/// </summary>
public void SetController(PeriodensystemController controller)
{
_controller = controller ?? throw new ArgumentNullException(nameof(controller));
Logger.Log("LandingPage: Controller gesetzt (MVC-Pattern)");
}
/// <summary>
/// Event-Handler für Periodensystem-Button - SAUBERES MVC
/// </summary>
private void PeriodicTableButton_Click(object? sender, RoutedEventArgs e)
{
try
{
var mainWindow = TopLevel.GetTopLevel(this) as Window;
if (mainWindow != null)
if (_controller != null)
{
var periodicTablePage = new PeriodicTablePage();
mainWindow.Content = periodicTablePage;
Logger.Log("Navigation zum Periodensystem");
// Controller übernimmt Navigation (kein direkter View-Zugriff!)
_controller.HandleNavigateToPeriodicTable();
}
else
{
Logger.LogError("Controller nicht gesetzt - kann nicht navigieren");
}
}
catch (Exception ex)
{
Logger.Log($"Fehler bei Navigation zum Periodensystem: {ex.Message}");
Logger.LogException(ex, "PeriodicTableButton_Click");
}
}
/// <summary>
/// Event-Handler für About-Button
/// Event-Handler für About-Button - SAUBERES MVC
/// </summary>
private void AboutButton_Click(object? sender, RoutedEventArgs e)
{
try
{
var mainWindow = TopLevel.GetTopLevel(this) as Window;
if (mainWindow != null)
if (_controller != null)
{
var aboutPage = new AboutPage();
mainWindow.Content = aboutPage;
Logger.Log("Navigation zur About-Seite");
// Controller übernimmt Navigation
_controller.HandleNavigateToAbout();
}
else
{
Logger.LogError("Controller nicht gesetzt - kann nicht navigieren");
}
}
catch (Exception ex)
{
Logger.Log($"Fehler bei Navigation zu About: {ex.Message}");
Logger.LogException(ex, "AboutButton_Click");
}
}
/// <summary>
/// Event-Handler für Theme-Button (MIT SETTINGS-SPEICHERUNG)
/// Event-Handler für Theme-Button - SAUBERES MVC
/// </summary>
private void ThemeButton_Click(object? sender, RoutedEventArgs e)
{
try
{
Logger.Log("Theme-Button geklickt");
var app = Application.Current;
if (app != null)
if (_controller != null)
{
var currentTheme = app.ActualThemeVariant;
Logger.Log($"Aktuelles Theme: {currentTheme}");
var newTheme = currentTheme == Avalonia.Styling.ThemeVariant.Dark
? Avalonia.Styling.ThemeVariant.Light
: Avalonia.Styling.ThemeVariant.Dark;
app.RequestedThemeVariant = newTheme;
Logger.Log($"Theme gewechselt zu: {newTheme}");
// NEUE FUNKTION: Theme-Einstellung speichern
var settings = DataManager.LoadSettings();
settings.LastTheme = newTheme.ToString();
settings.LastUsed = DateTime.Now;
DataManager.SaveSettings(settings);
Logger.Log("Theme-Einstellung gespeichert");
// Controller übernimmt Theme-Logik
_controller.HandleToggleTheme();
}
else
{
Logger.Log("Application.Current ist null!");
Logger.LogError("Controller nicht gesetzt - kann Theme nicht wechseln");
}
}
catch (Exception ex)
{
Logger.Log($"EXCEPTION in ThemeButton_Click: {ex.Message}");
Logger.LogException(ex, "ThemeButton_Click");
}
}
}

View File

@ -1,20 +1,34 @@
using Avalonia;
using Avalonia.Controls;
using Project_Periodensystem.Model;
using Project_Periodensystem.Controller;
namespace Project_Periodensystem.View
{
/// <summary>
/// Vereinfachtes MainWindow - nur noch Container für Content
/// MainWindow mit sauberem MVC-Pattern und Interface-basierter Navigation
/// </summary>
public partial class MainWindow : Window
{
private ContentControl? mainContent;
private readonly PeriodensystemController _dataController;
private readonly NavigationService _navigationService;
public MainWindow()
{
InitializeComponent();
mainContent = this.FindControl<ContentControl>("MainContent");
// Erstelle Navigation Service
_navigationService = new NavigationService(this);
// Controller mit Navigation Service initialisieren (Dependency Injection)
_dataController = new PeriodensystemController(_navigationService);
// Data Controller an Navigation Service setzen
_navigationService.SetDataController(_dataController);
// Landing Page anzeigen
ShowLandingPage();
}
@ -25,41 +39,21 @@ namespace Project_Periodensystem.View
{
if (mainContent != null)
{
mainContent.Content = new LandingPage();
Logger.Log("Landing Page angezeigt");
var landingPage = new LandingPage();
landingPage.SetController(_dataController);
mainContent.Content = landingPage;
Logger.Log("Landing Page angezeigt (mit Interface-basierter Navigation)");
}
}
/// <summary>
/// Zeigt das Periodensystem an
/// Cleanup beim Schließen
/// </summary>
public void ShowPeriodicTable()
protected override void OnClosed(System.EventArgs e)
{
Logger.Log("ShowPeriodicTable called");
try
{
if (mainContent != null)
{
mainContent.Content = new PeriodicTablePage();
Logger.Log("PeriodicTablePage created and set");
}
}
catch (System.Exception ex)
{
Logger.Log($"Error in ShowPeriodicTable: {ex.Message}");
}
}
/// <summary>
/// Zeigt die About Page an
/// </summary>
public void ShowAboutPage()
{
if (mainContent != null)
{
mainContent.Content = new AboutPage();
Logger.Log("About Page angezeigt");
}
// NavigationService implementiert kein IDisposable mehr (keine Events)
base.OnClosed(e);
}
}
}

View File

@ -0,0 +1,163 @@
using System;
using Avalonia;
using Avalonia.Controls;
using Project_Periodensystem.Model;
using Project_Periodensystem.Persistence;
using Project_Periodensystem.Controller;
namespace Project_Periodensystem.View
{
/// <summary>
/// Navigation Service Implementation im View-Layer
/// Implementiert INavigationService Interface vom Controller
/// SAUBERE TRENNUNG: Controller definiert WAS, View definiert WIE
/// </summary>
public class NavigationService : INavigationService
{
private readonly Window _mainWindow;
private PeriodensystemController? _dataController;
/// <summary>
/// Konstruktor
/// </summary>
public NavigationService(Window mainWindow)
{
_mainWindow = mainWindow ?? throw new ArgumentNullException(nameof(mainWindow));
Logger.Log("NavigationService initialisiert - saubere Interface-Trennung");
}
/// <summary>
/// Data Controller setzen (löst zirkuläre Abhängigkeit)
/// </summary>
public void SetDataController(PeriodensystemController dataController)
{
_dataController = dataController ?? throw new ArgumentNullException(nameof(dataController));
}
/// <summary>
/// Navigation zum Periodensystem (Interface Implementation)
/// </summary>
public void NavigateToPeriodicTable()
{
try
{
if (_dataController == null)
{
Logger.LogError("DataController nicht gesetzt");
return;
}
var periodicTablePage = new PeriodicTablePage();
periodicTablePage.SetController(_dataController);
_mainWindow.Content = periodicTablePage;
Logger.Log("NavigationService: Navigation zum Periodensystem");
}
catch (Exception ex)
{
Logger.LogException(ex, "NavigateToPeriodicTable");
}
}
/// <summary>
/// Navigation zur About-Seite (Interface Implementation)
/// </summary>
public void NavigateToAbout()
{
try
{
if (_dataController == null)
{
Logger.LogError("DataController nicht gesetzt");
return;
}
var aboutPage = new AboutPage();
aboutPage.SetController(_dataController);
_mainWindow.Content = aboutPage;
Logger.Log("NavigationService: Navigation zu About");
}
catch (Exception ex)
{
Logger.LogException(ex, "NavigateToAbout");
}
}
/// <summary>
/// Navigation zur Landing Page (Interface Implementation)
/// </summary>
public void NavigateToLanding()
{
try
{
if (_dataController == null)
{
Logger.LogError("DataController nicht gesetzt");
return;
}
var landingPage = new LandingPage();
landingPage.SetController(_dataController);
_mainWindow.Content = landingPage;
Logger.Log("NavigationService: Navigation zur Landing Page");
}
catch (Exception ex)
{
Logger.LogException(ex, "NavigateToLanding");
}
}
/// <summary>
/// Theme-Wechsel (Interface Implementation)
/// </summary>
public void ToggleTheme()
{
try
{
var app = Application.Current;
if (app != null)
{
var currentTheme = app.ActualThemeVariant;
var newTheme = currentTheme == Avalonia.Styling.ThemeVariant.Dark
? Avalonia.Styling.ThemeVariant.Light
: Avalonia.Styling.ThemeVariant.Dark;
app.RequestedThemeVariant = newTheme;
// Settings speichern
var settings = new AppSettings
{
LastTheme = newTheme.ToString() ?? "Dark",
LastUsed = DateTime.Now,
PreferredLanguage = "German"
};
DataManager.SaveSettings(settings);
Logger.Log($"NavigationService: Theme gewechselt zu {newTheme}");
}
}
catch (Exception ex)
{
Logger.LogException(ex, "ToggleTheme");
}
}
/// <summary>
/// Export-Bestätigung anzeigen (Interface Implementation)
/// </summary>
public void ShowExportConfirmation()
{
try
{
Logger.Log("NavigationService: Export-Bestätigung angezeigt");
// Hier könnte ein Dialog oder Notification angezeigt werden
}
catch (Exception ex)
{
Logger.LogException(ex, "ShowExportConfirmation");
}
}
}
}

View File

@ -18,20 +18,26 @@ namespace Project_Periodensystem.View
public partial class PeriodicTablePage : UserControl
{
private readonly Grid? periodicGrid;
private readonly PeriodensystemController _controller;
private PeriodensystemController? _controller;
/// <summary>
/// Konstruktor - initialisiert UI und Controller
/// Konstruktor - initialisiert UI (Controller wird per SetController gesetzt)
/// </summary>
public PeriodicTablePage()
{
InitializeComponent();
// Controller initialisieren (MVC-Pattern)
_controller = new PeriodensystemController();
// Grid-Referenz für Element-Buttons
periodicGrid = this.FindControl<Grid>("PeriodicGrid");
}
/// <summary>
/// Controller setzen (Dependency Injection für MVC)
/// </summary>
public void SetController(PeriodensystemController controller)
{
_controller = controller ?? throw new ArgumentNullException(nameof(controller));
Logger.Log("PeriodicTablePage: Controller gesetzt (MVC-Pattern)");
// Elemente laden und anzeigen
LoadAndDisplayElements();
@ -44,6 +50,12 @@ namespace Project_Periodensystem.View
{
try
{
if (_controller == null)
{
Logger.LogError("Controller nicht gesetzt - kann Elemente nicht laden");
return;
}
// Daten über Controller laden (nicht direkt!)
var elements = _controller.GetAllElements();
@ -153,49 +165,48 @@ namespace Project_Periodensystem.View
}
/// <summary>
/// Event-Handler für Theme-Button
/// Event-Handler für Theme-Button - SAUBERES MVC
/// </summary>
private void ThemeButton_Click(object? sender, RoutedEventArgs e)
{
try
{
// Theme-Wechsel über Application
var app = Application.Current;
if (app != null)
if (_controller != null)
{
var currentTheme = app.ActualThemeVariant;
app.RequestedThemeVariant = currentTheme == Avalonia.Styling.ThemeVariant.Dark
? Avalonia.Styling.ThemeVariant.Light
: Avalonia.Styling.ThemeVariant.Dark;
Logger.Log($"Theme gewechselt zu: {app.RequestedThemeVariant}");
// Controller übernimmt Theme-Logik
_controller.HandleToggleTheme();
}
else
{
Logger.LogError("Controller nicht gesetzt - kann Theme nicht wechseln");
}
}
catch (Exception ex)
{
Logger.Log($"Fehler beim Theme-Wechsel: {ex.Message}");
Logger.LogException(ex, "ThemeButton_Click");
}
}
/// <summary>
/// Event-Handler für About-Button
/// Event-Handler für About-Button - SAUBERES MVC
/// </summary>
private void AboutButton_Click(object? sender, RoutedEventArgs e)
{
try
{
// Navigation zur About-Seite
var mainWindow = TopLevel.GetTopLevel(this) as Window;
if (mainWindow != null)
if (_controller != null)
{
var aboutPage = new AboutPage();
mainWindow.Content = aboutPage;
Logger.Log("Navigation zur About-Seite");
// Controller übernimmt Navigation
_controller.HandleNavigateToAbout();
}
else
{
Logger.LogError("Controller nicht gesetzt - kann nicht navigieren");
}
}
catch (Exception ex)
{
Logger.Log($"Fehler bei Navigation zu About: {ex.Message}");
Logger.LogException(ex, "AboutButton_Click");
}
}
@ -221,22 +232,25 @@ namespace Project_Periodensystem.View
}
/// <summary>
/// Export-Button für Element-Daten (NEUE FUNKTION)
/// Export-Button für Element-Daten - SAUBERES MVC
/// </summary>
private void ExportButton_Click(object? sender, RoutedEventArgs e)
{
try
{
var elements = _controller.GetAllElements();
DataManager.SaveElements(elements);
Logger.Log($"Export: {elements.Count} Elemente als JSON gespeichert");
// Optional: Benutzer-Feedback
// ShowMessage("Daten erfolgreich exportiert!");
if (_controller != null)
{
// Controller übernimmt Export-Logik
_controller.HandleExportData();
}
else
{
Logger.LogError("Controller nicht gesetzt - kann nicht exportieren");
}
}
catch (Exception ex)
{
Logger.Log($"EXCEPTION in ExportButton_Click: {ex.Message}");
Logger.LogException(ex, "ExportButton_Click");
}
}
}

View File

@ -1,253 +0,0 @@
Auflistung der Ordnerpfade
Volumeseriennummer : 00C1-D40F
C:.
¦ AboutPage.axaml
¦ AboutPage.axaml.cs
¦ App.axaml
¦ App.axaml.cs
¦ app.manifest
¦ LandingPage.axaml
¦ LandingPage.axaml.cs
¦ logger.cs
¦ MainWindow.axaml
¦ MainWindow.axaml.cs
¦ PeriodicTablePage.axaml
¦ PeriodicTablePage.axaml.cs
¦ Program.cs
¦ Project_Periodensystem.View.csproj
¦ Project_Periodensystem.View.sln
¦ projektstruktur.txt
¦
+---bin
¦ +---Debug
¦ +---net8.0
¦ ¦ app_log.txt
¦ ¦ Avalonia.Base.dll
¦ ¦ Avalonia.Controls.ColorPicker.dll
¦ ¦ Avalonia.Controls.DataGrid.dll
¦ ¦ Avalonia.Controls.dll
¦ ¦ Avalonia.DesignerSupport.dll
¦ ¦ Avalonia.Desktop.dll
¦ ¦ Avalonia.Diagnostics.dll
¦ ¦ Avalonia.Dialogs.dll
¦ ¦ Avalonia.dll
¦ ¦ Avalonia.FreeDesktop.dll
¦ ¦ Avalonia.Markup.dll
¦ ¦ Avalonia.Markup.Xaml.dll
¦ ¦ Avalonia.Metal.dll
¦ ¦ Avalonia.MicroCom.dll
¦ ¦ Avalonia.Native.dll
¦ ¦ Avalonia.OpenGL.dll
¦ ¦ Avalonia.ReactiveUI.dll
¦ ¦ Avalonia.Remote.Protocol.dll
¦ ¦ Avalonia.Skia.dll
¦ ¦ Avalonia.Themes.Fluent.dll
¦ ¦ Avalonia.Themes.Simple.dll
¦ ¦ Avalonia.Win32.dll
¦ ¦ Avalonia.X11.dll
¦ ¦ DynamicData.dll
¦ ¦ HarfBuzzSharp.dll
¦ ¦ MicroCom.Runtime.dll
¦ ¦ Microsoft.CodeAnalysis.CSharp.dll
¦ ¦ Microsoft.CodeAnalysis.CSharp.Scripting.dll
¦ ¦ Microsoft.CodeAnalysis.dll
¦ ¦ Microsoft.CodeAnalysis.Scripting.dll
¦ ¦ Microsoft.Win32.SystemEvents.dll
¦ ¦ Project_Periodensystem.Controller.dll
¦ ¦ Project_Periodensystem.Controller.pdb
¦ ¦ Project_Periodensystem.Model.dll
¦ ¦ Project_Periodensystem.Model.pdb
¦ ¦ Project_Periodensystem.Persistence.dll
¦ ¦ Project_Periodensystem.Persistence.pdb
¦ ¦ Project_Periodensystem.View.deps.json
¦ ¦ Project_Periodensystem.View.dll
¦ ¦ Project_Periodensystem.View.exe
¦ ¦ Project_Periodensystem.View.pdb
¦ ¦ Project_Periodensystem.View.runtimeconfig.json
¦ ¦ ReactiveUI.dll
¦ ¦ SkiaSharp.dll
¦ ¦ Splat.dll
¦ ¦ System.Drawing.Common.dll
¦ ¦ System.IO.Pipelines.dll
¦ ¦ System.Reactive.dll
¦ ¦ Tmds.DBus.Protocol.dll
¦ ¦
¦ +---cs
¦ ¦ Microsoft.CodeAnalysis.CSharp.resources.dll
¦ ¦ Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll
¦ ¦ Microsoft.CodeAnalysis.resources.dll
¦ ¦ Microsoft.CodeAnalysis.Scripting.resources.dll
¦ ¦
¦ +---de
¦ ¦ Microsoft.CodeAnalysis.CSharp.resources.dll
¦ ¦ Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll
¦ ¦ Microsoft.CodeAnalysis.resources.dll
¦ ¦ Microsoft.CodeAnalysis.Scripting.resources.dll
¦ ¦
¦ +---es
¦ ¦ Microsoft.CodeAnalysis.CSharp.resources.dll
¦ ¦ Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll
¦ ¦ Microsoft.CodeAnalysis.resources.dll
¦ ¦ Microsoft.CodeAnalysis.Scripting.resources.dll
¦ ¦
¦ +---fr
¦ ¦ Microsoft.CodeAnalysis.CSharp.resources.dll
¦ ¦ Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll
¦ ¦ Microsoft.CodeAnalysis.resources.dll
¦ ¦ Microsoft.CodeAnalysis.Scripting.resources.dll
¦ ¦
¦ +---it
¦ ¦ Microsoft.CodeAnalysis.CSharp.resources.dll
¦ ¦ Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll
¦ ¦ Microsoft.CodeAnalysis.resources.dll
¦ ¦ Microsoft.CodeAnalysis.Scripting.resources.dll
¦ ¦
¦ +---ja
¦ ¦ Microsoft.CodeAnalysis.CSharp.resources.dll
¦ ¦ Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll
¦ ¦ Microsoft.CodeAnalysis.resources.dll
¦ ¦ Microsoft.CodeAnalysis.Scripting.resources.dll
¦ ¦
¦ +---ko
¦ ¦ Microsoft.CodeAnalysis.CSharp.resources.dll
¦ ¦ Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll
¦ ¦ Microsoft.CodeAnalysis.resources.dll
¦ ¦ Microsoft.CodeAnalysis.Scripting.resources.dll
¦ ¦
¦ +---pl
¦ ¦ Microsoft.CodeAnalysis.CSharp.resources.dll
¦ ¦ Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll
¦ ¦ Microsoft.CodeAnalysis.resources.dll
¦ ¦ Microsoft.CodeAnalysis.Scripting.resources.dll
¦ ¦
¦ +---pt-BR
¦ ¦ Microsoft.CodeAnalysis.CSharp.resources.dll
¦ ¦ Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll
¦ ¦ Microsoft.CodeAnalysis.resources.dll
¦ ¦ Microsoft.CodeAnalysis.Scripting.resources.dll
¦ ¦
¦ +---ru
¦ ¦ Microsoft.CodeAnalysis.CSharp.resources.dll
¦ ¦ Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll
¦ ¦ Microsoft.CodeAnalysis.resources.dll
¦ ¦ Microsoft.CodeAnalysis.Scripting.resources.dll
¦ ¦
¦ +---runtimes
¦ ¦ +---linux-arm
¦ ¦ ¦ +---native
¦ ¦ ¦ libHarfBuzzSharp.so
¦ ¦ ¦ libSkiaSharp.so
¦ ¦ ¦
¦ ¦ +---linux-arm64
¦ ¦ ¦ +---native
¦ ¦ ¦ libHarfBuzzSharp.so
¦ ¦ ¦ libSkiaSharp.so
¦ ¦ ¦
¦ ¦ +---linux-musl-x64
¦ ¦ ¦ +---native
¦ ¦ ¦ libHarfBuzzSharp.so
¦ ¦ ¦ libSkiaSharp.so
¦ ¦ ¦
¦ ¦ +---linux-x64
¦ ¦ ¦ +---native
¦ ¦ ¦ libHarfBuzzSharp.so
¦ ¦ ¦ libSkiaSharp.so
¦ ¦ ¦
¦ ¦ +---osx
¦ ¦ ¦ +---native
¦ ¦ ¦ libAvaloniaNative.dylib
¦ ¦ ¦ libHarfBuzzSharp.dylib
¦ ¦ ¦ libSkiaSharp.dylib
¦ ¦ ¦
¦ ¦ +---unix
¦ ¦ ¦ +---lib
¦ ¦ ¦ +---net6.0
¦ ¦ ¦ System.Drawing.Common.dll
¦ ¦ ¦
¦ ¦ +---win
¦ ¦ ¦ +---lib
¦ ¦ ¦ +---net6.0
¦ ¦ ¦ Microsoft.Win32.SystemEvents.dll
¦ ¦ ¦ System.Drawing.Common.dll
¦ ¦ ¦
¦ ¦ +---win-arm64
¦ ¦ ¦ +---native
¦ ¦ ¦ av_libglesv2.dll
¦ ¦ ¦ libHarfBuzzSharp.dll
¦ ¦ ¦ libSkiaSharp.dll
¦ ¦ ¦
¦ ¦ +---win-x64
¦ ¦ ¦ +---native
¦ ¦ ¦ av_libglesv2.dll
¦ ¦ ¦ libHarfBuzzSharp.dll
¦ ¦ ¦ libSkiaSharp.dll
¦ ¦ ¦
¦ ¦ +---win-x86
¦ ¦ +---native
¦ ¦ av_libglesv2.dll
¦ ¦ libHarfBuzzSharp.dll
¦ ¦ libSkiaSharp.dll
¦ ¦
¦ +---tr
¦ ¦ Microsoft.CodeAnalysis.CSharp.resources.dll
¦ ¦ Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll
¦ ¦ Microsoft.CodeAnalysis.resources.dll
¦ ¦ Microsoft.CodeAnalysis.Scripting.resources.dll
¦ ¦
¦ +---zh-Hans
¦ ¦ Microsoft.CodeAnalysis.CSharp.resources.dll
¦ ¦ Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll
¦ ¦ Microsoft.CodeAnalysis.resources.dll
¦ ¦ Microsoft.CodeAnalysis.Scripting.resources.dll
¦ ¦
¦ +---zh-Hant
¦ Microsoft.CodeAnalysis.CSharp.resources.dll
¦ Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll
¦ Microsoft.CodeAnalysis.resources.dll
¦ Microsoft.CodeAnalysis.Scripting.resources.dll
¦
+---Components
¦ ElementTile.axaml
¦ ElementTile.axaml.cs
¦
+---Converters
¦ GridPositionConverters.cs
¦ SeriesToColorConverter.cs
¦
+---obj
¦ project.assets.json
¦ project.nuget.cache
¦ Project_Periodensystem.View.csproj.nuget.dgspec.json
¦ Project_Periodensystem.View.csproj.nuget.g.props
¦ Project_Periodensystem.View.csproj.nuget.g.targets
¦
+---Debug
+---net8.0
¦ .NETCoreApp,Version=v8.0.AssemblyAttributes.cs
¦ apphost.exe
¦ Project_.29B724C0.Up2Date
¦ Project_Periodensystem.View.AssemblyInfo.cs
¦ Project_Periodensystem.View.AssemblyInfoInputs.cache
¦ Project_Periodensystem.View.assets.cache
¦ Project_Periodensystem.View.csproj.AssemblyReference.cache
¦ Project_Periodensystem.View.csproj.CoreCompileInputs.cache
¦ Project_Periodensystem.View.csproj.FileListAbsolute.txt
¦ Project_Periodensystem.View.dll
¦ Project_Periodensystem.View.GeneratedMSBuildEditorConfig.editorconfig
¦ Project_Periodensystem.View.genruntimeconfig.cache
¦ Project_Periodensystem.View.pdb
¦
+---Avalonia
¦ original.dll
¦ original.pdb
¦ original.ref.dll
¦ references
¦ resources
¦ Resources.Inputs.cache
¦
+---ref
¦ Project_Periodensystem.View.dll
¦
+---refint
Project_Periodensystem.View.dll