Entraides et échanges autour de la technologie Scol - Informations and exchanges on the Scol technology
Vous pouvez changer la langue de l'interface une fois inscrit - You can change the language once registered
You are not logged in.
Pages: 1
colleagues:
with the text input/output plugit I wrote (in another thread, but since this is a new question others might find useful, here it is), the editor allows for the creation of one of three fonts: arial, lucida console, and system.
the plugit has an action called "Print Incoming Message". when that action is triggered, the plugit executes cbprintmessage.
let's say I have the dialog box plugit in the scene, and when the user triggers the "Yes/No" event, I want the text input/output plugit to display lucida console font when the plugit executes the "Print Incoming Message" action.
how would I alter my client, editor, an xml files to allow this? I checked the dialogbox plugit, but still don't understand how it configures the link window and options
answer at your leisure, it's a holiday here inthe u.s.
.xml file:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<PLUGIN name="chatwindow" version="1.0" type="misc">
  <DESCRIPTION>Chat Window Plugit</DESCRIPTION>
  <HELP>Template plugIT help</HELP>
  <EDITOR>
    <SCRIPT path="./echatwindow.pkg" />
    <PARAM name="width" type="value" />
    <PARAM name="height" type="value" />
    <PARAM name="window_name" type="value" />    
    <PARAM name="window_background_color_value" type="value" />
    <PARAM name="font_color" type="value" />
    <PARAM name="font_color" type="value" />
    <PARAM name="font_type" type="value" />
    <PARAM name="font_size" type="value" />
  </EDITOR>
  <CLIENT minstance="true">
    <SCRIPT path="./cchatwindow.pkg" />
    <ACTION name="Print Incoming Message">
    </ACTION>
    <EVENT name="Send Outgoing Message">
    </EVENT>
  </CLIENT>
</PLUGIN>editor file
// prototype of the cbCloseEdit function in case you don't use params
//proto cbCloseEdit = fun [] [[S S] r1];;
//proto cbCloseEdit = fun [u0] [[S S] r1];;
// Close callback called on apply / Ok button, this callback return the parameters to save in the XOS project
fun cbCloseEdit(editorinterface)= 
  let editorinterface-> [ctrlwinw ctrlwinh window_background_color_button font_color_button window_name_textline fontpicker font_size_control] in
  //get width value set in editor
  let ftoi getEdCtrlFloatValue ctrlwinw -> width in
  let ftoi getEdCtrlFloatValue ctrlwinh -> height in
  let ftoi getEdCtrlFloatValue font_size_control -> fontsize in
  //change width value from integer to string and save in xos file
  ["width" itoa width]::
  ["height" itoa height]::
  //["window_background_color_value" (itoh getEdCtrlColorButtonColor window_background_color_button)]::
  ["window_background_color_value" (itoh getEdCtrlColorButtonColor window_background_color_button)]::
  ["font_color" (itoh getEdCtrlColorButtonColor font_color_button)]::
  ["window_name" (getEdCtrlTextLineValue window_name_textline)]::
  ["font_type" (getSelectedEdCtrlSelect fontpicker)]::
  ["font_size" itoa fontsize]::
  nil;;
// Destroy callback called when the editor window is destroyed, this is useful to destroy added objects or resources
fun cbDestroyEdit()=
  0;;
