New dev build

This commit is contained in:
2025-09-06 11:14:02 -05:00
parent 700cb81f24
commit 7c4f85ec21
28 changed files with 952 additions and 17 deletions

View File

@@ -0,0 +1,46 @@
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="using:CrossLangDevStudio.ViewModels"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
Width="320"
Height="120"
WindowStartupLocation="CenterOwner"
x:Class="CrossLangDevStudio.Views.InstallPackageDialog"
x:DataType="vm:InstallPackageDialogViewModel"
Icon="/Assets/crosslang.ico"
Title="Install Package">
<Design.DataContext>
<!-- This only sets the DataContext for the previewer in an IDE,
to set the actual DataContext for runtime, set the DataContext property in code (look at App.axaml.cs) -->
<vm:InstallPackageDialogViewModel/>
</Design.DataContext>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<ComboBox Grid.Row="1" ItemsSource="{Binding Versions}" HorizontalAlignment="Stretch" SelectedIndex="{Binding VersionIndex}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Text}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<Grid Grid.Row="3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Button Content="Install" Grid.Column="1" Command="{Binding InstallCommand}" />
<Button Content="Cancel" Grid.Column="2" Command="{Binding CancelCommand}" />
</Grid>
</Grid>
</Window>

View File

@@ -0,0 +1,21 @@
using System.Diagnostics;
using Avalonia.Controls;
using CommunityToolkit.Mvvm.Messaging;
using CrossLangDevStudio.Messages;
namespace CrossLangDevStudio.Views;
public partial class InstallPackageDialog : Window
{
public InstallPackageDialog()
{
InitializeComponent();
if (Design.IsDesignMode) return;
WeakReferenceMessenger.Default.Register<InstallPackageDialog, InstallPackageResponseMessage>(this, static (w, m) =>
{
w.Close(m.Version);
}
);
}
}

View File

@@ -28,6 +28,7 @@
<MenuItem Header="_Open Project" HotKey="Ctrl+O" Command="{Binding OpenProjectCommand}"/>
<MenuItem Header="_Save" HotKey="Ctrl+S" Command="{Binding SaveCommand}"/>
<MenuItem Header="Save All" HotKey="Ctrl+Shift+S" Command="{Binding SaveAllCommand}"/>
<MenuItem Header="CrossLang Settings"/>
<Separator/>
<MenuItem Header="_Exit" HotKey="Alt+F4"/>
</MenuItem>
@@ -38,6 +39,23 @@
<MenuItem Header="Open In Terminal" HotKey="CTRL+T" Command="{Binding OpenProjectInTerminalCommand}" />
<MenuItem Header="Refresh" HotKey="CTRL+R" Command="{Binding RefreshListingCommand}" />
</MenuItem>
<MenuItem Header="_CPKG">
<MenuItem Header="Add Package"/>
<MenuItem Header="Install">
<MenuItem Header="Template"/>
<MenuItem Header="Tool"/>
<MenuItem Header="Web Application"/>
<MenuItem Header="Console Application"/>
</MenuItem>
<MenuItem Header="Push Package"/>
<MenuItem Header="Manage Servers"/>
</MenuItem>
<MenuItem Header="_Help">
<MenuItem Header="Welcome"/>
<MenuItem Header="Website"/>
<MenuItem Header="Documentation"/>
</MenuItem>
</Menu>
<Grid Grid.Row="1" ColumnDefinitions="300, 4, *">
<TreeView Grid.Column="0" ItemsSource="{Binding ProjectFiles}" SelectedItem="{Binding SelectedProjectFile}">

View File

@@ -28,6 +28,15 @@ public partial class MainWindow : Window
// Show dialog window and reply with returned AlbumViewModel or null when the dialog is closed.
m.Reply(dialog.ShowDialog<string?>(w));
});
WeakReferenceMessenger.Default.Register<MainWindow, InstallPackageMessage>(this, static (w, m) =>
{
var dialog = new InstallPackageDialog
{
DataContext = new InstallPackageDialogViewModel(m)
};
m.Reply(dialog.ShowDialog<CrossLangVersion?>(w));
});
WeakReferenceMessenger.Default.Register<MainWindow, GetWindowMessage>(this, static (w, m) =>
{
m.Reply(w);

View File

@@ -0,0 +1,76 @@
<UserControl xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:vm="clr-namespace:CrossLangDevStudio.ViewModels"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="CrossLangDevStudio.Views.PackageManagerView"
x:DataType="vm:PackageManagerViewModel">
<Design.DataContext>
<!-- This only sets the DataContext for the previewer in an IDE,
to set the actual DataContext for runtime, set the DataContext property in code (look at App.axaml.cs) -->
<vm:PackageManagerViewModel />
</Design.DataContext>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBox Grid.Column="0" Text="{Binding Search}" Watermark="Search..." />
<ComboBox Grid.Column="1" ItemsSource="{Binding Servers}" SelectedIndex="{Binding ServerIndex}" />
<Button Grid.Column="2" Content="Search" Command="{Binding SearchPackagesCommand}" />
</Grid>
<ScrollViewer Grid.Row="1" HorizontalScrollBarVisibility="Auto">
<ItemsControl ItemsSource="{Binding PackageList}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="64" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Image Grid.Column="0" Source="{Binding Icon}" />
<Grid Grid.Column="1">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Text="{Binding Name}"/>
<TextBlock Grid.Row="1" Text="{Binding Info}"/>
<TextBlock Grid.Row="2" Text="{Binding Description}"/>
</Grid>
<Grid Grid.Column="2">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<SplitButton Grid.Row="0" Content="{Binding MainButtonText}" Command="{Binding MainButtonCommand}">
<SplitButton.Flyout>
<MenuFlyout Placement="Bottom">
<MenuItem Header="{Binding SubButton1Text}" Command="{Binding SubButton1Command}" />
<MenuItem Header="Info" IsVisible="{Binding IsInstalled}" Command="{Binding SubButton2Command}" />
</MenuFlyout>
</SplitButton.Flyout>
</SplitButton>
</Grid>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ScrollViewer>
</Grid>
</UserControl>

View File

@@ -0,0 +1,11 @@
using Avalonia.Controls;
namespace CrossLangDevStudio.Views;
public partial class PackageManagerView : UserControl
{
public PackageManagerView()
{
InitializeComponent();
}
}