void Window_init( Handle self, HV * profile) { dPROFILE; SV * sv; inherited init( self, profile); opt_set( optSystemSelectable); opt_assign( optOwnerIcon, pget_B( ownerIcon)); opt_assign( optMainWindow, pget_B( mainWindow)); my-> set_icon( self, pget_H( icon)); my-> menuColorIndex( self, true, ciFore, pget_i( menuColor) ); my-> menuColorIndex( self, true, ciBack, pget_i( menuBackColor) ); my-> menuColorIndex( self, true, ciHiliteText, pget_i( menuHiliteColor) ); my-> menuColorIndex( self, true, ciHilite, pget_i( menuHiliteBackColor) ); my-> menuColorIndex( self, true, ciDisabledText, pget_i( menuDisabledColor) ); my-> menuColorIndex( self, true, ciDisabled, pget_i( menuDisabledBackColor)); my-> menuColorIndex( self, true, ciLight3DColor, pget_i( menuLight3DColor) ); my-> menuColorIndex( self, true, ciDark3DColor, pget_i( menuDark3DColor) ); SvHV_Font( pget_sv( menuFont), &Font_buffer, "Window::init"); my-> set_menu_font ( self, Font_buffer); if ( SvTYPE( sv = pget_sv( menuItems)) != SVt_NULL) my-> set_menuItems( self, sv); my-> set_modalResult( self, pget_i( modalResult)); my-> set_modalHorizon( self, pget_B( modalHorizon)); CORE_INIT_TRANSIENT(Window); }
void Drawable_set( Handle self, HV * profile) { dPROFILE; if ( pexist( font)) { SvHV_Font( pget_sv( font), &Font_buffer, "Drawable::set"); my-> set_font( self, Font_buffer); pdelete( font); } if ( pexist( translate)) { AV * av = ( AV *) SvRV( pget_sv( translate)); Point tr = {0,0}; SV ** holder = av_fetch( av, 0, 0); if ( holder) tr.x = SvIV( *holder); else warn("RTC0059: Array panic on 'translate'"); holder = av_fetch( av, 1, 0); if ( holder) tr.y = SvIV( *holder); else warn("RTC0059: Array panic on 'translate'"); my-> set_translate( self, tr); pdelete( translate); } if ( pexist( width) && pexist( height)) { Point size; size. x = pget_i( width); size. y = pget_i( height); my-> set_size( self, size); pdelete( width); pdelete( height); } inherited set( self, profile); }
void Window_set( Handle self, HV * profile) { dPROFILE; Bool owner_icon = false; if ( pexist( menuFont)) { SvHV_Font( pget_sv( menuFont), &Font_buffer, "Window::set"); my-> set_menu_font( self, Font_buffer); pdelete( menuFont); } if ( pexist( owner)) { owner_icon = pexist( ownerIcon) ? pget_B( ownerIcon) : my-> get_ownerIcon( self); pdelete( ownerIcon); } if ( pexist( frameOrigin) || pexist( frameSize)) { Bool io = 0, is = 0; Point o, s; if ( pexist( frameOrigin)) { int set[2]; prima_read_point( pget_sv( frameOrigin), set, 2, "Array panic on 'frameOrigin'"); pdelete( frameOrigin); o. x = set[0]; o. y = set[1]; io = 1; } else { o.x = o. y = 0; } if ( pexist( frameSize)) { int set[2]; prima_read_point( pget_sv( frameSize), set, 2, "Array panic on 'frameSize'"); pdelete( frameSize); s. x = set[0]; s. y = set[1]; is = 1; } else { s.x = s. y = 0; } if ( is && io) apc_widget_set_rect( self, o. x, o. y, s. x, s. y); else if ( io) my-> set_frameOrigin( self, o); else my-> set_frameSize( self, s); } inherited set( self, profile); if ( owner_icon) { my-> set_ownerIcon( self, 1); opt_set( optOwnerIcon); } }
void Drawable_init( Handle self, HV * profile) { dPROFILE; inherited init( self, profile); apc_gp_init( self); var-> w = var-> h = 0; my-> set_color ( self, pget_i ( color)); my-> set_backColor ( self, pget_i ( backColor)); my-> set_fillWinding ( self, pget_B ( fillWinding)); my-> set_fillPattern ( self, pget_sv( fillPattern)); my-> set_lineEnd ( self, pget_i ( lineEnd)); my-> set_lineJoin ( self, pget_i ( lineJoin)); my-> set_linePattern ( self, pget_sv( linePattern)); my-> set_lineWidth ( self, pget_i ( lineWidth)); my-> set_region ( self, pget_H ( region)); my-> set_rop ( self, pget_i ( rop)); my-> set_rop2 ( self, pget_i ( rop2)); my-> set_textOpaque ( self, pget_B ( textOpaque)); my-> set_textOutBaseline( self, pget_B ( textOutBaseline)); my-> set_splinePrecision( self, pget_i ( splinePrecision)); if ( pexist( translate)) { AV * av = ( AV *) SvRV( pget_sv( translate)); Point tr = {0,0}; SV ** holder = av_fetch( av, 0, 0); if ( holder) tr.x = SvIV( *holder); else warn("RTC0059: Array panic on 'translate'"); holder = av_fetch( av, 1, 0); if ( holder) tr.y = SvIV( *holder); else warn("RTC0059: Array panic on 'translate'"); my-> set_translate( self, tr); } SvHV_Font( pget_sv( font), &Font_buffer, "Drawable::init"); my-> set_font( self, Font_buffer); my-> set_palette( self, pget_sv( palette)); CORE_INIT_TRANSIENT(Drawable); }
void Application_init( Handle self, HV * profile) { dPROFILE; int hintPause = pget_i( hintPause); Color hintColor = pget_i( hintColor), hintBackColor = pget_i( hintBackColor); SV * hintFont = pget_sv( hintFont); SV * sv; char * hintClass = pget_c( hintClass); if ( application != nilHandle) croak( "Attempt to create more than one application instance"); CDrawable-> init( self, profile); list_create( &var-> widgets, 16, 16); list_create( &var-> modalHorizons, 0, 8); application = self; if ( !apc_application_create( self)) croak( "Error creating application"); /* Widget init */ SvHV_Font( pget_sv( font), &Font_buffer, "Application::init"); my-> set_font( self, Font_buffer); SvHV_Font( pget_sv( popupFont), &Font_buffer, "Application::init"); my-> set_popup_font( self, Font_buffer); { AV * av = ( AV *) SvRV( pget_sv( designScale)); SV ** holder = av_fetch( av, 0, 0); if ( holder) var-> designScale. x = SvNV( *holder); else warn("Array panic on 'designScale'"); holder = av_fetch( av, 1, 0); if ( holder) var-> designScale. y = SvNV( *holder); else warn("Array panic on 'designScale'"); pdelete( designScale); } var-> text = duplicate_string(""); opt_set( optModalHorizon); /* store extra info */ { HV * hv = ( HV *) SvRV( var-> mate); (void) hv_store( hv, "PrinterClass", 12, newSVpv( pget_c( printerClass), 0), 0); (void) hv_store( hv, "PrinterModule", 13, newSVpv( pget_c( printerModule), 0), 0); (void) hv_store( hv, "HelpClass", 9, newSVpv( pget_c( helpClass), 0), 0); (void) hv_store( hv, "HelpModule", 10, newSVpv( pget_c( helpModule), 0), 0); } { HV * profile = newHV(); static Timer_vmt HintTimerVmt; pset_H( owner, self); pset_i( timeout, hintPause); pset_c( name, "HintTimer"); var-> hintTimer = create_instance( "Prima::Timer"); protect_object( var-> hintTimer); hv_clear( profile); memcpy( &HintTimerVmt, CTimer, sizeof( HintTimerVmt)); HintTimerVmt. handle_event = Application_HintTimer_handle_event; (( PTimer) var-> hintTimer)-> self = &HintTimerVmt; pset_H( owner, self); pset_i( color, hintColor); pset_i( backColor, hintBackColor); pset_i( visible, 0); pset_i( selectable, 0); pset_i( showHint, 0); pset_c( name, "HintWidget"); pset_sv( font, hintFont); var-> hintWidget = create_instance( hintClass); protect_object( var-> hintWidget); sv_free(( SV *) profile); } if ( SvTYPE( sv = pget_sv( accelItems)) != SVt_NULL) my-> set_accelItems( self, sv); if ( SvTYPE( sv = pget_sv( popupItems)) != SVt_NULL) my-> set_popupItems( self, sv); pdelete( accelTable); pdelete( accelItems); pdelete( popupItems); my-> set( self, profile); CORE_INIT_TRANSIENT(Application); }