// Init function called when a user the plugIT Editor
fun dynamicedit(winstr, inst, viewstr) =
  //get width value from .xos file
  let atof (getPluginInstanceParam inst "width") -> width in
  //if width not set, set it to 800
  let if width == nil then 800.0 else width -> width in 
  //get window_ background_color
  let htoi   (getPluginInstanceParam inst "window_background_color_value") -> window_background_color in
  let if window_background_color == nil then 0x000000 else window_background_color-> window_background_color in
  //get window height
  let atof (getPluginInstanceParam inst "height") -> height in
  //if width not set, set it to 800
  let if height == nil then 400.0 else height -> height in 
  let if height <. 150.0 then 150.0 else height -> height in 
  // size of the window
  let [400 320] -> [iw ih] in
  let 10 -> ypos in
  //create window width label
  let crEdCtrlLabel winstr 10 (set ypos = ypos + 25) + 2 120 20 "Window width" nil -> labelwinw in
  //create window width float control
  let crEdCtrlFloat winstr 130 ypos 100 20 width 0.0 12000.0 1.0 0 nil EDWIN_RESIZE_MW -> ctrlwinw in
  //create window height label
  let crEdCtrlLabel winstr 10 (set ypos = ypos + 35) + 2 120 20 "Window Height" nil -> labelwinh in
 //create window height float control
  let crEdCtrlFloat winstr 130 ypos 100 20 width 0.0 12000.0 1.0 0 nil EDWIN_RESIZE_MW -> ctrlwinh in 
 //create background color control  labbel
 let crEdCtrlLabel winstr 10 (set ypos = ypos + 55) + 2 160 20 "Window Background Color" nil -> window_background_color_label in
 //create background color control
 let crEdCtrlColorButton winstr 180 ypos 165 20 window_background_color 0 EDWIN_RESIZE_MW nil -> window_background_color_button in
 //create font color conrol label
 let crEdCtrlLabel winstr 10 (set ypos = ypos + 45) + 2 160 20 "Font Color" nil -> font_color_label in
 //change hex string of font color into hex interger from .xos file
 let htoi   (getPluginInstanceParam inst "font_color") -> font_color in
 //if ther is no font color, set it to white..see http://www.nthelp.com/colorcodes.htm
 let if font_color == nil then 0xFFFFFF else font_color-> font_color in
 //create font color control
 let crEdCtrlColorButton winstr 180 ypos 165 20 font_color 0 EDWIN_RESIZE_MW nil -> font_color_button in
 //create window name label
 let crEdCtrlLabel winstr 10 (set ypos = ypos + 45) + 2 160 20 "Window Name Label" nil -> window_name_label in
 //create window name text area (in scol it's a textline)
 //get window name
 let  (getPluginInstanceParam inst "window_name") -> window_name in
 //get font type
 let (getPluginInstanceParam inst "font_type") -> font_type in
 let atof (getPluginInstanceParam inst "font_size") -> fontsize in
 let if fontsize == nil then 12.0 else fontsize -> fontsize in
 let crEdCtrlTextLine winstr 180 ypos 200 20 window_name nil EDWIN_RESIZE_MW -> window_name_textline in
 let crEdCtrlLabel winstr 10 (set ypos = ypos + 45) 160 20 "Type of Font" nil -> font_labeltype in
 let crEdCtrlSelect winstr 180 ypos 200 120 EDWIN_RESIZE_MW -> fontpicker in
  let crEdCtrlLabel winstr 10 (set ypos = ypos + 45) + 2 160 20 "Font Size" nil -> font_size_label in
  //create font size control
  let crEdCtrlFloat winstr 180 ypos 160 20 fontsize 0.0 100.0 1.0 0 nil EDWIN_RESIZE_MW -> font_size_control in
  (
  
    // resize the editor window
    setEdWindowSize winstr iw ih; 
    fillEdCtrlSelect fontpicker "System"::"Arial"::"Lucida Console"::nil;
    selectEdCtrlSelect fontpicker font_type;
    
    [mkfun1 @cbCloseEdit [ctrlwinw ctrlwinh window_background_color_button font_color_button window_name_textline fontpicker font_size_control]  @cbDestroyEdit];
  );;client file
//struct definition
  struct Chatwindow = [
  CHATwindow_plugin_instance           				: PInstance,
  CHATwindow_window_object_container					: ObjContainer,  
  CHATwindow_parent_chat_window							: ObjWin,
  CHATwindow_chat_font										: ObjFont,
  CHATwindow_ongoing_chat_textfield						: CompText,
  CHATwindow_chat_entry_textfield						: CompText
  				
  ]mkChatwindow;;
  
 fun printmessage(constr, value)=
	_ADDcompText constr.CHATwindow_ongoing_chat_textfield strcatn value:: "":: "\n"::nil constr.CHATwindow_chat_font [0x00FFFF 0 0 0xFFFF00] CT_END;
	_PAINTcontainer constr.CHATwindow_window_object_container;
 0;;
 
 fun cbprintmessage(inst, from, action, param, reply, constr)=
 	printmessage constr param;
 	0;;
 
fun cbDestroy(inst, from, action, param, reply, constr)=
	_DScompText constr.CHATwindow_ongoing_chat_textfield;
	_DScompText constr.CHATwindow_chat_entry_textfield;
	_DSfont constr.CHATwindow_chat_font;
	_DScontainer constr.CHATwindow_window_object_container;
	_DSwindow constr.CHATwindow_parent_chat_window;
