using PaintDotNet.Base.CommTool;
using PaintDotNet.Base.SettingModel;
using PaintDotNet.File.BatchSaveComponet;
using System;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
namespace PaintDotNet.File.UnsavedProcessing
{
///
/// 关闭保存
///
internal class UnsavedProcessingDialog : PdnBaseForm
{
#region 属性
private DataGridView DataInformationView;
private Panel panel1;
private Panel panel2;
private Button btn_Close;
private Button btn_SelectAll;
private Button btn_NotAll;
private Button btn_Determine;
private AppWorkspace appWorkspace;
private DocumentWorkspace closeMe;
private DataGridViewCheckBoxColumn Column1;
private DataGridViewTextBoxColumn Column2;
private DataGridViewTextBoxColumn Column3;
private DataGridViewTextBoxColumn Column4;
private DataGridViewButtonColumn Column5;
private bool cancelled;
public bool Cancelled
{
get
{
return this.cancelled;
}
}
#endregion
#region 构造函数
public UnsavedProcessingDialog(AppWorkspace appWorkspace)
{
this.appWorkspace = appWorkspace;
InitializeComponent();
InitializeLanguageText();
}
#endregion
#region 事件
private void UnsavedProcessingDialog_SizeChanged(object sender, EventArgs e)
{
DataInformationView.Columns[0].Width = 40;//设置保存列宽度
DataInformationView.Columns[1].Width = 200;//设置名称列宽度
DataInformationView.Columns[2].Width = 70;//设置类型列宽度
DataInformationView.Columns[3].Width = DataInformationView.Width - 353;//设置路径列宽度
DataInformationView.Columns[4].Width = 40;//设置浏览列宽度
}
private void UnsavedProcessingDialog_Load(object sender, EventArgs e)
{
DisplayNotSaved();
}
///
/// 确定
///
///
///
private void btn_Determine_Click(object sender, EventArgs e)
{
if (this.DataInformationView.Rows.Count > 0)
{
for (int i = 0; i < this.DataInformationView.Rows.Count; i++)
{
DataGridViewCheckBoxCell checkCell = (DataGridViewCheckBoxCell)DataInformationView.Rows[i].Cells[0];
bool isSave = Convert.ToBoolean(checkCell.Value);
if (isSave)
{
string path = this.DataInformationView.Rows[i].Cells[3].Value.ToString();
if (!Directory.Exists(path))//判断是否存在
{
MessageBox.Show(path + " 路径不存在!");
return;
}
}
}
}
int Length = this.appWorkspace.DocumentWorkspaces.Length;
for (int i = 0; i < Length; i++) PerformAction();
this.DialogResult = DialogResult.OK;
this.Close();
}
///
/// 全不选
///
///
///
private void btn_NotAll_Click(object sender, EventArgs e)
{
if (this.DataInformationView.Rows.Count > 0)
{
for (int i = 0; i < this.DataInformationView.Rows.Count; i++)
{
this.DataInformationView.Rows[i].Cells[0].Value = false;
}
}
}
///
/// 选择所有
///
///
///
private void btn_SelectAll_Click(object sender, EventArgs e)
{
if (this.DataInformationView.Rows.Count > 0)
{
for (int i = 0; i < this.DataInformationView.Rows.Count; i++)
{
this.DataInformationView.Rows[i].Cells[0].Value = true;
}
}
}
///
/// 取消
///
///
///
private void btn_Close_Click(object sender, EventArgs e)
{
this.cancelled = true;
this.Close();
}
///
/// 点击浏览选择路径
///
///
///
private void DataInformationView_CellClick(object sender, DataGridViewCellEventArgs e)
{
try
{
if (e.ColumnIndex == -1 || e.RowIndex == -1) return;
DataGridViewCell cell = this.DataInformationView.Rows[e.RowIndex].Cells[e.ColumnIndex];
if (e.ColumnIndex == 4 /*cell.Value.ToString() == "浏览"*/ )
{
FolderBrowserDialog folderBrowserDialog1 = new FolderBrowserDialog();
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
string path = folderBrowserDialog1.SelectedPath;
this.DataInformationView.Rows[e.RowIndex].Cells[3].Value = path;
}
}
}
catch (Exception ex)
{
}
}
#endregion
#region 方法
///
/// 控件初始化
///
private void InitializeComponent()
{
this.DataInformationView = new System.Windows.Forms.DataGridView();
this.Column1 = new System.Windows.Forms.DataGridViewCheckBoxColumn();
this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column3 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column4 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column5 = new System.Windows.Forms.DataGridViewButtonColumn();
this.panel1 = new System.Windows.Forms.Panel();
this.panel2 = new System.Windows.Forms.Panel();
this.btn_Close = new System.Windows.Forms.Button();
this.btn_SelectAll = new System.Windows.Forms.Button();
this.btn_NotAll = new System.Windows.Forms.Button();
this.btn_Determine = new System.Windows.Forms.Button();
((System.ComponentModel.ISupportInitialize)(this.DataInformationView)).BeginInit();
this.panel1.SuspendLayout();
this.panel2.SuspendLayout();
this.SuspendLayout();
//
// DataInformationView
//
this.DataInformationView.AllowUserToAddRows = false;
this.DataInformationView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.DataInformationView.BackgroundColor = System.Drawing.SystemColors.Control;
this.DataInformationView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.DataInformationView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.Column1,
this.Column2,
this.Column3,
this.Column4,
this.Column5});
this.DataInformationView.Location = new System.Drawing.Point(0, 0);
this.DataInformationView.Name = "DataInformationView";
this.DataInformationView.RowHeadersVisible = false;
this.DataInformationView.RowTemplate.Height = 23;
this.DataInformationView.Size = new System.Drawing.Size(694, 352);
this.DataInformationView.TabIndex = 0;
this.DataInformationView.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.DataInformationView_CellClick);
//
// Column1
//
this.Column1.HeaderText = PdnResources.GetString("CloseWorkspaceAction.SaveButton.ActionText");
this.Column1.Name = "Column1";
this.Column1.Width = 40;
//
// Column2
//
this.Column2.HeaderText = PdnResources.GetString("Menu.name.text");
this.Column2.Name = "Column2";
this.Column2.Width = 200;
//
// Column3
//
this.Column3.HeaderText = PdnResources.GetString("Menu.Type.text");
this.Column3.Name = "Column3";
this.Column3.Width = 70;
//
// Column4
//
this.Column4.HeaderText = PdnResources.GetString("Path.text");
this.Column4.Name = "Column4";
this.Column4.Width = 326;
//
// Column5
//
this.Column5.HeaderText = "";
this.Column5.Name = "Column5";
this.Column5.Width = 55;
//
// panel1
//
this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.panel1.Controls.Add(this.DataInformationView);
this.panel1.Location = new System.Drawing.Point(6, 7);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(694, 352);
this.panel1.TabIndex = 5;
//
// panel2
//
this.panel2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.panel2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.panel2.Controls.Add(this.btn_Close);
this.panel2.Controls.Add(this.btn_SelectAll);
this.panel2.Controls.Add(this.btn_NotAll);
this.panel2.Controls.Add(this.btn_Determine);
this.panel2.Location = new System.Drawing.Point(6, 364);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(694, 40);
this.panel2.TabIndex = 6;
//
// btn_Close
//
this.btn_Close.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btn_Close.Location = new System.Drawing.Point(603, 7);
this.btn_Close.Name = "btn_Close";
this.btn_Close.Size = new System.Drawing.Size(75, 23);
this.btn_Close.TabIndex = 3;
this.btn_Close.Text = "取消";
this.btn_Close.UseVisualStyleBackColor = true;
this.btn_Close.Click += new System.EventHandler(this.btn_Close_Click);
//
// btn_SelectAll
//
this.btn_SelectAll.Location = new System.Drawing.Point(93, 7);
this.btn_SelectAll.Name = "btn_SelectAll";
this.btn_SelectAll.Size = new System.Drawing.Size(75, 23);
this.btn_SelectAll.TabIndex = 1;
this.btn_SelectAll.Text = "选择所有";
this.btn_SelectAll.UseVisualStyleBackColor = true;
this.btn_SelectAll.Click += new System.EventHandler(this.btn_SelectAll_Click);
//
// btn_NotAll
//
this.btn_NotAll.Location = new System.Drawing.Point(12, 7);
this.btn_NotAll.Name = "btn_NotAll";
this.btn_NotAll.Size = new System.Drawing.Size(75, 23);
this.btn_NotAll.TabIndex = 0;
this.btn_NotAll.Text = "全不选";
this.btn_NotAll.UseVisualStyleBackColor = true;
this.btn_NotAll.Click += new System.EventHandler(this.btn_NotAll_Click);
//
// btn_Determine
//
this.btn_Determine.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btn_Determine.Location = new System.Drawing.Point(522, 7);
this.btn_Determine.Name = "btn_Determine";
this.btn_Determine.Size = new System.Drawing.Size(75, 23);
this.btn_Determine.TabIndex = 2;
this.btn_Determine.Text = "确定";
this.btn_Determine.UseVisualStyleBackColor = true;
this.btn_Determine.Click += new System.EventHandler(this.btn_Determine_Click);
//
// UnsavedProcessingDialog
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(706, 411);
this.Controls.Add(this.panel2);
this.Controls.Add(this.panel1);
this.MinimumSize = new System.Drawing.Size(722, 450);
this.Name = "UnsavedProcessingDialog";
this.ShowIcon = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "保存文件";
this.TopMost = true;
this.Load += new System.EventHandler(this.UnsavedProcessingDialog_Load);
this.SizeChanged += new System.EventHandler(this.UnsavedProcessingDialog_SizeChanged);
this.Controls.SetChildIndex(this.panel1, 0);
this.Controls.SetChildIndex(this.panel2, 0);
((System.ComponentModel.ISupportInitialize)(this.DataInformationView)).EndInit();
this.panel1.ResumeLayout(false);
this.panel2.ResumeLayout(false);
this.ResumeLayout(false);
}
private void InitializeLanguageText()
{
this.btn_Determine.Text = PdnResources.GetString("Menu.ensure.text");
this.btn_Close.Text = PdnResources.GetString("CloseWorkspaceAction.CancelButton.ActionText");
this.btn_NotAll.Text = PdnResources.GetString("Menu.Binaryoperation.Objecthandling.unselectall.text");
this.btn_SelectAll.Text = PdnResources.GetString("SelectAll.text");
this.Text = PdnResources.GetString("SaveFile.text");
}
///
/// 初始化
///
private void DisplayNotSaved()
{
this.DataInformationView.Columns[2].ReadOnly = true;
this.DataInformationView.Columns[3].ReadOnly = true;
foreach (DocumentWorkspace document in this.appWorkspace.DocumentWorkspaces)
{
if (document.Document.Dirty)
{
string imgName = document.GetFriendlyName();
string imgType = string.Empty;
int index = 0;
if (imgName.Contains("."))
{
index = imgName.LastIndexOf('.');
imgType = imgName.Substring(index);
imgName = imgName.Substring(0, index);
}
else
imgType = ".jpg";
//获取图片路径
string fileName;
//FileType fileType;
//SaveConfigToken saveConfigToken;
document.GetDocumentSaveOptions(out fileName/*, out fileType, out saveConfigToken*/);
string path = Path.GetDirectoryName(fileName);
this.DataInformationView.Rows.Add(true, imgName, imgType, fileName != null ? path : Startup.instance.configModel.HardFilePath != null ? Startup.instance.configModel.HardFilePath : Environment.GetFolderPath(Environment.SpecialFolder.MyPictures), PdnResources.GetString("Menu.browse.Text"));
this.DataInformationView.Rows[this.DataInformationView.Rows.Count - 1].Tag = document;
}
}
}
///
/// 保存与关闭Document
///
public void PerformAction()
{
if (appWorkspace == null)
throw new ArgumentNullException("appWorkspace");
appWorkspace.ActiveDocumentWorkspace.GraphicsList.UnselectAll();
DocumentWorkspace dw;
if (this.closeMe == null)
{
if (appWorkspace.toRemoveDocumentWorkspaceIndex >= 0 && appWorkspace.toRemoveDocumentWorkspaceIndex < appWorkspace.DocumentWorkspaces.Length)
{
dw = appWorkspace.DocumentWorkspaces[appWorkspace.toRemoveDocumentWorkspaceIndex];
appWorkspace.toRemoveDocumentWorkspaceIndex = -1;
}
else
dw = appWorkspace.ActiveDocumentWorkspace;
}
else
{
dw = this.closeMe;
}
if (dw != null)
{
if (dw.Document == null)
appWorkspace.RemoveDocumentWorkspace(dw);
else if (!dw.Document.Dirty)
appWorkspace.RemoveDocumentWorkspace(dw);
else
{
appWorkspace.ActiveDocumentWorkspace = dw;
Image taskImage = DrawRulerHelper.ResizeImage(appWorkspace.ActiveDocumentWorkspace.CompositionSurface.CreateAliasedBitmap(), 115, 86, Base.Enum.ThumbnailMode.Cut);
Form mainForm = appWorkspace.FindForm();
if (mainForm != null)
{
PdnBaseForm asPDF = mainForm as PdnBaseForm;
if (asPDF != null) asPDF.RestoreWindow();
}
Icon warningIcon;
ImageResource warningIconImageRes = PdnResources.GetImageResource("Icons.WarningIcon.png");
if (warningIconImageRes != null)
{
Image warningIconImage = warningIconImageRes.Reference;
warningIcon = Utility.ImageToIcon(warningIconImage, false);
}
else
warningIcon = null;
bool save = false;
if (this.DataInformationView.Rows.Count > 0)
{
for (int i = 0; i < this.DataInformationView.Rows.Count; i++)
{
if ((DocumentWorkspace)(this.DataInformationView.Rows[i].Tag) == dw)
{
DataGridViewCheckBoxCell checkCell = (DataGridViewCheckBoxCell)DataInformationView.Rows[i].Cells[0];
save = Convert.ToBoolean(checkCell.Value);
dw.fileText = DataInformationView.Rows[i].Cells[1].Value.ToString() + DataInformationView.Rows[i].Cells[2].Value.ToString();
dw.UpdateDw2buttonName(dw.fileText);
dw.picName = dw.fileText;
dw.filePath = DataInformationView.Rows[i].Cells[3].Value.ToString() +"\\" + dw.fileText;
this.DataInformationView.Rows.Remove(this.DataInformationView.Rows[i]);
break;
}
}
}
if (save)
{
if (dw.DoSaveNew())
{
this.cancelled = false;
if (!dw.IsDisposed)
appWorkspace.RemoveDocumentWorkspace(dw);
}
else
this.cancelled = true;
}
else /*if (!save)*/
{
this.cancelled = false;
if (!dw.IsDisposed)
appWorkspace.RemoveDocumentWorkspace(dw);
}
//else
//{
// this.cancelled = true;
//}
}
}
Utility.GCFullCollect();
}
#endregion
}
}