Page 1 of 1
no closing of message window
Posted: 19 Jun 2014 13:05
by Audun Tönnesen
I'm going to use the message window actively in an app, so I don't want the user to close it.
Looking in the code (and inherited code, and other in herited code...) I see many references to frame decorations, but the question is: is there ONE place to skip the close-box of the message window without interfering with other windows?
Posted: 23 Jun 2014 17:56
by Thomas Linder Puls
You can change the decoration in the
taskWindow, before you show the form:
Code: Select all
predicates
onShow : window::showListener.
clauses
onShow(_, _CreationData) :-
MessageForm = messageForm::new(This),
MessageForm:setDecoration(titlebar([])),
MessageForm:show().
Posted: 24 Jun 2014 7:09
by Audun Tönnesen
Something funny here....
I wanted no closebutton, but still keep minimizebutton and maximizebutton. However, it seems this predicate is a "all or none." If I try this, there's no buttons at all:
onShow(_, _CreationData) :-
MessageForm = messageForm::new(This),
MessageForm:setDecoration(titlebar([minimizebutton(), maximizebutton()])), %Only two buttons, but they don't show
MessageForm:show().
I've tested the same thing with the task-window: same result: deleting the closebutton() from the decoration-list renders a taskwindow titlebar without buttons at all.
Posted: 24 Jun 2014 7:14
by Audun Tönnesen
The "opposite" is possible, though: if I delete the minimize- and maximize- buttons from the list, but keep the closebutton, the window is renderet with only closebutton:
setDecoration(titlebar([closebutton()])), %Only close button will be rendered
Posted: 24 Jun 2014 7:39
by Audun Tönnesen
Crisis ! After I tinkered with the Taskwindow (automatic generated code), there's a fatal link error:
Type Description Filename f2505 Fatal error 2505: Cannot create file 'Exe\fallkon.exe', errno=13 fallkon.exe
I've deleted OBJ-directory, restarted system, Rebuilt All, but no use. And of course, I've mended the code (creation of task-window) by copying it in from one of the example-programs.
Posted: 24 Jun 2014 8:03
by Thomas Linder Puls
A Microsoft Windows window cannot have
minimize and
maximize unless it have
close.
The error:
Type Description Filename f2505 Fatal error 2505: Cannot create file 'Exe\fallkon.exe', errno=13 fallkon.exe
comes when you then program (i.e. falkon.exe) is still running while you try to create a new one.
Booting will of course help, but closing the program is sufficient.
Creation of message window with user defined buttons and redirection of standerd output
Posted: 24 Jun 2014 14:39
by Ferenc Nagy
I have dealt with this problem in my contribution
http://wiki.visual-prolog.com/index.php ... d:TestDraw.
I have omitted the handling of the relative distance of the frames of message window from the client rectangle of the task window from the code excerts below
Code: Select all
% Construction with given buttons in the titlebar and and close responder
constructors
% Construction with given buttons in the titlebar and and close responder
new:(window Parent,
frameDecoration::decoration Buttons, % Buttons on the titlebar.
frameDecoration::closeResponder CloseMode,
string Title, font, boolean RedirectStdio).
constants
% Display with changed titlebar and closing modes.
max_min_button:frameDecoration::decoration=frameDecoration::titlebar([frameDecoration::maximizebutton(),frameDecoration::minimizebutton()]).
max_min_close_button:frameDecoration::decoration=frameDecoration::titlebar([frameDecoration::maximizebutton(),frameDecoration::minimizebutton(),frameDecoration::closeButton()]).
predicates
denyCloseResponder(_)=denyClose().
acceptCloseResponder(_)=acceptClose().
clauses
new(Parent,Buttons,CloseResponder,Title, Font, RedirectStdio) :-
formWindow::new(Parent),
setText(Title),
formMessageControl := messageControl::new(This),
formMessageControl:setLines(MaxLines),
% The listeners react the change of the size of the parent window.
addSizeListener(resizeListener),
addGetFocusListener(focusListener),
addUserListener(
Parent:addSizeListener(onParentResize),
onParentResize(Parent),
% These are the settings of added properites
addDestroyListener(onDestroy),
setCloseResponder(CloseResponder),
setDecoration(Buttons),
if RedirectStdio=true then
stdio::setOutputStream(formMessageControl:getOutputStream())
end if.
predicates
onDestroy : destroyListener.
clauses
onDestroy(_) :-
if redirected_output=true then
stdio::setOutputStream(ini_out_stream)
end if,
Parent=getParent(),
Parent:removeSizeListener(onParentResize),
retractAll(instance(This)).
Posted: 26 Jun 2014 11:22
by Audun Tönnesen
Thanks for contribution, Frank!
I admit it went "over my head," but anyway...
I decided to just ditch the message window and use a sciLexer editor instead.
Is not the frame of Scilexer message window the same as the old fashioned one?
Posted: 26 Jun 2014 13:00
by Ferenc Nagy
Audun,
If you inspect the code than you'll see that even if
formMessageControl : messageControl is replaced by a scilexer control within the message window,
but the modified handling of the window frame around it is still usable.
Posted: 27 Jun 2014 21:37
by Audun Tönnesen
In the new(...)-clause, fourth line??