home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 5 Edit
/
05-Edit.zip
/
p2demo21.exe
/
PEL
/
HEXEDIT.PEL
< prev
next >
Wrap
Text File
|
1995-03-22
|
5KB
|
189 lines
# $Header: P:\source\wmacros\hexedit.pev 1.13 22 Mar 1995 11:01:08 pfhmlw0 $
## $Tabs:4 7$
##############################################################################
#
# Compuware Corporation
# 31440 Northwestern Highway
# Farmington Hills, Michigan 48334-2564
#
# This source code listing contains information that is
# proprietary to Compuware Corporation and may not be copied
# duplicated, translated, transmitted, stored, retrieved
# or in any manner or by any method conveyed or disclosed
# to a third party or parties without express written
# permission from Compuware Corporation.
#
#
##############################################################################
#### $Workfile: hexedit.pel $: Hex-Edit support functions
global old_hex_info[]
local hex_keymap = -1
global function new_window()
{
if (and(window_flags, WINDOW_ASCII_DUMP))
toggle_dump_mode(1);
else if (and(window_flags, WINDOW_IBM_DUMP))
toggle_dump_mode(2);
}
global function toggle_dump_mode(on, fmt)
{
if (argcount())
on = 0+on
else
on = !and(window_flags, or(WINDOW_ASCII_DUMP,WINDOW_IBM_DUMP))
if (on)
{
if (argcount() > 1 || on > 1)
begin_dump_mode(fmt, on)
else
begin_dump_mode()
}
else
end_dump_mode()
}
global function save_hex_state(status, format)
{
old_hex_info[current_window].status = status+0
old_hex_info[current_window].format = format""
}
global function begin_dump_mode(fmt, on)
{
save_hex_state(status_bar_flags, linenumber_format)
if (!and(window_flags, WINDOW_IBM_DUMP))
linenumber_format = "%06X%v"
toggle_dump_window((argcount() > 1 && on) ? on : 1)
select_hex_keymap()
if (argcount())
set_dump_format(fmt)
if (and(status_bar_flags, STB_POSITION) && \
!and(window_flags, WINDOW_IBM_DUMP))
{
status_bar_flags = and(status_bar_flags, not(STB_POSITION))
status_bar_flags = or(status_bar_flags, STB_OFFSET)
}
attach_event_handler( EVENT.DELETING_WINDOW, "hex_delete_window" )
}
global function hex_delete_window()
{
if ( current_window in old_hex_info )
{
delete old_hex_info[current_window]
delete_event( EVENT.DELETING_WINDOW, "hex_delete_window" )
}
}
global function end_dump_mode()
{
toggle_dump_window(0)
window_keymap = empty_keymap
if (current_window in old_hex_info)
{
linenumber_format = old_hex_info[current_window].format ""
status_bar_flags = old_hex_info[current_window].status +0
delete old_hex_info[current_window]
}
else
{
linenumber_format = ""
if (status_bar_flags)
{
status_bar_flags = and(status_bar_flags, not(STB_OFFSET))
status_bar_flags = or(status_bar_flags, STB_LINE_COLUMN)
}
}
}
global function toggle_dump_window(on, fmt)
{
if (argcount())
on = 0+on
else
on = !and(window_flags, or(WINDOW_ASCII_DUMP,WINDOW_IBM_DUMP))
if (argcount() > 1)
set_dump_format(fmt)
if (on == 2)
{
window_flags = and(window_flags, not(WINDOW_ASCII_DUMP))
window_flags = or(window_flags, WINDOW_IBM_DUMP)
}
else if (on)
{
window_flags = and(window_flags, not(WINDOW_IBM_DUMP))
window_flags = or(window_flags, WINDOW_ASCII_DUMP)
}
else
window_flags = and(window_flags, \
not(or(WINDOW_ASCII_DUMP,WINDOW_IBM_DUMP)))
}
global function toggle_dump_side(on)
{
if ( argcount() < 1 )
on = ! and(window_flags, WINDOW_NUM_SIDE)
else
on = 0+on
if (on)
window_flags = or(window_flags, WINDOW_NUM_SIDE)
else
window_flags = and(window_flags, not(WINDOW_NUM_SIDE))
}
global function set_dump_format(fmt)
{
window_flags = and(window_flags, not(WINDOW_CHARS))
window_flags = or(window_flags, and(fmt, WINDOW_CHARS))
}
local function select_hex_keymap()
{
local esc_fun = keymap_binding("<ESC>")
local old_keymap = current_keymap
if( hex_keymap < 0 || (old_keymap < 0 || current_keymap != old_keymap))
{
current_keymap = window_keymap = hex_keymap = create_keymap()
assign_key( "<Space>", "insert_key" )
assign_key( "<Enter>", "insert_key" )
assign_key( "<Up>", "up" )
assign_key( "<Down>", "down" )
assign_key( "<Left>", "left" )
assign_key( "<Right>", "right" )
assign_key( "<PageUp>", "page_up" )
assign_key( "<PageDown>", "page_down" )
}
else
current_keymap = window_keymap = hex_keymap
if (and(window_flags, WINDOW_IBM_DUMP))
assign_key( "<Tab>", "" )
else
assign_key( "<Tab>", "toggle_dump_side" )
if (!length(esc_fun) || esc_fun ~ /expand_template*/)
assign_key( "<ESC>", "end_dump_mode" )
else
assign_key( "<ESC>", "" )
current_keymap = old_keymap
}