annotate lwlib/lwlib.h @ 4981:4aebb0131297

Cleanups/renaming of EXTERNAL_TO_C_STRING and friends -------------------- ChangeLog entries follow: -------------------- modules/ChangeLog addition: 2010-02-05 Ben Wing <ben@xemacs.org> * postgresql/postgresql.c: * postgresql/postgresql.c (CHECK_LIVE_CONNECTION): * postgresql/postgresql.c (Fpq_connectdb): * postgresql/postgresql.c (Fpq_connect_start): * postgresql/postgresql.c (Fpq_lo_import): * postgresql/postgresql.c (Fpq_lo_export): * ldap/eldap.c (Fldap_open): * ldap/eldap.c (Fldap_search_basic): * ldap/eldap.c (Fldap_add): * ldap/eldap.c (Fldap_modify): * ldap/eldap.c (Fldap_delete): * canna/canna_api.c (Fcanna_initialize): * canna/canna_api.c (Fcanna_store_yomi): * canna/canna_api.c (Fcanna_parse): * canna/canna_api.c (Fcanna_henkan_begin): EXTERNAL_TO_C_STRING returns its argument instead of storing it in a parameter, and is renamed to EXTERNAL_TO_ITEXT. Similar things happen to related macros. See entry in src/ChangeLog. More Mule-izing of postgresql.c. Extract out common code between `pq-connectdb' and `pq-connect-start'. Fix places that signal an error string using a formatted string to instead follow the standard and have a fixed reason followed by the particular error message stored as one of the frobs. src/ChangeLog addition: 2010-02-05 Ben Wing <ben@xemacs.org> * console-msw.c (write_string_to_mswindows_debugging_output): * console-msw.c (Fmswindows_message_box): * console-x.c (x_perhaps_init_unseen_key_defaults): * console.c: * database.c (dbm_get): * database.c (dbm_put): * database.c (dbm_remove): * database.c (berkdb_get): * database.c (berkdb_put): * database.c (berkdb_remove): * database.c (Fopen_database): * device-gtk.c (gtk_init_device): * device-msw.c (msprinter_init_device_internal): * device-msw.c (msprinter_default_printer): * device-msw.c (msprinter_init_device): * device-msw.c (sync_printer_with_devmode): * device-msw.c (Fmsprinter_select_settings): * device-x.c (sanity_check_geometry_resource): * device-x.c (Dynarr_add_validified_lisp_string): * device-x.c (x_init_device): * device-x.c (Fx_put_resource): * device-x.c (Fx_valid_keysym_name_p): * device-x.c (Fx_set_font_path): * dialog-msw.c (push_lisp_string_as_unicode): * dialog-msw.c (handle_directory_dialog_box): * dialog-msw.c (handle_file_dialog_box): * dialog-x.c (dbox_descriptor_to_widget_value): * editfns.c (Fformat_time_string): * editfns.c (Fencode_time): * editfns.c (Fset_time_zone_rule): * emacs.c (make_argc_argv): * emacs.c (Fdump_emacs): * emodules.c (emodules_load): * eval.c: * eval.c (maybe_signal_error_1): * event-msw.c (Fdde_alloc_advise_item): * event-msw.c (mswindows_dde_callback): * event-msw.c (mswindows_wnd_proc): * fileio.c (report_error_with_errno): * fileio.c (Fsysnetunam): * fileio.c (Fdo_auto_save): * font-mgr.c (extract_fcapi_string): * font-mgr.c (Ffc_config_app_font_add_file): * font-mgr.c (Ffc_config_app_font_add_dir): * font-mgr.c (Ffc_config_filename): * frame-gtk.c (gtk_set_frame_text_value): * frame-gtk.c (gtk_create_widgets): * frame-msw.c (mswindows_init_frame_1): * frame-msw.c (mswindows_set_title_from_ibyte): * frame-msw.c (msprinter_init_frame_3): * frame-x.c (x_set_frame_text_value): * frame-x.c (x_set_frame_properties): * frame-x.c (start_drag_internal_1): * frame-x.c (x_cde_transfer_callback): * frame-x.c (x_create_widgets): * glyphs-eimage.c (my_jpeg_output_message): * glyphs-eimage.c (jpeg_instantiate): * glyphs-eimage.c (gif_instantiate): * glyphs-eimage.c (png_instantiate): * glyphs-eimage.c (tiff_instantiate): * glyphs-gtk.c (xbm_instantiate_1): * glyphs-gtk.c (gtk_xbm_instantiate): * glyphs-gtk.c (gtk_xpm_instantiate): * glyphs-gtk.c (gtk_xface_instantiate): * glyphs-gtk.c (cursor_font_instantiate): * glyphs-gtk.c (gtk_redisplay_widget): * glyphs-gtk.c (gtk_widget_instantiate_1): * glyphs-gtk.c (gtk_add_tab_item): * glyphs-msw.c (mswindows_xpm_instantiate): * glyphs-msw.c (bmp_instantiate): * glyphs-msw.c (mswindows_resource_instantiate): * glyphs-msw.c (xbm_instantiate_1): * glyphs-msw.c (mswindows_xbm_instantiate): * glyphs-msw.c (mswindows_xface_instantiate): * glyphs-msw.c (mswindows_redisplay_widget): * glyphs-msw.c (mswindows_widget_instantiate): * glyphs-msw.c (add_tree_item): * glyphs-msw.c (add_tab_item): * glyphs-msw.c (mswindows_combo_box_instantiate): * glyphs-msw.c (mswindows_widget_query_string_geometry): * glyphs-x.c (x_locate_pixmap_file): * glyphs-x.c (xbm_instantiate_1): * glyphs-x.c (x_xbm_instantiate): * glyphs-x.c (extract_xpm_color_names): * glyphs-x.c (x_xpm_instantiate): * glyphs-x.c (x_xface_instantiate): * glyphs-x.c (autodetect_instantiate): * glyphs-x.c (safe_XLoadFont): * glyphs-x.c (cursor_font_instantiate): * glyphs-x.c (x_redisplay_widget): * glyphs-x.c (Fchange_subwindow_property): * glyphs-x.c (x_widget_instantiate): * glyphs-x.c (x_tab_control_redisplay): * glyphs.c (pixmap_to_lisp_data): * gui-x.c (menu_separator_style_and_to_external): * gui-x.c (add_accel_and_to_external): * gui-x.c (button_item_to_widget_value): * hpplay.c (player_error_internal): * hpplay.c (play_sound_file): * hpplay.c (play_sound_data): * intl.c (Fset_current_locale): * lisp.h: * menubar-gtk.c (gtk_xemacs_set_accel_keys): * menubar-msw.c (populate_menu_add_item): * menubar-msw.c (populate_or_checksum_helper): * menubar-x.c (menu_item_descriptor_to_widget_value_1): * nt.c (init_user_info): * nt.c (get_long_basename): * nt.c (nt_get_resource): * nt.c (init_mswindows_environment): * nt.c (get_cached_volume_information): * nt.c (mswindows_readdir): * nt.c (read_unc_volume): * nt.c (mswindows_stat): * nt.c (mswindows_getdcwd): * nt.c (mswindows_executable_type): * nt.c (Fmswindows_short_file_name): * ntplay.c (nt_play_sound_file): * objects-gtk.c: * objects-gtk.c (gtk_valid_color_name_p): * objects-gtk.c (gtk_initialize_font_instance): * objects-gtk.c (gtk_font_list): * objects-msw.c (font_enum_callback_2): * objects-msw.c (parse_font_spec): * objects-x.c (x_parse_nearest_color): * objects-x.c (x_valid_color_name_p): * objects-x.c (x_initialize_font_instance): * objects-x.c (x_font_instance_truename): * objects-x.c (x_font_list): * objects-xlike-inc.c (XFUN): * objects-xlike-inc.c (xft_find_charset_font): * process-nt.c (mswindows_report_winsock_error): * process-nt.c (nt_create_process): * process-nt.c (get_internet_address): * process-nt.c (nt_open_network_stream): * process-unix.c: * process-unix.c (allocate_pty): * process-unix.c (get_internet_address): * process-unix.c (unix_canonicalize_host_name): * process-unix.c (unix_open_network_stream): * realpath.c: * select-common.h (lisp_data_to_selection_data): * select-gtk.c (symbol_to_gtk_atom): * select-gtk.c (atom_to_symbol): * select-msw.c (symbol_to_ms_cf): * select-msw.c (mswindows_register_selection_data_type): * select-x.c (symbol_to_x_atom): * select-x.c (x_atom_to_symbol): * select-x.c (hack_motif_clipboard_selection): * select-x.c (Fx_store_cutbuffer_internal): * sound.c (Fplay_sound_file): * sound.c (Fplay_sound): * sound.h (sound_perror): * sysdep.c: * sysdep.c (qxe_allocating_getcwd): * sysdep.c (qxe_execve): * sysdep.c (copy_in_passwd): * sysdep.c (qxe_getpwnam): * sysdep.c (qxe_ctime): * sysdll.c (dll_open): * sysdll.c (dll_function): * sysdll.c (dll_variable): * sysdll.c (search_linked_libs): * sysdll.c (dll_error): * sysfile.h: * sysfile.h (PATHNAME_CONVERT_OUT_TSTR): * sysfile.h (PATHNAME_CONVERT_OUT_UTF_8): * sysfile.h (PATHNAME_CONVERT_OUT): * sysfile.h (LISP_PATHNAME_CONVERT_OUT): * syswindows.h (ITEXT_TO_TSTR): * syswindows.h (LOCAL_FILE_FORMAT_TO_TSTR): * syswindows.h (TSTR_TO_LOCAL_FILE_FORMAT): * syswindows.h (LOCAL_FILE_FORMAT_TO_INTERNAL_MSWIN): * syswindows.h (LISP_LOCAL_FILE_FORMAT_MAYBE_URL_TO_TSTR): * text.h: * text.h (eicpy_ext_len): * text.h (enum new_dfc_src_type): * text.h (EXTERNAL_TO_ITEXT): * text.h (GET_STRERROR): * tooltalk.c (check_status): * tooltalk.c (Fadd_tooltalk_message_arg): * tooltalk.c (Fadd_tooltalk_pattern_attribute): * tooltalk.c (Fadd_tooltalk_pattern_arg): * win32.c (tstr_to_local_file_format): * win32.c (mswindows_lisp_error_1): * win32.c (mswindows_report_process_error): * win32.c (Fmswindows_shell_execute): * win32.c (mswindows_read_link_1): Changes involving external/internal format conversion, mostly code cleanup and renaming. 1. Eliminate the previous macros like LISP_STRING_TO_EXTERNAL that stored its result in a parameter. The new version of LISP_STRING_TO_EXTERNAL returns its result through the return value, same as the previous NEW_LISP_STRING_TO_EXTERNAL. Use the new-style macros throughout the code. 2. Rename C_STRING_TO_EXTERNAL and friends to ITEXT_TO_EXTERNAL, in keeping with overall naming rationalization involving Itext and related types. Macros involved in previous two: EXTERNAL_TO_C_STRING -> EXTERNAL_TO_ITEXT EXTERNAL_TO_C_STRING_MALLOC -> EXTERNAL_TO_ITEXT_MALLOC SIZED_EXTERNAL_TO_C_STRING -> SIZED_EXTERNAL_TO_ITEXT SIZED_EXTERNAL_TO_C_STRING_MALLOC -> SIZED_EXTERNAL_TO_ITEXT_MALLOC C_STRING_TO_EXTERNAL -> ITEXT_TO_EXTERNAL C_STRING_TO_EXTERNAL_MALLOC -> ITEXT_TO_EXTERNAL_MALLOC LISP_STRING_TO_EXTERNAL LISP_STRING_TO_EXTERNAL_MALLOC LISP_STRING_TO_TSTR C_STRING_TO_TSTR -> ITEXT_TO_TSTR TSTR_TO_C_STRING -> TSTR_TO_ITEXT The following four still return their values through parameters, since they have more than one value to return: C_STRING_TO_SIZED_EXTERNAL -> ITEXT_TO_SIZED_EXTERNAL LISP_STRING_TO_SIZED_EXTERNAL C_STRING_TO_SIZED_EXTERNAL_MALLOC -> ITEXT_TO_SIZED_EXTERNAL_MALLOC LISP_STRING_TO_SIZED_EXTERNAL_MALLOC Sometimes additional casts had to be inserted, since the old macros played strange games and completely defeated the type system of the store params. 3. Rewrite many places where direct calls to TO_EXTERNAL_FORMAT occurred with calls to one of the convenience macros listed above, or to make_extstring(). 4. Eliminate SIZED_C_STRING macros (they were hardly used, anyway) and use a direct call to TO_EXTERNAL_FORMAT or TO_INTERNAL_FORMAT. 4. Use LISP_PATHNAME_CONVERT_OUT in many places instead of something like LISP_STRING_TO_EXTERNAL(..., Qfile_name). 5. Eliminate some temporary variables that are no longer necessary now that we return a value rather than storing it into a variable. 6. Some Mule-izing in database.c. 7. Error functions: -- A bit of code cleanup in maybe_signal_error_1. -- Eliminate report_file_type_error; it's just an alias for signal_error_2 with params in a different order. -- Fix some places in the hostname-handling code that directly inserted externally-retrieved error strings into the supposed ASCII "reason" param instead of doing the right thing and sticking text descriptive of what was going on in "reason" and putting the external message in a frob. 8. Use Ascbyte instead of CIbyte in process-unix.c and maybe one or two other places. 9. Some code cleanup in copy_in_passwd() in sysdep.c. 10. Fix a real bug due to accidental variable shadowing in tstr_to_local_file_format() in win32.c.
author Ben Wing <ben@xemacs.org>
date Fri, 05 Feb 2010 11:02:24 -0600
parents 726060ee587c
children ade4c7e2c6cb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 434
diff changeset
1 #ifndef INCLUDED_lwlib_h_
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 434
diff changeset
2 #define INCLUDED_lwlib_h_
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
3
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
4 #include <X11/Intrinsic.h>
4528
726060ee587c First draft of g++ 4.3 warning removal patch. Builds. *Needs ChangeLogs.*
Stephen J. Turnbull <stephen@xemacs.org>
parents: 4522
diff changeset
5 #include "xt-wrappers.h"
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
6
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
7 #if defined (LWLIB_MENUBARS_LUCID) || defined (LWLIB_MENUBARS_MOTIF) || defined (LWLIB_MENUBARS_ATHENA)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
8 #define NEED_MENUBARS
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
9 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
10 #if defined (LWLIB_SCROLLBARS_LUCID) || defined (LWLIB_SCROLLBARS_MOTIF) || defined (LWLIB_SCROLLBARS_ATHENA)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
11 #define NEED_SCROLLBARS
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
12 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
13 #if defined (LWLIB_DIALOGS_LUCID) || defined (LWLIB_DIALOGS_MOTIF) || defined (LWLIB_DIALOGS_ATHENA)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
14 #define NEED_DIALOGS
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
15 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
16
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
17 /*
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
18 ** Widget values depend on the Widget type:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
19 **
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
20 ** widget: (name value key enabled data contents/selected)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
21 **
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
22 ** label: ("name" "string" NULL NULL NULL NULL)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
23 ** BUTTON: ("name" "string" "key" T/F data <default-button-p>)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
24 ** CASCADE (button w/menu):
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
25 ** ("name" "string" "key" T/F data (label|button|button w/menu...))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
26 ** INCREMENTAL (button w/menu construction callback):
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
27 ** ("name" "string" NULL T/F <opaque pointer>)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
28 ** menubar: ("name" NULL NULL T/F data (button w/menu))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
29 ** scrollbar:("name" NULL NULL T/F NULL NULL)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
30 ** selectable thing:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
31 ** ("name" "string" "key" T/F data T/F)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
32 ** checkbox: selectable thing
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
33 ** radio: ("name" NULL NULL T/F data (selectable thing...))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
34 ** strings: ("name" NULL NULL T/F data (selectable thing...))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
35 ** TEXT: ("name" "string" <ign> T/F data)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
36 **
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
37 ** Note that the above is EXTREMELY bogus. The "type" of the various entities
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
38 ** that a widget_value structure can represent is implicit in the contents of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
39 ** half a dozen slots, instead of there simply being a type field. This
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
40 ** should all be rethunk. I've added a type field, but for now it's only used
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
41 ** by the new xlwmenu code.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
42 */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
43
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
44 typedef unsigned long LWLIB_ID;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
45
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
46 typedef enum _change_type
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
47 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
48 NO_CHANGE = 0,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
49 INVISIBLE_CHANGE = 1,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
50 VISIBLE_CHANGE = 2,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
51 STRUCTURAL_CHANGE = 3
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
52 } change_type;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
53
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
54 typedef enum _widget_value_type
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
55 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
56 UNSPECIFIED_TYPE = 0,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
57 BUTTON_TYPE = 1,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
58 TOGGLE_TYPE = 2,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
59 RADIO_TYPE = 3,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
60 TEXT_TYPE = 4,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
61 SEPARATOR_TYPE = 5,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
62 CASCADE_TYPE = 6,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
63 PUSHRIGHT_TYPE = 7,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
64 INCREMENTAL_TYPE = 8
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
65 } widget_value_type;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
66
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
67 typedef enum _scroll_action
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
68 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
69 SCROLLBAR_LINE_UP = 0,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
70 SCROLLBAR_LINE_DOWN = 1,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
71 SCROLLBAR_PAGE_UP = 2,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
72 SCROLLBAR_PAGE_DOWN = 3,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
73 SCROLLBAR_DRAG = 4,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
74 SCROLLBAR_CHANGE = 5,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
75 SCROLLBAR_TOP = 6,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
76 SCROLLBAR_BOTTOM = 7
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
77 } scroll_action;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
78
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
79 typedef struct _scroll_event
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
80 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
81 scroll_action action;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
82 int slider_value;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
83 Time time;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
84 } scroll_event;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
85
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
86 typedef struct _scrollbar_values
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
87 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
88 int line_increment;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
89 int page_increment;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
90
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
91 int minimum;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
92 int maximum;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
93
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
94 int slider_size;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
95 int slider_position;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
96
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
97 int scrollbar_width, scrollbar_height;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
98 int scrollbar_x, scrollbar_y;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
99 } scrollbar_values;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
100
434
9d177e8d4150 Import from CVS: tag r21-2-25
cvs
parents: 428
diff changeset
101 typedef struct _widget_args
9d177e8d4150 Import from CVS: tag r21-2-25
cvs
parents: 428
diff changeset
102 {
9d177e8d4150 Import from CVS: tag r21-2-25
cvs
parents: 428
diff changeset
103 /* some things are only possible at creation time. args are applied
9d177e8d4150 Import from CVS: tag r21-2-25
cvs
parents: 428
diff changeset
104 to widgets at creation time. */
9d177e8d4150 Import from CVS: tag r21-2-25
cvs
parents: 428
diff changeset
105 ArgList args;
9d177e8d4150 Import from CVS: tag r21-2-25
cvs
parents: 428
diff changeset
106 int nargs;
9d177e8d4150 Import from CVS: tag r21-2-25
cvs
parents: 428
diff changeset
107 /* Copying args is impossible so we make the caller give us heap allocated
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
108 args and free them when no one wants them any more. */
434
9d177e8d4150 Import from CVS: tag r21-2-25
cvs
parents: 428
diff changeset
109 int ref_count;
450
98528da0b7fc Import from CVS: tag r21-2-40
cvs
parents: 444
diff changeset
110 /* Since we are reference counting we need to be able to determine
98528da0b7fc Import from CVS: tag r21-2-40
cvs
parents: 444
diff changeset
111 when something has changed. */
98528da0b7fc Import from CVS: tag r21-2-40
cvs
parents: 444
diff changeset
112 Boolean args_changed;
434
9d177e8d4150 Import from CVS: tag r21-2-25
cvs
parents: 428
diff changeset
113 } widget_args;
9d177e8d4150 Import from CVS: tag r21-2-25
cvs
parents: 428
diff changeset
114
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
115 typedef struct _widget_value
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
116 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
117 /* This slot is only partially utilized right now. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
118 widget_value_type type;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
119
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
120 /* name of widget */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
121 char* name;
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
122 /* value (meaning BOGUSLY depends on widget type) */
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
123 char* value;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
124 /* keyboard equivalent. no implications for XtTranslations */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
125 char* key;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
126 /* accelerator key. For XEmacs, this should be a Lisp_Object holding a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
127 char or symbol suitable for passing to event_matches_key_specifier_p.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
128 Outside of emacs, this can be anything: an X KeySym is a good idea.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
129 lwlib provides support functions for keyboard traversal of menus. Actual
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
130 implementation of those accelerators is up to the application.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
131 */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
132 XtPointer accel;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
133 /* true if enabled */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
134 Boolean enabled;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
135 /* true if selected */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
136 Boolean selected;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
137 /* true if was edited (maintained by get_value) */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
138 Boolean edited;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
139 /* true if has changed (maintained by lw library) */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
140 change_type change;
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
141 /* Contents of sub-widgets, also selected slot for checkbox */
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
142 struct _widget_value* contents;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
143 /* data passed to callback */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
144 XtPointer call_data;
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
145 /* next in the list of siblings */
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
146 struct _widget_value* next;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
147 /* slot for the toolkit dependent part. Always initialize to NULL. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
148 void* toolkit_data;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
149 /* tell us if we should free the toolkit data slot when freeing the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
150 widget_value itself. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
151 Boolean free_toolkit_data;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
152
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
153 /* data defining a scrollbar; only valid if type == "scrollbar" */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
154 scrollbar_values *scrollbar_data;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
155
434
9d177e8d4150 Import from CVS: tag r21-2-25
cvs
parents: 428
diff changeset
156 /* A reference counted arg structure. */
9d177e8d4150 Import from CVS: tag r21-2-25
cvs
parents: 428
diff changeset
157 struct _widget_args *args;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
158 /* we resource the widget_value structures; this points to the next
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
159 one on the free list if this one has been deallocated. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
160 struct _widget_value *free_list;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
161
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
162 } widget_value;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
163
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
164
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
165 typedef void (*lw_callback) (Widget w, LWLIB_ID id, XtPointer data);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
166
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
167 /* menu stuff */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
168 /* maybe this should go into a generic lwmenu.h */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
169
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
170 extern int lw_menu_active;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
171
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
172 #if defined (LWLIB_MENUBARS_LUCID)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
173 #include "xlwmenu.h"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
174 #define lw_set_menu xlw_set_menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
175 #define lw_push_menu xlw_push_menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
176 #define lw_pop_menu xlw_pop_menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
177 #define lw_set_item xlw_set_item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
178 #define lw_map_menu xlw_map_menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
179 #define lw_display_menu xlw_display_menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
180 #define lw_kill_menus xlw_kill_menus
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
181 #define lw_get_entries xlw_get_entries
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
182 #define lw_menu_level xlw_menu_level
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
183 #else /* LWLIB_MENUBARS_LUCID */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
184 /* do this for the other toolkits too */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
185 #endif /* LWLIB_MENUBARS_LUCID */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
186
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
187 #if defined (LWLIB_TABS_LUCID)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
188 #include "xlwtabs.h"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
189 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
190
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
191 void lw_register_widget (const char* type, const char* name, LWLIB_ID id,
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
192 widget_value* val, lw_callback pre_activate_cb,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
193 lw_callback selection_cb,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
194 lw_callback post_activate_cb);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
195 Widget lw_get_widget (LWLIB_ID id, Widget parent, Boolean pop_up_p);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
196 Widget lw_make_widget (LWLIB_ID id, Widget parent, Boolean pop_up_p);
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
197 Widget lw_create_widget (const char* type, const char* name, LWLIB_ID id,
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
198 widget_value* val, Widget parent, Boolean pop_up_p,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
199 lw_callback pre_activate_cb,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
200 lw_callback selection_cb,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
201 lw_callback post_activate_cb);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
202 LWLIB_ID lw_get_widget_id (Widget w);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
203 int lw_map_widget_values (LWLIB_ID id, int (*mapfunc) (widget_value *value,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
204 void *closure),
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
205 void *closure);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
206 void lw_modify_all_widgets (LWLIB_ID id, widget_value* val, Boolean deep_p);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
207 void lw_destroy_widget (Widget w);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
208 void lw_destroy_all_widgets (LWLIB_ID id);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
209 void lw_destroy_everything (void);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
210 void lw_destroy_all_pop_ups (void);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
211 Widget lw_raise_all_pop_up_widgets (void);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
212 widget_value* lw_get_all_values (LWLIB_ID id);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
213 Boolean lw_get_some_values (LWLIB_ID id, widget_value* val);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
214 void lw_pop_up_all_widgets (LWLIB_ID id);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
215 void lw_pop_down_all_widgets (LWLIB_ID id);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
216 void lw_add_value_args_to_args (widget_value* wv, ArgList addto, int* offset);
434
9d177e8d4150 Import from CVS: tag r21-2-25
cvs
parents: 428
diff changeset
217 void lw_add_widget_value_arg (widget_value* wv, String name, XtArgVal value);
639
4b7d425dd3c2 [xemacs-hg @ 2001-07-28 05:08:58 by andyp]
andyp
parents: 450
diff changeset
218 XtArgVal lw_get_value_arg (widget_value* wv, String name);
434
9d177e8d4150 Import from CVS: tag r21-2-25
cvs
parents: 428
diff changeset
219 void lw_copy_widget_value_args (widget_value* copy, widget_value* val);
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
220 widget_value * copy_widget_value_tree (widget_value *val, change_type change);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
221
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
222 widget_value *malloc_widget_value (void);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
223 void free_widget_value (widget_value *);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
224 void free_widget_value_tree (widget_value *wv);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
225 widget_value *replace_widget_value_tree (widget_value*, widget_value*);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
226
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
227 void lw_popup_menu (Widget, XEvent *);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
228
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
229 /* Toolkit independent way of focusing on a Widget at the Xt level. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
230 void lw_set_keyboard_focus (Widget parent, Widget w);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
231
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
232 /* Silly Energize hack to invert the "sheet" button */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
233 void lw_show_busy (Widget w, Boolean busy);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
234
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
235 void lw_remove_accelerator_spec (char *val);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
236
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 434
diff changeset
237 #endif /* INCLUDED_lwlib_h_ */