#include "ftptool.h"
#pragma ident "@(#)create_main.c 1.6 93/05/26"
#ifdef USE_PROTOTYPES
void create_base_window(void)
#else
void create_base_window()
#endif
{
Menu file_menu;
Menu copy_menu;
Menu delete_menu;
Menu dir_menu;
Menu view_menu;
Menu props_menu;
Menu remote_list_menu;
Xv_Screen screen;
int screen_no;
int width, height, x, y;
base_window.frame = xv_create(XV_NULL,
FRAME,
XV_X, 350,
XV_Y, 100,
XV_LABEL, header_name,
FRAME_SHOW_FOOTER, TRUE,
FRAME_LEFT_FOOTER, NULL,
NULL);
base_window.panel = xv_create(base_window.frame,
PANEL,
XV_X, 0,
XV_Y, 0,
XV_WIDTH, WIN_EXTEND_TO_EDGE,
WIN_BORDER, FALSE,
NULL);
list_label =
" Date Size Filename";
list_font = (Xv_font)xv_find(base_window.panel, FONT,
FONT_FAMILY, FONT_FAMILY_DEFAULT_FIXEDWIDTH,
FONT_STYLE, FONT_STYLE_NORMAL,
NULL);
if (list_font == XV_NULL) {
fprintf(stderr, "could not find default fixed font.\n");
} else {
switch ((int)xv_get(list_font, FONT_SCALE)) {
case WIN_SCALE_SMALL:
list_label = " Date Size Filename";
break;
case WIN_SCALE_MEDIUM:
default:
/* this seems to be the default */
list_label = " Date Size Filename";
break;
case WIN_SCALE_LARGE:
list_label = " Date Size Filename";
break;
case WIN_SCALE_EXTRALARGE:
list_label = " Date Size Filename";
break;
}
}
bold_list_font = (Xv_font)xv_find(base_window.panel, FONT,
FONT_FAMILY, FONT_FAMILY_DEFAULT_FIXEDWIDTH,
FONT_STYLE, FONT_STYLE_BOLD,
NULL);
if (bold_list_font == XV_NULL)
fprintf(stderr, "could not find default bold fixed font.\n");
xv_set(base_window.panel,
PANEL_LAYOUT,
PANEL_HORIZONTAL,
NULL);
copy_menu = xv_create(XV_NULL,
MENU,
MENU_GEN_PROC, file_copy_menu_gen,
MENU_ITEM,
MENU_STRING, "Remote to Local",
MENU_NOTIFY_PROC, get_proc,
XV_HELP_DATA, "ftptool:FileCopyRemote",
NULL,
MENU_ITEM,
MENU_STRING, "Local to Remote",
MENU_NOTIFY_PROC, put_proc,
XV_HELP_DATA, "ftptool:FileCopyLocal",
NULL,
MENU_ITEM,
MENU_STRING, "Remote to Local (Batch)",
MENU_NOTIFY_PROC, batchget_proc,
XV_HELP_DATA, "ftptool:BatchReceiveCopy",
NULL,
MENU_ITEM,
MENU_STRING, "Local to Remote (Batch)",
MENU_NOTIFY_PROC, batchput_proc,
XV_HELP_DATA, "ftptool:BatchSendCopy",
NULL,
NULL);
delete_menu = xv_create(XV_NULL,
MENU,
MENU_GEN_PROC, file_delete_menu_gen,
MENU_ITEM,
MENU_STRING, "Remote File",
MENU_NOTIFY_PROC, remote_delete_proc,
XV_HELP_DATA, "ftptool:FileDeleteRemote",
NULL,
MENU_ITEM,
MENU_STRING, "Local File",
MENU_NOTIFY_PROC, local_delete_proc,
XV_HELP_DATA, "ftptool:FileLocalRemote",
NULL,
NULL);
dir_menu = xv_create(XV_NULL,
MENU,
MENU_ITEM,
MENU_STRING, "DIR",
MENU_NOTIFY_PROC, dir_list_proc,
XV_HELP_DATA, "ftptool:FileDir",
NULL,
MENU_ITEM,
MENU_STRING, "LS",
MENU_NOTIFY_PROC, ls_list_proc,
XV_HELP_DATA, "ftptool:FileLS",
NULL,
NULL);
#ifdef LINT
file_menu = NULL;
file_menu = file_menu;
copy_menu = copy_menu;
delete_menu = delete_menu;
dir_menu = dir_menu;
#else
file_menu = xv_create(XV_NULL,
MENU,
MENU_GEN_PROC, file_menu_gen,
MENU_PULLRIGHT_ITEM, "Copy", copy_menu,
MENU_PULLRIGHT_ITEM, "Delete", delete_menu,
MENU_PULLRIGHT_ITEM, "List Directory", dir_menu,
MENU_ITEM,
MENU_STRING, "Compress File",
MENU_NOTIFY_PROC, compress_proc,
XV_HELP_DATA, "ftptool:FileCompress",
NULL,
MENU_ITEM,
MENU_STRING, "Uncompress File",
MENU_NOTIFY_PROC, uncompress_proc,
XV_HELP_DATA, "ftptool:FileUncompress",
NULL,
MENU_ITEM,
MENU_STRING, "Create Tar File",
MENU_NOTIFY_PROC, tar_proc,
XV_HELP_DATA, "ftptool:FileCreateTar",
NULL,
MENU_ITEM,
MENU_STRING, "Extract Tar File",
MENU_NOTIFY_PROC, extract_proc,
XV_HELP_DATA, "ftptool:FileExtractTar",
NULL,
NULL);
#endif
base_window.file = xv_create(base_window.panel,
PANEL_BUTTON,
PANEL_LABEL_STRING, "File",
PANEL_ITEM_MENU, file_menu,
XV_HELP_DATA, "ftptool:FileButton",
NULL);
#ifdef LINT
view_menu = NULL;
view_menu = view_menu;
#else
view_menu = xv_create(XV_NULL,
MENU,
MENU_GEN_PROC, view_menu_gen,
MENU_ITEM,
MENU_STRING, "Remote File",
MENU_NOTIFY_PROC, remote_view,
XV_HELP_DATA, "ftptool:ViewRemote",
NULL,
MENU_ITEM,
MENU_STRING, "Local File",
MENU_NOTIFY_PROC, local_view,
XV_HELP_DATA, "ftptool:ViewLocal",
NULL,
MENU_ITEM,
MENU_STRING, "Local Directory List...",
MENU_NOTIFY_PROC, local_dir_view,
XV_HELP_DATA, "ftptool:ViewLocalDirectory",
NULL,
MENU_ITEM,
MENU_STRING, "Session Log...",
MENU_NOTIFY_PROC, session_view,
XV_HELP_DATA, "ftptool:ViewSessionLog",
NULL,
MENU_ITEM,
MENU_STRING, "Host Information...",
MENU_NOTIFY_PROC, host_view,
XV_HELP_DATA, "ftptool:ViewCurrentHost",
NULL,
MENU_ITEM,
MENU_STRING, "Transfer Status...",
MENU_NOTIFY_PROC, status_view,
XV_HELP_DATA, "ftptool:ViewStatus",
NULL,
MENU_ITEM,
MENU_STRING, "Batch Schedule...",
MENU_NOTIFY_PROC, schedule_view,
XV_HELP_DATA, "ftptool:ViewSchedule",
NULL,
MENU_ITEM,
MENU_STRING, "About Ftptool...",
MENU_NOTIFY_PROC, about_proc,
XV_HELP_DATA, "ftptool:FileAbout",
NULL,
NULL);
#endif
base_window.view = xv_create(base_window.panel,
PANEL_BUTTON,
PANEL_LABEL_STRING, "View",
PANEL_ITEM_MENU, view_menu,
XV_HELP_DATA, "ftptool:ViewButton",
NULL);
props_menu = xv_create(XV_NULL,
MENU,
MENU_GEN_PROC, props_menu_gen,
MENU_ITEM,
MENU_STRING, "Tool...",
MENU_NOTIFY_PROC, props_proc,
XV_HELP_DATA, "ftptool:PropertiesTool",
NULL,
MENU_ITEM,
MENU_STRING, "Local File...",
MENU_NOTIFY_PROC, local_properties,
XV_HELP_DATA, "ftptool:PropertiesLocal",
NULL,
MENU_ITEM,
MENU_STRING, "Remote File...",
MENU_NOTIFY_PROC, remote_properties,
XV_HELP_DATA, "ftptool:PropertiesRemote",
NULL,
MENU_ITEM,
MENU_STRING, "Save Layout",
MENU_NOTIFY_PROC, save_layout_func,
XV_HELP_DATA, "ftptool:PropertiesSaveLayout",
NULL,
NULL);
base_window.props = xv_create(base_window.panel,
PANEL_BUTTON,
PANEL_ITEM_X_GAP, 3 * (int)xv_get(base_window.panel,
PANEL_ITEM_X_GAP),
PANEL_LABEL_STRING, "Properties",
PANEL_ITEM_MENU, props_menu,
XV_HELP_DATA, "ftptool:PropertiesButton",
NULL);
base_window.connect = xv_create(base_window.panel,
PANEL_BUTTON,
PANEL_ITEM_X_GAP, 3 * (int)xv_get(base_window.panel,
PANEL_ITEM_X_GAP),
PANEL_LABEL_STRING, " Connect... ",
PANEL_NOTIFY_PROC, connect_proc,
XV_HELP_DATA, "ftptool:ConnectButton",
NULL);
base_window.abort = xv_create(base_window.panel,
PANEL_BUTTON,
PANEL_LABEL_STRING, "Abort",
PANEL_NOTIFY_PROC, abort_proc,
PANEL_INACTIVE, TRUE,
XV_HELP_DATA, "ftptool:AbortButton",
NULL);
base_window.quit = xv_create(base_window.panel,
PANEL_BUTTON,
PANEL_LABEL_STRING, "Quit",
PANEL_NOTIFY_PROC, quit_proc,
XV_HELP_DATA, "ftptool:QuitButton",
XV_SHOW, openlook_mode ? FALSE : TRUE,
NULL);
xv_set(base_window.panel,
PANEL_LAYOUT, PANEL_VERTICAL,
NULL);
base_window.directory = xv_create(base_window.panel,
PANEL_TEXT,
PANEL_ITEM_X, 0,
PANEL_VALUE_DISPLAY_LENGTH, 42,
PANEL_VALUE_STORED_LENGTH, MAXPATHLEN,
PANEL_LABEL_STRING, "Remote Directory:",
PANEL_LAYOUT, PANEL_HORIZONTAL,
PANEL_READ_ONLY, FALSE,
PANEL_NOTIFY_LEVEL, PANEL_SPECIFIED,
PANEL_NOTIFY_PROC, remote_cd_text,
PANEL_INACTIVE, TRUE,
XV_HELP_DATA, "ftptool:RemoteDirectory",
NULL);
base_window.list = xv_create(base_window.panel,
PANEL_LIST,
PANEL_ITEM_X, 2,
PANEL_NEXT_ROW, xv_row(base_window.panel, 1),
PANEL_LIST_DISPLAY_ROWS, 8,
PANEL_LABEL_STRING, list_label,
PANEL_FONT, bold_list_font,
PANEL_LAYOUT, PANEL_VERTICAL,
PANEL_READ_ONLY, TRUE,
PANEL_CHOOSE_ONE, FALSE,
PANEL_CHOOSE_NONE, TRUE,
PANEL_NOTIFY_PROC, remote_list_proc,
XV_HELP_DATA, "ftptool:RemoteList",
NULL);
remote_list_menu = xv_get(base_window.list, PANEL_ITEM_MENU);
#ifdef LINT
remote_list_menu = remote_list_menu;
#else
xv_set(remote_list_menu,
MENU_GEN_PIN_WINDOW, base_window.frame, "Remote File List",
MENU_TITLE_ITEM, "Remote File List",
MENU_ITEM,
MENU_STRING, "",
MENU_FEEDBACK, FALSE,
NULL,
MENU_ITEM,
MENU_STRING, "CD to Selection",
MENU_NOTIFY_PROC, remote_cd_select,
XV_HELP_DATA, "ftptool:RemoteMenuCDSelection",
NULL,
MENU_ITEM,
MENU_STRING, "Up One Level",
MENU_NOTIFY_PROC, remote_cd_dotdot,
XV_HELP_DATA, "ftptool:RemoteMenuCDUp",
NULL,
MENU_ITEM,
MENU_STRING, "Copy to Local",
MENU_NOTIFY_PROC, get_proc,
XV_HELP_DATA, "ftptool:RemoteMenuCopyLocal",
NULL,
MENU_ITEM,
MENU_STRING, "Add to Batch Receive List",
MENU_NOTIFY_PROC, add_batch_receive_proc,
XV_HELP_DATA, "ftptool:BatchReceiveAdd",
NULL,
MENU_ITEM,
MENU_STRING, "View File",
MENU_NOTIFY_PROC, remote_view,
XV_HELP_DATA, "ftptool:RemoteMenuView",
NULL,
MENU_ITEM,
MENU_STRING, "Delete",
MENU_NOTIFY_PROC, remote_delete_proc,
XV_HELP_DATA, "ftptool:FileDeleteRemote",
NULL,
MENU_ITEM,
MENU_STRING, "Properties...",
MENU_NOTIFY_PROC, remote_properties,
XV_HELP_DATA, "ftptool:RemoteMenuProperties",
NULL,
NULL);
#endif
change_remote_list_menu();
xv_set(base_window.panel,
PANEL_LAYOUT, PANEL_HORIZONTAL,
NULL);
window_fit(base_window.panel);
window_fit(base_window.frame);
dpy = (Display *)xv_get(base_window.frame, XV_DISPLAY);
screen = (Xv_Screen)xv_get(base_window.frame, XV_SCREEN);
screen_no = (int)xv_get(screen, SCREEN_NUMBER);
display_width = DisplayWidth(dpy, screen_no);
display_height = DisplayHeight(dpy, screen_no);
width = xv_get(base_window.frame, XV_WIDTH);
height = xv_get(base_window.frame, XV_HEIGHT);
x = xv_get(base_window.frame, XV_X);
y = xv_get(base_window.frame, XV_Y);
set_geometry(base_window.geometry, base_window.frame, width,
height, x, y);
XSync(dpy, False);
xv_set(base_window.frame,
WIN_EVENT_PROC, base_event_proc,
NULL);
xv_set(base_window.panel,
PANEL_BACKGROUND_PROC, props_event_proc,
PANEL_ACCEPT_KEYSTROKE, TRUE,
NULL);
#ifdef XVIEW3
base_window.drop_site = xv_create(base_window.frame,
DROP_SITE_ITEM,
DROP_SITE_ID, 1234,
DROP_SITE_REGION, xv_get(base_window.list, XV_RECT),
NULL);
base_window.dnd = xv_create(base_window.frame,
DRAGDROP,
DND_TYPE, DND_COPY,
NULL);
base_window.sel = xv_create(base_window.frame,
SELECTION_REQUESTOR,
NULL);
get_remote_list_event_proc();
xv_set(base_window.list,
PANEL_EVENT_PROC, remote_list_event,
NULL);
#endif
}
#ifdef USE_PROTOTYPES
void create_property_window(void)
#else
void create_property_window()
#endif
{
Rect *butrect;
Rect *rect;
int options;
int x, y;
int base_x;
int gap;
int height;
tool_property_window.frame = xv_create(base_window.frame,
FRAME_PROPS,
XV_LABEL, "Ftptool: Properties",
NULL);
tool_property_window.panel = (Panel)xv_get(tool_property_window.frame,
FRAME_PROPS_PANEL);
tool_property_window.category = xv_create(tool_property_window.panel,
PANEL_CHOICE_STACK,
PANEL_LAYOUT, PANEL_HORIZONTAL,
PANEL_LABEL_STRING, "Category:",
PANEL_CHOICE_STRINGS,
"Ftptool",
"Directory Lists",
"Viewers",
NULL,
PANEL_VALUE, 0,
PANEL_NOTIFY_PROC, category_proc,
NULL);
xv_set(tool_property_window.panel,
PANEL_LAYOUT, PANEL_VERTICAL,
NULL);
window_fit_height(tool_property_window.panel);
/* ftptool panel */
tool_property_window.ftptool.panel =
xv_create(tool_property_window.frame,
PANEL,
PANEL_LAYOUT, PANEL_VERTICAL,
WIN_BORDER, TRUE,
NULL);
x = xv_get(tool_property_window.ftptool.panel, XV_X);
y = xv_get(tool_property_window.ftptool.panel, XV_Y);
options = logging | keepalive;
tool_property_window.ftptool.options =
xv_create(tool_property_window.ftptool.panel,
PANEL_CHOICE,
PANEL_LABEL_STRING, "FTP options:",
PANEL_CHOOSE_ONE, FALSE,
PANEL_CHOOSE_NONE, TRUE,
PANEL_CHOICE_STRINGS,
"Log Session",
"Keep Connection Alive",
NULL,
PANEL_VALUE, options,
XV_HELP_DATA, "ftptool:PropertyOptions",
NULL);
options = unique_local_names | unique_remote_names;
tool_property_window.ftptool.unique =
xv_create(tool_property_window.ftptool.panel, PANEL_CHOICE,
PANEL_LABEL_STRING, "Generate unique:",
PANEL_CHOOSE_ONE, FALSE,
PANEL_CHOOSE_NONE, TRUE,
PANEL_CHOICE_STRINGS,
"Local Filenames",
"Remote Filenames",
NULL,
PANEL_VALUE, options,
XV_HELP_DATA, "ftptool:PropertyUnique",
NULL);
options = auto_connect | show_status | try_proxy;
tool_property_window.ftptool.automatic =
xv_create(tool_property_window.ftptool.panel, PANEL_CHOICE,
PANEL_LABEL_STRING, "Automatically:",
PANEL_CHOOSE_ONE, FALSE,
PANEL_CHOOSE_NONE, TRUE,
PANEL_CHOICE_STRINGS,
"Connect",
"Show Status",
"Try Sun Proxy FTP",
NULL,
PANEL_VALUE, options,
XV_HELP_DATA, "ftptool:PropertyAuto",
NULL);
tool_property_window.ftptool.openlook =
xv_create(tool_property_window.ftptool.panel, PANEL_CHECK_BOX,
PANEL_LABEL_STRING, "Window manager:",
PANEL_CHOICE_STRINGS,
"OPEN LOOK",
NULL,
PANEL_VALUE, openlook_mode,
XV_HELP_DATA, "ftptool:PropertyOpenLook",
NULL);
tool_property_window.ftptool.anonftp =
xv_create(tool_property_window.ftptool.panel, PANEL_TEXT,
PANEL_LABEL_STRING, "Initial password:",
PANEL_VALUE_DISPLAY_LENGTH, 40,
PANEL_VALUE_STORED_LENGTH, MAXPASSWORDLEN,
PANEL_VALUE, anonftp_password,
XV_HELP_DATA, "ftptool:PropertyPassword",
NULL);
tool_property_window.ftptool.ignore_case =
xv_create(tool_property_window.ftptool.panel, PANEL_CHECK_BOX,
PANEL_LABEL_STRING, "Case sensitivity:",
PANEL_CHOICE_STRINGS,
"Ignore case",
NULL,
PANEL_VALUE, ignore_case,
XV_HELP_DATA, "ftptool:PropertyIgnoreCase",
NULL);
options = confirmdeletes | confirmoverwrites;
tool_property_window.ftptool.confirm =
xv_create(tool_property_window.ftptool.panel, PANEL_CHOICE,
PANEL_LABEL_STRING, "Confirm:",
PANEL_CHOOSE_ONE, FALSE,
PANEL_CHOOSE_NONE, TRUE,
PANEL_CHOICE_STRINGS,
"Deletions",
"Overwrites",
NULL,
PANEL_VALUE, options,
XV_HELP_DATA, "ftptool:PropertyConfirm",
NULL);
justify_items(tool_property_window.ftptool.panel, FALSE);
tool_property_window.ftptool.apply =
xv_create(tool_property_window.ftptool.panel, PANEL_BUTTON,
PANEL_LABEL_STRING, "Apply",
PANEL_NOTIFY_PROC, ftptool_props_apply_proc,
XV_HELP_DATA, "ftptool:PropertyApply",
NULL);
window_fit_width(tool_property_window.ftptool.panel);
xv_set(tool_property_window.ftptool.panel,
PANEL_LAYOUT, PANEL_HORIZONTAL,
NULL);
butrect = (Rect *)xv_get(tool_property_window.ftptool.apply, XV_RECT);
xv_set(tool_property_window.ftptool.apply,
XV_X, (int)xv_get(tool_property_window.ftptool.panel,
XV_WIDTH)/2 - butrect->r_width,
NULL);
xv_create(tool_property_window.ftptool.panel, PANEL_BUTTON,
PANEL_LABEL_STRING, "Reset",
PANEL_NOTIFY_PROC, ftptool_props_reset_proc,
XV_HELP_DATA, "ftptool:PropertyReset",
NULL);
xv_set(tool_property_window.ftptool.panel,
PANEL_DEFAULT_ITEM, tool_property_window.ftptool.apply,
NULL);
window_fit_height(tool_property_window.ftptool.panel);
/* directory lists panel */
tool_property_window.directory_lists.panel =
xv_create(tool_property_window.frame, PANEL,
PANEL_LAYOUT, PANEL_VERTICAL,
WIN_BORDER, TRUE,
XV_X, x,
XV_Y, y,
NULL);
tool_property_window.directory_lists.cache =
xv_create(tool_property_window.directory_lists.panel,
PANEL_SLIDER,
PANEL_LABEL_STRING, "Directory Cache Size:",
PANEL_MIN_VALUE, 1,
PANEL_MAX_VALUE, 20,
PANEL_SLIDER_WIDTH, 200,
PANEL_TICKS, 5,
PANEL_VALUE, dircache_size,
PANEL_INACTIVE, dircache_size == 0,
XV_HELP_DATA, "ftptool:PropertyCacheSize",
NULL);
tool_property_window.directory_lists.cache_inf =
xv_create(tool_property_window.directory_lists.panel,
PANEL_CHECK_BOX,
PANEL_CHOICE_STRINGS,
"Unlimit Cache Size",
NULL,
PANEL_VALUE, dircache_size == 0,
PANEL_NOTIFY_PROC, props_inf_check_box,
PANEL_ITEM_Y,
xv_get(tool_property_window.directory_lists.cache, XV_X)
+ xv_get(tool_property_window.directory_lists.cache,
XV_HEIGHT),
XV_HELP_DATA, "ftptool:PropertyCacheInf",
NULL);
tool_property_window.directory_lists.remote_sort =
xv_create(tool_property_window.directory_lists.panel,
PANEL_CHOICE,
PANEL_NEXT_ROW,
xv_row(tool_property_window.directory_lists.panel, 1),
PANEL_LABEL_STRING, "Sort remote files by:",
PANEL_CHOOSE_ONE, TRUE,
PANEL_CHOOSE_NONE, FALSE,
PANEL_NOTIFY_PROC, remote_sort_choice_proc,
PANEL_CHOICE_STRINGS,
"Name",
"Date",
"Size",
NULL,
PANEL_VALUE, remote_sort_mode,
XV_HELP_DATA, "ftptool:PropertySortChoice",
NULL);
tool_property_window.directory_lists.remote_sortdir =
xv_create(tool_property_window.directory_lists.panel,
PANEL_CHOICE,
PANEL_LABEL_STRING, "Sort order:",
PANEL_CHOOSE_ONE, TRUE,
PANEL_CHOOSE_NONE, FALSE,
PANEL_CHOICE_STRINGS,
"Least Recently Changed",
"Most Recently Changed",
NULL,
PANEL_VALUE, remote_sort_direction,
XV_HELP_DATA, "ftptool:PropertySortDirection",
NULL);
tool_property_window.directory_lists.remote_dotfiles =
xv_create(tool_property_window.directory_lists.panel,
PANEL_CHOICE,
PANEL_LABEL_STRING, "Hidden files:",
PANEL_CHOOSE_ONE, TRUE,
PANEL_CHOOSE_NONE, FALSE,
PANEL_CHOICE_STRINGS,
"Hide",
"Show",
NULL,
PANEL_VALUE, remote_showdotfiles,
XV_HELP_DATA, "ftptool:PropertyHidden",
NULL);
tool_property_window.directory_lists.remote_group =
xv_create(tool_property_window.directory_lists.panel,
PANEL_CHECK_BOX,
PANEL_CHOICE_STRINGS,
"Group files by type",
NULL,
PANEL_VALUE, group_remote_files,
XV_HELP_DATA, "ftptool:PropertySortGrouping",
NULL);
tool_property_window.directory_lists.local_sort =
xv_create(tool_property_window.directory_lists.panel,
PANEL_CHOICE,
PANEL_NEXT_ROW,
xv_row(tool_property_window.directory_lists.panel, 1),
PANEL_LABEL_STRING, "Sort local files by:",
PANEL_CHOOSE_ONE, TRUE,
PANEL_CHOOSE_NONE, FALSE,
PANEL_NOTIFY_PROC, local_sort_choice_proc,
PANEL_CHOICE_STRINGS,
"Name",
"Date",
"Size",
NULL,
PANEL_VALUE, local_sort_mode,
XV_HELP_DATA, "ftptool:PropertyLocalSortChoice",
NULL);
tool_property_window.directory_lists.local_sortdir =
xv_create(tool_property_window.directory_lists.panel,
PANEL_CHOICE,
PANEL_LABEL_STRING, "Sort order:",
PANEL_CHOOSE_ONE, TRUE,
PANEL_CHOOSE_NONE, FALSE,
PANEL_CHOICE_STRINGS,
"Least Recently Changed",
"Most Recently Changed",
NULL,
PANEL_VALUE, local_sort_direction,
XV_HELP_DATA, "ftptool:PropertySortDirection",
NULL);
tool_property_window.directory_lists.local_dotfiles =
xv_create(tool_property_window.directory_lists.panel,
PANEL_CHOICE,
PANEL_LABEL_STRING, "Hidden files:",
PANEL_CHOOSE_ONE, TRUE,
PANEL_CHOOSE_NONE, FALSE,
PANEL_CHOICE_STRINGS,
"Hide",
"Show",
NULL,
PANEL_VALUE, local_showdotfiles,
XV_HELP_DATA, "ftptool:PropertyHidden",
NULL);
tool_property_window.directory_lists.local_group =
xv_create(tool_property_window.directory_lists.panel,
PANEL_CHECK_BOX,
PANEL_CHOICE_STRINGS,
"Group files by type",
NULL,
PANEL_VALUE, group_local_files,
XV_HELP_DATA, "ftptool:PropertyLocalSortGrouping",
NULL);
justify_items(tool_property_window.directory_lists.panel, FALSE);
tool_property_window.directory_lists.apply =
xv_create(tool_property_window.directory_lists.panel,
PANEL_BUTTON,
PANEL_LABEL_STRING, "Apply",
PANEL_NOTIFY_PROC, directory_lists_props_apply_proc,
XV_HELP_DATA, "ftptool:PropertyApply",
NULL);
window_fit_width(tool_property_window.directory_lists.panel);
xv_set(tool_property_window.directory_lists.panel,
PANEL_LAYOUT, PANEL_HORIZONTAL,
NULL);
butrect = (Rect *)xv_get(tool_property_window.directory_lists.apply,
XV_RECT);
xv_set(tool_property_window.directory_lists.apply,
XV_X, (int)xv_get(tool_property_window.directory_lists.panel,
XV_WIDTH)/2 - butrect->r_width,
NULL);
xv_create(tool_property_window.directory_lists.panel,
PANEL_BUTTON,
PANEL_LABEL_STRING, "Reset",
PANEL_NOTIFY_PROC, directory_lists_props_reset_proc,
XV_HELP_DATA, "ftptool:PropertyReset",
NULL);
xv_set(tool_property_window.directory_lists.panel,
PANEL_DEFAULT_ITEM,
tool_property_window.directory_lists.apply,
NULL);
window_fit_height(tool_property_window.directory_lists.panel);
/* viewers panel */
tool_property_window.viewers.panel =
xv_create(tool_property_window.frame,
PANEL,
PANEL_LAYOUT, PANEL_VERTICAL,
WIN_BORDER, TRUE,
XV_X, x,
XV_Y, y,
NULL);
tool_property_window.viewers.viewer =
xv_create(tool_property_window.viewers.panel,
PANEL_TEXT,
PANEL_LABEL_STRING, "Default file viewer:",
PANEL_VALUE_DISPLAY_LENGTH, 30,
PANEL_VALUE_STORED_LENGTH, MAXPATHLEN,
PANEL_VALUE, default_viewer,
XV_HELP_DATA, "ftptool:PropertyViewer",
NULL);
tool_property_window.viewers.compressor =
xv_create(tool_property_window.viewers.panel,
PANEL_TEXT,
PANEL_LABEL_STRING, "Default file compressor:",
PANEL_VALUE_DISPLAY_LENGTH, 30,
PANEL_VALUE_STORED_LENGTH, MAXPATHLEN,
PANEL_VALUE, default_compressor,
XV_HELP_DATA, "ftptool:PropertyCompressor",
NULL);
tool_property_window.viewers.list =
xv_create(tool_property_window.viewers.panel, PANEL_LIST,
PANEL_LIST_DISPLAY_ROWS, 4,
PANEL_LIST_WIDTH, 100,
PANEL_LABEL_STRING, "Known extensions:",
PANEL_READ_ONLY, TRUE,
PANEL_CHOOSE_ONE, TRUE,
PANEL_CHOOSE_NONE, TRUE,
PANEL_NOTIFY_PROC, extension_list_proc,
XV_HELP_DATA, "ftptool:PropertyKnownExtensions",
NULL);
xv_set(tool_property_window.viewers.panel,
PANEL_LAYOUT, PANEL_HORIZONTAL,
NULL);
tool_property_window.viewers.add =
xv_create(tool_property_window.viewers.panel,
PANEL_BUTTON,
PANEL_LABEL_STRING, "Add ",
PANEL_NOTIFY_PROC, add_extension_proc,
XV_HELP_DATA, "ftptool:PropertyAddExtension",
NULL);
tool_property_window.viewers.delete =
xv_create(tool_property_window.viewers.panel,
PANEL_BUTTON,
PANEL_LABEL_STRING, "Delete ",
PANEL_NOTIFY_PROC, delete_extension_proc,
XV_HELP_DATA, "ftptool:PropertyDeleteExtension",
NULL);
tool_property_window.viewers.change =
xv_create(tool_property_window.viewers.panel,
PANEL_BUTTON,
PANEL_LABEL_STRING, "Change ",
PANEL_NOTIFY_PROC, change_extension_proc,
XV_HELP_DATA, "ftptool:PropertyChangeExtension",
NULL);
xv_set(tool_property_window.viewers.panel,
PANEL_LAYOUT, PANEL_VERTICAL,
NULL);
tool_property_window.viewers.extension =
xv_create(tool_property_window.viewers.panel,
PANEL_TEXT,
PANEL_LABEL_STRING, "Extension:",
PANEL_VALUE_DISPLAY_LENGTH, 30,
PANEL_VALUE_STORED_LENGTH, MAXPATHLEN,
XV_HELP_DATA, "ftptool:PropertyExtension",
NULL);
tool_property_window.viewers.magic =
xv_create(tool_property_window.viewers.panel,
PANEL_TEXT,
PANEL_LABEL_STRING, "Contents begin with:",
PANEL_VALUE_DISPLAY_LENGTH, 30,
PANEL_VALUE_STORED_LENGTH, MAXPATHLEN,
XV_HELP_DATA, "ftptool:PropertyMagic",
NULL);
tool_property_window.viewers.program =
xv_create(tool_property_window.viewers.panel,
PANEL_TEXT,
PANEL_LABEL_STRING, "Program to run:",
PANEL_VALUE_DISPLAY_LENGTH, 30,
PANEL_VALUE_STORED_LENGTH, MAXPATHLEN,
XV_HELP_DATA, "ftptool:PropertyProgram",
NULL);
tool_property_window.viewers.type =
xv_create(tool_property_window.viewers.panel,
PANEL_CHOICE_STACK,
PANEL_LAYOUT, PANEL_HORIZONTAL,
PANEL_LABEL_STRING, "Program is a:",
PANEL_CHOICE_STRINGS,
"file viewer",
"decompressor",
NULL,
XV_HELP_DATA, "ftptool:PropertyType",
NULL);
justify_items(tool_property_window.viewers.panel, FALSE);
/* Move add/delete/change to side of list */
rect = (Rect *)xv_get(tool_property_window.viewers.list, XV_RECT);
base_x = rect->r_left + rect->r_width;
height = rect->r_height;
base_x += 3 * xv_get(tool_property_window.viewers.panel,
PANEL_ITEM_X_GAP);
gap = xv_get(tool_property_window.viewers.panel, PANEL_ITEM_Y_GAP);
gap /= 2;
butrect = (Rect *)xv_get(tool_property_window.viewers.delete, XV_RECT);
/* put delete in middle */
xv_set(tool_property_window.viewers.delete,
XV_X, base_x,
XV_Y, rect->r_top + height / 2 - gap,
NULL);
xv_set(tool_property_window.viewers.add,
XV_X, base_x,
XV_Y, rect->r_top + height / 2 - butrect->r_height - 2 * gap,
NULL);
xv_set(tool_property_window.viewers.change,
XV_X, base_x,
XV_Y, rect->r_top + height / 2 + butrect->r_height,
NULL);
tool_property_window.viewers.apply =
xv_create(tool_property_window.viewers.panel,
PANEL_BUTTON,
PANEL_LABEL_STRING, "Apply",
PANEL_NOTIFY_PROC, viewers_props_apply_proc,
XV_HELP_DATA, "ftptool:PropertyApply",
NULL);
window_fit_width(tool_property_window.viewers.panel);
xv_set(tool_property_window.viewers.panel,
PANEL_LAYOUT, PANEL_HORIZONTAL,
NULL);
butrect = (Rect *)xv_get(tool_property_window.viewers.apply, XV_RECT);
xv_set(tool_property_window.viewers.apply,
XV_X, (int)xv_get(tool_property_window.viewers.panel,
XV_WIDTH)/2 - butrect->r_width,
NULL);
xv_create(tool_property_window.viewers.panel,
PANEL_BUTTON,
PANEL_LABEL_STRING, "Reset",
PANEL_NOTIFY_PROC, viewers_props_reset_proc,
XV_HELP_DATA, "ftptool:PropertyReset",
NULL);
xv_set(tool_property_window.viewers.panel,
PANEL_DEFAULT_ITEM, tool_property_window.viewers.apply,
NULL);
window_fit_height(tool_property_window.viewers.panel);
/* end panels */
xv_set(tool_property_window.viewers.panel,
XV_SHOW, FALSE,
NULL);
xv_set(tool_property_window.directory_lists.panel,
XV_SHOW, FALSE,
NULL);
xv_set(tool_property_window.ftptool.panel,
XV_SHOW, TRUE,
NULL);
switch_category(0, TRUE);
set_remote_sort_order(remote_sort_mode);
set_local_sort_order(local_sort_mode);
}
#ifdef USE_PROTOTYPES
void create_local_window(void)
#else
void create_local_window()
#endif
{
Menu local_list_menu;
Rect rect;
int width, height, x, y;
Panel_item message;
#ifdef SYSV
struct utsname uts;
#endif
#ifdef SYSV
if (uname(&uts) != -1) {
strcpy(myhostname, uts.nodename);
} else {
fprintf(stderr, "What host is this?\n");
strcpy(myhostname, "unknown");
}
#else
if (gethostname(myhostname, MAXHOSTNAMELEN) == -1) {
fprintf(stderr, "What host is this?\n");
strcpy(myhostname, "unknown");
}
#endif
sprintf(scratch, "Ftptool: Local Host - %s", myhostname);
local_window.frame = xv_create(base_window.frame,
FRAME_CMD,
#ifdef XVIEW3
FRAME_CMD_PIN_STATE, FRAME_CMD_PIN_IN,
#else
FRAME_CMD_PUSHPIN_IN, TRUE,
#endif
XV_LABEL, scratch,
FRAME_SHOW_RESIZE_CORNER, TRUE,
FRAME_SHOW_FOOTER, TRUE,
FRAME_LEFT_FOOTER, NULL,
NULL);
local_window.panel = xv_get(local_window.frame, FRAME_CMD_PANEL);
xv_set(local_window.panel,
PANEL_LAYOUT, PANEL_VERTICAL,
NULL);
local_window.directory = xv_create(local_window.panel,
PANEL_TEXT,
PANEL_VALUE_DISPLAY_LENGTH, 44,
PANEL_VALUE_STORED_LENGTH, MAXPATHLEN,
PANEL_LABEL_STRING, "Local Directory:",
PANEL_LAYOUT, PANEL_HORIZONTAL,
PANEL_READ_ONLY, FALSE,
PANEL_NOTIFY_LEVEL, PANEL_SPECIFIED,
PANEL_NOTIFY_PROC, local_cd_text,
XV_HELP_DATA, "ftptool:LocalDirectory",
NULL);
xv_set(local_window.panel,
PANEL_LAYOUT, PANEL_HORIZONTAL,
NULL);
xv_set(local_window.panel,
PANEL_LAYOUT, PANEL_VERTICAL,
NULL);
message = xv_create(local_window.panel,
PANEL_MESSAGE,
PANEL_LABEL_STRING, "Free Space:",
PANEL_LABEL_BOLD, TRUE,
NULL);
justify_items(local_window.panel, FALSE);
local_window.list = xv_create(local_window.panel,
PANEL_LIST,
PANEL_LIST_DISPLAY_ROWS, 8,
PANEL_LABEL_STRING, list_label,
PANEL_FONT, bold_list_font,
PANEL_LAYOUT, PANEL_VERTICAL,
PANEL_CHOOSE_ONE, FALSE,
PANEL_CHOOSE_NONE, TRUE,
PANEL_READ_ONLY, TRUE,
PANEL_NOTIFY_PROC, local_list_proc,
XV_HELP_DATA, "ftptool:LocalList",
NULL);
local_list_menu = xv_get(local_window.list, PANEL_ITEM_MENU);
#ifdef LINT
local_list_menu = local_list_menu;
#else
xv_set(local_list_menu,
MENU_GEN_PIN_WINDOW, base_window.frame, "Local File List",
MENU_TITLE_ITEM, "Local File List",
MENU_ITEM,
MENU_STRING, "",
MENU_FEEDBACK, FALSE,
NULL,
MENU_ITEM,
MENU_STRING, "CD to Selection",
MENU_NOTIFY_PROC, local_cd_select,
XV_HELP_DATA, "ftptool:LocalMenuCDSelection",
NULL,
MENU_ITEM,
MENU_STRING, "Up One Level",
MENU_NOTIFY_PROC, local_cd_dotdot,
XV_HELP_DATA, "ftptool:LocalMenuCDUp",
NULL,
MENU_ITEM,
MENU_STRING, "Copy to Remote",
MENU_NOTIFY_PROC, put_proc,
XV_HELP_DATA, "ftptool:LocalMenuCopyRemote",
NULL,
MENU_ITEM,
MENU_STRING, "Add to Batch Send List",
MENU_NOTIFY_PROC, add_batch_send_proc,
XV_HELP_DATA, "ftptool:BatchSendAdd",
NULL,
MENU_ITEM,
MENU_STRING, "View File",
MENU_NOTIFY_PROC, local_view,
XV_HELP_DATA, "ftptool:LocalMenuView",
NULL,
MENU_ITEM,
MENU_STRING, "Delete",
MENU_NOTIFY_PROC, local_delete_proc,
XV_HELP_DATA, "ftptool:FileLocalRemote",
NULL,
MENU_ITEM,
MENU_STRING, "Properties...",
MENU_NOTIFY_PROC, local_properties,
XV_HELP_DATA, "ftptool:LocalMenuProperties",
NULL,
NULL);
#endif
change_local_list_menu();
local_window.space = xv_create(local_window.panel, PANEL_MESSAGE,
PANEL_LABEL_STRING, "",
PANEL_ITEM_X, xv_get(message, XV_X) + xv_get(message, XV_WIDTH)
+ xv_col(local_window.panel, 1),
PANEL_ITEM_Y, xv_get(message, XV_Y),
NULL);
local_window.dismiss = xv_create(local_window.panel, PANEL_BUTTON,
PANEL_LABEL_STRING, "Dismiss",
PANEL_NOTIFY_PROC, dismiss_local_window,
XV_SHOW, openlook_mode ? FALSE : TRUE,
XV_HELP_DATA, "ftptool:DismissButton",
NULL);
window_fit(local_window.panel);
window_fit(local_window.frame);
XSync(dpy, False);
frame_get_rect(base_window.frame, &rect);
x = rect.r_left;
y = rect.r_top + rect.r_height;
width = xv_get(local_window.frame, XV_WIDTH);
height = xv_get(local_window.frame, XV_HEIGHT);
rect.r_left = x;
rect.r_top = y;
rect.r_height = height;
frame_set_rect(local_window.frame, &rect);
frame_set_rect(local_window.panel, &rect);
set_geometry(local_window.geometry, local_window.frame,
width, height, x, y);
resize_window(local_window.panel, local_window.list,
local_window.dismiss);
xv_set(local_window.frame,
WIN_EVENT_PROC, local_event_proc,
NULL);
#ifdef XVIEW3
local_window.drop_site = xv_create(local_window.frame, DROP_SITE_ITEM,
DROP_SITE_ID, 5678,
DROP_SITE_REGION, xv_get(local_window.list, XV_RECT),
NULL);
local_window.dnd = xv_create(local_window.frame, DRAGDROP,
DND_TYPE, DND_COPY,
NULL);
local_window.sel = xv_create(local_window.frame, SELECTION_REQUESTOR,
NULL);
get_local_list_event_proc();
xv_set(local_window.list,
PANEL_EVENT_PROC, local_list_event,
NULL);
#endif
}
syntax highlighted by Code2HTML, v. 0.9.1