annotate oldXMenu/AddSel.c @ 31383:860d7ac182e3

(vc-rcs-show-log-entry): New function. (vc-rcs-checkin, vc-rcs-checkout): Don't set all properties. (vc-rcs-register): If there is no RCS subdir, ask the user whether to create one. (vc-rcs-state-heuristic): Use file-ownership-preserved-p. (vc-rcs-checkout): Remove the error-handling for missing-rcs. (vc-rcs-state-heuristic): Don't use file-writable-p. (vc-rcs-print-log): Insert in the current buffer. (vc-rcs-diff): Insert in the current buffer and remove unused arg CMP. (vc-rcs-workfile-unchanged-p): Use vc-do-command instead of vc-simple-command. (vc-rcs-fetch-master-state): Removed check for unlocked-changes to avoid doing a diff when opening a file. (vc-rcs-state): Added check for unlocked-changes. (vc-rcs-header): Escape Id. (vc-rcs-workfile-unchanged-p): Remove optional arg VERSION. (vc-rcs-state): Call vc-workfile-unchanged-p, not the RCS-specific version. (vc-rcs-state-heuristic): Use file-writable-p instead of comparing userids. (vc-rcs-fetch-master-state): Handle the case where rcs is missing. Simplify the logic by eliminating unreachable code. (vc-rcs-diff): Only pass `2' to vc-do-command if necessary and just do a recursive call if we need to retry. (vc-rcs-checkout): Handle the case where rcs is missing by making the buffer read-write if requested and re-signalling the error. (vc-rcs-find-most-recent-rev): New function. The code derives from the old vc-parse-buffer but uses the revision number rather than the date (much easier to compare robustly). (vc-rcs-fetch-master-state): Use `with-temp-buffer'. Adapt to the new vc-parse-buffer (and vc-rcs-find-most-recent-rev). Find the locking-user more directly. Check strict locking and set checkout-model appropriately. (vc-rcs-parse-locks): Remove. (vc-rcs-latest-on-branch-p): Use with-temp-buffer and adapt to the new vc-parse-buffer (and vc-rcs-find-most-recent-rev). (vc-rcs-system-release): Use with-current-buffer and vc-parse-buffer. (vc-rcs-register, vc-rcs-checkout): Use with-current-buffer. Merge in code from vc-rcs-hooks.el. Don't require 'vc anymore. (vc-rcs-responsible-p): Use expand-file-name instead of concat and file-directory-p instead of file-exists-p. (vc-rcs-exists): Remove. (vc-rcs-header): New var. Update Copyright. (vc-rcs-rename-file): New function. (vc-rcs-diff): Remove unused `backend' variable. (vc-rcs-clear-headers): New function; code moved here from vc-clear-headers in vc.el. (tail): Provide vc-rcs and remove vc-rcs-logentry-check. (vc-rcs-register): Parse command output to find master file name and workfile version. (vc-rcs-checkout): Removed call to vc-file-clear-masterprops. Require vc and vc-rcs-hooks. (vc-rcs-trunk-p, vc-rcs-branch-part): Move to vc-rcs-hooks. (vc-rcs-backend-release-p): Remove (use vc-rcs-release-p). (vc-release-greater-or-equal-p): Move from vc. (vc-rcs-trunk-p, vc-rcs-branch-p, vc-rcs-branch-part, vc-rcs-minor-part, vc-rcs-previous-version): Remove duplicates. (vc-rcs-checkout): Add a missing `new-version' argument in the call to vc-rcs-latest-on-branch-p. Hopefully that was the right one. (vc-rcs-steal-lock): Renamed from `vc-rcs-steal'. Updated everything to use `vc-checkout-model'. (vc-rcs-backend-release-p): function added. other stuff updated to reference this function instead of the old `vc-backend-release-p'. (vc-rcs-logentry-check): Function added. (vc-rcs-checkin, vc-rcs-previous-version) (vc-rcs-checkout): Name space cleaned up. No more revision number crunching function names that are not prefixed with vc-rcs. (vc-rcs-checkout-model): Function added. References to `vc-checkout-model' replaced. (vc-rcs-admin): Added the query-only option as required by the vc.el file. (vc-rcs-exists): Function added. (vc-*-checkout): Use with-temp-file instead of /bin/sh. Merged from mainline (vc-rcs-latest-on-branch-p): Moved to vc-rcs-hooks.el. (vc-rcs-latest-on-branch-p, vc-rcs-trunk-p) (vc-rcs-branch-p, vc-rcs-branch-part, vc-rcs-minor-part) (vc-rcs-previous-version): Functions added. (vc-rcs-diff): Function added. (vc-rcs-checkout) Bug (typo) found and fixed. (vc-rcs-register-switches) Variable `vc-rcs-register-switches' added. Require vc when compiling. (vc-rcs-print-log, vc-rcs-assign-name, vc-rcs-merge) (vc-rcs-check-headers, vc-rcs-steal, vc-rcs-uncheck, vc-rcs-revert) (vc-rcs-checkin): New functions (code from vc.el). (vc-rcs-previous-version, vc-rcs-system-release, vc-rcs-checkout): Doc fix. (vc-rcs-release): Deleted. (Duplicated vc-rcs-system-release). (vc-rcs-trunk-p, vc-rcs-branch-p, vc-rcs-branch-part) (vc-rcs-minor-part, vc-rcs-previous-version, vc-rcs-release) (vc-rcs-release-p, vc-rcs-admin, vc-rcs-checkout): New functions from vc.el. (vc-rcs-system-release): Renamed from vc-rcs-backend-release.
author Gerd Moellmann <gerd@gnu.org>
date Mon, 04 Sep 2000 19:47:43 +0000
parents d93b1a9c3c96
children 23a1cea22d13
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
1 #include "copyright.h"
Dave Love <fx@gnu.org>
parents:
diff changeset
2
27455
d93b1a9c3c96 (XMenuAddSelection): Add parameter HELP.
Gerd Moellmann <gerd@gnu.org>
parents: 25858
diff changeset
3 /* $Header: /gd/gnu/cvsroot/emacs/oldXMenu/AddSel.c,v 1.1 1999/10/03 19:34:52 fx Exp $ */
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
4 /* Copyright Massachusetts Institute of Technology 1985 */
Dave Love <fx@gnu.org>
parents:
diff changeset
5
Dave Love <fx@gnu.org>
parents:
diff changeset
6 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
7 * XMenu: MIT Project Athena, X Window system menu package
Dave Love <fx@gnu.org>
parents:
diff changeset
8 *
Dave Love <fx@gnu.org>
parents:
diff changeset
9 * XMenuAddSelection - Adds a selection to an XMenu object.
Dave Love <fx@gnu.org>
parents:
diff changeset
10 *
Dave Love <fx@gnu.org>
parents:
diff changeset
11 * Author: Tony Della Fera, DEC
Dave Love <fx@gnu.org>
parents:
diff changeset
12 * August, 1985
Dave Love <fx@gnu.org>
parents:
diff changeset
13 *
Dave Love <fx@gnu.org>
parents:
diff changeset
14 */
Dave Love <fx@gnu.org>
parents:
diff changeset
15
Dave Love <fx@gnu.org>
parents:
diff changeset
16 #include <config.h>
Dave Love <fx@gnu.org>
parents:
diff changeset
17 #include "XMenuInt.h"
Dave Love <fx@gnu.org>
parents:
diff changeset
18
Dave Love <fx@gnu.org>
parents:
diff changeset
19 int
27455
d93b1a9c3c96 (XMenuAddSelection): Add parameter HELP.
Gerd Moellmann <gerd@gnu.org>
parents: 25858
diff changeset
20 XMenuAddSelection(display, menu, p_num, data, label, active, help)
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
21 Display *display;
Dave Love <fx@gnu.org>
parents:
diff changeset
22 register XMenu *menu; /* Menu object to be modified. */
Dave Love <fx@gnu.org>
parents:
diff changeset
23 register int p_num; /* Pane number to be modified. */
Dave Love <fx@gnu.org>
parents:
diff changeset
24 char *data; /* Data value. */
Dave Love <fx@gnu.org>
parents:
diff changeset
25 char *label; /* Selection label. */
Dave Love <fx@gnu.org>
parents:
diff changeset
26 int active; /* Make selection active? */
27455
d93b1a9c3c96 (XMenuAddSelection): Add parameter HELP.
Gerd Moellmann <gerd@gnu.org>
parents: 25858
diff changeset
27 char *help; /* Help string */
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
28 {
Dave Love <fx@gnu.org>
parents:
diff changeset
29 register XMPane *pane; /* Pane containing the new selection. */
Dave Love <fx@gnu.org>
parents:
diff changeset
30 register XMSelect *select; /* Newly created selection. */
Dave Love <fx@gnu.org>
parents:
diff changeset
31
Dave Love <fx@gnu.org>
parents:
diff changeset
32
Dave Love <fx@gnu.org>
parents:
diff changeset
33 int label_length; /* Label lenght in characters. */
Dave Love <fx@gnu.org>
parents:
diff changeset
34 int label_width; /* Label width in pixels. */
Dave Love <fx@gnu.org>
parents:
diff changeset
35
Dave Love <fx@gnu.org>
parents:
diff changeset
36 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
37 * Check for NULL pointers!
Dave Love <fx@gnu.org>
parents:
diff changeset
38 */
Dave Love <fx@gnu.org>
parents:
diff changeset
39 if (label == NULL) {
Dave Love <fx@gnu.org>
parents:
diff changeset
40 _XMErrorCode = XME_ARG_BOUNDS;
Dave Love <fx@gnu.org>
parents:
diff changeset
41 return(XM_FAILURE);
Dave Love <fx@gnu.org>
parents:
diff changeset
42 }
Dave Love <fx@gnu.org>
parents:
diff changeset
43 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
44 * Find the right pane.
Dave Love <fx@gnu.org>
parents:
diff changeset
45 */
Dave Love <fx@gnu.org>
parents:
diff changeset
46 pane = _XMGetPanePtr(menu, p_num);
Dave Love <fx@gnu.org>
parents:
diff changeset
47 if (pane == NULL) return(XM_FAILURE);
Dave Love <fx@gnu.org>
parents:
diff changeset
48
Dave Love <fx@gnu.org>
parents:
diff changeset
49 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
50 * Calloc the XMSelect structure.
Dave Love <fx@gnu.org>
parents:
diff changeset
51 */
Dave Love <fx@gnu.org>
parents:
diff changeset
52 select = (XMSelect *)calloc(1, sizeof(XMSelect));
Dave Love <fx@gnu.org>
parents:
diff changeset
53 if (select == NULL) {
Dave Love <fx@gnu.org>
parents:
diff changeset
54 _XMErrorCode = XME_CALLOC;
Dave Love <fx@gnu.org>
parents:
diff changeset
55 return(XM_FAILURE);
Dave Love <fx@gnu.org>
parents:
diff changeset
56 }
Dave Love <fx@gnu.org>
parents:
diff changeset
57 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
58 * Determine label size.
Dave Love <fx@gnu.org>
parents:
diff changeset
59 */
Dave Love <fx@gnu.org>
parents:
diff changeset
60 label_length = strlen(label);
Dave Love <fx@gnu.org>
parents:
diff changeset
61 label_width = XTextWidth(menu->s_fnt_info, label, label_length);
Dave Love <fx@gnu.org>
parents:
diff changeset
62
Dave Love <fx@gnu.org>
parents:
diff changeset
63 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
64 * Fill the XMSelect structure.
Dave Love <fx@gnu.org>
parents:
diff changeset
65 */
Dave Love <fx@gnu.org>
parents:
diff changeset
66 if (!strcmp (label, "--") || !strcmp (label, "---"))
Dave Love <fx@gnu.org>
parents:
diff changeset
67 {
Dave Love <fx@gnu.org>
parents:
diff changeset
68 select->type = SEPARATOR;
Dave Love <fx@gnu.org>
parents:
diff changeset
69 select->active = 0;
Dave Love <fx@gnu.org>
parents:
diff changeset
70 }
Dave Love <fx@gnu.org>
parents:
diff changeset
71 else
Dave Love <fx@gnu.org>
parents:
diff changeset
72 {
Dave Love <fx@gnu.org>
parents:
diff changeset
73 select->type = SELECTION;
Dave Love <fx@gnu.org>
parents:
diff changeset
74 select->active = active;
Dave Love <fx@gnu.org>
parents:
diff changeset
75 }
Dave Love <fx@gnu.org>
parents:
diff changeset
76
Dave Love <fx@gnu.org>
parents:
diff changeset
77 select->serial = -1;
Dave Love <fx@gnu.org>
parents:
diff changeset
78 select->label = label;
Dave Love <fx@gnu.org>
parents:
diff changeset
79 select->label_width = label_width;
Dave Love <fx@gnu.org>
parents:
diff changeset
80 select->label_length = label_length;
Dave Love <fx@gnu.org>
parents:
diff changeset
81 select->data = data;
Dave Love <fx@gnu.org>
parents:
diff changeset
82 select->parent_p = pane;
27455
d93b1a9c3c96 (XMenuAddSelection): Add parameter HELP.
Gerd Moellmann <gerd@gnu.org>
parents: 25858
diff changeset
83 select->help_string = help;
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
84
Dave Love <fx@gnu.org>
parents:
diff changeset
85 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
86 * Insert the selection at the end of the selection list.
Dave Love <fx@gnu.org>
parents:
diff changeset
87 */
Dave Love <fx@gnu.org>
parents:
diff changeset
88 emacs_insque(select, pane->s_list->prev);
Dave Love <fx@gnu.org>
parents:
diff changeset
89
Dave Love <fx@gnu.org>
parents:
diff changeset
90 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
91 * Update the selection count.
Dave Love <fx@gnu.org>
parents:
diff changeset
92 */
Dave Love <fx@gnu.org>
parents:
diff changeset
93 pane->s_count++;
Dave Love <fx@gnu.org>
parents:
diff changeset
94
Dave Love <fx@gnu.org>
parents:
diff changeset
95 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
96 * Schedule a recompute.
Dave Love <fx@gnu.org>
parents:
diff changeset
97 */
Dave Love <fx@gnu.org>
parents:
diff changeset
98 menu->recompute = 1;
Dave Love <fx@gnu.org>
parents:
diff changeset
99
Dave Love <fx@gnu.org>
parents:
diff changeset
100 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
101 * Return the selection number just added.
Dave Love <fx@gnu.org>
parents:
diff changeset
102 */
Dave Love <fx@gnu.org>
parents:
diff changeset
103 _XMErrorCode = XME_NO_ERROR;
Dave Love <fx@gnu.org>
parents:
diff changeset
104 return((pane->s_count - 1));
Dave Love <fx@gnu.org>
parents:
diff changeset
105 }