Пример #1
0
	void comboSelector_SelectedIndexChanged(GuiGraphicsComposition* sender, GuiEventArgs& arguments)
	{
		comboSelector->SetEnabled(false);
		this->GetBoundsComposition()->SetAssociatedCursor(GetCurrentController()->ResourceService()->GetSystemCursor(INativeCursor::LargeWaiting));

		GetApplication()->InvokeAsync(Curry<void(TextBoxColorizerWindow*)>([](TextBoxColorizerWindow* window)
		{
			Ptr<GuiTextBoxColorizerBase> colorizer;
			WString text;

			switch(window->comboSelector->GetSelectedIndex())
			{
			case 0:
				text=
					L";This is a comment\r\n"
					L"[Section1]\r\n"
					L"Name=John Smith\r\n"
					L"ID=008\r\n"
					L"\r\n"
					L"[Section2]\r\n"
					L"Name=Kyon\r\n"
					L"ID=009\r\n"
					;
				break;
			case 1:
				text=
					L"<books>\r\n"
					L"\t<!--Comment-->\r\n"
					L"\t<book name=\"C++Primer\">\r\n"
					L"\t\tContent\r\n"
					L"\t</book>\r\n"
					L"\t<![CDATA[<xml/>]]>\r\n"
					L"</books>\r\n"
					;
				break;
			case 2:
				text=
					L"#include <iostream>\r\n"
					L"using namespace std;\r\n"
					L"\r\n"
					L"int main()\r\n"
					L"{\r\n"
					L"\t//This is a comment\r\n"
					L"\t/**This*is/another\r\n"
					L"\tcomment**/\r\n"
					L"\tcout<<\"Hello, world!\"<<endl;\r\n"
					L"\treturn 0;\r\n"
					L"}\r\n"
					;
				break;
			}

			GetApplication()->InvokeInMainThreadAndWait([text, window]()
			{
				window->textBox->SetColorizer(0);
				window->textBox->SetText(text);
			});

			switch(window->comboSelector->GetSelectedIndex())
			{
			case 0:
				colorizer=new IniColorizer;
				break;
			case 1:
				colorizer=new XmlColorizer;
				break;
			case 2:
				colorizer=new CppColorizer;
				break;
			}

			GetApplication()->InvokeInMainThreadAndWait([colorizer, window]()
			{
				window->textBox->SetColorizer(colorizer);
				window->GetBoundsComposition()->SetAssociatedCursor(GetCurrentController()->ResourceService()->GetDefaultSystemCursor());
				window->comboSelector->SetEnabled(true);
			});
		})(this));
	}