Mercurial > emacs
view lwlib/lwlib-Xol.c @ 26114:c19849fe02b5
Doc fix, duplex and setpagedevice configuration.
(ps-print-version): New version number (4.2).
(ps-spool-config, ps-spool-tumble): New vars.
(ps-print-prologue-1): Changed to defconst, adjust PostScript
programming, new PostScript procedure to handle errors.
(ps-print-prologue-2): Changed to defconst.
(ps-print-duplex-feature): New const: duplex and tumble setting.
(ps-setup, ps-begin-file): Fix funs.
(ps-boolean-capitalized): New fun.
Doc fix, n-up printing.
(ps-print-version): New version number (5.0).
(ps-page-dimensions-database): Added document media.
(ps-n-up-printing, ps-n-up-margin, ps-n-up-border-p, ps-n-up-filling)
(ps-page-order, ps-printing-region-p): New vars.
(ps-n-up-printing, ps-n-up-filling, ps-header-sheet, ps-end-job): New
funs.
(ps-page-dimensions-get-media, ps-n-up-landscape, ps-n-up-lines)
(ps-n-up-columns, ps-n-up-missing, ps-n-up-xcolumn, ps-n-up-ycolumn)
(ps-n-up-xline, ps-n-up-yline, ps-n-up-repeat, ps-n-up-end)
(ps-n-up-xstart, ps-n-up-ystart): New macros.
(ps-print-begin-sheet-hook): New hook.
(ps-boundingbox-re, ps-n-up-database, ps-n-up-filling-database): New
const.
(ps-setup, ps-begin-file, ps-get-buffer-name, ps-begin-job)
(ps-end-file, ps-dummy-page, ps-generate): Fix funs.
(ps-print-prologue-1): Adjust PostScript programming for n-up printing.
(ps-count-lines): Changed to defun.
(ps-header-page): Changed to defsubst, fix fun.
(ps-printing-region): Doc fix, adjust programming code.
(ps-output-boolean, ps-background-pages, ps-background-text)
(ps-background-image, ps-background, ps-get-boundingbox): Adjust
programming code.
Doc fix, better customization.
(ps-print-region-function, ps-number-of-columns, ps-spool-tumble)
(ps-print-color-p, ps-printing-region-p, ps-n-up-database)
(ps-end-file): Doc fix.
(ps-setup, ps-begin-file): Fun fix.
(postscript): New group.
(ps-zebra-gray, ps-banner-page-when-duplexing): New vars.
(ps-print-prologue-1): Adjust PostScript programming.
(ps-print): Adjust group hierarchy.
(ps-print-n-up, ps-print-zebra, ps-print-background,
ps-print-printer)
(ps-print-page): New subgroups.
(ps-print-prologue-header, ps-printer-name, ps-lpr-command)
(ps-lpr-switches, ps-page-dimensions-database, ps-paper-type)
(ps-landscape-mode, ps-print-control-characters, ps-n-up-printing)
(ps-n-up-margin, ps-n-up-border-p, ps-n-up-filling, ps-zebra-stripes)
(ps-zebra-stripe-height, ps-print-background-image)
(ps-print-background-text, ps-spool-config): Adjust customization.
(dos-ps-printer): Definition eliminated.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Wed, 20 Oct 1999 01:06:27 +0000 |
parents | 0a94cd2c51c4 |
children | 7fb1caba0f51 |
line wrap: on
line source
#include "lwlib-Xol.h" #include <X11/StringDefs.h> #include <X11/IntrinsicP.h> #include <X11/CompositeP.h> #include <X11/Shell.h> #include <Xol/Menu.h> #include <Xol/OpenLook.h> #include <Xol/MenuButton.h> #include <Xol/OblongButt.h> #include <Xol/ControlAre.h> #include <Xol/Stub.h> #include <Xol/StaticText.h> /* forward declarations */ static void update_menu_widget (widget_instance* instance, Widget widget, widget_value* val); /* Menu callbacks */ static void pre_hook (Widget w, caddr_t client_data, caddr_t call_data) { OlVirtualEvent ve = (OlVirtualEvent)call_data; widget_instance* instance = (widget_instance*)client_data; if (w->core.being_destroyed) return; if (XtParent (w) == instance->widget) { if (ve->xevent->type == ButtonPress && instance->info->pre_activate_cb) instance->info->pre_activate_cb (instance->widget, instance->info->id, NULL); } } static void post_hook (Widget w, caddr_t client_data, caddr_t call_data) { widget_instance* instance = (widget_instance*)client_data; if (w->core.being_destroyed) return; if (instance->info->post_activate_cb) instance->info->post_activate_cb (w, instance->info->id, NULL); } static void pick_hook (Widget w, caddr_t client_data, caddr_t call_data) { widget_instance* instance = 0; widget_value* val = (widget_value*)client_data; if (w->core.being_destroyed) return; XtVaGetValues (w, XtNuserData, &instance, 0); if (!instance) return; if (instance->info->selection_cb && val && val->enabled && !val->contents) instance->info->selection_cb (w, instance->info->id, val->call_data); } /* creation functions */ static Widget xol_create_menubar (widget_instance* instance) { Widget widget = XtVaCreateWidget (instance->info->name, controlAreaWidgetClass, instance->parent, 0); return widget; } static Widget xol_create_popup_menu (widget_instance* instance) { Widget popup_shell = XtCreatePopupShell (instance->info->name, menuShellWidgetClass, instance->parent, NULL, 0); return popup_shell; } widget_creation_entry xol_creation_table [] = { {"menubar", xol_create_menubar}, {"popup", xol_create_popup_menu}, {NULL, NULL} }; Widget xol_create_dialog (widget_instance* instance) { return NULL; } Boolean lw_olit_widget_p (Widget widget) { return True; } /* update functions */ static void destroy_all_children (Widget widget) { Widget* children; unsigned int number; int i; children = (Widget *) XtCompositeChildren (widget, &number); if (children) { /* Unmanage all children and destroy them. They will only be * really destroyed when we get out of DispatchEvent. */ for (i = 0; i < number; i++) { Widget child = children [i]; if (!child->core.being_destroyed) { XtUnmanageChild (child); XtDestroyWidget (child); } } XtFree (children); } } static Boolean all_dashes_p (char* s) { char* t; for (t = s; *t; t++) if (*t != '-') return False; return True; } static void make_menu_in_widget (widget_instance* instance, Widget widget, widget_value* val) { widget_value* cur; Widget button; Arg al [256]; int ac; String label; for (cur = val; cur; cur = cur->next) { ac = 0; XtSetArg (al [ac], XtNsensitive, cur->enabled); ac++; XtSetArg (al [ac], XtNuserData, instance); ac++; XtSetArg (al [ac], XtNacceleratorText, cur->key); ac++; /* label = (char *) resource_string (widget, cur->name);*/ label = cur->name; if (label) { XtSetArg (al [ac], XtNlabel, label); ac++; } if (all_dashes_p (cur->name)) { /* no separator in OpenLook just make some space. */ XtSetArg (al [ac], XtNheight, 5); ac++; XtSetArg (al [ac], XtNwidth, 5); ac++; button = XtCreateWidget (cur->name, stubWidgetClass, widget, al, ac); } else if (!cur->contents) { if (!cur->call_data) button = XtCreateManagedWidget (cur->name, staticTextWidgetClass, widget, al, ac); else { button = XtCreateManagedWidget (cur->name, oblongButtonWidgetClass, widget, al, ac); XtAddCallback (button, XtNselect, pick_hook, cur); } } else { Widget menu = NULL; button = XtCreateManagedWidget (cur->name, menuButtonWidgetClass, widget, al, ac); XtVaGetValues (button, XtNmenuPane, &menu, 0); if (!menu) abort (); make_menu_in_widget (instance, menu, cur->contents); OlAddCallback (button, XtNconsumeEvent, pre_hook, instance); } } } static void update_one_menu_entry (widget_instance* instance, Widget widget, widget_value* val) { Arg al [256]; int ac; Widget menu; widget_value* contents; if (val->change == NO_CHANGE) return; /* update the sensitivity */ XtVaSetValues (widget, XtNsensitive, val->enabled, 0); /* update the pulldown/pullaside as needed */ ac = 0; menu = NULL; XtVaGetValues (widget, XtNmenuPane, &menu, 0); contents = val->contents; if (!menu) { if (contents) { /* in OLIT this would have to be a structural change on the button. */ abort (); } } else if (!contents) { /* in OLIT this would have to be a structural change on the button. */ abort (); } else if (contents->change != NO_CHANGE) update_menu_widget (instance, menu, val); } static void update_menu_widget (widget_instance* instance, Widget widget, widget_value* val) { if (val->change == STRUCTURAL_CHANGE || val->contents->change == STRUCTURAL_CHANGE) { destroy_all_children (widget); make_menu_in_widget (instance, widget, val->contents); } else { /* Update all the buttons of the composite widget in order. */ Widget* children; unsigned int num_children; int i; widget_value* cur; children = (Widget *) XtCompositeChildren (widget, &num_children); if (children) { for (i = 0, cur = val->contents; i < num_children; i++) { if (!cur) abort (); if (children [i]->core.being_destroyed || strcmp (XtName (children [i]), cur->name)) continue; update_one_menu_entry (instance, children [i], cur); cur = cur->next; } XtFree (children); } if (cur) abort (); } } void xol_update_one_widget (widget_instance* instance, Widget widget, widget_value* val, Boolean deep_p) { Widget menu = widget; if (XtIsShell (widget)) XtVaGetValues (widget, XtNmenuPane, &menu, 0); update_menu_widget (instance, menu, val); } void xol_update_one_value (widget_instance* instance, Widget widget, widget_value* val) { return; } void xol_pop_instance (widget_instance* instance, Boolean up) { } void xol_popup_menu (Widget widget) { OlMenuPost (widget); } /* Destruction of instances */ void xol_destroy_instance (widget_instance* instance) { XtDestroyWidget (instance->widget); }