Skip to content

Commit

Permalink
speed up rendering of code preview into textfield
Browse files Browse the repository at this point in the history
change ga_readonly to textfield_readonly for textfield in requester item settings page
fix resetting textfieldbase in textedtor object
  • Loading branch information
dmcoles committed Jul 25, 2024
1 parent 8e4a18d commit b8538e1
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 21 deletions.
46 changes: 28 additions & 18 deletions codePreviewForm.e
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,23 @@ CONST NUM_PREVIEW_GADS=PREVIEWGAD_SCROLL+1
EXPORT OBJECT codePreviewForm OF reactionForm
ENDOBJECT

PROC createTextFieldGad() OF codePreviewForm
DEF gfxb:PTR TO gfxbase
DEF res
gfxb:=gfxbase
res:=NewObjectA( TextField_GetClass(), NIL,[
GA_ID, PREVIEWGAD_TEXT,
GA_RELVERIFY, TRUE,
GA_TABCYCLE, TRUE,
TEXTFIELD_TEXTFONT, gfxb.defaultfont,
TEXTFIELD_READONLY, TRUE,
TEXTFIELD_BORDER, TEXTFIELD_BORDER_BEVEL,
TAG_END])
ENDPROC res

EXPORT PROC create() OF codePreviewForm
DEF gads:PTR TO LONG
DEF tempbase=0,map
DEF gfxb:PTR TO gfxbase

NEW gads[NUM_PREVIEW_GADS]
self.gadgetList:=gads
Expand All @@ -61,24 +74,10 @@ EXPORT PROC create() OF codePreviewForm
GA_TABCYCLE, TRUE,
GA_READONLY, TRUE,
TAG_END])
ELSE
gfxb:=gfxbase
self.gadgetList[ PREVIEWGAD_TEXT ]:=NewObjectA( TextField_GetClass(), NIL,[
GA_ID, PREVIEWGAD_TEXT,
//GA_TEXTEDITOR_WRAPBORDER,-1,
//GA_TEXTEDITOR_FIXEDFONT,TRUE,
//GA_TEXTEDITOR_HORIZONTALSCROLL, TRUE,

GA_RELVERIFY, TRUE,
GA_TABCYCLE, TRUE,
TEXTFIELD_TEXTFONT, gfxb.defaultfont,
TEXTFIELD_READONLY, TRUE,
TEXTFIELD_BORDER, TEXTFIELD_BORDER_BEVEL,
TAG_END])
ELSE
self.gadgetList[ PREVIEWGAD_TEXT ]:=self.createTextFieldGad()
ENDIF

textfieldbase:=texteditorbase

self.gadgetActions:=gads
self.windowObj:=WindowObject,
WA_TITLE, 'Code Preview',
Expand Down Expand Up @@ -162,6 +161,7 @@ ENDPROC
EXPORT PROC showCode(strStream:PTR TO stringStreamer) OF codePreviewForm
DEF str[201]:ARRAY OF CHAR
DEF win,top
DEF newgad,tempdata,size
strStream.reset()
win:=Gets(self.windowObj,WINDOW_WINDOW)
top:=Gets(self.gadgetList[ PREVIEWGAD_SCROLL ],SCROLLER_TOP)
Expand All @@ -170,20 +170,30 @@ EXPORT PROC showCode(strStream:PTR TO stringStreamer) OF codePreviewForm
SetGadgetAttrsA(self.gadgetList[ PREVIEWGAD_TEXT ],win,0,[GA_TEXTEDITOR_QUIET,1,TAG_END])
ELSE
SetGadgetAttrsA(self.gadgetList[ PREVIEWGAD_TEXT ],win,0,[TEXTFIELD_TEXT,'',0])
newgad:=self.createTextFieldGad()
ENDIF
WHILE strStream.readLine(str)<>-1
str[StrLen(str)+1]:=0
str[StrLen(str)]:="\n"
IF texteditorbase
DoGadgetMethodA(self.gadgetList[ PREVIEWGAD_TEXT ],win,0,[GM_TEXTEDITOR_INSERTTEXT, 0, str, GV_TEXTEDITOR_INSERTTEXT_BOTTOM]:gp_texteditor_inserttext)
ELSE
SetGadgetAttrsA(self.gadgetList[ PREVIEWGAD_TEXT ],win,0,[TEXTFIELD_INSERTTEXT,str,0])
SetGadgetAttrsA(newgad,0,0,[TEXTFIELD_INSERTTEXT,str,0])
ENDIF
ENDWHILE
IF texteditorbase
SetGadgetAttrsA(self.gadgetList[ PREVIEWGAD_TEXT ],win,0,[GA_TEXTEDITOR_QUIET,FALSE,TAG_END])
SetGadgetAttrsA(self.gadgetList[ PREVIEWGAD_TEXT ],win,0,[GA_TEXTEDITOR_PROP_FIRST,top,TAG_END])
ELSE
size:=Gets(newgad,TEXTFIELD_SIZE)
tempdata:=New(size)
IF tempdata
CopyMem(Gets(newgad,TEXTFIELD_TEXT),tempdata,size)
SetGadgetAttrsA(self.gadgetList[ PREVIEWGAD_TEXT ],win,0,[TEXTFIELD_TEXT,tempdata,TAG_END])
Dispose(tempdata)
ENDIF
DisposeObject(newgad)

SetGadgetAttrsA(self.gadgetList[ PREVIEWGAD_TEXT ],win,0,[TEXTFIELD_TOP,top,TAG_END])
ENDIF
SetGadgetAttrsA(self.gadgetList[ PREVIEWGAD_SCROLL ],win,0,[SCROLLER_TOP,top,TAG_END])
Expand Down
2 changes: 1 addition & 1 deletion requesterItemObject.e
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ PROC create() OF requesterItemSettingsForm
GA_ID, REQITEMGAD_BODY,
GA_RELVERIFY, TRUE,
GA_TABCYCLE, TRUE,
GA_READONLY, FALSE,
TEXTFIELD_READONLY, FALSE,
TEXTFIELD_BORDER, TEXTFIELD_BORDER_BEVEL,
TAG_END])
ENDIF
Expand Down
4 changes: 2 additions & 2 deletions textEditorObject.e
Original file line number Diff line number Diff line change
Expand Up @@ -404,7 +404,7 @@ PROC editSettings(comp:PTR TO textEditorObject) OF textEditorSettingsForm
ENDPROC res=MR_OK

EXPORT PROC createPreviewObject(scr) OF textEditorObject
DEF tempbase
DEF tempbase=0
self.previewObject:=0
IF (texteditorbase)
tempbase:=textfieldbase
Expand All @@ -426,7 +426,7 @@ EXPORT PROC createPreviewObject(scr) OF textEditorObject
TAG_END])
ENDIF
IF self.previewObject=0 THEN self.previewObject:=self.createErrorObject(scr)
textfieldbase:=tempbase
IF tempbase THEN textfieldbase:=tempbase

self.makePreviewChildAttrs(0)
ENDPROC
Expand Down

0 comments on commit b8538e1

Please sign in to comment.