summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin E Martin <kem@kem.org>2004-09-02 08:40:32 +0000
committerKevin E Martin <kem@kem.org>2004-09-02 08:40:32 +0000
commit3981cffbb6f4f4fe4227481c51083063a9ea995e (patch)
treed27d76de4d0835d3448cb1978060c74a3e1df3dd
parent6b12ddbb33c8722e50e7f69f456ba0ba72b76ddd (diff)
Restore xman and xedit changes that were previously reverted, and makerel-0-6-1lg3d-rel-0-7-0lg3d-baseXORG-6_8_1XORG-6_8_0XORG-6_7_99_904
Xprint support optional (Bug #1273, Roland Mainz).
-rw-r--r--Xedit-noxprint.ad462
-rw-r--r--Xedit-xprint.ad559
-rw-r--r--commands.c130
-rw-r--r--hook.c4
-rw-r--r--ispell.c24
-rw-r--r--lisp/lisp.c2
-rw-r--r--util.c2
-rw-r--r--xedit.c30
-rw-r--r--xedit.h7
9 files changed, 1182 insertions, 38 deletions
diff --git a/Xedit-noxprint.ad b/Xedit-noxprint.ad
new file mode 100644
index 0000000..16334a3
--- /dev/null
+++ b/Xedit-noxprint.ad
@@ -0,0 +1,462 @@
+! $XFree86: xc/programs/xedit/Xedit.ad,v 1.23 2002/09/22 07:09:05 paulo Exp $
+
+*geometry: 590x440
+*input: TRUE
+*enableBackups: True
+*backupNameSuffix: ~
+*changedBitmap: xlogo11
+*international: True
+
+*hints:\
+Use Control-S and Control-R to Search.\n\
+Use Control-Shift-_ to Undo. Control-G to switch between Undo and Redo.\n\
+Use Control-A to jump to the beginning of the line.\n\
+Use Control-E to jump to the end of the line.\n\
+Use Control-T to transpose characters.\n\
+Use Control-K to cut to the end of the line. Control-Y to paste.\n\
+Use Control-Q to escape control characters.\n\
+Use Control-U[,<number>] to multiply actions. Control-G to cancel.\n\
+Use Control-Z to scroll one line up. Meta-Z to scroll one line down.\n\
+Use Meta-Q to format a paragraph.\n\
+Use Right-Button to extend selections.\n\
+Use Meta-I to insert a file.\n\
+Use Control-W to delete a selection, and/or jump to the selection mark.\n\
+Use Control-X,Control-F to find a file. Tab for filename completion.\n\
+Use Control-X,Control-S to save.\n\
+Use Control-X,Control-C to exit.\n\
+Use Control-C to paste the selection at CUT_BUFFER0.\n\
+Use Control Left-Button to popup the File Menu.\n\
+Use Control Middle-Button to popup the Edit Menu.\n\
+Use Control Right-Button to popup the Option Menu.\n\
+Use Control-X,Tab to Indent.\n\
+Use Control-X,0 to delete current splitted window.\n\
+Use Control-X,1 to delete other splitted window.\n\
+Use Control-X,2 to split the window vertically.\n\
+Use Control-X,3 to split the window horizontally.\n\
+Use Control-X,b to switch to another file.\n\
+Use Control-X,d to list directory. Control-G to Cancel.\n\
+Use Control-X,k to close file being edited.\n\
+Use Control-X,o to switch to another splitted window.\n\
+Use Control-X,u to undo. Control-G to switch between Undo and Redo.\n\
+Use Insert to toggle Overwrite mode.\n\
+Use Control-G to interrupt the lisp subprocess
+
+*formWindow*defaultDistance: 2
+*formWindow.?.borderWidth: 0
+*formWindow.min: 18
+*formWindow.max: 18
+*formWindow.showGrip: False
+*positionWindow.fromHoriz: labelWindow
+*positionWindow.horizDistance: 0
+*positionWindow.left: chainRight
+*positionWindow.right: chainRight
+*positionWindow.width: 90
+*positionWindow.label: error
+*positionWindow.justify: left
+*labelWindow*justify: center
+*labelWindow*label: no file yet
+*labelWindow.left: chainLeft
+*labelWindow.right: chainRight
+
+*quit.label: Quit
+*quit.tip: Close xedit window
+*save.label: Save
+*save.tip: Save current file
+*load.label: Load
+*load.tip: Load a new file
+
+*buttons*orientation: horizontal
+*buttons*showGrip: False
+*buttons.min: 18
+
+*messageWindow.height: 50
+*messageWindow.min: 18
+*Paned*Text*allowResize: True
+
+*messageWindow.autoFill: False
+*messageWindow.scrollVertical: Never
+
+*editWindow.autoFill: False
+*editWindow.scrollVertical: Always
+*editWindow.showGrip: True
+xedit.textSource*enableUndo: True
+
+*bc_label*label: Use Control-S and Control-R to Search.
+*bc_label*showGrip: False
+*bc_label.min: 18
+
+*dirlabel.showGrip: False
+*dirlabel.min: 18
+*dirlabel.max: 18
+
+*dirwindow.defaultColumns: 0
+*dirwindow.verticalList: True
+
+*viewport.forceBars: True
+*viewport.allowVert: 1
+
+*insertFile*text.width: 141
+*insertFile*text.?.pieceSize: 256
+*search*searchText.width: 157
+*search*replaceText.width: 157
+*search*case.horizDistance: 25
+*search*Text.?.pieceSize: 256
+
+*SimpleMenu.BackingStore: NotUseful
+*SimpleMenu.menuLabel.vertSpace: 80
+*SimpleMenu.SmeBSB.HorizontalMargins: 16
+*SimpleMenu.justify: center
+*SimpleMenu.menuLabel.height: 250
+*SimpleMenu*cursor: left_ptr
+
+*fileMenu.label: File Menu
+*optionsMenu.label: Option Menu
+*optionsMenu.ispell.label: ispell...
+*editMenu.label: Edit Menu
+*editMenu.wrapMenuItem.label: Wrapping
+*editMenu.wrapMenuItem.leftBitmap: menu12
+*wrapMenu.never.label: Never
+*wrapMenu.line.label: Line
+*wrapMenu.word.label: Word
+*editMenu.autoFill.label: Auto Fill
+*editMenu.justifyMenuItem.label: Justification
+*editMenu.justifyMenuItem.leftBitmap: menu12
+*justifyMenu.left.label: Left
+*justifyMenu.right.label: Right
+*justifyMenu.center.label: Center
+*justifyMenu.full.label: Full
+*editMenu.breakColumns.label: Break Columns...
+*editMenu.scrollMenuItem.label: Scrollbars
+*editMenu.scrollMenuItem.leftBitmap: menu12
+*scrollMenu.vertical.label: Vertical
+*scrollMenu.horizontal.label: Horizontal
+*editMenu.modeMenuItem.leftBitmap: menu12
+*editMenu.modeMenuItem.label: Edit Mode
+*editModes.none.label: Plain/None
+
+*TransientShell*Text.translations: #override \
+c<Key>S: no-op(r)\n\
+c<Key>R: no-op(r)\n\
+m<Key>I: no-op(r)
+
+*search.translations: #override \
+<Create>:get-values(my, $w, width, $h, height)\
+ set-values(1, minWidth, $w, minHeight, $h, maxHeight, $h, allowShellResize, False)
+
+*insertFile.title: Insert File
+*insertFile.translations: #override \
+<Create>:get-values(my, $w, width, $h, height)\
+ set-values(1, minWidth, $w, minHeight, $h, maxHeight, $h, allowShellResize, False)
+
+*baseTranslations: #override \
+<Ctrl>X,<Ctrl>C:quit()\n\
+<Ctrl>X,<Ctrl>S:save-file()\n\
+<Ctrl>X,<Ctrl>F:find-file()\n\
+<Key>Escape: line-edit()
+
+*messageWindow.Translations: #override \
+<Ctrl>X,<Ctrl>C:quit()\n\
+<Ctrl>X,<Ctrl>S:save-file()\n\
+<Ctrl>X,<Ctrl>F:find-file()\n\
+<Enter>: no-op()\n\
+<Leave>: no-op()\n\
+<Btn1Down>: set-keyboard-focus() select-start()
+
+*searchText.Translations: #override \
+<Enter>: no-op()\n\
+<Leave>: no-op()\n\
+<Btn1Down>: set-keyboard-focus() select-start()
+
+*replaceText.Translations: #override \
+<Enter>: no-op()\n\
+<Leave>: no-op()\n\
+<Btn1Down>: set-keyboard-focus() select-start()
+
+*editWindow.translations: #override \
+<Ctrl>X,<Ctrl>E:lisp-eval()\n\
+<Ctrl>X,<Key>Tab:indent()\n\
+<Ctrl>X,:<Key>0:delete-window(current)\n\
+<Ctrl>X,:<Key>1:delete-window(other)\n\
+<Ctrl>X,:<Key>2:split-window(vertical)\n\
+<Ctrl>X,:<Key>3:split-window(horizontal)\n\
+<Ctrl>X,!l @Num_Lock<Key>b:switch-source()\n\
+<Ctrl>X,!l <Key>b:switch-source()\n\
+<Ctrl>X,!@Num_Lock<Key>b:switch-source()\n\
+<Ctrl>X,!<Key>b:switch-source()\n\
+<Ctrl>X,!l @Num_Lock<Key>d:dir-window()\n\
+<Ctrl>X,!l <Key>d:dir-window()\n\
+<Ctrl>X,!@Num_Lock<Key>d:dir-window()\n\
+<Ctrl>X,!<Key>d:dir-window()\n\
+<Ctrl>X,!l @Num_Lock<Key>k:kill-file()\n\
+<Ctrl>X,!l <Key>k:kill-file()\n\
+<Ctrl>X,!@Num_Lock<Key>k:kill-file()\n\
+<Ctrl>X,!<Key>k:kill-file()\n\
+<Ctrl>X,!l @Num_Lock<Key>o:other-window()\n\
+<Ctrl>X,!l <Key>o:other-window()\n\
+<Ctrl>X,!@Num_Lock<Key>o:other-window()\n\
+<Ctrl>X,!<Key>o:other-window()\n\
+<Ctrl>X,!l @Num_Lock<Key>u:undo()\n\
+<Ctrl>X,!l <Key>u:undo()\n\
+<Ctrl>X,!@Num_Lock<Key>u:undo()\n\
+<Ctrl>X,!<Key>u:undo()\n\
+<Ctrl>G: xedit-keyboard-reset()\n\
+<Ctrl>J: xedit-print-lisp-eval()\n\
+<Key>Tab: insert-char()\n\
+!l @Num_Lock<Key>b:insert-char()\n\
+!l <Key>b: insert-char()\n\
+!@Num_Lock<Key>b:insert-char()\n\
+!<Key>b: insert-char()\n\
+!l @Num_Lock<Key>d:insert-char()\n\
+!l <Key>d: insert-char()\n\
+!@Num_Lock<Key>d:insert-char()\n\
+!<Key>d: insert-char()\n\
+!l <Key>k: insert-char()\n\
+!l @Num_Lock<Key>k:insert-char()\n\
+!@Num_Lock<Key>k:insert-char()\n\
+!<Key>k: insert-char()\n\
+!l @Num_Lock<Key>o:insert-char()\n\
+!l <Key>o: insert-char()\n\
+!@Num_Lock<Key>o:insert-char()\n\
+!<Key>o: insert-char()\n\
+!l @Num_Lock<Key>u:insert-char()\n\
+!l <Key>u: insert-char()\n\
+!@Num_Lock<Key>u:insert-char()\n\
+!<Key>u: insert-char()\n\
+~s <Key>Insert: toggle-overwrite()\n\
+c l @Num_Lock<Btn1Down>:xedit-focus() popup-menu(fileMenu)\n\
+c @Num_Lock<Btn1Down>:xedit-focus() popup-menu(fileMenu)\n\
+c l<Btn1Down>: xedit-focus() popup-menu(fileMenu)\n\
+c<Btn1Down>: xedit-focus() popup-menu(fileMenu)\n\
+c l @Num_Lock<Btn2Down>:xedit-focus() popup-menu(editMenu)\n\
+c @Num_Lock<Btn2Down>:xedit-focus() popup-menu(editMenu)\n\
+c l<Btn2Down>: xedit-focus() popup-menu(editMenu)\n\
+c<Btn2Down>: xedit-focus() popup-menu(editMenu)\n\
+c l @Num_Lock<Btn3Down>:xedit-focus() popup-menu(optionsMenu)\n\
+c @Num_Lock<Btn3Down>:xedit-focus() popup-menu(optionsMenu)\n\
+c l<Btn3Down>:xedit-focus() popup-menu(optionsMenu)\n\
+c<Btn3Down>: xedit-focus() popup-menu(optionsMenu)\n\
+<Btn1Down>: xedit-focus() select-start()
+
+*filename.?.pieceSize: 256
+*filename.translations: #override \
+c<Key>S: no-op(r)\n\
+c<Key>R: no-op(r)\n\
+m<Key>I: no-op(r)\n\
+c<Key>G: cancel-find-file()\n\
+<Key>Return: load-file()\n\
+<Key>Tab: file-completion(h)\n\
+<Key>Escape: cancel-find-file()\n\
+<Enter>: no-op()\n\
+<Leave>: no-op()\n\
+<Btn1Down>: set-keyboard-focus() select-start()
+
+*ispell.translations: #override \
+<Message>WM_PROTOCOLS: ispell(end)
+
+! Sample dictionary, word chars and text mode resources setup
+!*ispell.dictionary: br
+!*ispell.dictionaries: br american americanmed+ english
+!*ispell*br.wordChars: áéíóúçÁÉÍÓÚÇàÀâêôÂÊÔüÜãõÃÕ-
+!*ispell.ispellCommand: /usr/local/bin/ispell -B -m
+!*ispell*text.skipLines: .#
+
+*ispell.geometry: 0x0
+*ispell.minWidth: 320
+*ispell.minHeight: 245
+*ispell*Label.borderWidth: 0
+*ispell*Label.internalHeight: 4
+*ispell*Label.justify: right
+*ispell*Label.width: 112
+*ispell*Label.left: chainLeft
+*ispell*Label.right: chainLeft
+*ispell*Label.top: chainTop
+*ispell*Label.bottom: chainTop
+*ispell*mispelled.label: Misspelled word:
+*ispell*mispelled.top: chainTop
+*ispell*mispelled.bottom: chainTop
+*ispell*mispelled.internalWidth: 0
+*ispell*repeated.label: Repeated words:
+*ispell*repeated.internalWidth: 0
+*ispell*replacement.label: Replace with:
+*ispell*word.fromHoriz: mispelled
+*ispell*word.justify: left
+*ispell*word.borderWidth: 1
+*ispell*word.internalWidth: 4
+*ispell*word.internalHeight: 3
+*ispell*word.width: 194
+*ispell*word.left: chainLeft
+*ispell*word.right: chainRight
+*ispell*word.top: chainTop
+*ispell*word.bottom: chainTop
+*ispell*word.label:
+*ispell*word.tip: Press here to select this text
+*ispell*word.highlightThickness: 0
+*ispell*text.fromHoriz: replacement
+*ispell*replacement.fromVert: mispelled
+*ispell*replacement.internalWidth: 0
+*ispell*form.text.fromVert: word
+*ispell*form.text.width: 194
+*ispell*form.text.top: chainTop
+*ispell*form.text.bottom: chainTop
+*ispell*form.text.left: chainLeft
+*ispell*form.text.right: chainRight
+*ispell*form.text.leftMargin: 4
+*ispell*form.text.?.pieceSize: 256
+*ispell*suggestions.label: Suggestions:
+*ispell*suggestions.fromVert: replacement
+*ispell*suggestions.internalWidth: 0
+*ispell*viewport.fromHoriz: suggestions
+*ispell*viewport.fromVert: text
+*ispell*viewport.width: 194
+*ispell*viewport.height: 143
+*ispell*viewport.top: chainTop
+*ispell*viewport.bottom: chainBottom
+*ispell*viewport.left: chainLeft
+*ispell*viewport.right: chainRight
+*ispell*viewport.forceBars: 1
+*ispell*viewport.allowVert: 1
+*ispell*list.defaultColumns: 1
+*ispell*list.longest: 16384
+*ispell*commands.vertDistance: 5
+*ispell*commands.fromVert: suggestions
+*ispell*commands.top: chainBottom
+*ispell*commands.bottom: chainBottom
+*ispell*commands.right: chainLeft
+*ispell*commands.left: chainLeft
+*ispell*check.label: Check
+*ispell*check.width: 54
+*ispell*check.tip: Ask ispell about the word in the text field
+*ispell*look.label: Look
+*ispell*look.fromHoriz: check
+*ispell*look.horizDistance: 0
+*ispell*look.width: 46
+*ispell*look.tip: Runs the look command
+*ispell*undo.fromVert: check
+*ispell*undo.label: Undo
+*ispell*undo.width: 102
+*ispell*undo.tip: Undo last action
+*ispell*replace.fromVert: undo
+*ispell*replace.label: Replace
+*ispell*replace.tip: Replace occurence of the word
+*ispell*replaceAll.fromVert: undo
+*ispell*replaceAll.fromHoriz: replace
+*ispell*replaceAll.label: All
+*ispell*replaceAll.tip: Replace all occurences of the word
+*ispell*ignore.fromVert: replace
+*ispell*ignore.label: Ignore
+*ispell*ignore.tip: Ignore this word
+*ispell*ignoreAll.fromVert: replaceAll
+*ispell*ignoreAll.fromHoriz: ignore
+*ispell*ignoreAll.label: All
+*ispell*ignoreAll.tip: Ignore all ocurrences of the word
+*ispell*add.fromVert: ignore
+*ispell*add.label: Add
+*ispell*add.width: 50
+*ispell*add.tip: Add word to your private dictionary
+*ispell*addUncap.fromVert: ignoreAll
+*ispell*addUncap.fromHoriz: add
+*ispell*addUncap.label: Uncap
+*ispell*addUncap.horizDistance: 0
+*ispell*addUncap.width: 50
+*ispell*addUncap.tip: Add word uncapitalized, to your private dictionary
+*ispell*suspend.fromVert: add
+*ispell*suspend.label: Suspend
+*ispell*suspend.width: 57
+*ispell*suspend.tip: Suspend ispell execution
+*ispell*cancel.fromHoriz: suspend
+*ispell*cancel.fromVert: addUncap
+*ispell*cancel.label: Close
+*ispell*cancel.width: 43
+*ispell*cancel.horizDistance: 0
+*ispell*cancel.tip: Terminates ispell process
+*ispell*replace.width: 65
+*ispell*ignore.width: 65
+*ispell*replaceAll.width: 35
+*ispell*replaceAll.horizDistance: 0
+*ispell*ignoreAll.width: 35
+*ispell*ignoreAll.horizDistance: 0
+*ispell*terse.fromVert: cancel
+*ispell*terse.Label: Terse Mode
+*ispell*terse.width: 104
+*ispell*terse.borderWidth: 0
+*ispell*terse.tip: Switch terse mode
+*ispell*status.fromVert: viewport
+*ispell*status.fromHoriz: suggestions
+*ispell*status.top: chainBottom
+*ispell*status.bottom: chainBottom
+*ispell*status.left: chainLeft
+*ispell*status.right: chainRight
+*ispell*status.width: 194
+*ispell*status.borderWidth: 1
+*ispell*status.justify: left
+*ispell*status.internalHeight: 2
+*ispell*status.vertDistance: 2
+*ispell*options.fromVert: status
+*ispell*options.fromHoriz: commands
+*ispell*options.bottom: chainBottom
+*ispell*options.top: chainBottom
+*ispell*options.left: chainLeft
+*ispell*options.right: chainRight
+*ispell*options.dict.width: 121
+*ispell*options.horizDistance: 2
+*ispell*options.vertDistance: 2
+*ispell*options.defaultDistance: 2
+*ispell*dict.highlightThickness: 0
+*ispell*dict.justify: left
+*ispell*dict.resizable: False
+*ispell*dict.leftBitmap: menu12
+*ispell*dict.label: Dictionary
+*ispell*dict.tip: Change dictionary
+*ispell*options.format.width: 65
+*ispell*format.highlightThickness: 0
+*ispell*format.justify: left
+*ispell*format.resizable: False
+*ispell*format.leftBitmap: menu12
+*ispell*format.fromHoriz: dict
+*ispell*format.horizDistance: 0
+*ispell*format.tip: Select text type
+
+*columns.minWidth: 140
+*columns.minHeight: 76
+*columns.maxWidth: 140
+*columns.maxHeight: 76
+*columns.form*defaultDistance: 4
+*columns*left: chainLeft
+*columns*right: chainLeft
+*columns*top: chainTop
+*columns*bottom: chainTop
+*columns*Label.width: 96
+*columns*Label.borderWidth: 0
+*columns*Label.internalHeight: 4
+*columns*Label.internalWidth: 2
+*columns*Label.justify: right
+*columns*Text.width: 30
+*columns*Command.width: 58
+*columns*leftLabel.label: Left Column:
+*columns*left.fromHoriz: leftLabel
+*columns*rightLabel.label: Right Column:
+*columns*rightLabel.fromVert: leftLabel
+*columns*right.fromHoriz: rightLabel
+*columns*right.fromVert: left
+*columns*ok.fromVert: rightLabel
+*columns*cancel.fromHoriz: ok
+*columns*cancel.fromVert: rightLabel
+*columns*cancel.horizDistance: 12
+*columns*Text.?.pieceSize: 8
+
+*columns*Text.translations: #override \
+c<Key>S: no-op(r)\n\
+c<Key>R: no-op(r)\n\
+m<Key>I: no-op(r)\n\
+<Key>Return: set-columns(ok)\n\
+<Key>Tab: change-field()\n\
+c<Key>G: set-columns(cancel)\n\
+<Key>Escape: set-columns(cancel)\n\
+<Enter>: no-op()\n\
+<Leave>: no-op()\n\
+<Btn1Down>: set-keyboard-focus() select-start()
+
+*columns.translations: #override \
+<Message>WM_PROTOCOLS: set-columns(cancel)
+
+! EOF.
diff --git a/Xedit-xprint.ad b/Xedit-xprint.ad
new file mode 100644
index 0000000..f6ef6dc
--- /dev/null
+++ b/Xedit-xprint.ad
@@ -0,0 +1,559 @@
+! $XFree86: xc/programs/xedit/Xedit.ad,v 1.23 2002/09/22 07:09:05 paulo Exp $
+
+*geometry: 590x440
+*input: TRUE
+*enableBackups: True
+*backupNameSuffix: ~
+*changedBitmap: xlogo11
+*international: True
+
+*hints:\
+Use Control-S and Control-R to Search.\n\
+Use Control-Shift-_ to Undo. Control-G to switch between Undo and Redo.\n\
+Use Control-A to jump to the beginning of the line.\n\
+Use Control-E to jump to the end of the line.\n\
+Use Control-T to transpose characters.\n\
+Use Control-K to cut to the end of the line. Control-Y to paste.\n\
+Use Control-Q to escape control characters.\n\
+Use Control-U[,<number>] to multiply actions. Control-G to cancel.\n\
+Use Control-Z to scroll one line up. Meta-Z to scroll one line down.\n\
+Use Meta-Q to format a paragraph.\n\
+Use Right-Button to extend selections.\n\
+Use Meta-I to insert a file.\n\
+Use Control-W to delete a selection, and/or jump to the selection mark.\n\
+Use Control-X,Control-F to find a file. Tab for filename completion.\n\
+Use Control-X,Control-S to save.\n\
+Use Control-X,Control-C to exit.\n\
+Use Control-C to paste the selection at CUT_BUFFER0.\n\
+Use Control Left-Button to popup the File Menu.\n\
+Use Control Middle-Button to popup the Edit Menu.\n\
+Use Control Right-Button to popup the Option Menu.\n\
+Use Control-X,Tab to Indent.\n\
+Use Control-X,0 to delete current splitted window.\n\
+Use Control-X,1 to delete other splitted window.\n\
+Use Control-X,2 to split the window vertically.\n\
+Use Control-X,3 to split the window horizontally.\n\
+Use Control-X,b to switch to another file.\n\
+Use Control-X,d to list directory. Control-G to Cancel.\n\
+Use Control-X,k to close file being edited.\n\
+Use Control-X,o to switch to another splitted window.\n\
+Use Control-X,u to undo. Control-G to switch between Undo and Redo.\n\
+Use Insert to toggle Overwrite mode.\n\
+Use Control-G to interrupt the lisp subprocess
+
+*formWindow*defaultDistance: 2
+*formWindow.?.borderWidth: 0
+*formWindow.min: 18
+*formWindow.max: 18
+*formWindow.showGrip: False
+*positionWindow.fromHoriz: labelWindow
+*positionWindow.horizDistance: 0
+*positionWindow.left: chainRight
+*positionWindow.right: chainRight
+*positionWindow.width: 90
+*positionWindow.label: error
+*positionWindow.justify: left
+*labelWindow*justify: center
+*labelWindow*label: no file yet
+*labelWindow.left: chainLeft
+*labelWindow.right: chainRight
+
+*quit.label: Quit
+*quit.tip: Close xedit window
+*save.label: Save
+*save.tip: Save current file
+*load.label: Load
+*load.tip: Load a new file
+*print.label: Print
+*print.tip: Print current file
+
+*buttons*orientation: horizontal
+*buttons*showGrip: False
+*buttons.min: 18
+
+*messageWindow.height: 50
+*messageWindow.min: 18
+*Paned*Text*allowResize: True
+
+*messageWindow.autoFill: False
+*messageWindow.scrollVertical: Never
+
+*editWindow.autoFill: False
+*editWindow.scrollVertical: Always
+*editWindow.showGrip: True
+xedit.textSource*enableUndo: True
+
+*bc_label*label: Use Control-S and Control-R to Search.
+*bc_label*showGrip: False
+*bc_label.min: 18
+
+*dirlabel.showGrip: False
+*dirlabel.min: 18
+*dirlabel.max: 18
+
+*dirwindow.defaultColumns: 0
+*dirwindow.verticalList: True
+
+*viewport.forceBars: True
+*viewport.allowVert: 1
+
+*insertFile*text.width: 141
+*insertFile*text.?.pieceSize: 256
+*search*searchText.width: 157
+*search*replaceText.width: 157
+*search*case.horizDistance: 25
+*search*Text.?.pieceSize: 256
+
+*SimpleMenu.BackingStore: NotUseful
+*SimpleMenu.menuLabel.vertSpace: 80
+*SimpleMenu.SmeBSB.HorizontalMargins: 16
+*SimpleMenu.justify: center
+*SimpleMenu.menuLabel.height: 250
+*SimpleMenu*cursor: left_ptr
+
+*fileMenu.label: File Menu
+*optionsMenu.label: Option Menu
+*optionsMenu.ispell.label: ispell...
+*editMenu.label: Edit Menu
+*editMenu.wrapMenuItem.label: Wrapping
+*editMenu.wrapMenuItem.leftBitmap: menu12
+*wrapMenu.never.label: Never
+*wrapMenu.line.label: Line
+*wrapMenu.word.label: Word
+*editMenu.autoFill.label: Auto Fill
+*editMenu.justifyMenuItem.label: Justification
+*editMenu.justifyMenuItem.leftBitmap: menu12
+*justifyMenu.left.label: Left
+*justifyMenu.right.label: Right
+*justifyMenu.center.label: Center
+*justifyMenu.full.label: Full
+*editMenu.breakColumns.label: Break Columns...
+*editMenu.scrollMenuItem.label: Scrollbars
+*editMenu.scrollMenuItem.leftBitmap: menu12
+*scrollMenu.vertical.label: Vertical
+*scrollMenu.horizontal.label: Horizontal
+*editMenu.modeMenuItem.leftBitmap: menu12
+*editMenu.modeMenuItem.label: Edit Mode
+*editModes.none.label: Plain/None
+
+*TransientShell*Text.translations: #override \
+c<Key>S: no-op(r)\n\
+c<Key>R: no-op(r)\n\
+m<Key>I: no-op(r)
+
+*search.translations: #override \
+<Create>:get-values(my, $w, width, $h, height)\
+ set-values(1, minWidth, $w, minHeight, $h, maxHeight, $h, allowShellResize, False)
+
+*insertFile.title: Insert File
+*insertFile.translations: #override \
+<Create>:get-values(my, $w, width, $h, height)\
+ set-values(1, minWidth, $w, minHeight, $h, maxHeight, $h, allowShellResize, False)
+
+*baseTranslations: #override \
+<Ctrl>X,<Ctrl>C:quit()\n\
+<Ctrl>X,<Ctrl>S:save-file()\n\
+<Ctrl>X,<Ctrl>F:find-file()\n\
+<Key>Escape: line-edit()
+
+*messageWindow.Translations: #override \
+<Ctrl>X,<Ctrl>C:quit()\n\
+<Ctrl>X,<Ctrl>S:save-file()\n\
+<Ctrl>X,<Ctrl>F:find-file()\n\
+<Enter>: no-op()\n\
+<Leave>: no-op()\n\
+<Btn1Down>: set-keyboard-focus() select-start()
+
+*searchText.Translations: #override \
+<Enter>: no-op()\n\
+<Leave>: no-op()\n\
+<Btn1Down>: set-keyboard-focus() select-start()
+
+*replaceText.Translations: #override \
+<Enter>: no-op()\n\
+<Leave>: no-op()\n\
+<Btn1Down>: set-keyboard-focus() select-start()
+
+*editWindow.translations: #override \
+<Ctrl>X,<Ctrl>E:lisp-eval()\n\
+<Ctrl>X,<Key>Tab:indent()\n\
+<Ctrl>X,:<Key>0:delete-window(current)\n\
+<Ctrl>X,:<Key>1:delete-window(other)\n\
+<Ctrl>X,:<Key>2:split-window(vertical)\n\
+<Ctrl>X,:<Key>3:split-window(horizontal)\n\
+<Ctrl>X,!l @Num_Lock<Key>b:switch-source()\n\
+<Ctrl>X,!l <Key>b:switch-source()\n\
+<Ctrl>X,!@Num_Lock<Key>b:switch-source()\n\
+<Ctrl>X,!<Key>b:switch-source()\n\
+<Ctrl>X,!l @Num_Lock<Key>d:dir-window()\n\
+<Ctrl>X,!l <Key>d:dir-window()\n\
+<Ctrl>X,!@Num_Lock<Key>d:dir-window()\n\
+<Ctrl>X,!<Key>d:dir-window()\n\
+<Ctrl>X,!l @Num_Lock<Key>k:kill-file()\n\
+<Ctrl>X,!l <Key>k:kill-file()\n\
+<Ctrl>X,!@Num_Lock<Key>k:kill-file()\n\
+<Ctrl>X,!<Key>k:kill-file()\n\
+<Ctrl>X,!l @Num_Lock<Key>o:other-window()\n\
+<Ctrl>X,!l <Key>o:other-window()\n\
+<Ctrl>X,!@Num_Lock<Key>o:other-window()\n\
+<Ctrl>X,!<Key>o:other-window()\n\
+<Ctrl>X,!l @Num_Lock<Key>u:undo()\n\
+<Ctrl>X,!l <Key>u:undo()\n\
+<Ctrl>X,!@Num_Lock<Key>u:undo()\n\
+<Ctrl>X,!<Key>u:undo()\n\
+<Ctrl>G: xedit-keyboard-reset()\n\
+<Ctrl>J: xedit-print-lisp-eval()\n\
+<Key>Tab: insert-char()\n\
+!l @Num_Lock<Key>b:insert-char()\n\
+!l <Key>b: insert-char()\n\
+!@Num_Lock<Key>b:insert-char()\n\
+!<Key>b: insert-char()\n\
+!l @Num_Lock<Key>d:insert-char()\n\
+!l <Key>d: insert-char()\n\
+!@Num_Lock<Key>d:insert-char()\n\
+!<Key>d: insert-char()\n\
+!l <Key>k: insert-char()\n\
+!l @Num_Lock<Key>k:insert-char()\n\
+!@Num_Lock<Key>k:insert-char()\n\
+!<Key>k: insert-char()\n\
+!l @Num_Lock<Key>o:insert-char()\n\
+!l <Key>o: insert-char()\n\
+!@Num_Lock<Key>o:insert-char()\n\
+!<Key>o: insert-char()\n\
+!l @Num_Lock<Key>u:insert-char()\n\
+!l <Key>u: insert-char()\n\
+!@Num_Lock<Key>u:insert-char()\n\
+!<Key>u: insert-char()\n\
+~s <Key>Insert: toggle-overwrite()\n\
+c l @Num_Lock<Btn1Down>:xedit-focus() popup-menu(fileMenu)\n\
+c @Num_Lock<Btn1Down>:xedit-focus() popup-menu(fileMenu)\n\
+c l<Btn1Down>: xedit-focus() popup-menu(fileMenu)\n\
+c<Btn1Down>: xedit-focus() popup-menu(fileMenu)\n\
+c l @Num_Lock<Btn2Down>:xedit-focus() popup-menu(editMenu)\n\
+c @Num_Lock<Btn2Down>:xedit-focus() popup-menu(editMenu)\n\
+c l<Btn2Down>: xedit-focus() popup-menu(editMenu)\n\
+c<Btn2Down>: xedit-focus() popup-menu(editMenu)\n\
+c l @Num_Lock<Btn3Down>:xedit-focus() popup-menu(optionsMenu)\n\
+c @Num_Lock<Btn3Down>:xedit-focus() popup-menu(optionsMenu)\n\
+c l<Btn3Down>:xedit-focus() popup-menu(optionsMenu)\n\
+c<Btn3Down>: xedit-focus() popup-menu(optionsMenu)\n\
+<Btn1Down>: xedit-focus() select-start()
+
+*filename.?.pieceSize: 256
+*filename.translations: #override \
+c<Key>S: no-op(r)\n\
+c<Key>R: no-op(r)\n\
+m<Key>I: no-op(r)\n\
+c<Key>G: cancel-find-file()\n\
+<Key>Return: load-file()\n\
+<Key>P: print-file()\n\
+<Key>Tab: file-completion(h)\n\
+<Key>Escape: cancel-find-file()\n\
+<Enter>: no-op()\n\
+<Leave>: no-op()\n\
+<Btn1Down>: set-keyboard-focus() select-start()
+
+*ispell.translations: #override \
+<Message>WM_PROTOCOLS: ispell(end)
+
+! Sample dictionary, word chars and text mode resources setup
+!*ispell.dictionary: br
+!*ispell.dictionaries: br american americanmed+ english
+!*ispell*br.wordChars: áéíóúçÁÉÍÓÚÇàÀâêôÂÊÔüÜãõÃÕ-
+!*ispell.ispellCommand: /usr/local/bin/ispell -B -m
+!*ispell*text.skipLines: .#
+
+*ispell.geometry: 0x0
+*ispell.minWidth: 320
+*ispell.minHeight: 245
+*ispell*Label.borderWidth: 0
+*ispell*Label.internalHeight: 4
+*ispell*Label.justify: right
+*ispell*Label.width: 112
+*ispell*Label.left: chainLeft
+*ispell*Label.right: chainLeft
+*ispell*Label.top: chainTop
+*ispell*Label.bottom: chainTop
+*ispell*mispelled.label: Misspelled word:
+*ispell*mispelled.top: chainTop
+*ispell*mispelled.bottom: chainTop
+*ispell*mispelled.internalWidth: 0
+*ispell*repeated.label: Repeated words:
+*ispell*repeated.internalWidth: 0
+*ispell*replacement.label: Replace with:
+*ispell*word.fromHoriz: mispelled
+*ispell*word.justify: left
+*ispell*word.borderWidth: 1
+*ispell*word.internalWidth: 4
+*ispell*word.internalHeight: 3
+*ispell*word.width: 194
+*ispell*word.left: chainLeft
+*ispell*word.right: chainRight
+*ispell*word.top: chainTop
+*ispell*word.bottom: chainTop
+*ispell*word.label:
+*ispell*word.tip: Press here to select this text
+*ispell*word.highlightThickness: 0
+*ispell*text.fromHoriz: replacement
+*ispell*replacement.fromVert: mispelled
+*ispell*replacement.internalWidth: 0
+*ispell*form.text.fromVert: word
+*ispell*form.text.width: 194
+*ispell*form.text.top: chainTop
+*ispell*form.text.bottom: chainTop
+*ispell*form.text.left: chainLeft
+*ispell*form.text.right: chainRight
+*ispell*form.text.leftMargin: 4
+*ispell*form.text.?.pieceSize: 256
+*ispell*suggestions.label: Suggestions:
+*ispell*suggestions.fromVert: replacement
+*ispell*suggestions.internalWidth: 0
+*ispell*viewport.fromHoriz: suggestions
+*ispell*viewport.fromVert: text
+*ispell*viewport.width: 194
+*ispell*viewport.height: 143
+*ispell*viewport.top: chainTop
+*ispell*viewport.bottom: chainBottom
+*ispell*viewport.left: chainLeft
+*ispell*viewport.right: chainRight
+*ispell*viewport.forceBars: 1
+*ispell*viewport.allowVert: 1
+*ispell*list.defaultColumns: 1
+*ispell*list.longest: 16384
+*ispell*commands.vertDistance: 5
+*ispell*commands.fromVert: suggestions
+*ispell*commands.top: chainBottom
+*ispell*commands.bottom: chainBottom
+*ispell*commands.right: chainLeft
+*ispell*commands.left: chainLeft
+*ispell*check.label: Check
+*ispell*check.width: 54
+*ispell*check.tip: Ask ispell about the word in the text field
+*ispell*look.label: Look
+*ispell*look.fromHoriz: check
+*ispell*look.horizDistance: 0
+*ispell*look.width: 46
+*ispell*look.tip: Runs the look command
+*ispell*undo.fromVert: check
+*ispell*undo.label: Undo
+*ispell*undo.width: 102
+*ispell*undo.tip: Undo last action
+*ispell*replace.fromVert: undo
+*ispell*replace.label: Replace
+*ispell*replace.tip: Replace occurence of the word
+*ispell*replaceAll.fromVert: undo
+*ispell*replaceAll.fromHoriz: replace
+*ispell*replaceAll.label: All
+*ispell*replaceAll.tip: Replace all occurences of the word
+*ispell*ignore.fromVert: replace
+*ispell*ignore.label: Ignore
+*ispell*ignore.tip: Ignore this word
+*ispell*ignoreAll.fromVert: replaceAll
+*ispell*ignoreAll.fromHoriz: ignore
+*ispell*ignoreAll.label: All
+*ispell*ignoreAll.tip: Ignore all ocurrences of the word
+*ispell*add.fromVert: ignore
+*ispell*add.label: Add
+*ispell*add.width: 50
+*ispell*add.tip: Add word to your private dictionary
+*ispell*addUncap.fromVert: ignoreAll
+*ispell*addUncap.fromHoriz: add
+*ispell*addUncap.label: Uncap
+*ispell*addUncap.horizDistance: 0
+*ispell*addUncap.width: 50
+*ispell*addUncap.tip: Add word uncapitalized, to your private dictionary
+*ispell*suspend.fromVert: add
+*ispell*suspend.label: Suspend
+*ispell*suspend.width: 57
+*ispell*suspend.tip: Suspend ispell execution
+*ispell*cancel.fromHoriz: suspend
+*ispell*cancel.fromVert: addUncap
+*ispell*cancel.label: Close
+*ispell*cancel.width: 43
+*ispell*cancel.horizDistance: 0
+*ispell*cancel.tip: Terminates ispell process
+*ispell*replace.width: 65
+*ispell*ignore.width: 65
+*ispell*replaceAll.width: 35
+*ispell*replaceAll.horizDistance: 0
+*ispell*ignoreAll.width: 35
+*ispell*ignoreAll.horizDistance: 0
+*ispell*terse.fromVert: cancel
+*ispell*terse.Label: Terse Mode
+*ispell*terse.width: 104
+*ispell*terse.borderWidth: 0
+*ispell*terse.tip: Switch terse mode
+*ispell*status.fromVert: viewport
+*ispell*status.fromHoriz: suggestions
+*ispell*status.top: chainBottom
+*ispell*status.bottom: chainBottom
+*ispell*status.left: chainLeft
+*ispell*status.right: chainRight
+*ispell*status.width: 194
+*ispell*status.borderWidth: 1
+*ispell*status.justify: left
+*ispell*status.internalHeight: 2
+*ispell*status.vertDistance: 2
+*ispell*options.fromVert: status
+*ispell*options.fromHoriz: commands
+*ispell*options.bottom: chainBottom
+*ispell*options.top: chainBottom
+*ispell*options.left: chainLeft
+*ispell*options.right: chainRight
+*ispell*options.dict.width: 121
+*ispell*options.horizDistance: 2
+*ispell*options.vertDistance: 2
+*ispell*options.defaultDistance: 2
+*ispell*dict.highlightThickness: 0
+*ispell*dict.justify: left
+*ispell*dict.resizable: False
+*ispell*dict.leftBitmap: menu12
+*ispell*dict.label: Dictionary
+*ispell*dict.tip: Change dictionary
+*ispell*options.format.width: 65
+*ispell*format.highlightThickness: 0
+*ispell*format.justify: left
+*ispell*format.resizable: False
+*ispell*format.leftBitmap: menu12
+*ispell*format.fromHoriz: dict
+*ispell*format.horizDistance: 0
+*ispell*format.tip: Select text type
+
+*columns.minWidth: 140
+*columns.minHeight: 76
+*columns.maxWidth: 140
+*columns.maxHeight: 76
+*columns.form*defaultDistance: 4
+*columns*left: chainLeft
+*columns*right: chainLeft
+*columns*top: chainTop
+*columns*bottom: chainTop
+*columns*Label.width: 96
+*columns*Label.borderWidth: 0
+*columns*Label.internalHeight: 4
+*columns*Label.internalWidth: 2
+*columns*Label.justify: right
+*columns*Text.width: 30
+*columns*Command.width: 58
+*columns*leftLabel.label: Left Column:
+*columns*left.fromHoriz: leftLabel
+*columns*rightLabel.label: Right Column:
+*columns*rightLabel.fromVert: leftLabel
+*columns*right.fromHoriz: rightLabel
+*columns*right.fromVert: left
+*columns*ok.fromVert: rightLabel
+*columns*cancel.fromHoriz: ok
+*columns*cancel.fromVert: rightLabel
+*columns*cancel.horizDistance: 12
+*columns*Text.?.pieceSize: 8
+
+*columns*Text.translations: #override \
+c<Key>S: no-op(r)\n\
+c<Key>R: no-op(r)\n\
+m<Key>I: no-op(r)\n\
+<Key>Return: set-columns(ok)\n\
+<Key>Tab: change-field()\n\
+c<Key>G: set-columns(cancel)\n\
+<Key>Escape: set-columns(cancel)\n\
+<Enter>: no-op()\n\
+<Leave>: no-op()\n\
+<Btn1Down>: set-keyboard-focus() select-start()
+
+*columns.translations: #override \
+<Message>WM_PROTOCOLS: set-columns(cancel)
+
+! Use "white" as background for printing
+*printshell*background: white
+
+! Print dialog
+*printdialogshell*geometry: 600x120
+*printdialogshell*title: Print
+*printdialogshell*main*ok.fromVert: innerform
+*printdialogshell*main*ok.label: Print
+*printdialogshell*main*ok.tip: Print
+*printdialogshell*main*setup.fromHoriz: ok
+*printdialogshell*main*setup.fromVert: innerform
+*printdialogshell*main*setup.label: Setup...
+*printdialogshell*main*setup.tip: Configure print job options (page size, orientation, etc.)
+*printdialogshell*main*cancel.fromHoriz: setup
+*printdialogshell*main*cancel.fromVert: innerform
+*printdialogshell*main*cancel.label: Cancel
+*printdialogshell*main*cancel.tip: Cancel printing
+*printdialogshell*main*desclabel.label: Printer Description:
+*printdialogshell*main*desclabel.tip: Short description of printer
+*printdialogshell*main*desc.fromHoriz: desclabel
+*printdialogshell*main*desc.tip: Short description of printer
+*printdialogshell*main*info.fromHoriz: desc
+*printdialogshell*main*info.label: Printer info...
+*printdialogshell*main*info.tip: Display additional information about this printer
+*printdialogshell*main*namelabel.fromVert: desclabel
+*printdialogshell*main*namelabel.label: Printer Name:
+*printdialogshell*main*namelabel.tip: Name of selected printer
+*printdialogshell*main*name.fromHoriz: namelabel
+*printdialogshell*main*name.fromVert: desclabel
+*printdialogshell*main*name.tip: Name of selected printer
+*printdialogshell*main*selectprinter.fromHoriz: name
+*printdialogshell*main*selectprinter.fromVert: desclabel
+*printdialogshell*main*selectprinter.label: Select Printer...
+*printdialogshell*main*selectprinter.label: Select Printer...
+*printdialogshell*main*selectprinter.tip: Select a different printer
+*printdialogshell*main*filenamelabel.fromVert: namelabel
+*printdialogshell*main*filenamelabel.label: File Name:
+*printdialogshell*main*filenamelabel.tip: File where the output should be stored
+*printdialogshell*main*filename.fromHoriz: filenamelabel
+*printdialogshell*main*filename.fromVert: namelabel
+*printdialogshell*main*filename.tip: File where the output should be stored
+*printdialogshell*main*selectfile.fromHoriz: filename
+*printdialogshell*main*selectfile.fromVert: namelabel
+*printdialogshell*main*selectfile.label: Select File...
+*printdialogshell*main*selectfile.tip: Select file where the output should be stored
+*printdialogshell*main*printtoprinter.fromVert: filenamelabel
+*printdialogshell*main*printtoprinter.label: Print to Printer
+*printdialogshell*main*printtoprinter.tip: Send print job to printer
+*printdialogshell*main*printtofile.fromVert: filenamelabel
+*printdialogshell*main*printtofile.fromHoriz: printtoprinter
+*printdialogshell*main*printtofile.label: Print to File
+*printdialogshell*main*printtofile.tip: Save print job in a file
+
+! Print job options dialog
+*printdialogshell*setup*geometry: 600x400
+*printdialogshell*setup*title: Print: Print job options
+*printdialogshell*setup*ok.fromVert: list
+*printdialogshell*setup*ok.label: OK
+*printdialogshell*setup*ok.tip: Commit changes
+*printdialogshell*setup*cancel.fromHoriz: ok
+*printdialogshell*setup*cancel.fromVert: list
+*printdialogshell*setup*cancel.label: Cancel
+*printdialogshell*setup*cancel.tip: Cancel and reset to defaults
+*printdialogshell*setup*paperlist.tip: Select paper size
+*printdialogshell*setup*resolutionlist.fromHoriz: paperlist
+*printdialogshell*setup*resolutionlist.tip: Select page resolution
+*printdialogshell*setup*orientationlist.fromHoriz: resolutionlist
+*printdialogshell*setup*orientationlist.tip: Select page orientation
+*printdialogshell*setup*plexlist.fromHoriz: orientationlist
+*printdialogshell*setup*plexlist.tip: Select page plex mode (simplex, duplex, etc.)
+*printdialogshell*setup*jobcopieslabel.fromVert: paperlist
+*printdialogshell*setup*jobcopieslabel.tip: Set number of job copies
+*printdialogshell*setup*jobcopieslabel.label: Job Copies:
+*printdialogshell*setup*jobcopies.fromHoriz: jobcopieslabel
+*printdialogshell*setup*jobcopies.fromVert: paperlist
+*printdialogshell*setup*jobcopies.tip: Set number of job copies
+
+! Printer selection
+*printdialogshell*printerselection*geometry: 400x150
+*printdialogshell*printerselection*title: Print: Select printer
+*printdialogshell*printerselection*ok.fromVert: list
+*printdialogshell*printerselection*ok.label: OK
+*printdialogshell*printerselection*ok.tip: Switch printer
+*printdialogshell*printerselection*cancel.fromHoriz: ok
+*printdialogshell*printerselection*cancel.fromVert: list
+*printdialogshell*printerselection*cancel.label: Cancel
+*printdialogshell*printerselection*cancel.tip: Cancel printer selection
+*printdialogshell*printerselection*list.tip: Select printer name from list
+
+! Select job file
+*printdialogshell*selectfile*geometry: 400x80
+*printdialogshell*selectfile*title: Print: Select job file
+*printdialogshell*selectfile*dialog.label: Select Filename:
+
+! EOF.
diff --git a/commands.c b/commands.c
index f3d889e..9e63158 100644
--- a/commands.c
+++ b/commands.c
@@ -29,10 +29,16 @@
#include <X11/Xfuncs.h>
#include <X11/Xos.h>
#include "xedit.h"
+#ifdef INCLUDE_XPRINT_SUPPORT
+#include "printdialog.h"
+#include "print.h"
+#endif /* INCLUDE_XPRINT_SUPPORT */
#ifdef CRAY
#include <unistd.h>
#endif
#include <stdlib.h>
+#include <stdio.h>
+#include <limits.h>
#include <string.h>
#include <dirent.h>
#include <pwd.h>
@@ -41,6 +47,19 @@
#include <X11/IntrinsicP.h>
#include <X11/Xaw/TextSrcP.h>
+/* Turn a NULL pointer string into an empty string */
+#define NULLSTR(x) (((x)!=NULL)?(x):(""))
+
+#define Error(x) { printf x ; exit(EXIT_FAILURE); }
+#define Assertion(expr, msg) { if (!(expr)) { Error msg } }
+#define Log(x) { if (True) printf x; }
+
+#ifdef INCLUDE_XPRINT_SUPPORT
+static Widget printdialog_shell = NULL;
+static Widget printdialog = NULL;
+static char printJobNameBuffer[PATH_MAX+256];
+#endif /* INCLUDE_XPRINT_SUPPORT */
+
void ResetSourceChanged(xedit_flist_item*);
static void ResetDC(Widget, XtPointer, XtPointer);
@@ -338,8 +357,8 @@ DoSave(Widget w, XtPointer client_data, XtPointer call_data)
XtRemoveCallback(scratch, XtNcallback, SourceChanged,
(XtPointer)item);
item->source = scratch =
- XtVaCreateWidget("textSource", international ?
- multiSrcObjectClass : asciiSrcObjectClass,
+ XtVaCreateWidget("textSource",
+ multiSrcObjectClass,
topwindow,
XtNtype, XawAsciiFile,
XtNeditType, XawtextEdit,
@@ -476,8 +495,8 @@ ReallyDoLoad(char *name, char *filename)
XtSetArg(args[num_args], XtNstring, NULL); num_args++;
}
- source = XtVaCreateWidget("textSource", international ?
- multiSrcObjectClass : asciiSrcObjectClass,
+ source = XtVaCreateWidget("textSource",
+ multiSrcObjectClass,
topwindow,
XtNtype, XawAsciiFile,
XtNeditType, XawtextEdit,
@@ -500,6 +519,109 @@ ReallyDoLoad(char *name, char *filename)
return (True);
}
+#ifdef INCLUDE_XPRINT_SUPPORT
+static void
+printshellDestroyXtProc(Widget w, XtPointer client_data, XtPointer callData)
+{
+ XawPrintDialogClosePrinterConnection(printdialog, False);
+}
+
+static void
+printOKXtProc(Widget w, XtPointer client_data, XtPointer callData)
+{
+ XawPrintDialogCallbackStruct *pdcs = (XawPrintDialogCallbackStruct *)callData;
+ Cardinal n;
+ Arg args[2];
+ Widget textsource;
+
+ Log(("printOKXtProc: OK.\n"));
+
+ /* Get TextSource object */
+ n = 0;
+ XtSetArg(args[n], XtNtextSource, &textsource); n++;
+ XtGetValues(textwindow, args, n);
+
+ Assertion(textsource != NULL, (("printOKXtProc: textsource == NULL.\n")));
+
+ /* ||printJobNameBuffer| must live as long the print job prints
+ * because it is used for the job title AND the page headers... */
+ sprintf(printJobNameBuffer, "Xedit print job");
+
+ DoPrintTextSource("Xedit",
+ textsource, topwindow,
+ pdcs->pdpy, pdcs->pcontext, printshellDestroyXtProc,
+ printJobNameBuffer,
+ pdcs->printToFile?pdcs->printToFileName:NULL);
+
+ XtPopdown(printdialog_shell);
+}
+
+static void
+printCancelXtProc(Widget w, XtPointer client_data, XtPointer callData)
+{
+ Log(("printCancelXtProc: cancel.\n"));
+ XtPopdown(printdialog_shell);
+
+ Log(("destroying print dialog shell...\n"));
+ XtDestroyWidget(printdialog_shell);
+ printdialog_shell = NULL;
+ printdialog = NULL;
+ Log(("... done\n"));
+}
+
+
+/*ARGSUSED*/
+void
+PrintFile(Widget w, XEvent *event, String *params, Cardinal *num_params)
+{
+ DoPrint(w, NULL, NULL);
+}
+
+/*ARGSUSED*/
+void
+DoPrint(Widget w, XtPointer client_data, XtPointer call_data)
+{
+ Dimension width, height;
+ Position x, y;
+ Widget parent = topwindow;
+ Log(("print!\n"));
+
+ if (!printdialog) {
+ int n;
+ Arg args[20];
+
+ n = 0;
+ XtSetArg(args[n], XtNallowShellResize, True); n++;
+ printdialog_shell = XtCreatePopupShell("printdialogshell",
+ transientShellWidgetClass,
+ topwindow, args, n);
+ n = 0;
+ printdialog = XtCreateManagedWidget("printdialog", printDialogWidgetClass,
+ printdialog_shell, args, n);
+ XtAddCallback(printdialog, XawNOkCallback, printOKXtProc, NULL);
+ XtAddCallback(printdialog, XawNCancelCallback, printCancelXtProc, NULL);
+
+ XtRealizeWidget(printdialog_shell);
+ }
+
+ /* Center dialog */
+ XtVaGetValues(printdialog_shell,
+ XtNwidth, &width,
+ XtNheight, &height,
+ NULL);
+
+ x = (Position)(XWidthOfScreen( XtScreen(parent)) - width) / 2;
+ y = (Position)(XHeightOfScreen(XtScreen(parent)) - height) / 3;
+
+ XtVaSetValues(printdialog_shell,
+ XtNx, x,
+ XtNy, y,
+ NULL);
+
+ XtPopup(printdialog_shell, XtGrabNonexclusive);
+}
+#endif /* INCLUDE_XPRINT_SUPPORT */
+
/* Function Name: SourceChanged
* Description: A callback routine called when the source has changed.
* Arguments: w - the text source that has changed.
diff --git a/hook.c b/hook.c
index 5e10a39..9352ea4 100644
--- a/hook.c
+++ b/hook.c
@@ -388,9 +388,11 @@ LineEditAction(Widget w, XEvent *event, String *params, Cardinal *num_params)
{
XawTextBlock block;
- if (international)
+ if (True) {
/* XXX FIXME */
+ fprintf(stderr, "LineEditAction: Not working in international mode.\n");
return;
+ }
block.firstPos = 0;
block.format = FMT8BIT;
diff --git a/ispell.c b/ispell.c
index c03d631..1d13103 100644
--- a/ispell.c
+++ b/ispell.c
@@ -27,7 +27,7 @@
* Author: Paulo César Pereira de Andrade
*/
-/* $XdotOrg: xc/programs/xedit/ispell.c,v 1.2 2004/04/23 19:54:43 eich Exp $ */
+/* $XdotOrg: xc/programs/xedit/ispell.c,v 1.3 2004/05/30 22:44:00 gisburn Exp $ */
/* $XFree86: xc/programs/xedit/ispell.c,v 1.19 2002/10/19 20:04:20 herrb Exp $ */
#include "xedit.h"
@@ -825,7 +825,7 @@ IspellConvertHtmlAmp(char *buf)
else if (*buf == '#') {
char *tmp;
- if (len == 1);
+ if (len == 1)
return ('?');
ch = strtol(&buf[1], &tmp, 10);
if (*tmp)
@@ -938,10 +938,7 @@ IspellSend(void)
return (-1);
}
for (i = 0; i < block.length; i++) {
- if (international)
- wctomb(mb, ((wchar_t*)block.ptr)[i]);
- else
- *mb = block.ptr[i];
+ wctomb(mb, ((wchar_t*)block.ptr)[i]);
if (amplen) {
if (amplen + 2 >= sizeof(ampbuf)) {
if (!ispell.terse_mode)
@@ -1039,10 +1036,7 @@ IspellSend(void)
return (-1);
}
for (i = 0; i < block.length; i++) {
- if (international)
- wctomb(mb, ((wchar_t*)block.ptr)[i]);
- else
- *mb = block.ptr[i];
+ wctomb(mb, ((wchar_t*)block.ptr)[i]);
if (amplen) {
if (amplen + 2 >= sizeof(ampbuf)) {
if (!ispell.terse_mode)
@@ -1566,18 +1560,12 @@ ReplaceIspell(Widget w, XtPointer client_data, XtPointer call_data)
char mb[sizeof(wchar_t)];
if (XawTextSourceRead(ispell.source, pos - 1, &check, 1) > 0) {
- if (international)
- wctomb(mb, *(wchar_t*)check.ptr);
- else
- *mb = *check.ptr;
+ wctomb(mb, *(wchar_t*)check.ptr);
do_replace = !isalpha(*mb) && *mb && !strchr(ispell.wchars, *mb);
}
if (do_replace &&
XawTextSourceRead(ispell.source, pos + search.length, &check, 1) > 0) {
- if (international)
- wctomb(mb, *(wchar_t*)check.ptr);
- else
- *mb = *check.ptr;
+ wctomb(mb, *(wchar_t*)check.ptr);
do_replace = !isalpha(*mb) && *mb && !strchr(ispell.wchars, *mb);
}
if (do_replace) {
diff --git a/lisp/lisp.c b/lisp/lisp.c
index da5d1c8..15226f6 100644
--- a/lisp/lisp.c
+++ b/lisp/lisp.c
@@ -46,7 +46,7 @@
#endif
#if defined(linux)
-#include <asm/page.h> /* for PAGE_SIZE */
+#include <asm/page.h> /* for PAGE_SIZE */
#define HAS_GETPAGESIZE
#define HAS_SC_PAGESIZE /* _SC_PAGESIZE may be an enum for Linux */
#endif
diff --git a/util.c b/util.c
index 508a2d0..6e8c1d4 100644
--- a/util.c
+++ b/util.c
@@ -83,6 +83,8 @@ MakeCommandButton(Widget box, char *name, XtCallbackProc function)
Widget w = XtCreateManagedWidget(name, commandWidgetClass, box, NULL, ZERO);
if (function != NULL)
XtAddCallback(w, XtNcallback, function, (caddr_t) NULL);
+ else
+ XtVaSetValues(w, XtNsensitive, False, NULL);
return w;
}
diff --git a/xedit.c b/xedit.c
index 8648c06..073078d 100644
--- a/xedit.c
+++ b/xedit.c
@@ -41,6 +41,9 @@ static XtActionsRec actions[] = {
{"quit", QuitAction},
{"save-file", SaveFile},
{"load-file", LoadFile},
+#ifdef INCLUDE_XPRINT_SUPPORT
+{"print-file", PrintFile},
+#endif /* INCLUDE_XPRINT_SUPPORT */
{"find-file", FindFile},
{"cancel-find-file", CancelFindFile},
{"file-completion", FileCompletion},
@@ -71,7 +74,6 @@ static XawTextPositionInfo infos[3];
Widget topwindow, textwindow, messwidget, labelwindow, filenamewindow;
Widget scratch, hpane, vpanes[2], labels[3], texts[3], forms[3], positions[3];
Widget options_popup, dirlabel, dirwindow;
-Boolean international;
Boolean line_edit;
XawTextWrapMode wrapmodes[3];
@@ -111,6 +113,11 @@ static XtResource resources[] = {
#undef Offset
+String fallback_resources[] = {
+ "*international: True", /* set this globally for ALL widgets to avoid wiered crashes */
+ NULL
+};
+
int
main(int argc, char *argv[])
{
@@ -118,7 +125,7 @@ main(int argc, char *argv[])
unsigned num_loaded = 0;
XtSetLanguageProc(NULL, NULL, NULL);
- topwindow = XtAppInitialize(&appcon, "Xedit", NULL, 0, &argc, argv, NULL, NULL, 0);
+ topwindow = XtAppInitialize(&appcon, "Xedit", NULL, 0, &argc, argv, fallback_resources, NULL, 0);
XtAppAddActions(appcon, actions, XtNumber(actions));
XtOverrideTranslations
@@ -240,9 +247,8 @@ main(int argc, char *argv[])
flags = 0;
XtSetArg(args[num_args], XtNstring, NULL); num_args++;
}
- source = XtVaCreateWidget("textSource", international ?
- multiSrcObjectClass
- : asciiSrcObjectClass, topwindow,
+ source = XtVaCreateWidget("textSource",
+ multiSrcObjectClass, topwindow,
XtNtype, XawAsciiFile,
XtNeditType, XawtextEdit,
NULL, NULL);
@@ -281,7 +287,7 @@ main(int argc, char *argv[])
XtSetKeyboardFocus(topwindow, textwindow);
XtAppMainLoop(appcon);
- exit(0);
+ return EXIT_SUCCESS;
}
static void
@@ -302,6 +308,9 @@ makeButtonsAndBoxes(Widget parent)
MakeCommandButton(b_row, "quit", DoQuit);
MakeCommandButton(b_row, "save", DoSave);
MakeCommandButton(b_row, "load", DoLoad);
+#ifdef INCLUDE_XPRINT_SUPPORT
+ MakeCommandButton(b_row, "print", DoPrint);
+#endif /* INCLUDE_XPRINT_SUPPORT */
filenamewindow = MakeStringBox(b_row, "filename", NULL);
}
hintswindow = XtCreateManagedWidget("bc_label", labelWidgetClass,
@@ -347,15 +356,10 @@ makeButtonsAndBoxes(Widget parent)
textwindow = XtCreateManagedWidget(editWindow, asciiTextWidgetClass,
vpanes[0], arglist, num_args);
num_args = 0;
- XtSetArg(arglist[num_args], XtNinternational, &international); ++num_args;
- XtGetValues(textwindow, arglist, num_args);
-
- num_args = 0;
XtSetArg(arglist[num_args], XtNtype, XawAsciiFile); ++num_args;
XtSetArg(arglist[num_args], XtNeditType, XawtextEdit); ++num_args;
- scratch = XtVaCreateWidget("textSource", international ?
- multiSrcObjectClass
- : asciiSrcObjectClass, topwindow,
+ scratch = XtVaCreateWidget("textSource",
+ multiSrcObjectClass, topwindow,
XtNtype, XawAsciiFile,
XtNeditType, XawtextEdit,
NULL, NULL);
diff --git a/xedit.h b/xedit.h
index f347aa3..c7a786d 100644
--- a/xedit.h
+++ b/xedit.h
@@ -100,7 +100,6 @@ extern struct _app_resources {
extern Widget topwindow, textwindow, labelwindow, filenamewindow, messwidget;
extern Widget dirlabel, dirwindow;
-extern Boolean international;
extern Boolean line_edit;
/* externals in xedit.c */
@@ -132,9 +131,15 @@ void QuitAction(Widget, XEvent*, String*, Cardinal*);
void DoSave(Widget, XtPointer, XtPointer);
void SaveFile(Widget, XEvent*, String*, Cardinal*);
void DoLoad(Widget, XtPointer, XtPointer);
+#ifdef INCLUDE_XPRINT_SUPPORT
+void DoPrint(Widget, XtPointer, XtPointer);
+#endif /* INCLUDE_XPRINT_SUPPORT */
void CancelFindFile(Widget, XEvent*, String*, Cardinal*);
void FindFile(Widget, XEvent*, String*, Cardinal*);
void LoadFile(Widget, XEvent*, String*, Cardinal*);
+#ifdef INCLUDE_XPRINT_SUPPORT
+void PrintFile(Widget, XEvent*, String*, Cardinal*);
+#endif /* INCLUDE_XPRINT_SUPPORT */
void FileCompletion(Widget, XEvent*, String*, Cardinal*);
void KillFile(Widget, XEvent*, String*, Cardinal*);
void DirWindowCB(Widget, XtPointer, XtPointer);