forked from aosoft/azuki
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathActions.File.cs
175 lines (151 loc) · 3.88 KB
/
Actions.File.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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
using System;
using System.IO;
using System.Text;
using System.Windows.Forms;
namespace Sgry.Ann
{
delegate void AnnAction( AppLogic app );
static partial class Actions
{
#region Document
/// <summary>
/// Creates a new empty document.
/// </summary>
public static AnnAction CreateNewDocument
= delegate( AppLogic app )
{
app.CreateNewDocument();
};
/// <summary>
/// Shows a dialog and opens a file.
/// </summary>
public static AnnAction OpenDocument
= delegate( AppLogic app )
{
app.OpenDocument();
};
/// <summary>
/// Save document with another file name.
/// </summary>
public static AnnAction SaveDocumentAs
= delegate( AppLogic app )
{
app.SaveDocumentAs( app.ActiveDocument );
};
/// <summary>
/// Save file.
/// </summary>
public static AnnAction SaveDocument
= delegate( AppLogic app )
{
app.SaveDocument( app.ActiveDocument );
};
public static void ChangeEncoding_Auto( AppLogic app )
{
ChangeEncoding( app, null, null );
}
public static void ChangeEncoding_SJIS( AppLogic app )
{
ChangeEncoding( app, Encoding.GetEncoding("Shift_JIS"), false );
}
public static void ChangeEncoding_JIS( AppLogic app )
{
ChangeEncoding( app, Encoding.GetEncoding("iso-2022-jp"), false );
}
public static void ChangeEncoding_EUCJP( AppLogic app )
{
ChangeEncoding( app, Encoding.GetEncoding("EUC-JP"), false );
}
public static void ChangeEncoding_UTF8( AppLogic app )
{
ChangeEncoding( app, Encoding.UTF8, false );
}
public static void ChangeEncoding_UTF8B( AppLogic app )
{
ChangeEncoding( app, Encoding.UTF8, true );
}
public static void ChangeEncoding_UTF16LE( AppLogic app )
{
ChangeEncoding( app, Encoding.Unicode, false );
}
public static void ChangeEncoding_UTF16LEB( AppLogic app )
{
ChangeEncoding( app, Encoding.Unicode, true );
}
public static void ChangeEncoding_UTF16BE( AppLogic app )
{
ChangeEncoding( app, Encoding.BigEndianUnicode, false );
}
public static void ChangeEncoding_UTF16BEB( AppLogic app )
{
ChangeEncoding( app, Encoding.BigEndianUnicode, true );
}
/// <summary>
/// Close active document.
/// </summary>
public static AnnAction CloseDocument
= delegate( AppLogic app )
{
app.CloseDocument( app.ActiveDocument );
};
/// <summary>
/// Toggles read-only mode on or off.
/// </summary>
public static AnnAction ToggleReadOnlyMode
= delegate( AppLogic app )
{
// toggle read-only mode
app.ActiveDocument.IsReadOnly = !( app.ActiveDocument.IsReadOnly );
// update menu item's check state
app.MainForm.UpdateUI();
};
/// <summary>
/// Opens the application's settings file.
/// </summary>
public static void OpenSettingsFile( AppLogic app )
{
app.OpenDocument( AppConfig.IniFilePath );
}
/// <summary>
/// Close all documents and exit application.
/// </summary>
public static AnnAction Exit
= delegate( AppLogic app )
{
app.MainForm.Close();
};
#endregion
static void ChangeEncoding( AppLogic app, Encoding enc, bool? withBom )
{
Document doc = app.ActiveDocument;
doc.Encoding = enc;
doc.WithBom = withBom ?? false;
if( enc != null && doc.FilePath != null )
{
DialogResult result = app.ConfirmReloadOrJustChangeEncoding(doc, enc);
if( result != DialogResult.Yes )
{
app.MainForm.UpdateUI();
return;
}
}
if( doc.IsDirty )
{
DialogResult result = app.AlertBeforeDiscarding( doc );
if( result != DialogResult.Yes )
{
app.MainForm.UpdateUI();
return;
}
}
if( app.ActiveDocument.FilePath != null )
{
app.ReloadDocument( app.ActiveDocument, enc, false );
}
else
{
app.MainForm.UpdateUI();
}
}
}
}