Skip to content

Commit

Permalink
1.0.2
Browse files Browse the repository at this point in the history
Beaucoup plus rapide,
condensation du code,
commentaire et docstring ajoutés,
bug fix
  • Loading branch information
zonetecde committed May 28, 2023
1 parent aba25e6 commit eff06b5
Show file tree
Hide file tree
Showing 20 changed files with 582 additions and 740 deletions.
Binary file modified Setup/SignaMath.exe
Binary file not shown.
2 changes: 1 addition & 1 deletion Setup/setup.iss
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "SignaMath"
#define MyAppVersion "1.0.1"
#define MyAppVersion "1.0.2"
#define MyAppPublisher "zonetecde"
#define MyAppURL "github.com/zonetecde/SignaMath"
#define MyAppExeName "SignaMath.exe"
Expand Down
8 changes: 1 addition & 7 deletions SignaMath/Classes/ColumnElement.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,10 @@ namespace SignaMath.Classes
{
internal class ColumnElement
{
public ColumnElement(string expression, double value, byte position, List<int> fromRows)
public ColumnElement(string expression, double value, List<int> fromRows)
{
Expression = expression;
Value = value;
Position = position;
FromRows = fromRows;
ValeurInterdite = false;
ColumnSign = '+';
Expand All @@ -18,11 +17,6 @@ public ColumnElement(string expression, double value, byte position, List<int> f
internal double Value { get; set; }
internal char ColumnSign { get; set; }
internal bool ValeurInterdite { get; set; }
internal byte Position { get; set; }
internal List<int> FromRows { get; set; }

internal static char LastColumnSign = '+';
internal static double IntervalleMin = double.MinValue;
internal static double IntervalleMax = double.MaxValue;
}
}
53 changes: 53 additions & 0 deletions SignaMath/Classes/GlobalVariable.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SignaMath.Classes
{
internal static class GlobalVariable
{
// Défini la ligne d'ordonné où l'on veut voir si la courbe la coupe
// Par défaut : 0 -> Permet d'étudier le signe
internal static int Y { get; set; } = 0;

// Défini le nom de la variable dans l'équation. Elle peut être qu'un
// caractère non-numérique.
internal static char VariableName { get; set; } = 'x';

// Contient toutes les colonnes-solutions du tableau de signe
internal static List<ColumnElement> TableColumns { get; set; } = new List<ColumnElement>();

// Contient le signe de la dernière colonne du tableau;
// comme est n'est pas dans TableColumns il faut la sauvegardé autre part
internal static char LastColumnSign { get; set; } = '+';

// Les intervalles du tableau
// double.MinValue = -\infty et double.MaxValue = +\infty
internal static double IntervalleMin { get; set; } = double.MinValue;
internal static double IntervalleMax { get; set; } = double.MaxValue;

// Liste des signes dans l'ordre de la row concluante
internal static List<char> RowConcluanteSigns { get; set; } = new();

/// <summary>
/// Met à jour l'entiereté du tableau de signe en plaçant les
/// signes et en dressant le tableau de variation
/// </summary>
internal static void UpdateBoard()
{
TableColumns = TableColumns.OrderBy(x => x.Value).ToList(); // Trie les solutions dans l'ordre croissant
TableColumns = TableColumns.DistinctBy(x => x.Expression).ToList(); // Enlève les doublons
TableColumns.RemoveAll(x => x.FromRows.Count == 0); // Enlève les solutions utilisés dans aucune ligne

// On reset le signe de toutes les colonnes (car elles vont être recalculer)
TableColumns.ForEach(x => x.ColumnSign = '+');
LastColumnSign= '+';
RowConcluanteSigns = new();

// Met à jour toutes les rows du tableau de signe
MainWindow.TableauDeSigne.StackPanel_Row.Children.OfType<UserControl_Row>().ToList().ForEach(x => x.UpdateRow());
}
}
}
17 changes: 17 additions & 0 deletions SignaMath/Classes/RowType.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SignaMath.Classes
{
public enum RowType
{
HEADER,
MIDDLE,
MIDDLE_INTERDITE,
CONCLUANTE,
TABLEAU_DE_VARIATION
}
}
4 changes: 0 additions & 4 deletions SignaMath/Extension/Extension.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,6 @@ internal static Brush PickBrush()
// Méthode qui écrit un élément UI dans un fichier PNG ou le copie dans le presse-papiers
internal static void WriteToPng(UIElement element, string filename, bool copyClipboard = false)
{
MainWindow._MainWindow.Cursor = System.Windows.Input.Cursors.Wait;

// Création d'un rectangle pour définir la taille de l'élément
var rect = new Rect(element.RenderSize);
var visual = new DrawingVisual();
Expand Down Expand Up @@ -73,8 +71,6 @@ internal static void WriteToPng(UIElement element, string filename, bool copyCli
// Copie de l'image dans le presse-papiers
Clipboard.SetImage(bitmap);
}

MainWindow._MainWindow.Cursor = System.Windows.Input.Cursors.Arrow;
}

/// <summary>
Expand Down
9 changes: 7 additions & 2 deletions SignaMath/MainWindow.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,11 @@
<RowDefinition Height="*"/>
</Grid.RowDefinitions>

<!-- RESSOURCES -->
<Image x:Name="img_arrowTemplateTop" Source="/assets/arrow_top.png" Stretch="Fill" RenderTransformOrigin="0.5,0.5" Visibility="Collapsed"/>
<Image x:Name="img_arrowTemplateBottom" Source="assets/arrow_bottom.png" Stretch="Fill" RenderTransformOrigin="0.5,0.5" Visibility="Collapsed"/>
<!-- -->

<Border Grid.Row="0" Margin="20,20,20,0">
<StackPanel>
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" Padding="0,0,0,-5" Margin="0,0,0,5">
Expand All @@ -37,7 +42,7 @@

</StackPanel>

<Button Content="Tout effacer" VerticalAlignment="Top" HorizontalAlignment="Right" Width="120" Height="25" Background="#FFFFFBFB" FontSize="14" Click="Button_ClearAll_Click"/>
<Button Content="Tout effacer" VerticalAlignment="Top" HorizontalAlignment="Right" Width="120" Height="25" Background="#FFFFFBFB" FontSize="14" Click="Button_ResetBoard_Click"/>
</Grid>

</ScrollViewer>
Expand All @@ -63,7 +68,7 @@
</Border>

<Viewbox x:Name="viewBox_tableau" Grid.Row="1" Margin="50,10,50,35" >
<local:UserControl_TableauDeSigne Width="{Binding ElementName=WidthSlider, Path=Value}" MinHeight="{Binding ElementName=HeightSlider, Path=Value}" x:Name="TableauDeSigne"/>
<local:UserControl_TableauDeSigne Width="{Binding ElementName=WidthSlider, Path=Value}" MinHeight="{Binding ElementName=HeightSlider, Path=Value}" x:Name="UC_TableauDeSigne"/>
</Viewbox>

<StackPanel Orientation="Horizontal" Grid.Row="1" Margin="0,5,0,5" HorizontalAlignment="Center" VerticalAlignment="Bottom" >
Expand Down
81 changes: 48 additions & 33 deletions SignaMath/MainWindow.xaml.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
using ClassLibrary;
using Microsoft.WindowsAPICodePack.Dialogs;
using Newtonsoft.Json;
using SignaMath.Classes;
using SignaMath.UC;
using System;
using System.Diagnostics;
using System.IO;
Expand All @@ -15,44 +17,46 @@ namespace SignaMath
/// </summary>
public partial class MainWindow : Window
{
internal static string VariableName { get; set; } = "x";
internal static MainWindow _MainWindow { get; set; }

private const string VERSION = "1.0.1";
private const string VERSION = "1.0.2";
internal static string BASE_URL { get; } = "https://zoneck.bsite.net";
private Software Software { get; set; }

internal static UserControl_TableauDeSigne TableauDeSigne { get; set; }

public MainWindow()
{
InitializeComponent();

_MainWindow = this;
Run_Version.Text = VERSION;
TableauDeSigne = UC_TableauDeSigne;

// Change la taille des lignes dans le tableau pour la taille souhaitée.
HeightHeaderSlider.ValueChanged += (sender, e) =>
{
TableauDeSigne.StackPanel_Row.Children.OfType<UserControl_TopRow>().ToList().ForEach(x =>
UC_TableauDeSigne.StackPanel_Row.Children.OfType<UserControl_Row>().ToList().ForEach(x =>
{
x.Height = e.NewValue;
if(x.RowType == RowType.HEADER)
x.Height = e.NewValue;
});
};
HeightTableauDeVariationSlider.ValueChanged += (sender, e) =>
{
TableauDeSigne.StackPanel_Row.Children.OfType<UserControl_TableauDeVariation>().ToList().ForEach(x =>
UC_TableauDeSigne.StackPanel_Row.Children.OfType<UserControl_Row>().ToList().ForEach(x =>
{
x.Height = e.NewValue;
if (x.RowType == RowType.TABLEAU_DE_VARIATION)
x.Height = e.NewValue;
});
};
HeightRowSlider.ValueChanged += (sender, e) =>
{
foreach (var control in TableauDeSigne.StackPanel_Row.Children)
UC_TableauDeSigne.StackPanel_Row.Children.OfType<UserControl_Row>().ToList().ForEach(x =>
{
if (control is UserControl_Row || control is UserControl_BottomRow)
{
((FrameworkElement)control).Height = e.NewValue;
}
}
if (x.RowType != RowType.HEADER)
x.Height = e.NewValue;
});
};
}

Expand All @@ -62,7 +66,7 @@ public MainWindow()
/// </summary>
private void Button_AddRow_Click(object sender, RoutedEventArgs e)
{
TableauDeSigne.StackPanel_Row.Children.Add(new UserControl_Row((UserControl_TopRow)TableauDeSigne.StackPanel_Row.Children[0], new Random().Next(999999)) { Height = HeightRowSlider.Value });
UC_TableauDeSigne.StackPanel_Row.Children.Add(new UserControl_Row(RowType.MIDDLE, new Random().Next(999999)) { Height = HeightRowSlider.Value });

button_AjoutLigneConcluante.IsEnabled = true;
button_AjoutTableauVariation.IsEnabled = true;
Expand All @@ -78,19 +82,19 @@ internal void Button_AjoutLigneConcluante_Click(object sender, RoutedEventArgs?
{
if (button_AjoutLigneConcluante.Content.ToString()!.Contains("Ajouter"))
{
TableauDeSigne.StackPanel_Row.Children.Add(new UserControl_BottomRow() { Height = HeightRowSlider.Value });
UC_TableauDeSigne.StackPanel_Row.Children.Add(new UserControl_Row(RowType.CONCLUANTE, new Random().Next(999999)) { Height = HeightRowSlider.Value });
button_AjoutLigneConcluante.Content = "Supprimer la ligne concluante";
}
else
{
TableauDeSigne.StackPanel_Row.Children.Remove(TableauDeSigne.StackPanel_Row.Children.OfType<UserControl_BottomRow>().ToList()[0]);
UC_TableauDeSigne.StackPanel_Row.Children.Remove(UC_TableauDeSigne.StackPanel_Row.Children.OfType<UserControl_Row>().ToList().First(x => x.RowType == RowType.CONCLUANTE));
button_AjoutLigneConcluante.Content = "Ajouter la ligne concluante";

// supprime aussi le tableau de variation
if (button_AjoutTableauVariation.Content.ToString()!.Contains("Supprimer"))
{
button_AjoutTableauVariation.Content = "Ajouter le tableau de variation";
TableauDeSigne.StackPanel_Row.Children.Remove(TableauDeSigne.StackPanel_Row.Children.OfType<UserControl_TableauDeVariation>().ToList()[0]);
UC_TableauDeSigne.StackPanel_Row.Children.Remove(UC_TableauDeSigne.StackPanel_Row.Children.OfType<UserControl_Row>().ToList().FindAll(x => x.RowType == RowType.TABLEAU_DE_VARIATION).First());
}
}
}
Expand All @@ -101,7 +105,7 @@ internal void Button_AjoutLigneConcluante_Click(object sender, RoutedEventArgs?
/// </summary>
private void Button_AddForbiddenValueRow_Click(object sender, RoutedEventArgs e)
{
TableauDeSigne.StackPanel_Row.Children.Add(new UserControl_Row((UserControl_TopRow)TableauDeSigne.StackPanel_Row.Children[0], new Random().Next(999999), true) { Height = HeightRowSlider.Value });
UC_TableauDeSigne.StackPanel_Row.Children.Add(new UserControl_Row(RowType.MIDDLE_INTERDITE, new Random().Next(999999)) { Height = HeightRowSlider.Value });

button_AjoutLigneConcluante.IsEnabled = true;
button_AjoutTableauVariation.IsEnabled = true;
Expand All @@ -116,14 +120,17 @@ private void MoveDownConclusionRow()
{
if (!button_AjoutLigneConcluante.Content.ToString()!.Contains("Ajouter"))
{
TableauDeSigne.StackPanel_Row.Children.Remove(TableauDeSigne.StackPanel_Row.Children.OfType<UserControl_BottomRow>().ToList()[0]);
TableauDeSigne.StackPanel_Row.Children.Add(new UserControl_BottomRow() { Height = HeightRowSlider.Value });
UC_TableauDeSigne.StackPanel_Row.Children.Remove(UC_TableauDeSigne.StackPanel_Row.Children.OfType<UserControl_Row>().ToList().First(x => x.RowType == RowType.CONCLUANTE));
UC_TableauDeSigne.StackPanel_Row.Children.Add(new UserControl_Row(RowType.CONCLUANTE, new Random().Next(999999)) { Height = HeightRowSlider.Value });
}

if (!button_AjoutTableauVariation.Content.ToString()!.Contains("Ajouter"))
{
TableauDeSigne.StackPanel_Row.Children.Remove(TableauDeSigne.StackPanel_Row.Children.OfType<UserControl_TableauDeVariation>().ToList()[0]);
TableauDeSigne.StackPanel_Row.Children.Add(new UserControl_TableauDeVariation(TableauDeSigne.StackPanel_Row.Children.OfType<UserControl_BottomRow>().ToList()[0]) { Height = HeightTableauDeVariationSlider.Value });
UC_TableauDeSigne.StackPanel_Row.Children.Remove(UC_TableauDeSigne.StackPanel_Row.Children.OfType<UserControl_Row>().ToList().First(x => x.RowType == RowType.TABLEAU_DE_VARIATION));
UC_TableauDeSigne.StackPanel_Row.Children.Add(new UserControl_Row(RowType.TABLEAU_DE_VARIATION, new Random().Next(999999))
{
Height = HeightTableauDeVariationSlider.Value,
});
}
}

Expand All @@ -140,17 +147,16 @@ internal void Button_AjoutTableauVariation_Click(object sender, RoutedEventArgs?
Button_AjoutLigneConcluante_Click(this, null);
}

UserControl_TableauDeVariation uc = new UserControl_TableauDeVariation(TableauDeSigne.StackPanel_Row.Children.OfType<UserControl_BottomRow>().First())
UC_TableauDeSigne.StackPanel_Row.Children.Add(new UserControl_Row(RowType.TABLEAU_DE_VARIATION, new Random().Next(999999))
{
Height= HeightTableauDeVariationSlider.Value,
};
TableauDeSigne.StackPanel_Row.Children.Add(uc);
Height = HeightTableauDeVariationSlider.Value,
});

button_AjoutTableauVariation.Content = "Supprimer le tableau de variation";
}
else
{
TableauDeSigne.StackPanel_Row.Children.Remove(TableauDeSigne.StackPanel_Row.Children.OfType<UserControl_TableauDeVariation>().ToList()[0]);
UC_TableauDeSigne.StackPanel_Row.Children.Remove(UC_TableauDeSigne.StackPanel_Row.Children.OfType<UserControl_Row>().ToList().FindAll(x => x.RowType == RowType.TABLEAU_DE_VARIATION).First());
button_AjoutTableauVariation.Content = "Ajouter le tableau de variation";
}
}
Expand All @@ -168,6 +174,7 @@ private void button_Save_Click(object sender, RoutedEventArgs e)
{
try
{
MainWindow._MainWindow.Cursor = System.Windows.Input.Cursors.Wait;
Extension.Extension.WriteToPng(viewBox_tableau, dialog.FileName + @"\tableau" + DateTime.Now.ToString("hh_mm_ss") + ".png");
try
{
Expand All @@ -177,9 +184,12 @@ private void button_Save_Click(object sender, RoutedEventArgs e)
}
catch
{
MainWindow._MainWindow.Cursor = System.Windows.Input.Cursors.Arrow;
MessageBox.Show("Désolé, un problème est survenu !");
}
finally
{
MainWindow._MainWindow.Cursor = System.Windows.Input.Cursors.Arrow;
}
}
}

Expand Down Expand Up @@ -209,11 +219,15 @@ private void button_Copy_Click(object sender, RoutedEventArgs e)
{
try
{
MainWindow._MainWindow.Cursor = System.Windows.Input.Cursors.Wait;
Extension.Extension.WriteToPng(viewBox_tableau, string.Empty, true);
}
catch
{
MessageBox.Show("Désolé, un problème est survenu !");
}
finally
{
MainWindow._MainWindow.Cursor = System.Windows.Input.Cursors.Arrow;
}
}
Expand Down Expand Up @@ -334,15 +348,16 @@ private void Button_CloseUpdate_Click(object sender, RoutedEventArgs e)
/// <summary>
/// Supprime toutes les rows du tableau
/// </summary>
private void Button_ClearAll_Click(object sender, RoutedEventArgs e)
private void Button_ResetBoard_Click(object sender, RoutedEventArgs e)
{
TableauDeSigne.StackPanel_Row.Children.RemoveRange(1, TableauDeSigne.StackPanel_Row.Children.Count - 1);
TableauDeSigne.StackPanel_Row.Children.OfType<UserControl_TopRow>().First().RightSideElements.Clear();
TableauDeSigne.StackPanel_Row.Children.OfType<UserControl_TopRow>().First().UpdateRightSideElement();
TableauDeSigne.StackPanel_Row.Children.OfType<UserControl_TopRow>().First().Txtbox_BornLeft.textBox_clear.Text = "-\\infty";
TableauDeSigne.StackPanel_Row.Children.OfType<UserControl_TopRow>().First().Txtbox_BornRight.textBox_clear.Text = "+\\infty";
TableauDeSigne.StackPanel_Row.Children.RemoveRange(1, TableauDeSigne.StackPanel_Row.Children.Count -1);
GlobalVariable.TableColumns.Clear();
button_AjoutTableauVariation.Content = "Ajouter le tableau de variation";
button_AjoutLigneConcluante.Content = "Ajouter la ligne concluante";
button_AjoutTableauVariation.IsEnabled = false;
button_AjoutLigneConcluante.IsEnabled = false;

GlobalVariable.UpdateBoard();
}
}
}
Loading

0 comments on commit eff06b5

Please sign in to comment.