Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Make sure the scene is named hello world and the text box is called ^helloworld. Save the project and call it hello world.

Be careful to give the text box font a colour that won’t be hidden by your web browser’s background.

Chameleon Web Server

Launch the Chameleon Web Server and create a new instance. Call it hello world. On the Setting Settings tab,

  • set the Endpoint,

  • set the

...

  • Project Folder to where you saved the graphics project,

  • enable the

...

  • API settings

  • and choose an API Port:

...

Start the server:

...

Build the

...

Application

In this example, we’re building the application using c# and Visual Studio.

Create a new Windows Forms application.

Add the Chameleon.API nuget package. You can find it by searching on bannisterlake:

...

Add a reference to assembly System.ServiceModel.

...

Create a c# class called CG.cs looking like this:

Code Block
languagec#
using System;
using System.Collections.Generic;
using System.ServiceModel;
using Chameleon.API;

namespace hello_world_chameleon_api {
	class CG : MarshalByRefObject, IChameleonCallback {
		const string SERVER_ADDRESS = "localhost";
		const int SERVER_PORT = 8112;
		const string ASSET_NAME = "hello world a";	// not required
		const string PROJECT = "hello world";
		const string SCENE = "hello world";
		const string TAG = "helloworld";

		public void OnlineStatus(string a, string b, string c, bool d) {
		}

		public void Thumbnail(string project, string scene, string base64) {
		}

		public void AsRunReport(string id) {
		}

		public void BugOn() {
			try {
				Dictionary<string, TagData> content = new Dictionary<string, TagData>();
				TagData tagData = new TagData();
				tagData.Type = TagType.Text;
				tagData.Value = "hello world";
				content.Add(TAG, tagData);
				ChameleonClient client = 
					ChameleonClient.CreateTcpClient(this, SERVER_ADDRESS, SERVER_PORT);
				if (client.State == CommunicationState.Opened) {
					client.LoadProject(PROJECT);
					client.SetOnline(ASSET_NAME, PROJECT, SCENE, content, true);
				}
			} catch (Exception ex) {
				string errMsg = ex.Message;
			}
		}

		public void BugOff() {
			try {
				ChameleonClient client = 
					ChameleonClient.CreateTcpClient(this, SERVER_ADDRESS, SERVER_PORT);
				if (client.State == CommunicationState.Opened)
					client.SetOffline(PROJECT, SCENE);
			} catch (Exception ex) {
				string errMsg = ex.Message;
			}
		}
	}
}

Be sure the SERVER_PORT value matches the API Port used in the Web Server settings tab earlier.

Drop a checkbox on the form and call it checkBoxHelloWorld. Create a handler for it and then create an instance of the CG class:

Code Block
languagec#
using System;
using System.Windows.Forms;

namespace hello_world_chameleon_api {
	public partial class Form1 : Form {
		CG cg = new CG();

		public Form1() {
			InitializeComponent();
		}

		private void checkBoxHelloWorld_CheckedChanged(object sender, EventArgs e) {
			if (checkBoxHelloWorld.Checked)
				cg.BugOn();
			else
				cg.BugOff();
		}
	}
}

Open the url URL http://localhost/helloworld on any browser.

...