Tt_message ttdt_Status( Tt_message context, Tt_message commission, const char *statusString, const char *toolName, const char *vendor, const char *version, int sendAndDestroy ) { char *handler = 0; if (commission != 0) { handler = tt_message_sender( commission ); } Tt_message msg = _ttDtPMessageCreate( context, TT_NOTICE, TT_SESSION, handler, TTDT_STATUS, 0, 0, 0 ); tt_free( handler ); Tt_status status = tt_ptr_error( msg ); if (status != TT_OK) { return msg; } tt_message_arg_add( msg, TT_IN, Tttk_string, statusString ); tt_message_arg_add( msg, TT_IN, Tttk_string, toolName ); tt_message_arg_add( msg, TT_IN, Tttk_string, vendor ); tt_message_arg_add( msg, TT_IN, Tttk_string, version ); msg = _ttDesktopMessageFinish( msg, commission, sendAndDestroy ); status = tt_ptr_error( msg ); if (sendAndDestroy && (tt_ptr_error( msg ) == TT_OK)) { tttk_message_destroy( msg ); return 0; } return msg; }
static Tt_message _ttDtStarted( Tttk_op op, Tt_message context, const char *toolName, const char *vendor, const char *version, int sendAndDestroy ) { Tt_message msg = tttk_message_create( context, TT_NOTICE, TT_SESSION, 0, _ttDtOp( op ), 0 ); Tt_status status = tt_ptr_error( msg ); if (status != TT_OK) { return msg; } tt_message_arg_add( msg, TT_IN, Tttk_string, toolName ); tt_message_arg_add( msg, TT_IN, Tttk_string, vendor ); tt_message_arg_add( msg, TT_IN, Tttk_string, version ); if (! sendAndDestroy) { return msg; } status = tt_message_send( msg ); if (status != TT_OK) { tttk_message_destroy( msg ); return (Tt_message)tt_error_pointer( status ); } tttk_message_destroy( msg ); return 0; }
// // Create and optionally send a {GS}et_XInfo request or edict // static Tt_message _ttdt_GSet_XInfo( Tttk_op op, const char *handler, Tt_message commission, Tt_class theClass, Ttdt_XInfo_in_cb callback, void *clientdata, const char *display, int visual, int depth, int send ) { Tt_message msg = _ttDesktopMessageCreate( commission, theClass, handler, op, _ttdt_XInfo_in_cb, (void *)callback, clientdata ); Tt_status status = tt_ptr_error( msg ); if (status != TT_OK) { return msg; } _TttkItem2Free fuse = msg; if (op == TTDT_GET_XINFO) { status = tt_message_arg_add( msg, TT_OUT, Tttk_string, 0 ); if (status != TT_OK) { return (Tt_message)tt_error_pointer( status ); } status = tt_message_arg_add( msg, TT_OUT, Tttk_string, 0 ); if (status != TT_OK) { return (Tt_message)tt_error_pointer( status ); } status = tt_message_arg_add( msg, TT_OUT, Tttk_integer, 0 ); if (status != TT_OK) { return (Tt_message)tt_error_pointer( status ); } } else { status = tt_message_arg_add( msg, TT_IN, Tttk_string, display); if (status != TT_OK) { return (Tt_message)tt_error_pointer( status ); } status = tt_message_arg_add( msg, TT_IN, Tttk_string, _ttDtVisualString( visual )); if (status != TT_OK) { return (Tt_message)tt_error_pointer( status ); } status = tt_message_iarg_add( msg, TT_INOUT, Tttk_integer, depth ); if (status != TT_OK) { return (Tt_message)tt_error_pointer( status ); } } fuse = (caddr_t)0; return _ttDesktopMessageFinish( msg, commission, send ); }
// // If clientCB is 0, uses _ttDtApplyLocale, q.v. re clientData. // Tt_message ttdt_Get_Locale( const char *handler, Tt_message commission, Ttdt_Get_Locale_msg_cb clientCB, void *clientData, const char **categories, int send ) { const char *_handler = handler; if ((handler == 0) && (commission != 0)) { _handler = tt_message_sender( commission ); } if (clientCB == 0) { clientCB = _ttDtApplyLocale; } Tt_message msg = _ttDtPMessageCreate( commission, TT_REQUEST, TT_SESSION, handler, TTDT_GET_LOCALE, _ttDtGetLocaleCB, (void *)clientCB, clientData ); Tt_status status = tt_ptr_error( msg ); if (status != TT_OK) { return msg; } // // Guarantees that msg will be destroyed when this function returns // _TttkItem2Free fuse = msg; const char **_cats = categories; if (_cats == 0) { _cats = _Tt_categories; } while (*_cats != 0) { status = tt_message_arg_add( msg, TT_IN, Tttk_string, *_cats ); if (status != TT_OK) { return (Tt_message)tt_error_pointer( status ); } status = tt_message_arg_add( msg, TT_OUT, Tttk_string, 0 ); if (status != TT_OK) { return (Tt_message)tt_error_pointer( status ); } _cats++; } if (send) { status = tt_message_send( msg ); if (status != TT_OK) { return (Tt_message)tt_error_pointer( status ); } } fuse = (caddr_t)0; return msg; }
/************************************************* * * Routine to send identification request. */ void IdSelfToCallerRequest(void) { Tt_message msg; Tt_status status; char *procid; procid = tt_default_procid(); msg = dtexec_tttk_message_create( (Tt_message) NULL, TT_REQUEST, TT_SESSION, dtSvcProcIdG, "_DtActDtexecID", IdSelfToCallerReplyCB ); tt_message_iarg_add( msg, TT_IN, dtexec_Tttk_integer, dtSvcInvIdG ); tt_message_iarg_add( msg, TT_IN, dtexec_Tttk_integer, dtSvcChildIdG ); tt_message_arg_add( msg, TT_IN, dtexec_Tttk_message_id, procid ); status = tt_message_send( msg ); tt_free(procid); if (status != TT_OK) { dtexec_tttk_message_destroy( msg ); DetachFromTooltalk(NULL); } }
// // Create and optionally send a {GS}et_Iconified request or edict // static Tt_message _ttdt_GSet_Iconified( Tttk_op op, const char *handler, Tt_message commission, Tt_class theClass, Ttdt_Iconified_in_cb callback, void *clientdata, int iconified, int send ) { Tt_message msg = _ttDesktopMessageCreate( commission, theClass, handler, op, _ttdt_Iconified_in_cb, (void *)callback, clientdata ); Tt_status status = tt_ptr_error( msg ); if (status != TT_OK) { return msg; } _TttkItem2Free fuse = msg; if (op == TTDT_GET_ICONIFIED) { status = tt_message_arg_add( msg, TT_OUT, Tttk_boolean, 0 ); if (status != TT_OK) { return (Tt_message)tt_error_pointer( status ); } } else { status = tt_message_iarg_add( msg, TT_IN, Tttk_boolean, iconified ); if (status != TT_OK) { return (Tt_message)tt_error_pointer( status ); } } fuse = (caddr_t)0; return _ttDesktopMessageFinish( msg, commission, send ); }
// // Add commission id and send, if appropriate // Tt_message _ttDesktopMessageFinish( Tt_message msg, Tt_message commission, int send ) { _TttkItem2Free fuse = msg; Tt_status status; if (commission != 0) { char *id = _tttk_message_id( commission ); status = tt_message_arg_add( msg, TT_IN, Tttk_message_id, id ); tt_free( id ); if (status != TT_OK) { return (Tt_message)tt_error_pointer( status ); } } if (send) { status = tt_message_send( msg ); if (status != TT_OK) { return (Tt_message)tt_error_pointer( status ); } } fuse = (caddr_t)0; return msg; }
static Tt_message create_new_message(char *name, int height, int width) { Tt_message msg; msg = tt_message_create(); exit_err_ptr(msg); exit_err(tt_message_address_set (msg, TT_PROCEDURE)); exit_err(tt_message_class_set (msg, TT_REQUEST)); exit_err(tt_message_scope_set (msg, TT_SESSION)); exit_err(tt_message_op_set (msg, "emacs-make-client-frame")); exit_err(tt_message_arg_add (msg, TT_IN, "string", name)); exit_err(tt_message_iarg_add (msg, TT_IN, "int", height)); exit_err(tt_message_iarg_add (msg, TT_IN, "int", width)); exit_err(tt_message_callback_add(msg, callback_fn)); return msg; }
// // If clientCB is 0, uses _ttDtApplySituation, q.v. re clientData. // Tt_message ttdt_Get_Situation( const char *handler, Tt_message commission, Ttdt_Get_Situation_msg_cb clientCB, void *clientData, int send ) { const char *_handler = handler; if ((handler == 0) && (commission != 0)) { _handler = tt_message_sender( commission ); } if (clientCB == 0) { clientCB = _ttDtApplySituation; } Tt_message msg = _ttDtPMessageCreate( commission, TT_REQUEST, TT_SESSION, _handler, TTDT_GET_SITUATION, _ttDtGetSituationCB, (void *)clientCB, clientData ); Tt_status status = tt_ptr_error( msg ); if (status != TT_OK) { return msg; } // // Guarantees that msg will be destroyed when this function returns // _TttkItem2Free fuse = msg; status = tt_message_arg_add( msg, TT_OUT, Tttk_string, 0 ); if (status != TT_OK) { return (Tt_message)tt_error_pointer( status ); } if (send) { status = tt_message_send( msg ); if (status != TT_OK) { return (Tt_message)tt_error_pointer( status ); } } fuse = (caddr_t)0; return msg; }
// // Create and optionally send a {GS}et_Geometry request or edict // static Tt_message _ttdt_GSet_Geometry( Tttk_op op, const char *handler, Tt_message commission, Tt_class theClass, Ttdt_Geometry_in_cb callback, void *clientdata, int w, int h, int x, int y, int send ) { Tt_message msg = _ttDesktopMessageCreate( commission, theClass, handler, op, _ttdt_Geometry_in_cb, (void *)callback, clientdata ); Tt_status status = tt_ptr_error( msg ); if (status != TT_OK) { return msg; } _TttkItem2Free fuse = msg; if (op == TTDT_GET_GEOMETRY) { status = tt_message_arg_add( msg, TT_OUT, Tttk_width, 0 ); if (status != TT_OK) { return (Tt_message)tt_error_pointer( status ); } status = tt_message_arg_add( msg, TT_OUT, Tttk_height, 0 ); if (status != TT_OK) { return (Tt_message)tt_error_pointer( status ); } status = tt_message_arg_add( msg, TT_OUT, Tttk_xoffset, 0 ); if (status != TT_OK) { return (Tt_message)tt_error_pointer( status ); } status = tt_message_arg_add( msg, TT_OUT, Tttk_yoffset, 0 ); if (status != TT_OK) { return (Tt_message)tt_error_pointer( status ); } } else { status = tt_message_iarg_add( msg, TT_INOUT, Tttk_width, w ); if (status != TT_OK) { return (Tt_message)tt_error_pointer( status ); } status = tt_message_iarg_add( msg, TT_INOUT, Tttk_height, h ); if (status != TT_OK) { return (Tt_message)tt_error_pointer( status ); } status = tt_message_iarg_add( msg, TT_INOUT, Tttk_xoffset, x ); if (status != TT_OK) { return (Tt_message)tt_error_pointer( status ); } status = tt_message_iarg_add( msg, TT_INOUT, Tttk_yoffset, y ); if (status != TT_OK) { return (Tt_message)tt_error_pointer( status ); } } fuse = (caddr_t)0; return _ttDesktopMessageFinish( msg, commission, send ); }