B-right/V sample application - T_TXEDIT(ʰʸԽ)


1. Ϥ

 sample program ϡˤƴñʸԽ򤹤٤ΤΤǤ
äˡʲҲ𤹤뤿ΤΤǤ

	1. libapp ΥƥϥݡȤѤ̾Ѵͳʸ
	2. ʸ(//caret ư)

ʤ application ϸ淿Ǥ
application ϿȡȢ [ʰʸԽ] ȤΤɲäޤΤǡǤդΥɥ˼Фơ[ʰʸԽ] εǽ䵤Ǽ¹ԤƤ
ϡ [ʰʸԽ] 䵤Ǥդμ¿(ʸϼ¿)ŽդƼ¹ԤƤ⹽ޤ

ʤ application  TC ʸԤȤΤߤ˴बꡢTAD ʸϹ¤갷ΤǤϤޤ
ޤlayout ʤɤάƤꡢTAD ǵҤ줿ʸϥ쥤ȤƸޤ󡣤Τᡢ application Խ̤򤽤Τޤ¸ȡʸϹ¤(layout ʤɤޤ)˲붲줬ޤΤǡʤ٤Τʤ¿ȤоݤˤۤǤ礦




2. application γ

 application μŪϡ̾ѴͳʸϤˤޤ
̾Ѵͳ硢ƥϥץߥƥ(TIP)([BTRON3 ͽ][2 OS ][3 ][3.7 ƥϥץߥƥ] 򻲾) ͳ뤳Ȥˤʤޤ TIP  api ľˡǤϡ񤷤ʤޤ
TIP ľ硢ʲλ application ǼʤФʤޤ

	1. TIP  event Ϥ/Ϥ event α
	2. Ϥɤʸɽ(̤  ǰϤޤɽʬǤ)
	3. ѴѴоʸɽ(̤ȿžɽƤʬǤ)
	4. ѴκɽԤ(ʸο̤ޤߤޤ)
	5. ѴΥݥåץåץɥɽԤ(BTRON3  R2.000ʹߤɲä줿ǽǤ)
	6. ѴΥݥåץåץɥ event 򤹤
	7. ̾Ѵ caret ɽ򤹤
	8. ̾Ѵɽ scroll 򤹤
	9. ϥѥͥɽ׵˱

 application ȼ˼Τϡ֤ΤȤȤʤޤ
ǡlibapp ˤϤν亴ʤ٤̾ѴͳʸϤȤΤ򡢼䤹뤿 library ȤΤƤޤ
 library  [ƥϥݡ] ȸƤФΤǤ([Ķ (B-right/V) ͽ][3 饤֥][2 ץꥱ饤֥][2.4 ƥϥݡ] 򻲾)
 application ǤϡΥƥϥݡȤѤƲ̾ѴͳʸϤ¸Ƥޤ

ʤ application ǤϡʸϤˡŪǤꡢTAD ʸϹ¤(ɽʤɤΥ쥤Ƚ)ŪȤƤޤ󡣤ޤʸϥǥϤǼƤŪʵǽ(ϰ䡢ȥ졼ͳ)Ƥޤ󤷡εǽΤ߼֤ˤʤäƤޤ
Τᡢä٤ʸϥǥϤεǽμΤǤϤޤ󤷡ޤŪ(٤ layout ǽʤ)ʸϥǥϤμˡ⤹ΤǤ⤢ޤ




3. ǽ

3.1. б뵯ưˡ

 application ǤϡȤΥץưˤΤбƤޤ
Τᡢ¾εưˡˤĤƤϡoend_prc() 뤤 oend_req() ǰ۾ΤԤext_prc() Ǥ error code ֤褦ˤƤޤ
ޤưȤȤä硢ȤΥץưǤ⡢oend_prc() ȯԻ˳ȤɽԤɬפޤλɽƤϡȤɽбλɽˤʤ褦ˤƤޤ

3.2. ¿Ȥɤ߹

 application ǤϡTAD ʸϹ¤갷ȤȤƤޤ
Τᡢؤɤ/ȤɤФоݤȤƤޤ
ΤᡢTAD  record Ƥϡʸɤʬȸ/ץȻʬΤߤȤޤ
( application ǸʸɤϡTAD ƤʸɤǤϤʤ̾ʸɤȸ/ץȻȰ楳ɤ˸ꤷƤޤ)

3.2.1. TAD ʸϤμ

ʸɤȤƵҤʸϡʸϳϥȤʸϽλȤǳ줿ϰ˵ҤΤǤ
TAD ǵҤƤ硢ʲդʤФʤޤ

	1. record 椫ɤ߹ޤʤ
		TAD ͡°ʤɤĹȤηǵҤ뤿ᡢ椫ɤ߹硢줬Ť줫/ȤƤʤΤʸʤΤȽ̤Ǥޤ
		ΤᡢɬƬɤ߹ޤʤФʤޤ
	2. פ/ȤɤФ
		[1.] ȤϢޤפʤΤɤФƤʤ(餫/ȤޤɤȤȤȤ򤷤Ƥޤ)ȤƤƤɽΤ狼ʤʤäƤޤޤ
	3. ĹȤĹɤळ
		ĹȤϡεƤĹˤäơǡĹεˡѤޤ
		ϡ[̾糧] [顼] ȶ̤졢줾ʲι¤Τǡ ID Ĺ򵭽Ҥޤ

		typedef	struct {		// ̾糧
			UH	id;		// 0xff??
			UH	len;		// 0  65534
		} TADSEG;

		typedef struct {		// 顼
			UH	id;		// 0xff??
			UH	len;		// = 0xffff
			UW	llen;		// 65536  4294967294
		} LTADSEG;

		Τ褦ˡTADSEG  LTADSEG ǤϵҤۤʤޤΤǡդɬפǤ(TADSEG  LTADSEG θ٤ len  0xffff ɤȽǤޤ)
		(ʤĹɬǤ뤿ᡢ2^16 - 2 ʤ2^32 - 2 ¤ͤȤʤäƤޤ)
	4. sub ID 硢ɤळ
		 application ƤǤϤޤ󤬡 TAD Ȥ ID ϡ٤εǽʬƤޤ
		ΤᡢƱ ID Ǥʣΰ̣ĤΤ⤢ޤ(ؤɤʸ/޷ȤʤäƤޤ)
		λܺ٤ʶʬȤơsub ID ȤΤͿƤޤΤǡɤߡ̣ΤȽǤʤФʤޤ
		( application ǤϡTADLOAD::chk_TS  sub ID μޤǤϼƤޤ)
	4. /ץȻ뤳
		ϡ0xfe?? ȤǵҤƤޤɤ߼ʤȡʸȤݤͶȯޤ
		BTRON ʸɤ TC(= 16bit) ǵҤƤޤθ/ץȻˤäơ(̤ȸƤ֤Ȥ⤢ޤ)ڤؤ뤳Ȥˤꡢ¿ʸ갷褦ˤʤäƤޤ
		Τᡢ/ץȻɤ߸ȡƱʸɤǤ˰ۤʤʸͿƤ뤿ᡢۤʤäʸ갷äƤޤäȤˤʤޤ
		/ץȻμˤϡlibrary  isTLANG ȤΤꡢ̤ˤѤޤ([Ķ (B-right/V) ͽ][3 饤֥][3 ¿(¿)饤֥][3.1 tlang.h])
		( application ǤϼԹ塢άΤˤʤäƤޤlibrary 긷̩ŪΤʽԤޤΤǡԹ礬ʤ library ΤΤȤȤ򶯤侩ޤ)
	5. nest 뤳
		TAD  nest ԤȤǤ褦ˤʤäƤޤ(ʸϤʸϤȤä֤Ǥ)
		nest ֤ˤʤȡĤξ֤ nest ȸȤݻʤФʤޤ(㤨С/ץȻǤϡnest  0x0021 äȤơnest äȤ 0x0031 ڤؤä nest ȴС 0x0021 ᤵʤȤޤ)
		(nest(ʸ/߿޷)ˤĤƤ[BTRON3 ͽ][1 ͭǡ][3 TADܺٻͽ][3.3 TAD ǡγ][3.3.2 ʸϥǡȿ޷ǡ]򻲾ȤƤ)
	6. ʸ°ʤɤξ֤ڤؤޤݻ뤳
		 application ƤǤϤޤ󤬡TAD Ͼ֤ڤؤˤäơ°ʤɤɽ򤷤ޤΤᡢǿѹȤơ̤οڤؤʤ¤ϡꤵ줿ݻޤ(ʤɤʸ°ǤϤʤԽ񼰤/ץȻƱͤǤ)
		Ǥ顢[1.]  [2.] ȤϢޤTAD ι¤ϤɬƬԤʤФʤޤ

ʤߤˡ application ǤϡδάΤᡢʸɤȸ/ץȻ碌 WTC ȤΤѤʸ褦ˤƤޤ
(WTC ˤĤƤ[Ķ (B-right/V) ͽ][3 饤֥][3 ¿(¿)饤֥ ][3.3 wtstring.h][ 磻TRONʸ]򻲾)

3.3. ʸ

ˤ񤭤ޤ application Ǥϡδάΰ١application Ǥʸɤν WTC ѤƤޤ
ϡTC ǵҤ줿ޤޤξ硢ʸ򻲾Ȥˤʸɤ̤°ʸʤΤ狼ˤǤ
(ϡ/ץȻΤߤǤʤŪʸ°ľʸ갷ˡʸ°դƤ礬ޤƱȤˤʤޤ)

ʤ application Ǥϡʸδ(Խ/ɽ(쥤)/ʸ)ˤϡSTROPE Ȥ class ǹԤ褦ˤƤޤ

3.3.1. ʸʸ֤δˡ

 application Ǥϡʸϰ켡ľ¤ǤꡢԤʤɤˤ󼡸ʿŪɽλˤĤƤϡɽλ˹Ԥ褦ˤƤޤ
ޤʸ֤ˤĤƤϡоݤʸľؤȤäƤޤ

ˤĤƤϡŪʥǥ application μˡ˴ؤʬǤΤǡܤϳ䰦ޤ

3.3.2. ʸɽ

 application Ǥϡʸϲ/Τߤ갷ޤ֤ʤɤоݤȤޤ(¿Ȥɤ߹ߤκݤ˼ΤƤ褦ˤƤޤ)
ޤԥåΤߤˤƤޤΤǡʣʥ쥤Ȥη׻ϰڤƤޤ󡣽񼰤ⲣ˸ꤷƤޤ
/ޤǤԤȤơޤ֤ɽ褦ˤƤޤ
(ʤɸϰϤ¤ä˹θƤʤᡢηĹˤɽ򾷤ޤĤιԿˤĤƤɸϰϤ¤θƤޤΤǡԿ¿Ȥɽ򾷤ޤ)
ʤߤˡδάΰ١ʸ(gdra_chp() ȯ)򤷤Ƥޤºݤˤ gdra_stp() ʤɤʸ api Ϲ®˹Ԥޤ

3.3.2.1. Ĵɽ

 application Ǥ⤽ǤʸɽκݤʸĴɽ(grayscale ɽ)ԤȤǤ礬ޤ
ϡgrayscale font Ѥ褹褦ꤵƤˤΤ߹ԤȤǽǤꡢ application ǤϡMAINWIN::set_char() ǳĴɽʸȥե°ԤäƤޤΤǡͤˤƤ

3.3.3. ʸ֤ caret 

ˤ񤭤ޤʸľ¤ΤȤƽ褦ˤƤޤɽǤ󼡸ʿ̤ȤʤäƤޤ
caret ɽˤĤƤƱͤǡʸ֤ɽ caret ֤Ѵɬפޤ
 application Ǥϡ/ʸͣ򤹤ΤȤʤäƤޤΤǡ/ޤǤƱԤϰϤȤƿʿ˺ɸưλ˽ƿľ֤ư褦ˤƤޤ
ʤ˽񤭤ޤcaret ɽ֤Ͼʸκ˰֤褦ˤʤäƤޤ
(ʤˡǤϡTXED ˤ褦ʹβ/ʸȤȤǤޤ󤷡ɬ/ʸˤϲ/ʸ¸ߤƤʤФʤʤȤˤʤäƤޤޤ)

3.3.4. ƥϥݡȤα

ƬǽҤ٤ޤ̾ѴͳʸϤ򤹤ˤϡTIP ľܻȤˡȡlibrary ȤˡȤޤ
ǤϡԤ library ȤˡˤĤơ򤷤ޤ

 library αѤϡ̤˰ʲʼƧߤޤ

	1. open_text() ˤäơ񸻤
	   library ϡνɬפʻ񸻤γݤȡTIP  open Ԥޤ
	2. key  event  read_text() ˤäơϤ
	   library  TIP äɬפʽ library ǹԤޤ
	3. [2.]  event α̤˱򤹤
	   [2.] ǽǤʤƤȯ顢ƤӽФ application ˽¥ޤ
	4. ɬפСreopen_text() ǻ񸻤
	   (ϡư⡼ɤڤؤ(񼰤񤭤Ľ񤭤Ѥäʤ)ξ˹ԤΤǡɬפʤȯԤޤ)
	5. ʸϤɬפʤʤСclose_text() ǻ񸻤

 application ǤϡʸϤε񤬤֤ǤΤǡopen_text()  close_text()  application εư/λϢư褦ˤƤޤ(TEXTIN Ȥ class Ǵ褦ˤƤޤ class  object /ѴƱ褦ˤƤޤ)

open_text() κݡư mode ꤷʤФʤޤ
 application Ǥϡ񼰤ϲ񤭱ǡϤɤߤѴɽϾɽ򤹤褦ˤƤޤޤ/Ȥޤޤʤ֤ˤƤޤޤ᤿硢Ѵ̤Ⱦʸ̣/Ȥޤޤ뤳Ȥޤ
ޤopen_text() ȯԸˤĤ򤷤Ƥޤϡ̾Ѵμ¹Ԥκݤɽ˱ƶʬǤΤǡꤷƤʤФʤޤ
(ʤߤˡ̾ѴǤʤƤɽƤ caret ˤĤƤϡ library ǳݤ񸻤ΤΤήѤ褦ˤƤޤΤᡢcaret 礭꤬ޤޤƤޤapplication  caret äꤹɬפϤޤ)

read_text()  key  event  window event Ϥޤλɬ read_text() ľ˹ԤäƤ٤ޤ application ǤϡMAINWIN::key_fn()  read_text() ƤӽФƤޤľˡɸԤäƤޤ
ϡ̾ѴԤˡɤߤʤɤɽɸꤷƤꡢ̤˸ߤɽʸ(caret )Ϳޤ
read_text() Τϡdo - while()  loop ǳƤޤread_text() Ԥä̤Ȥơɤʸ󤬻ĤäƤ(̾Ѵ³Ƥ)ɬ read_text() ȯԤ³ʤФʤʤǤ
ʲ read_text() η̤ȽλˤĤơ󤲤Ƥޤʤread_text() η̤ϡư̤¤Ǽ뤿ᡢʣη̤Ʊ뤳Ȥޤ

3.3.4.1. ɤϤαȳʸȯ

ñɤߤϤ³Ƥ硢read_text() ư mode  TXT_WAIT ʤ顢read_text()  event loop Ԥޤ̤ˤ TXT_WAIT  read_text() ¹Ԥ뤿ᡢɤ application Ǥä˲⤹ɬפޤ
(TXT_NOWAIT ξɤǤ֤äƤޤ³ event ˤĤƤϡapplication  wget_evt() ˤä event Ƥ read_text() ˰Ϥɬפޤ)

read_text() η̤Ȥơʸȯ硢TXT_OUT ֤ޤ
ʸȯװϡ̾Ѵη̤ȤѴη򤷤(򲡤ʤ)Ȥɤ˲̾Ѵפʥ٥Ȥȯ(PD  press ʤ)ʤɤ󤲤ޤ
λ̤ɽʸ TEXTPORT.cnv  TC ʸ pointer ȤϤޤopen_text() ư mode λ TIP_TCONLY ꤵƤʤ硢Ѵ̤ʸˤ/Ȥޤޤ뤳ȤޤޤѴ̤Ȥơʣθ/ץȻޤ⡢/ץȻ꤬ޤޤޤ(ư mode ˰ޤ)
ޤʸĹ TEXTPORT.n_cnv ɽޤʸ(TEXTPORT.cnv)ˤ TAD /Ȥޤޤ뤳Ȥ뤿ᡢʸ TNULL ǤϽüƤޤ󡣤Τᡢʸμɬ n_cnv ʸʤФʤޤ

 application Ǥϡ/Ȥϴޤޤʤ褦ˤƤꡢޤǤʸ WTC Τᡢʸ WTC Ѵʸ褦ˤƤޤ
ޤΤȤǤκʸ֤ΰưɽ scroll  application ǤȤʤޤ

ʤߤˡʸȯϲ̾Ѵη̤ƷꤷȽ񤭤ޤ⤽Ⲿ̾ѴɬפȤʤ⡢ꤵ줿ΤƱͤη̤֤ޤ(㤨Сϥ⡼ɤѿǱѿʸϤ)
λñˡʸԤޤ

ʤʸतˤĤƤϡɤѴˤ餬ϤȡʸˤʸޤޤƤޤޤΤǡդɬפǤTAB ػߤƤˤ TAB νɬפǤ/äϹ꤬ɬפȤʤޤ
դˡɤѴǤʤϡ¾ key ϤԤ줿ΤȤΤޤΤᡢ/ʸ TAB ʸˤĤƤϡ¾ key ϤȯΰĤȤƼɬפ⤢ޤ

3.3.4.2.  scroll ׵ȯ

ѴΰɤʸϾ䡢Ѵ̤ˤäƿ̤ΤǤλؤɤξ library ¦ǡ̤ȼΰκɽԤޤmemory ­ʤɤǺɽǤʤäϡapplication ǺɽʤФʤʤ礬ޤ
λread_text() ֤ͤȤơTXT_NOIMG ꤵƤޤ

ޤɤˡѴΰ褬 window Ϥ߽ФȤޤ
λϡwindow ɽΰ輫Τ scroll Ѵΰ褬ɽϰϤ˴ޤޤ褦ˤʤФʤޤ
read_text()  mode ǡTXT_NOSCRL ꤷƤʤTXT_SCRLCAR ꤷ硢scroll ɬפˤʤ read_text()  TXT_SCRL ֤ޤ
ä TXT_SCRLCAR ꤷϡ̾Ѵ caret ֤ɽϰϤ鳰줿ɤ TXT_SCRL ȯ뤿ᡢˤäƤ(ɽ)ʬ褦 scroll 򤹤ɬפޤ(TXT_SCRLCAR ꤵƤʤϡѴΰü褦 scroll ˤʤ뤿ᡢ(ɽ)ʬ褦 scroll ޤ)

scroll ׵᤬ȯƤ scroll ʤޤޤˤƤȡʵפ scroll ׵ȯ³ޤΤ(ڤǤʤʤޤΤ)ɬ scroll ʤФʤޤ

3.3.4.3. ¾ key Ϥȯ

ɤϤǤʤ֤ǡɤϤˤʤʤ key ϤԤ줿(¿ξϡʸϤˤʤޤ)ˡξ֤ˤʤޤ
λϡTXT_KEY Ƿ̤֤ƤޤϤ줿 key ˤĤƤϡread_text() ˰Ϥ WEVENT.e.data.key.code ꤵƤޤΤǡƤĴ٤ơб򤷤ʤФʤޤ
key ˤ caret ΰư䡢ä/ϡTAB Ϥʤɤξ֤ˤʤޤ
ޤ[̿] ƱλΥޥξ TXT_KEY Ȥޤλ menu Ȥɬפ뤿ᡢunget_wevt() ˤä event 򺹤ᤷƤޤ

3.3.4.4. ¾ event ȯ

¾ event ξȤΤϡ㤨 PD press event Ǥäꤹ뤿ᡢ event  event loop ˺ᤷŬڤ event 򤹤ɬפޤ
λϡTXT_EVT ֤Ƥޤ

3.3.5. ʸԽ

 application ǤϡʸԽ˴ؤƤ٤εǽƤޤ󡣹ԤΤϡʸȰʸκʸ֤ΰưΤߤǤ

3.3.5.1. ʸ

ʸ֤ϡʸ֤ľ餪ʤ褦ˤƤޤ
ޤʸ֤ʸľˤʤ褦ˤƤޤ

3.3.5.2. ʸκ

ʸκʸ֤ΰʸ褦ˤƤޤ
ޤȼäơʸ֤ϰʸ˰ư褦ˤƤޤ

3.3.5.3. ʸ֤ΰư

(ɽ)ʸŤĤΰưξ硢ñʸ֤夹ˤƤޤ
岼ι԰ưξϡɽʸϹ¤᤹ɬפ뤿ᡢöߤʸ֤ɽκɸ(caret )Ѵ岼ι԰֤˺ɸưƤ顢ʸʸ֤᤹ȤˡΤäƤޤ
ޤSTROPE::lpos Ȥ member ѿ˺ɸ򵭲褦ˤƤޤϾ岼ưξǤ⡢ưϻοʿ֤¸褦ˤ٤ΤΤǤ

3.4. λ

λν I_DLED(Ȱ) ƱǤI_DLED  document  [3. ǽ][3.5. ץꥱνλ¸]򻲹ͤˤƤ
(ƿ¸ˤĤƤϡ application ǤϾ˹Ԥʤ֤ˤƤޤ)

3.4.1. ¿Ȥؤ¸

¿Ȥ¸ƤϡTAD  record  TAD ʸϤΤߤ򵭽Ҥ褦ˤƤޤ
ʤνѤ WTC  TAD ǵꤵ줿ʸɽˡǤϤʤᡢɬ/ץȻ̾ʸɤȤʬΥƵҤʤФʤޤ
ޤƱ쥹ץȻ꤬³֤ϡǽθ/ץȻ񤭽Фơΰۤʤ/ץȻˤʤޤǤϽ񤭹ΤǤϤޤ(񤭹Ǥ⤤Ǥְ㤤ǤϤޤ󤬡̵̤Ǥ)




4. 䵭

 application Ǥϡ̾Ѵоʸ᤬ɽϰˤʤƤ⡢scroll 򤷤ޤ(TXED Ǥ scroll ȯޤ)scroll ϡread_text() ȯ TEXTPORT.mode  TXT_SCRLCAR ꤷޤ
ξ⡢read_text() ֤ͤ TXT_SCRL Ȥʤ礬ޤΤǡλˤɽ scroll ơоʸ᤬ɽϰϤ褦ˤʤФʤޤ

