! $XConsortium: animate.uil /main/4 1996/07/15 15:13:12 drk $ ! Motif ! ! Copyright (c) 1987-2012, The Open Group. All rights reserved. ! ! These libraries and programs are free software; you can ! redistribute them and/or modify them under the terms of the GNU ! Lesser General Public License as published by the Free Software ! Foundation; either version 2 of the License, or (at your option) ! any later version. ! ! These libraries and programs are distributed in the hope that ! they will be useful, but WITHOUT ANY WARRANTY; without even the ! implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ! PURPOSE. See the GNU Lesser General Public License for more ! details. ! ! You should have received a copy of the GNU Lesser General Public ! License along with these librararies and programs; if not, write ! to the Free Software Foundation, Inc., 51 Franklin Street, Fifth ! Floor, Boston, MA 02110-1301 USA ! ! ! HISTORY !*************************************************************** !* ** !* Motifanim general interface. ** !* Author : Daniel Dardailler, March 90, June 90, August 91 ** !* ** !**************************************************************/ module motifanim version = 'v1.0' names = case_sensitive procedure p_motifanim_start(); p_motifanim_stop(); p_motifanim_step(); p_motifanim_speed(integer); p_motifanim_exit(); p_motifanim_help(); p_motifanim_draw(integer); !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! The main is a big Form that try to manage its children ! as well as possible... !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! object motifanim_main : XmMainWindow { controls { XmMenuBar motifanim_bar ; XmForm motifanim_form ; }; }; object motifanim_form : XmForm { arguments { XmNdefaultButton = motifanim_start ; }; controls { XmScrolledWindow motifanim_view; XmSeparator motifanim_sep; XmPushButton motifanim_start; XmPushButton motifanim_stop; XmPushButton motifanim_step; XmScale motifanim_speed; }; }; !------------------------------------------------------- ! As a geometry starting point, we fix the bottom line of ! PushButtons (start, stop..) to the Form bottom and sides ! and the menubar to the top !------------------------------------------------------- object motifanim_bar : XmMenuBar { arguments { XmNmenuHelpWidget = XmCascadeButton help_entry; }; controls { XmCascadeButton file_menu_entry; XmCascadeButton help_entry; }; }; object file_menu_entry : XmCascadeButton { arguments { XmNlabelString = compound_string('File') ; XmNmnemonic = keysym("F"); }; controls { XmPulldownMenu file_menu; }; }; object help_entry : XmCascadeButton { arguments { XmNlabelString = compound_string('Help') ; XmNmnemonic = keysym("H"); }; controls { XmPulldownMenu help_menu; }; }; object file_menu : XmPulldownMenu { controls { XmPushButton motifanim_quit; }; }; object help_menu : XmPulldownMenu { controls { XmPushButton motifanim_help; }; }; object motifanim_quit : XmPushButton { arguments { XmNlabelString = compound_string('Quit'); XmNmnemonic = keysym("Q"); }; callbacks { XmNactivateCallback = procedure p_motifanim_exit(); }; }; object motifanim_help : XmPushButton { arguments { XmNlabelString = compound_string('Overview'); XmNmnemonic = keysym("O"); }; callbacks { XmNactivateCallback = procedure p_motifanim_help(); }; }; object motifanim_start : XmPushButton { arguments { XmNlabelString = compound_string('Start'); XmNbottomAttachment = XmATTACH_FORM ; XmNleftAttachment = XmATTACH_FORM ; }; callbacks { XmNactivateCallback = procedure p_motifanim_start(); }; }; object motifanim_stop : XmPushButton { arguments { XmNlabelString = compound_string('Stop'); XmNbottomAttachment = XmATTACH_FORM ; XmNleftAttachment = XmATTACH_WIDGET ; XmNleftWidget = XmPushButton motifanim_start ; }; callbacks { XmNactivateCallback = procedure p_motifanim_stop(); }; }; object motifanim_step : XmPushButton { arguments { XmNlabelString = compound_string('One step'); XmNbottomAttachment = XmATTACH_FORM ; XmNleftAttachment = XmATTACH_WIDGET ; XmNleftWidget = XmPushButton motifanim_stop ; }; callbacks { XmNactivateCallback = procedure p_motifanim_step(); }; }; object motifanim_speed : XmScale { arguments { XmNtitleString = compound_string('Speed'); XmNorientation = XmHORIZONTAL ; XmNbottomAttachment = XmATTACH_FORM ; XmNleftAttachment = XmATTACH_WIDGET ; XmNleftWidget = XmPushButton motifanim_step ; }; callbacks { MrmNcreateCallback = procedure p_motifanim_speed(0); XmNdragCallback = procedure p_motifanim_speed(1); XmNvalueChangedCallback = procedure p_motifanim_speed(2); }; }; !------------------------------------------------------- ! Now that the bottom pushbuttons are fixed, ! we attach the Separator to the first one in the line !------------------------------------------------------- object motifanim_sep : XmSeparator { arguments { XmNrightAttachment = XmATTACH_FORM ; XmNleftAttachment = XmATTACH_FORM ; XmNbottomAttachment = XmATTACH_WIDGET ; XmNbottomWidget = motifanim_speed ; }; }; !------------------------------------------------------- ! This one is full rubber !------------------------------------------------------- object motifanim_view : XmScrolledWindow { arguments { XmNrightAttachment = XmATTACH_FORM ; XmNtopAttachment = XmATTACH_FORM ; XmNbottomAttachment = XmATTACH_WIDGET ; XmNbottomWidget = XmSeparator motifanim_sep ; XmNleftAttachment = XmATTACH_FORM ; XmNscrollingPolicy = XmAUTOMATIC ; }; controls { XmDrawingArea view_anim ; }; }; value anim_width : imported integer ; anim_height : imported integer ; anim_backcolor : imported color ; object view_anim : XmDrawingArea { arguments { XmNwidth = anim_width ; XmNheight = anim_height ; XmNbackground = anim_backcolor ; }; callbacks { MrmNcreateCallback = procedure p_motifanim_draw(0); XmNexposeCallback = procedure p_motifanim_draw(1); }; }; end module;