677 lines
24 KiB
C
677 lines
24 KiB
C
/*
|
|
* CDE - Common Desktop Environment
|
|
*
|
|
* Copyright (c) 1993-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
|
|
*/
|
|
|
|
/*
|
|
* $XConsortium: utils_c_file.c /main/3 1995/11/06 18:16:48 rswiston $
|
|
*
|
|
* @(#)utils_c_file.c 1.25 08 May 1995 cde_app_builder/src/abmf
|
|
*
|
|
* RESTRICTED CONFIDENTIAL INFORMATION:
|
|
*
|
|
* The information in this document is subject to special
|
|
* restrictions in a confidential disclosure agreement between
|
|
* HP, IBM, Sun, USL, SCO and Univel. Do not distribute this
|
|
* document outside HP, IBM, Sun, USL, SCO, or Univel without
|
|
* Sun's specific written approval. This document and all copies
|
|
* and derivative works thereof must be returned or destroyed at
|
|
* Sun's request.
|
|
*
|
|
* Copyright 1993 Sun Microsystems, Inc. All rights reserved.
|
|
*
|
|
*/
|
|
|
|
|
|
/*
|
|
* utils_c_file.c - writes dtb_utils.c
|
|
*/
|
|
|
|
#include <ab_private/abio.h>
|
|
#include "lib_func_stringsP.h"
|
|
#include "write_cP.h"
|
|
#include "utils_c_fileP.h"
|
|
|
|
/*************************************************************************
|
|
** **
|
|
** Constants (#define and const) **
|
|
** **
|
|
**************************************************************************/
|
|
|
|
/*************************************************************************
|
|
** **
|
|
** Private Functions (C declarations and macros) **
|
|
** **
|
|
**************************************************************************/
|
|
static int write_lib_func(GenCodeInfo genCodeInfo, LibFunc libFunc);
|
|
static int write_all_lib_funcs(GenCodeInfo genCodeInfo, ABObj project);
|
|
|
|
static int write_all_vars(GenCodeInfo genCodeInfo, ABObj project);
|
|
static int write_all_macros(GenCodeInfo genCodeInfo, ABObj project);
|
|
static int write_all_types(GenCodeInfo genCodeInfo, ABObj project);
|
|
static int write_all_static_func_decls(GenCodeInfo genCodeInfo, ABObj project);
|
|
static int write_save_toplevel_widget_var(GenCodeInfo genCodeInfo, ABObj project);
|
|
static int write_save_command_var(GenCodeInfo genCodeInfo, ABObj project);
|
|
static int write_session_CB_vars(GenCodeInfo genCodeInfo, ABObj project);
|
|
static int write_tooltalk_CB_vars(GenCodeInfo genCodeInfo, ABObj project);
|
|
static int write_dnd_vars(GenCodeInfo genCodeInfo, ABObj project);
|
|
static int write_popup_menu_vars(GenCodeInfo genCodeInfo, ABObj project);
|
|
static int write_centering_static_func_decls(GenCodeInfo genCodeInfo, ABObj project);
|
|
static int write_msg_static_func_decls( GenCodeInfo genCodeInfo, ABObj project);
|
|
static int write_align_static_func_decls(GenCodeInfo genCodeInfo, ABObj project);
|
|
|
|
/*************************************************************************
|
|
** **
|
|
** Data **
|
|
** **
|
|
**************************************************************************/
|
|
/*************************************************************************
|
|
** **
|
|
** Function Definitions **
|
|
** **
|
|
**************************************************************************/
|
|
|
|
int
|
|
abmfP_write_utils_c_file(
|
|
GenCodeInfo genCodeInfo,
|
|
STRING fileName,
|
|
ABObj project
|
|
)
|
|
{
|
|
char projName[1024];
|
|
sprintf(projName, "project %s", obj_get_name(project));
|
|
abmfP_write_file_header(
|
|
genCodeInfo,
|
|
fileName,
|
|
FALSE,
|
|
projName,
|
|
util_get_program_name(),
|
|
ABMF_MODIFY_NOT,
|
|
" * CDE Application Builder General Utility Functions"
|
|
);
|
|
|
|
abmfP_write_c_system_include(genCodeInfo, "unistd.h");
|
|
abmfP_write_c_system_include(genCodeInfo, "stdlib.h");
|
|
abmfP_write_c_system_include(genCodeInfo, "stdio.h");
|
|
abmfP_write_c_system_include(genCodeInfo, "sys/param.h");
|
|
abmfP_write_c_system_include(genCodeInfo, "sys/stat.h");
|
|
abmfP_write_c_system_include(genCodeInfo, "Xm/Xm.h");
|
|
abmfP_write_c_system_include(genCodeInfo, "Xm/Form.h");
|
|
abmfP_write_c_system_include(genCodeInfo, "Xm/Frame.h");
|
|
abmfP_write_c_system_include(genCodeInfo, "Xm/Label.h");
|
|
abmfP_write_c_system_include(genCodeInfo, "Xm/MessageB.h");
|
|
abmfP_write_c_system_include(genCodeInfo, "Xm/PanedW.h");
|
|
abmfP_write_c_system_include(genCodeInfo, "Xm/PushB.h");
|
|
abmfP_write_c_system_include(genCodeInfo, "Xm/SashP.h");
|
|
abmfP_write_c_system_include(genCodeInfo, "Xm/RowColumn.h");
|
|
abmfP_write_c_system_include(genCodeInfo, "Dt/Help.h");
|
|
abmfP_write_c_system_include(genCodeInfo, "Dt/HelpDialog.h");
|
|
abmfP_write_c_system_include(genCodeInfo, "Dt/HelpQuickD.h");
|
|
abmfP_write_c_system_include(genCodeInfo, "Dt/Session.h");
|
|
abmfP_write_c_system_include(genCodeInfo, "Dt/Dnd.h");
|
|
abmfP_write_c_local_include(genCodeInfo, "dtb_utils.h");
|
|
|
|
write_all_macros(genCodeInfo, project);
|
|
write_all_types(genCodeInfo, project);
|
|
write_all_static_func_decls(genCodeInfo, project);
|
|
write_all_vars(genCodeInfo, project);
|
|
write_all_lib_funcs(genCodeInfo, project);
|
|
return 0;
|
|
}
|
|
|
|
|
|
static int
|
|
write_all_macros(GenCodeInfo genCodeInfo, ABObj project)
|
|
{
|
|
project = project; /* avoid warning */
|
|
|
|
abio_puts(genCodeInfo->code_file, nlstr);
|
|
abio_puts(genCodeInfo->code_file,
|
|
"#ifndef min\n"
|
|
"#define min(a,b) ((a) < (b)? (a):(b))\n"
|
|
"#endif\n\n");
|
|
|
|
abio_puts(genCodeInfo->code_file,
|
|
"#ifndef max\n"
|
|
"#define max(a,b) ((a) > (b)? (a):(b))\n"
|
|
"#endif\n\n");
|
|
|
|
abio_puts(genCodeInfo->code_file,
|
|
"#ifndef ABS\n"
|
|
"#define ABS(x) ((x) >= 0? (x):(-(x)))\n"
|
|
"#endif\n\n");
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
static int
|
|
write_all_types(GenCodeInfo genCodeInfo, ABObj project)
|
|
{
|
|
File codeFile = genCodeInfo->code_file;
|
|
project = project; /* avoid warning */
|
|
abio_puts(codeFile,
|
|
"typedef struct\n"
|
|
"{\n"
|
|
" Widget widget;\n"
|
|
" DtDndProtocol protocol;\n"
|
|
" unsigned char operations;\n"
|
|
" Boolean bufferIsText;\n"
|
|
" Boolean allowDropOnRootWindow;\n"
|
|
" Widget sourceIcon;\n"
|
|
" DtbDndDragCallback callback;\n"
|
|
" XtCallbackRec convertCBRec[2];\n"
|
|
" XtCallbackRec dragToRootCBRec[2];\n"
|
|
" XtCallbackRec dragFinishCBRec[2];\n"
|
|
"} DtbDragSiteRec, *DtbDragSite;\n"
|
|
"\n");
|
|
|
|
abio_puts(codeFile,
|
|
"typedef struct\n"
|
|
"{\n"
|
|
" Widget widget;\n"
|
|
" DtDndProtocol protocols;\n"
|
|
" unsigned char operations;\n"
|
|
" Boolean textIsBuffer;\n"
|
|
" Boolean dropsOnChildren;\n"
|
|
" Boolean preservePreviousRegistration;\n"
|
|
" DtbDndDropCallback callback;\n"
|
|
" XtCallbackRec animateCBRec[2];\n"
|
|
" XtCallbackRec transferCBRec[2];\n"
|
|
"} DtbDropSiteRec, *DtbDropSite;\n"
|
|
"\n");
|
|
|
|
abio_puts(codeFile,
|
|
"/*\n"
|
|
" * This structure keeps track of widget/menu pairs\n"
|
|
" */\n"
|
|
"typedef struct\n"
|
|
"{\n"
|
|
" Widget widget;\n"
|
|
" Widget menu;\n"
|
|
"} DtbMenuRefRec, *DtbMenuRef;\n"
|
|
"\n");
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
static int
|
|
write_all_static_func_decls(GenCodeInfo genCodeInfo, ABObj project)
|
|
{
|
|
File codeFile= genCodeInfo->code_file;
|
|
|
|
write_centering_static_func_decls(genCodeInfo, project);
|
|
|
|
if (abmfP_proj_has_message(project))
|
|
write_msg_static_func_decls(genCodeInfo, project);
|
|
|
|
/*
|
|
* Write out static functions for aligning objects in groups
|
|
*/
|
|
write_align_static_func_decls(genCodeInfo, project);
|
|
|
|
/*
|
|
* private path-determing functions
|
|
*/
|
|
abio_puts(genCodeInfo->code_file, nlstr);
|
|
abmfP_write_c_comment(genCodeInfo, FALSE,
|
|
"Private functions used for finding paths");
|
|
abio_printf(codeFile, "%s\n\n", abmfP_lib_determine_exe_dir->proto);
|
|
abio_printf(codeFile, "%s\n\n", abmfP_lib_determine_exe_dir_from_argv->proto);
|
|
abio_printf(codeFile, "%s\n\n", abmfP_lib_determine_exe_dir_from_path->proto);
|
|
abio_printf(codeFile, "%s\n\n", abmfP_lib_path_is_executable->proto);
|
|
|
|
/* private popup menu functions */
|
|
abio_printf(codeFile, "%s\n\n", abmfP_lib_popup_menu->proto);
|
|
abio_printf(codeFile, "%s\n\n", abmfP_lib_popup_menu_destroyCB->proto);
|
|
|
|
/*
|
|
* static drag functions
|
|
*/
|
|
abio_printf(codeFile, "%s\n\n", abmfP_lib_drag_terminate->proto);
|
|
abio_printf(codeFile, "%s\n\n", abmfP_lib_drag_button1_motion_handler->proto);
|
|
abio_printf(codeFile, "%s\n\n", abmfP_lib_drag_start->proto);
|
|
abio_printf(codeFile, "%s\n\n", abmfP_lib_drag_convertCB->proto);
|
|
abio_printf(codeFile, "%s\n\n", abmfP_lib_drag_to_rootCB->proto);
|
|
abio_printf(codeFile, "%s\n\n", abmfP_lib_drag_finishCB->proto);
|
|
abio_printf(codeFile, "%s\n\n", abmfP_lib_drop_animateCB->proto);
|
|
abio_printf(codeFile, "%s\n\n", abmfP_lib_drop_transferCB->proto);
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
static int
|
|
write_all_vars(GenCodeInfo genCodeInfo, ABObj project)
|
|
{
|
|
File codeFile = genCodeInfo->code_file;
|
|
|
|
write_session_CB_vars(genCodeInfo, project);
|
|
write_tooltalk_CB_vars(genCodeInfo, project);
|
|
write_save_toplevel_widget_var(genCodeInfo, project);
|
|
write_save_command_var(genCodeInfo, project);
|
|
write_popup_menu_vars(genCodeInfo, project);
|
|
write_dnd_vars(genCodeInfo, project);
|
|
|
|
/*
|
|
* write path-to-executable var
|
|
*/
|
|
abio_puts(codeFile, nlstr);
|
|
abmfP_write_c_comment(genCodeInfo, FALSE,
|
|
"Directory where the binary for this process whate loaded from");
|
|
abio_puts(codeFile,
|
|
"static char\t\t\t\t*dtb_exe_dir = (char *)NULL;\n");
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
static int
|
|
write_session_CB_vars(GenCodeInfo genCodeInfo, ABObj project)
|
|
{
|
|
File codeFile;
|
|
|
|
if (!genCodeInfo || !project)
|
|
return (0);
|
|
|
|
codeFile = genCodeInfo->code_file;
|
|
|
|
abio_puts(codeFile, "\n");
|
|
|
|
abio_puts(codeFile, "/*\n");
|
|
abio_puts(codeFile, " * Variable for storing client session save callback\n");
|
|
abio_puts(codeFile, " */\n");
|
|
abio_puts(codeFile,
|
|
"static DtbClientSessionSaveCB\t\tdtb_client_session_saveCB = NULL;\n");
|
|
|
|
if (abmfP_proj_needs_session_restore(project))
|
|
{
|
|
abio_puts(codeFile, "/*\n");
|
|
abio_puts(codeFile, " * Variable for storing client session restore callback\n");
|
|
abio_puts(codeFile, " */\n");
|
|
abio_puts(codeFile,
|
|
"static DtbClientSessionRestoreCB\tdtb_client_session_restoreCB = NULL;\n");
|
|
}
|
|
|
|
return (0);
|
|
}
|
|
|
|
static int
|
|
write_tooltalk_CB_vars(GenCodeInfo genCodeInfo, ABObj project)
|
|
{
|
|
File codeFile;
|
|
|
|
if (!genCodeInfo || !project ||
|
|
obj_get_tooltalk_level(project) != AB_TOOLTALK_DESKTOP_ADVANCED)
|
|
return (0);
|
|
|
|
codeFile = genCodeInfo->code_file;
|
|
|
|
abio_puts(codeFile, "\n");
|
|
|
|
abio_puts(codeFile, "/*\n");
|
|
abio_puts(codeFile, " * Variable for storing ToolTalk Message Quit callback\n");
|
|
abio_puts(codeFile, " */\n");
|
|
abio_puts(codeFile,
|
|
"static DtbTTMsgHandlerCB\t\tdtb_tt_msg_quitCB = NULL;\n");
|
|
|
|
abio_puts(codeFile, "/*\n");
|
|
abio_puts(codeFile, " * Variable for storing ToolTalk Message Do Command callback\n");
|
|
abio_puts(codeFile, " */\n");
|
|
abio_puts(codeFile,
|
|
"static DtbTTMsgHandlerCB\t\tdtb_tt_msg_do_commandCB = NULL;\n");
|
|
|
|
abio_puts(codeFile, "/*\n");
|
|
abio_puts(codeFile, " * Variable for storing ToolTalk Message Get Status callback\n");
|
|
abio_puts(codeFile, " */\n");
|
|
abio_puts(codeFile,
|
|
"static DtbTTMsgHandlerCB\t\tdtb_tt_msg_get_statusCB = NULL;\n");
|
|
|
|
abio_puts(codeFile, "/*\n");
|
|
abio_puts(codeFile, " * Variable for storing ToolTalk Message Pause/Resume callback\n");
|
|
abio_puts(codeFile, " */\n");
|
|
abio_puts(codeFile,
|
|
"static DtbTTMsgHandlerCB\t\tdtb_tt_msg_pause_resumeCB = NULL;\n");
|
|
|
|
return (0);
|
|
}
|
|
|
|
static int
|
|
write_save_toplevel_widget_var(GenCodeInfo genCodeInfo, ABObj project)
|
|
{
|
|
File codeFile;
|
|
|
|
if (!genCodeInfo || !project)
|
|
return (0);
|
|
|
|
codeFile = genCodeInfo->code_file;
|
|
|
|
abio_puts(codeFile, "\n");
|
|
|
|
abio_puts(codeFile, "/*\n");
|
|
abio_puts(codeFile, " * Variable for storing top level widget\n");
|
|
abio_puts(codeFile, " */\n");
|
|
abio_puts(codeFile,
|
|
"static Widget\t\tdtb_project_toplevel_widget = (Widget)NULL;\n");
|
|
|
|
return (0);
|
|
}
|
|
|
|
static int
|
|
write_save_command_var(GenCodeInfo genCodeInfo, ABObj project)
|
|
{
|
|
File codeFile;
|
|
|
|
if (!genCodeInfo || !project)
|
|
return (0);
|
|
|
|
codeFile = genCodeInfo->code_file;
|
|
|
|
abio_puts(codeFile, nlstr);
|
|
abmfP_write_c_comment(genCodeInfo, FALSE,
|
|
"Variable for storing command used to invoke application");
|
|
abio_puts(codeFile,
|
|
"static char\t\t\t\t*dtb_save_command_str = (char *)NULL;\n");
|
|
|
|
return (0);
|
|
}
|
|
|
|
|
|
static int
|
|
write_popup_menu_vars(GenCodeInfo genCodeInfo, ABObj project)
|
|
{
|
|
abio_puts(genCodeInfo->code_file, nlstr);
|
|
abmfP_write_c_comment(genCodeInfo, FALSE,
|
|
"Variables that keep track of which menus go with which widgets");
|
|
abio_puts(genCodeInfo->code_file,
|
|
"static DtbMenuRef\tpopupMenus = NULL;\n"
|
|
"static int\tnumPopupMenus = 0;\n");
|
|
return 0;
|
|
}
|
|
|
|
|
|
static int
|
|
write_dnd_vars(GenCodeInfo genCodeInfo, ABObj project)
|
|
{
|
|
File codeFile = genCodeInfo->code_file;
|
|
project = project; /* avoid warning */
|
|
abio_puts(codeFile,
|
|
"#include <Dt/Dnd.h>"
|
|
"\n"
|
|
"\n"
|
|
"#define DRAG_THRESHOLD 4\n"
|
|
"static Boolean dragInProgress = False;\n"
|
|
"static int dragInitialX = -1;\n"
|
|
"static int dragInitialY = -1;\n"
|
|
"\n");
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
static int
|
|
write_centering_static_func_decls(GenCodeInfo genCodeInfo, ABObj project)
|
|
{
|
|
File codeFile;
|
|
|
|
if (!genCodeInfo || !project)
|
|
return (0);
|
|
|
|
codeFile = genCodeInfo->code_file;
|
|
|
|
abio_puts(codeFile, "/*\n");
|
|
abio_puts(codeFile, " * Private functions used for dynamic centering of objects\n");
|
|
abio_puts(codeFile, " */\n");
|
|
abio_printf(codeFile, "%s\n", abmfP_lib_center_widget->proto);
|
|
abio_printf(codeFile, "%s\n", abmfP_lib_uncenter_widget->proto);
|
|
abio_printf(codeFile, "%s\n", abmfP_lib_centering_handler->proto);
|
|
|
|
return (0);
|
|
}
|
|
|
|
static int
|
|
write_align_static_func_decls(GenCodeInfo genCodeInfo, ABObj project)
|
|
{
|
|
File codeFile;
|
|
|
|
if (!genCodeInfo || !project)
|
|
return (0);
|
|
|
|
codeFile = genCodeInfo->code_file;
|
|
|
|
abio_puts(codeFile, "/*\n");
|
|
abio_puts(codeFile, " * Static functions used for dynamic aligning of group objects\n");
|
|
abio_puts(codeFile, " */\n");
|
|
abio_printf(codeFile, "%s\n", abmfP_lib_get_label_widget->proto);
|
|
abio_printf(codeFile, "%s\n", abmfP_lib_get_offset_from_ancestor->proto);
|
|
abio_printf(codeFile, "%s\n", abmfP_lib_get_label_width->proto);
|
|
abio_printf(codeFile, "%s\n", abmfP_lib_get_widest_label->proto);
|
|
abio_printf(codeFile, "%s\n", abmfP_lib_get_widest_value->proto);
|
|
abio_printf(codeFile, "%s\n", abmfP_lib_get_widget_rect->proto);
|
|
abio_printf(codeFile, "%s\n", abmfP_lib_get_greatest_size->proto);
|
|
abio_printf(codeFile, "%s\n", abmfP_lib_get_group_cell_size->proto);
|
|
abio_printf(codeFile, "%s\n", abmfP_lib_get_group_row_col->proto);
|
|
abio_printf(codeFile, "%s\n", abmfP_lib_get_group_child->proto);
|
|
abio_printf(codeFile, "%s\n", abmfP_lib_align_children->proto);
|
|
abio_printf(codeFile, "%s\n", abmfP_lib_align_handler->proto);
|
|
abio_printf(codeFile, "%s\n", abmfP_lib_expose_handler->proto);
|
|
abio_printf(codeFile, "%s\n", abmfP_lib_free_group_info->proto);
|
|
abio_printf(codeFile, "%s\n", abmfP_lib_align_rows->proto);
|
|
abio_printf(codeFile, "%s\n", abmfP_lib_align_cols->proto);
|
|
abio_printf(codeFile, "%s\n", abmfP_lib_align_left->proto);
|
|
abio_printf(codeFile, "%s\n", abmfP_lib_align_right->proto);
|
|
abio_printf(codeFile, "%s\n", abmfP_lib_align_labels->proto);
|
|
abio_printf(codeFile, "%s\n", abmfP_lib_align_vcenter->proto);
|
|
abio_printf(codeFile, "%s\n", abmfP_lib_align_top->proto);
|
|
abio_printf(codeFile, "%s\n", abmfP_lib_align_bottom->proto);
|
|
abio_printf(codeFile, "%s\n", abmfP_lib_align_hcenter->proto);
|
|
|
|
return (0);
|
|
}
|
|
|
|
|
|
static int
|
|
write_all_lib_funcs(GenCodeInfo genCodeInfo, ABObj project)
|
|
{
|
|
File codeFile= genCodeInfo->code_file;
|
|
|
|
abio_puts(codeFile, "\n");
|
|
abmfP_write_c_comment(genCodeInfo, FALSE,
|
|
"Application Builder utility funcs");
|
|
|
|
write_lib_func(genCodeInfo, abmfP_lib_cvt_file_to_pixmap);
|
|
write_lib_func(genCodeInfo, abmfP_lib_set_label_from_bitmap_data);
|
|
write_lib_func(genCodeInfo, abmfP_lib_set_label_pixmaps);
|
|
write_lib_func(genCodeInfo, abmfP_lib_file_has_extension);
|
|
write_lib_func(genCodeInfo, abmfP_lib_cvt_filebase_to_pixmap);
|
|
write_lib_func(genCodeInfo, abmfP_lib_cvt_image_file_to_pixmap);
|
|
write_lib_func(genCodeInfo, abmfP_lib_set_label_from_image_file);
|
|
write_lib_func(genCodeInfo, abmfP_lib_cvt_resource_from_string);
|
|
write_lib_func(genCodeInfo, abmfP_lib_create_greyed_pixmap);
|
|
|
|
write_lib_func(genCodeInfo, abmfP_lib_save_toplevel_widget);
|
|
write_lib_func(genCodeInfo, abmfP_lib_get_toplevel_widget);
|
|
|
|
write_lib_func(genCodeInfo, abmfP_lib_remove_sash_focus);
|
|
|
|
write_lib_func(genCodeInfo, abmfP_lib_save_command);
|
|
write_lib_func(genCodeInfo, abmfP_lib_get_command);
|
|
|
|
|
|
write_lib_func(genCodeInfo, abmfP_lib_help_dispatch);
|
|
write_lib_func(genCodeInfo, abmfP_lib_more_help_dispatch);
|
|
write_lib_func(genCodeInfo, abmfP_lib_help_back_hdlr);
|
|
write_lib_func(genCodeInfo, abmfP_lib_do_onitem_help);
|
|
write_lib_func(genCodeInfo, abmfP_lib_show_help_volume_info);
|
|
write_lib_func(genCodeInfo, abmfP_lib_call_help_callback);
|
|
|
|
/*
|
|
* The session save callback is written out always
|
|
*/
|
|
write_lib_func(genCodeInfo, abmfP_lib_session_save);
|
|
write_lib_func(genCodeInfo, abmfP_lib_get_client_session_saveCB);
|
|
|
|
if (abmfP_proj_needs_session_save(project))
|
|
{
|
|
write_lib_func(genCodeInfo, abmfP_lib_set_client_session_saveCB);
|
|
}
|
|
|
|
if (abmfP_proj_needs_session_restore(project))
|
|
{
|
|
write_lib_func(genCodeInfo, abmfP_lib_session_restore);
|
|
write_lib_func(genCodeInfo, abmfP_lib_set_client_session_restoreCB);
|
|
write_lib_func(genCodeInfo, abmfP_lib_get_client_session_restoreCB);
|
|
}
|
|
|
|
/*
|
|
* Write out ToolTalk functions if needed
|
|
*/
|
|
switch(obj_get_tooltalk_level(project))
|
|
{
|
|
case AB_TOOLTALK_DESKTOP_ADVANCED:
|
|
write_lib_func(genCodeInfo, abmfP_lib_set_tt_msg_quitCB);
|
|
write_lib_func(genCodeInfo, abmfP_lib_get_tt_msg_quitCB);
|
|
write_lib_func(genCodeInfo, abmfP_lib_tt_msg_quit);
|
|
write_lib_func(genCodeInfo, abmfP_lib_set_tt_msg_do_commandCB);
|
|
write_lib_func(genCodeInfo, abmfP_lib_get_tt_msg_do_commandCB);
|
|
write_lib_func(genCodeInfo, abmfP_lib_tt_msg_do_command);
|
|
write_lib_func(genCodeInfo, abmfP_lib_set_tt_msg_get_statusCB);
|
|
write_lib_func(genCodeInfo, abmfP_lib_get_tt_msg_get_statusCB);
|
|
write_lib_func(genCodeInfo, abmfP_lib_tt_msg_get_status);
|
|
write_lib_func(genCodeInfo, abmfP_lib_set_tt_msg_pause_resumeCB);
|
|
write_lib_func(genCodeInfo, abmfP_lib_get_tt_msg_pause_resumeCB);
|
|
write_lib_func(genCodeInfo, abmfP_lib_tt_msg_pause_resume);
|
|
write_lib_func(genCodeInfo, abmfP_lib_tt_contractCB);
|
|
/* fall through */
|
|
case AB_TOOLTALK_DESKTOP_BASIC:
|
|
write_lib_func(genCodeInfo, abmfP_lib_tt_close);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
|
|
/* Write out Message posting utilities */
|
|
if (abmfP_proj_has_message(project))
|
|
{
|
|
write_lib_func(genCodeInfo, abmfP_lib_create_message_dlg);
|
|
write_lib_func(genCodeInfo, abmfP_lib_destroyCB);
|
|
write_lib_func(genCodeInfo, abmfP_lib_MessageBoxGetActionButton);
|
|
write_lib_func(genCodeInfo, abmfP_lib_show_message);
|
|
write_lib_func(genCodeInfo, abmfP_lib_show_modal_message);
|
|
write_lib_func(genCodeInfo, abmfP_lib_modal_dlgCB);
|
|
}
|
|
|
|
/* Write out centering routines */
|
|
write_lib_func(genCodeInfo, abmfP_lib_children_center);
|
|
write_lib_func(genCodeInfo, abmfP_lib_children_uncenter);
|
|
write_lib_func(genCodeInfo, abmfP_lib_center);
|
|
write_lib_func(genCodeInfo, abmfP_lib_uncenter);
|
|
write_lib_func(genCodeInfo, abmfP_lib_center_widget);
|
|
write_lib_func(genCodeInfo, abmfP_lib_uncenter_widget);
|
|
write_lib_func(genCodeInfo, abmfP_lib_centering_handler);
|
|
|
|
/* Write out align routines */
|
|
write_lib_func(genCodeInfo, abmfP_lib_get_label_widget);
|
|
write_lib_func(genCodeInfo, abmfP_lib_get_offset_from_ancestor);
|
|
write_lib_func(genCodeInfo, abmfP_lib_get_label_width);
|
|
write_lib_func(genCodeInfo, abmfP_lib_get_widest_label);
|
|
write_lib_func(genCodeInfo, abmfP_lib_get_widest_value);
|
|
write_lib_func(genCodeInfo, abmfP_lib_get_widget_rect);
|
|
write_lib_func(genCodeInfo, abmfP_lib_get_greatest_size);
|
|
write_lib_func(genCodeInfo, abmfP_lib_get_group_cell_size);
|
|
write_lib_func(genCodeInfo, abmfP_lib_get_group_row_col);
|
|
write_lib_func(genCodeInfo, abmfP_lib_get_group_child);
|
|
write_lib_func(genCodeInfo, abmfP_lib_children_align);
|
|
write_lib_func(genCodeInfo, abmfP_lib_align_children);
|
|
write_lib_func(genCodeInfo, abmfP_lib_align_handler);
|
|
write_lib_func(genCodeInfo, abmfP_lib_expose_handler);
|
|
write_lib_func(genCodeInfo, abmfP_lib_free_group_info);
|
|
write_lib_func(genCodeInfo, abmfP_lib_align_rows);
|
|
write_lib_func(genCodeInfo, abmfP_lib_align_cols);
|
|
write_lib_func(genCodeInfo, abmfP_lib_align_left);
|
|
write_lib_func(genCodeInfo, abmfP_lib_align_right);
|
|
write_lib_func(genCodeInfo, abmfP_lib_align_labels);
|
|
write_lib_func(genCodeInfo, abmfP_lib_align_vcenter);
|
|
write_lib_func(genCodeInfo, abmfP_lib_align_top);
|
|
write_lib_func(genCodeInfo, abmfP_lib_align_bottom);
|
|
write_lib_func(genCodeInfo, abmfP_lib_align_hcenter);
|
|
|
|
/* Write out path-finding routines */
|
|
write_lib_func(genCodeInfo, abmfP_lib_get_exe_dir);
|
|
write_lib_func(genCodeInfo, abmfP_lib_determine_exe_dir);
|
|
write_lib_func(genCodeInfo, abmfP_lib_determine_exe_dir_from_argv);
|
|
write_lib_func(genCodeInfo, abmfP_lib_determine_exe_dir_from_path);
|
|
write_lib_func(genCodeInfo, abmfP_lib_path_is_executable);
|
|
|
|
/* write out popup menu routines */
|
|
write_lib_func(genCodeInfo, abmfP_lib_popup_menu_register);
|
|
write_lib_func(genCodeInfo, abmfP_lib_popup_menu);
|
|
write_lib_func(genCodeInfo, abmfP_lib_popup_menu_destroyCB);
|
|
|
|
/* Write out drag and drop routines */
|
|
write_lib_func(genCodeInfo, abmfP_lib_drag_site_register);
|
|
write_lib_func(genCodeInfo, abmfP_lib_drop_site_register);
|
|
write_lib_func(genCodeInfo, abmfP_lib_drag_terminate);
|
|
write_lib_func(genCodeInfo, abmfP_lib_drag_button1_motion_handler);
|
|
write_lib_func(genCodeInfo, abmfP_lib_drag_start);
|
|
write_lib_func(genCodeInfo, abmfP_lib_drag_convertCB);
|
|
write_lib_func(genCodeInfo, abmfP_lib_drag_to_rootCB);
|
|
write_lib_func(genCodeInfo, abmfP_lib_drag_finishCB);
|
|
write_lib_func(genCodeInfo, abmfP_lib_drop_animateCB);
|
|
write_lib_func(genCodeInfo, abmfP_lib_drop_transferCB);
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
static int
|
|
write_lib_func(GenCodeInfo genCodeInfo, LibFunc libFunc)
|
|
{
|
|
abio_puts(genCodeInfo->code_file, libFunc->def);
|
|
abio_puts(genCodeInfo->code_file, "\n\n\n");
|
|
return 0;
|
|
}
|
|
|
|
|
|
static int
|
|
write_msg_static_func_decls(
|
|
GenCodeInfo genCodeInfo,
|
|
ABObj project
|
|
)
|
|
{
|
|
File codeFile;
|
|
|
|
if (!genCodeInfo || !project)
|
|
return (0);
|
|
|
|
codeFile = genCodeInfo->code_file;
|
|
|
|
abio_puts(codeFile, "/*\n");
|
|
abio_puts(codeFile, " * Static functions used for messages.\n");
|
|
abio_puts(codeFile, " */\n");
|
|
abio_printf(codeFile, "%s\n", abmfP_lib_destroyCB->proto);
|
|
abio_printf(codeFile, "%s\n", abmfP_lib_modal_dlgCB->proto);
|
|
|
|
return (0);
|
|
}
|