//
// ORIGINAL CODE BASE IS Copyright (C) 2006-2010 by Alphons van der Heijden.
// The code was donated on 2010-04-28 by Alphons van der Heijden to Brandon 'Dimentox Travanti' Husbands &
// Malcolm J. Kudra, who in turn License under the GPLv2 in agreement with Alphons van der Heijden's wishes.
//
// The community would like to thank Alphons for all of his hard work, blood sweat and tears. Without his work
// the community would be stuck with crappy editors.
//
// The source code in this file ("Source Code") is provided by The LSLEditor Group to you under the terms of the GNU
// General Public License, version 2.0 ("GPL"), unless you have obtained a separate licensing agreement ("Other
// License"), formally executed by you and The LSLEditor Group.
// Terms of the GPL can be found in the gplv2.txt document.
//
// GPLv2 Header
// ************
// LSLEditor, a External editor for the LSL Language.
// Copyright (C) 2010 The LSLEditor Group.
//
// This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public
// License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any
// later version.
//
// This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
// details.
//
// You should have received a copy of the GNU General Public License along with this program; if not, write to the Free
// Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
// ********************************************************************************************************************
// The above copyright notice and this permission notice shall be included in copies or substantial portions of the
// Software.
// ********************************************************************************************************************
//
//
//
//
//
//
using System;
using System.IO;
using System.Xml;
using System.Collections.Generic;
using System.Drawing;
using System.Threading;
using System.Reflection;
using System.Globalization;
using System.Windows.Forms;
using System.Drawing.Printing;
using LSLEditor.Docking;
// aximp is oude informatie, maar ik laat het er even instaan
// aximp %WINDIR%\System32\shdocvw.dll /out:"d:\temp\AxInterop.SHDocVw.dll" /keyfile:"D:\Documents and Settings\Administrator\Mijn documenten\Mijn keys\Test.snk"
// copieer de TWEE files AxInterop.SHDocVw.dll en SHDocVw.dll in de bin/Debug directory
// referentie maken naar die twee files
//
// Pre build command for using a LSLEditor.rc file containing: About.htm HTML "Resource/About.htm"
//
// "$(DevEnvDir)..\..\SDK\v2.0\bin\rc.exe" /r "$(ProjectDir)$(TargetName).rc"
//
// Project properties Application, resource file
// At the bottom of the form there are
// 1) tabcontrol1 , holding tabbed documents
// 2) splitter1, for increasing simulator window
// 3) panel1 , holding simulator or listview for compiler errors
// righthand side
// 1) panel2 , for holding solution explorer
namespace LSLEditor
{
public partial class LSLEditorForm : Form
{
public XmlDocument ConfLSL;
public XmlDocument ConfCSharp;
private Browser browser;
private SimulatorConsole SimulatorConsole;
public bool CancelClosing = false;
public Solution.SolutionExplorer m_SolutionExplorer;
public GListBoxWindow GListBoxWindow;
public TooltipWindow TooltipMouse;
public TooltipWindow TooltipKeyboard;
public TooltipWindow TooltipListBox;
public FindWindow findWindow;
public GotoWindow GotoWindow;
public List llDialogForms;
public List llTextBoxForms;
public List PermissionForms;
private UpdateApplicationForm updateApplicationForm;
private Helpers.PrinterHelper printer;
public SyntaxError SyntaxErrors;
private System.Diagnostics.Process curProc;
private const int WM_NCACTIVATE = 0x0086;
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_NCACTIVATE) {
if (m.LParam != IntPtr.Zero) {
m.WParam = new IntPtr(1);
}
} else {
try { curProc.MaxWorkingSet = curProc.MaxWorkingSet; } catch { }
}
base.WndProc(ref m);
}
public Solution.SolutionExplorer SolutionExplorer
{
get
{
return this.m_SolutionExplorer;
}
}
private void SetDefaultProperties()
{
if (Properties.Settings.Default.FontEditor == null) {
Properties.Settings.Default.FontEditor = new Font("Courier New", 9.75F, FontStyle.Regular);
}
if (Properties.Settings.Default.FontTooltips == null) {
Properties.Settings.Default.FontTooltips = new Font(SystemFonts.MessageBoxFont.Name, 9.75F, FontStyle.Regular);
}
string strLocation = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
if (Properties.Settings.Default.ProjectLocation == "") {
Properties.Settings.Default.ProjectLocation = strLocation;
}
}
public LSLEditorForm(string[] args)
{
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US", false);
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US", false);
if (args.Length == 1) {
if (args[0] == "/reset") {
Properties.Settings.Default.Reset();
Properties.Settings.Default.CallUpgrade = false;
}
}
if (Properties.Settings.Default.CallUpgrade) {
Properties.Settings.Default.Upgrade();
Properties.Settings.Default.CallUpgrade = false;
}
// set some normal values on some properties
SetDefaultProperties();
curProc = System.Diagnostics.Process.GetCurrentProcess();
InitializeComponent();
m_SolutionExplorer = new LSLEditor.Solution.SolutionExplorer();
m_SolutionExplorer.parent = this;
InitRecentFileList();
InitRecentProjectList();
InitPluginsList();
SetupChildForms();
try {
Start(args);
} catch (Exception exception) {
MessageBox.Show("Error: " + OopsFormatter.ApplyFormatting(exception.Message), "Oops");
}
}
public Form[] Children
{
get
{
if (this.IsMdiContainer) {
return this.MdiChildren;
}
List