You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
440 lines
14 KiB
C#
440 lines
14 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
using ComponentFactory.Krypton.Docking;
|
|
using ComponentFactory.Krypton.Navigator;
|
|
using ComponentFactory.Krypton.Toolkit;
|
|
using ComponentFactory.Krypton.Workspace;
|
|
using System.Runtime.InteropServices;
|
|
using UCDraw.UC;
|
|
using System.IO;
|
|
using UCDraw;
|
|
using GeoSigma.UCDraw;
|
|
using UCDraw.Editor;
|
|
//using SymbolLibManager;
|
|
|
|
namespace LibTest
|
|
{
|
|
public partial class FormMain : Form
|
|
{
|
|
int nViewCount = 0;
|
|
MainView viewerCur;
|
|
|
|
public FormMain()
|
|
{
|
|
InitializeComponent();
|
|
|
|
//this.WindowState = FormWindowState.Maximized;
|
|
}
|
|
|
|
private void Form1_Load(object sender, EventArgs e)
|
|
{
|
|
//KryptonDockingWorkspace ws = dockingManager.ManageWorkspace(dockableWorkspace);
|
|
//dockingManager.ManageControl(kryptonPanel1, ws);
|
|
//dockingManager.ManageFloating(this);
|
|
|
|
//OpenFile("c:\\temp\\钻探目标分布图.dfd");
|
|
//OpenFile("c:\\temp\\某地区射层层深度构造图.dfd");
|
|
}
|
|
|
|
private KryptonPage CreateNewPage(MainView viewer, string pageText)
|
|
{
|
|
FileInfo fi = new FileInfo(pageText);
|
|
//KryptonWorkspaceCell cell = dockableWorkspace.ActiveCell;
|
|
//if (cell==null)
|
|
//{
|
|
// cell=new KryptonWorkspaceCell();
|
|
// dockableWorkspace.Root.Children.Add(cell);
|
|
// cell.SelectedPageChanged+=Cell_SelectedPageChanged;
|
|
//}
|
|
//cell.CloseAction += OnClsoeAction;
|
|
|
|
KryptonPage pageView = new KryptonPage();
|
|
//pageView.StateSelected.Tab.Back.Color1 = System.Drawing.SystemColors.GradientActiveCaption;
|
|
//pageView.StateSelected.Tab.Back.Color2 = System.Drawing.SystemColors.GradientInactiveCaption;
|
|
//pageView.Text=fi.Name;
|
|
//pageView.TextTitle=pageView.Text;
|
|
//pageView.TextDescription=pageView.Text;
|
|
//pageView.ToolTipStyle= LabelStyle.ToolTip;
|
|
//pageView.ToolTipTitle=fi.FullName;
|
|
//pageView.UniqueName=viewer.ID+"";
|
|
//// Create a close button for the page
|
|
//ButtonSpecAny bsa = new ButtonSpecAny();
|
|
//bsa.Tag=pageView;
|
|
//bsa.Type=PaletteButtonSpecStyle.Close;
|
|
//bsa.Click+=new EventHandler(OnClosePage);
|
|
//pageView.ButtonSpecs.Add(bsa);
|
|
|
|
//// Add the control for display inside the page
|
|
//viewer.Dock=DockStyle.Fill;
|
|
//pageView.Controls.Add(viewer);
|
|
|
|
////viewers.Add(viewerCur);
|
|
//viewerCur=viewer;
|
|
////// Add docking pages
|
|
////cell.Pages.Add(pageView);
|
|
////cell.SelectedPage=pageView;
|
|
//viewerCur.MouseMoveXYEvent += ShowMouseXY;
|
|
return pageView;
|
|
}
|
|
|
|
private void OnClosePage(object sender, EventArgs e)
|
|
{
|
|
// Find the page this button is contained within
|
|
ButtonSpecAny bsa = (ButtonSpecAny)sender;
|
|
//KryptonPage page = (KryptonPage)bsa.Tag;
|
|
// Close the page
|
|
ClosePage((KryptonPage)bsa.Tag);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 关闭页面
|
|
/// </summary>
|
|
/// <param name="page">要闭关的页面</param>
|
|
/// <returns>true-取消闭关 false--关闭</returns>
|
|
//ToFix:这个规定返回值是否不合理
|
|
private bool ClosePage(KryptonPage page)
|
|
{
|
|
// We must have a page to actually close
|
|
if (page!=null)
|
|
{
|
|
//<Added by sjc>
|
|
bool bModified = false;
|
|
if (viewerCur !=null && viewerCur.IsDocumentModified())
|
|
{
|
|
bModified = true;
|
|
}
|
|
//</Added by sjc>
|
|
|
|
// If the page is dirty then we need to ask if it should be saved
|
|
if (page.Text.EndsWith("*") || bModified)
|
|
{
|
|
switch (MessageBox.Show("是否将修改保存到'"+page.Text.TrimEnd('*')+"' ?",
|
|
"关闭文档", MessageBoxButtons.YesNoCancel))
|
|
{
|
|
case DialogResult.Cancel:
|
|
// Returning true indicates the operation was cancelled
|
|
return true;
|
|
case DialogResult.Yes:
|
|
btnSaveFile_Click(null, null);
|
|
break;
|
|
case DialogResult.No:
|
|
break;
|
|
}
|
|
}
|
|
// Remove the page from the containing cell
|
|
//KryptonWorkspaceCell cell = dockableWorkspace.CellForPage(page);
|
|
//cell.Pages.Remove(page);
|
|
//page.Dispose();
|
|
}
|
|
return false;
|
|
}
|
|
private void SetDirtyFlag(bool isDirty)
|
|
{
|
|
//KryptonPage pageView = dockableWorkspace.ActivePage;
|
|
//if (pageView==null) return;
|
|
//SetDirtyFlag(pageView, isDirty);
|
|
}
|
|
private void SetDirtyFlag(KryptonPage pageView, bool isDirty)
|
|
{
|
|
if (!isDirty)
|
|
{
|
|
pageView.Text=pageView.Text.TrimEnd('*');
|
|
pageView.TextTitle=pageView.TextTitle.TrimEnd('*');
|
|
pageView.TextDescription=pageView.TextDescription.TrimEnd('*');
|
|
}
|
|
else
|
|
{
|
|
pageView.Text=pageView.Text.TrimEnd('*')+"*";
|
|
pageView.TextTitle=pageView.TextTitle.TrimEnd('*')+"*";
|
|
pageView.TextDescription=pageView.TextDescription.TrimEnd('*')+"*";
|
|
}
|
|
}
|
|
private void SetTitle(string fullFileName)
|
|
{
|
|
//KryptonPage pageView = dockableWorkspace.ActivePage;
|
|
//if (pageView==null) return;
|
|
//FileInfo fi = new FileInfo(fullFileName);
|
|
//pageView.Text=fi.Name;
|
|
//pageView.TextTitle=pageView.Text;
|
|
//pageView.TextDescription=pageView.Text;
|
|
//pageView.ToolTipStyle=LabelStyle.ToolTip;
|
|
//pageView.ToolTipTitle=fi.FullName;
|
|
}
|
|
/// <summary>
|
|
/// 新建图形
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void btnNewFile_Click(object sender, EventArgs e)
|
|
{
|
|
NewFile();
|
|
}
|
|
|
|
private void NewFile()
|
|
{
|
|
//MainView viewer = new MainView();
|
|
//if (viewer.NewFile() == false)
|
|
//{
|
|
// return;
|
|
//}
|
|
//string strPageText = "图形 " + (++nViewCount);
|
|
//KryptonPage pageView = CreateNewPage(viewer, strPageText);
|
|
//SetDirtyFlag(pageView, true);
|
|
//viewer.LoadLayerTree();
|
|
}
|
|
|
|
private void btnOpenFile_Click(object sender, EventArgs e)
|
|
{
|
|
string[] fileNames = DocHelper.SelectMutiFiles();
|
|
foreach (var item in fileNames)
|
|
{
|
|
if (string.IsNullOrEmpty(item))
|
|
{
|
|
OpenFile(item);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void OpenFile(string fileName)
|
|
{
|
|
//MainView viewer = new MainView();
|
|
//if (viewer.OpenFile(fileName)==false)
|
|
//{
|
|
// return;
|
|
//}
|
|
////string strPageText = "图形 "+(nViewCount+1);
|
|
//CreateNewPage(viewer, fileName);
|
|
//viewer.DrawerGotFocus+=Viewer_DrawerGotFocus;
|
|
}
|
|
/// <summary>
|
|
/// 文件保存
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void btnSaveFile_Click(object sender, EventArgs e)
|
|
{
|
|
SaveFile();
|
|
}
|
|
|
|
private void SaveFile()
|
|
{
|
|
if (viewerCur == null) return;
|
|
if (viewerCur.SaveFile())
|
|
{
|
|
SetTitle(viewerCur.FileFullName);
|
|
//SetDirtyFlag(false);
|
|
//UpdateApplicationTitle();
|
|
}
|
|
}
|
|
|
|
private void btnSaveAs_Click(object sender, EventArgs e)
|
|
{
|
|
if (viewerCur==null) return;
|
|
if (viewerCur.SaveAs())
|
|
{
|
|
SetTitle(viewerCur.FileFullName);
|
|
//SetDirtyFlag(false);
|
|
}
|
|
}
|
|
private void Viewer_DrawerGotFocus(object sender, EventArgs e)
|
|
{
|
|
//MessageBox.Show(sender.ToString());
|
|
}
|
|
|
|
private void Cell_SelectedPageChanged(object sender, EventArgs e)
|
|
{
|
|
//修复Bug:当新建/打开一个文档后 viewerCur未能指向新的MainView
|
|
//出错原因:dockableWorkspace.ActivePage获得的是未新建/打开文档前的当前文档
|
|
KryptonWorkspaceCell cell = sender as KryptonWorkspaceCell;
|
|
if (cell == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
KryptonPage pageView = cell.SelectedPage;
|
|
if (pageView==null) return;
|
|
if(pageView.Controls.Count>0)
|
|
viewerCur = pageView.Controls[0] as MainView;
|
|
|
|
//KryptonPage pageView = dockableWorkspace.ActivePage;
|
|
//if (pageView==null) return;
|
|
//if(pageView.Controls.Count>0)
|
|
// viewerCur = pageView.Controls[0] as MainView;
|
|
}
|
|
|
|
/*从最右侧点击X 来关闭一个页面 会调这个函数三次 我难以解决此问题 暂时屏蔽掉
|
|
//响应最右侧的关闭按钮触发的关闭事件
|
|
private void OnClsoeAction(object sender, CloseActionEventArgs e)
|
|
{
|
|
KryptonPage page = dockableWorkspace.ActivePage;
|
|
|
|
MainView viewer = null;
|
|
if (page.Controls.Count > 0)
|
|
viewer = page.Controls[0] as MainView;
|
|
if (viewer == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
bool bModified = false;
|
|
if (viewer.IsDocumentModified())
|
|
{
|
|
bModified = true;
|
|
}
|
|
|
|
if (bModified == false)
|
|
return;
|
|
|
|
DialogResult result = MessageBox.Show("是否将修改保存到'" + page.Text.TrimEnd('*') + "' ?", "关闭文档",
|
|
MessageBoxButtons.YesNoCancel);
|
|
if (result == DialogResult.OK)
|
|
{
|
|
btnSaveFile_Click(null, null);
|
|
}
|
|
else if (result == DialogResult.Cancel)
|
|
{
|
|
e.Action = CloseButtonAction.None;
|
|
}
|
|
}
|
|
*/
|
|
|
|
private void layerTree_Click(object sender, EventArgs e)
|
|
{
|
|
viewerCur.LayerVisible=!viewerCur.LayerVisible;
|
|
}
|
|
|
|
private void btnPropertyShow_Click(object sender, EventArgs e)
|
|
{
|
|
viewerCur.PropertyVisible=!viewerCur.PropertyVisible;
|
|
}
|
|
|
|
private void tsbToolElement_Click(object sender, EventArgs e)
|
|
{
|
|
viewerCur.ToolElementVisible=!viewerCur.ToolElementVisible;
|
|
}
|
|
|
|
private void tsbPrint_Click(object sender, EventArgs e)
|
|
{
|
|
viewerCur.PrintDraw();
|
|
}
|
|
|
|
private enum KeyModifiers
|
|
{
|
|
None = 0,
|
|
Alt = 1,
|
|
Control = 2,
|
|
Shift = 4,
|
|
Windows = 8
|
|
}
|
|
//id hot key identifier
|
|
[DllImport("user32.dll", SetLastError = true)]
|
|
private static extern bool RegisterHotKey(IntPtr hWnd, int id, KeyModifiers fsModifiers, Keys vk);
|
|
[DllImport("user32.dll", SetLastError = true)]
|
|
private static extern bool UnregisterHotKey(IntPtr hWnd, int id);
|
|
|
|
private void RegisterHotKeys()
|
|
{
|
|
RegisterHotKey(Handle, 1001, KeyModifiers.Control, Keys.O);
|
|
RegisterHotKey(Handle, 1002, KeyModifiers.Control, Keys.S);
|
|
RegisterHotKey(Handle, 1003, KeyModifiers.Control, Keys.N);
|
|
RegisterHotKey(Handle, 1004, KeyModifiers.None, Keys.Escape);
|
|
}
|
|
|
|
private void UnRegisterHotKeys()
|
|
{
|
|
UnregisterHotKey(Handle, 1001);
|
|
UnregisterHotKey(Handle, 1002);
|
|
UnregisterHotKey(Handle, 1003);
|
|
UnregisterHotKey(Handle, 1004);
|
|
}
|
|
|
|
//private void processHotKey(int hotKeyId)
|
|
//{
|
|
// if (hotKeyId == 1001)
|
|
// {
|
|
// //OpenFile();
|
|
// }
|
|
// else if(hotKeyId == 1002)
|
|
// {
|
|
// SaveFile();
|
|
// }
|
|
// else if(hotKeyId == 1003)
|
|
// {
|
|
// NewFile();
|
|
// }
|
|
// else if (hotKeyId == 1004)
|
|
// {
|
|
// ProcessEscape();
|
|
// }
|
|
//}
|
|
|
|
//protected override void WndProc(ref Message m)//监视Windows消息
|
|
//{
|
|
// const int WM_HOTKEY = 0x0312; //热键消息
|
|
// if (m.Msg == WM_HOTKEY)
|
|
// {
|
|
// processHotKey(m.WParam.ToInt32());
|
|
// }
|
|
// base.WndProc(ref m);
|
|
//}
|
|
|
|
//private void FormMain_Activated(object sender, EventArgs e)
|
|
//{
|
|
// RegisterHotKeys();
|
|
//}
|
|
|
|
//private void FormMain_Deactivate(object sender, EventArgs e)
|
|
//{
|
|
// UnRegisterHotKeys();
|
|
//}
|
|
|
|
//private void ProcessEscape()
|
|
//{
|
|
// if (viewerCur == null)
|
|
// return;
|
|
|
|
// viewerCur.Escape();
|
|
//}
|
|
|
|
private void FormMain_FormClosing(object sender, FormClosingEventArgs e)
|
|
{
|
|
//KryptonWorkspaceCell cell = dockableWorkspace.ActiveCell;
|
|
//if (cell == null)
|
|
//{
|
|
// return;
|
|
//}
|
|
|
|
//KryptonPage[] pageArray = cell.Pages.ToArray();
|
|
//foreach (KryptonPage page in pageArray)
|
|
//{
|
|
// if (page.Controls.Count == 0) //应该不可能出现的情况
|
|
// break; //TODO:log
|
|
|
|
// if (ClosePage(page) == true)
|
|
// {
|
|
// e.Cancel = true;
|
|
// break;
|
|
// }
|
|
//} //end foreach
|
|
} //end FormMain_FormClosing
|
|
|
|
public void ShowMouseXY(string mouseXY)
|
|
{
|
|
tsslStatusInfo.Text = mouseXY;
|
|
}
|
|
|
|
private void btnSymbolManage_Click(object sender, EventArgs e)
|
|
{
|
|
//var markEdit = new frmMarkEditor();
|
|
//markEdit.Show();
|
|
}
|
|
}
|
|
}
|