-
Notifications
You must be signed in to change notification settings - Fork 0
/
App.xaml.cs
140 lines (117 loc) · 3.87 KB
/
App.xaml.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.Windows;
using System.IO;
using CircuitPro.CircuitModel;
namespace CircuitPro
{
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
public CircuitModel.Circuit circuit;
private bool modificat = false;
private string numeFisier = "";
private static readonly string filters = "Diagramă circuit|*.cpro|Toate fișierele|*.*";
// ------------- Operatii ---------------
public void DocumentNou()
{
if(InchidereFisier())
{
SetareCircuit();
}
}
public void Salvare()
{
if(numeFisier == "")
{
// setari dialog
SaveFileDialog saveFileDialog = new SaveFileDialog
{
Title = "Salvează circuit",
FileName = "Circuit nou",
DefaultExt = ".cpro",
Filter = filters
};
// afisare dialog
if (saveFileDialog.ShowDialog() != true)
{
return;
}
// selectare nume fisier
numeFisier = saveFileDialog.FileName;
}
// salvare circuit
string json = circuit.Serialize();
File.WriteAllText(numeFisier, json);
SetModificat(false);
}
public void Deschidere()
{
if(!InchidereFisier())
{
return;
}
// setari dialog
OpenFileDialog openFileDialog = new OpenFileDialog { Title = "Deschide circuit", Filter = filters };
// afisare dialog
if(openFileDialog.ShowDialog() == true)
{
// deschidere circuit
try
{
string json = File.ReadAllText(openFileDialog.FileName);
Circuit c = Circuit.Deserialize(json);
SetareCircuit(c, openFileDialog.FileName);
}
catch (Exception e)
{
MessageBox.Show(e.Message, "Eroare deschidere fișier", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
}
public bool InchidereFisier()
{
if (modificat)
{
MessageBoxResult res = MessageBox.Show("Doriți să salvați modificările?", "Închidere fișier", MessageBoxButton.YesNoCancel, MessageBoxImage.Question, MessageBoxResult.Yes);
if(res == MessageBoxResult.Yes)
{
Salvare();
return true;
}
return res == MessageBoxResult.No;
}
return true;
}
public void SetModificat(bool mod = true)
{
modificat = mod;
ActualizareTitlu();
}
public bool CanDocumentNou()
{
return modificat || numeFisier != "";
}
// ----------- Gestiune date ------------
private void SetareCircuit(Circuit c = null, string fileName = "")
{
// actualizare model
circuit = c ?? new Circuit();
numeFisier = fileName;
modificat = false;
// actualizare view
((MainWindow)MainWindow).UpdateCircuit();
ActualizareTitlu();
}
private void ActualizareTitlu()
{
string aplicatie = "Circuit Pro";
string fisier = numeFisier == "" ? "Circuit nou" : Path.GetFileName(numeFisier);
string decorator = modificat ? "* " : "";
MainWindow.Title = $"{decorator}{fisier} - {aplicatie}";
}
}
}