0;;
fun deleteOb(inst, constr)=
	_hideconsole; 
  cbDestroy inst nil nil nil nil constr;
  0;;
//add text to ongoing_chat_textfield here
fun addtext(textobject, user_parameter,type,value)=
	//update contents of chat interface
	let ""-> empty_text_value in
		(
			_ADDcompText user_parameter.CHATwindow_ongoing_chat_textfield strcatn value:: "":: "\n"::nil user_parameter.CHATwindow_chat_font [0x00FFFF 0 0 0xFFFF00] CT_END;
			_PAINTcontainer user_parameter.CHATwindow_window_object_container;
  			_SETcompText textobject "" user_parameter.CHATwindow_chat_font [0x00FFFF 0 0 0xFFFF00] CT_BEGIN; 
			_PAINTcontainer user_parameter.CHATwindow_window_object_container;
			 _DMSevent this (getPluginInstanceEvent user_parameter.CHATwindow_plugin_instance "Send Outgoing Message") value nil;
			0;
		);
0;;
///create plugit function
fun newOb(inst)=
   //get width value from .xos file
   let atoi (getPluginInstanceParam inst "width") -> width in
   let htoi  (getPluginInstanceParam inst "window_background_color_value") -> window_background_color in
   //get height value from .xos file
   let atoi (getPluginInstanceParam inst "height") -> height in
      let atoi (getPluginInstanceParam inst "font_size") -> fontsize in
   //get window name from .xos file, if nil set to unnamed window
   let getPluginInstanceParam inst "window_name" -> window_name_value in
   let getPluginInstanceParam inst "font_type" -> font_type in
   let if window_name_value == nil then "Unnamed Window" else window_name_value -> window_name_value in
	let _CRwindow _channel DMSwin 0 0 width height WN_TOPMOST|WN_NOSCOL window_name_value  -> thisparentchatwindow in
	let _CRcontainerFromObjWin _channel thisparentchatwindow 0 0 width height CO_CHILDINSIDE window_background_color "hackerwindow" -> thiscontainer in
	let _CRfont _channel fontsize 0 0 font_type-> thisfont in
	let htoi   (getPluginInstanceParam inst "font_color") -> font_color in
   let if font_color == nil then 0xFFFFFF else font_color-> font_color in
	let  _CRcompText _channel thiscontainer  nil [0 (height-50)] OBJ_ENABLE|OBJ_VISIBLE|CT_LEFT|CT_WORDWRAP|CT_EDITLINE 0 width 50  "text entry field" 		thisfont [font_color 0 0 font_color] [0xFFFFFF 50] nil nil   -> thistextentryfield in
	let _CRcompText _channel thiscontainer nil [0 0] OBJ_ENABLE|OBJ_VISIBLE|CT_LEFT|CT_LABEL|CT_WORDWRAP|CT_LABEL|CT_SELECT OBJ_CONTAINER_KEYDOWN width (set height= height-50)  strcat "ongoing chat text here"  "\n" thisfont [font_color 0 0 font_color] [0xFFFFFF 50] nil nil-> thisongoingchatfield in
	
	let mkChatwindow [inst thiscontainer thisparentchatwindow thisfont thisongoingchatfield thistextentryfield]->constr in
		(
			_CBcompTextValidation constr.CHATwindow_chat_entry_textfield @addtext constr  CT_VALIDENTER;
			_PAINTcontainer constr.CHATwindow_window_object_container;
			PluginRegisterAction inst "Print Incoming Message" mkfun6 @cbprintmessage constr;
			//PluginRegisterAction inst "Destroy" mkfun6 @cbDestroy constr;
			setPluginInstanceCbDel inst mkfun2 @deleteOb constr;
		);
0;;
fun IniPlug(file)=
  PlugRegister @newOb nil;
  setPluginEditor @dynamicedit;
  0;;
  
  
  Offline
hmm didn't understood the question ^^
2 dialog box plugits linked to 1 text input/output plugiit.
dialog box 1 ok event makes the "Print Incoming Message" print a message to a comptext box in lucida console
dialog box 2 ok event makes the "Print Incoming Message" print a message to a comptext box in arial
what i'm wondering is how to enable a plugit action's attributes, to some extent, be determined by other plugits. right now, the plugit only prints in the font set by the editor, not set by a particular link.
Offline
Pages: 1