224 lines
7.1 KiB
C
224 lines
7.1 KiB
C
#include "general.h"
|
|
#include "catalog/catalog.h"
|
|
#include "catalog/catalog_mini_entry.h"
|
|
#include "prefs.h"
|
|
#include "ztext.h"
|
|
#include "file/file.h"
|
|
#include "close_modal.h"
|
|
|
|
static OBJECT *pref_dialog ;
|
|
|
|
static int old_show_size = 0;
|
|
static int old_show_hidden = 0;
|
|
static int old_show_non_image = 0;
|
|
static int old_show_read_progress_bar = 0;
|
|
static int old_show_write_progress_bar = 0;
|
|
static int old_pdf_fit_to_win = 0;
|
|
static int old_pdf_aa = 0;
|
|
static int old_smooth_thumbnail = 0;
|
|
|
|
static char *items[] = { "None", "Triangle", "Blackman", "Gaussian", "Quadratic", "Cubic", "Lanczos"};
|
|
static int drive[] = { PREFS_A ,PREFS_B, PREFS_C, PREFS_D, PREFS_E, PREFS_F, PREFS_G, PREFS_H, PREFS_I, PREFS_J,
|
|
PREFS_K, PREFS_L, PREFS_M, PREFS_N, PREFS_O, PREFS_P, PREFS_Q, PREFS_R, PREFS_S, PREFS_T, PREFS_U, PREFS_V, PREFS_W,
|
|
PREFS_X, PREFS_Y, PREFS_Z};
|
|
static int i, drv;
|
|
|
|
static void format_popup( WINDOW *win, int obj_index)
|
|
{
|
|
int16 x, y;
|
|
int choice;
|
|
|
|
objc_offset( FORM(win), obj_index, &x, &y);
|
|
|
|
choice = MenuPopUp ( items, x, y, 7, -1, smooth_thumbnail + 1, P_LIST + P_WNDW + P_CHCK);
|
|
|
|
if( choice < 0)
|
|
return;
|
|
|
|
smooth_thumbnail = choice - 1;
|
|
|
|
strcpy( pref_dialog[PREFS_SMOOTH_METHOD].ob_spec.free_string, items[smooth_thumbnail]);
|
|
ObjcDraw( OC_FORM, win, PREFS_SMOOTH_METHOD, 1);
|
|
}
|
|
|
|
|
|
/*==================================================================================*
|
|
* void handle_preference: *
|
|
* Handle OK and CANCEL buttons in the preference dialog. *
|
|
*----------------------------------------------------------------------------------*
|
|
* input: *
|
|
* win -> Pointer to the preference window. *
|
|
*----------------------------------------------------------------------------------*
|
|
* returns: *
|
|
* -- *
|
|
*==================================================================================*/
|
|
static void handle_preference( WINDOW *win)
|
|
{
|
|
switch( evnt.buff[4])
|
|
{
|
|
case PREFS_PDF_FIT_TO_WINDOW:
|
|
pdf_fit_to_win = ( ( pref_dialog[PREFS_PDF_FIT_TO_WINDOW].ob_state & SELECTED) ? 1 : 0);
|
|
break;
|
|
|
|
case PREFS_PDF_ANTIALIAS:
|
|
pdf_aa = ( ( pref_dialog[PREFS_PDF_ANTIALIAS].ob_state & SELECTED) ? 1 : 0);
|
|
break;
|
|
|
|
case PREFS_SHOW_SIZE:
|
|
show_size = ( ( pref_dialog[PREFS_SHOW_SIZE].ob_state & SELECTED) ? 1 : 0);
|
|
break;
|
|
|
|
case PREFS_SHOW_HIDDEN:
|
|
show_hidden = ( ( pref_dialog[PREFS_SHOW_HIDDEN].ob_state & SELECTED) ? 1 : 0);
|
|
break;
|
|
|
|
case PREFS_SHOW_NON_IMAGE:
|
|
show_non_image = ( ( pref_dialog[PREFS_SHOW_NON_IMAGE].ob_state & SELECTED) ? 1 : 0);
|
|
break;
|
|
|
|
case PREFS_SHOW_READ_PROGRESS:
|
|
show_read_progress_bar = ( ( pref_dialog[PREFS_SHOW_READ_PROGRESS].ob_state & SELECTED) ? 1 : 0);
|
|
break;
|
|
|
|
case PREFS_SHOW_WRITE_PROGRESS:
|
|
show_write_progress_bar = ( ( pref_dialog[PREFS_SHOW_WRITE_PROGRESS].ob_state & SELECTED) ? 1 : 0);
|
|
break;
|
|
|
|
case PREFS_SMOOTH_METHOD:
|
|
format_popup( win, evnt.buff[4]);
|
|
ObjcChange( OC_FORM, win, evnt.buff[4], NORMAL, TRUE);
|
|
break;
|
|
|
|
case PREFS_CANCEL:
|
|
smooth_thumbnail = old_smooth_thumbnail;
|
|
show_size = old_show_size;
|
|
show_hidden = old_show_hidden;
|
|
show_non_image = old_show_non_image;
|
|
show_read_progress_bar = old_show_read_progress_bar;
|
|
show_write_progress_bar = old_show_write_progress_bar;
|
|
pdf_fit_to_win = old_pdf_fit_to_win;
|
|
pdf_aa = old_pdf_aa;
|
|
|
|
ObjcChange( OC_FORM, win, evnt.buff[4], ~SELECTED, TRUE) ;
|
|
ApplWrite( app.id, WM_CLOSED, win->handle, 0, 0, 0, 0);
|
|
break;
|
|
|
|
case PREFS_OK:
|
|
ObjcChange( OC_FORM, win, evnt.buff[4], ~SELECTED, TRUE);
|
|
ApplWrite( app.id, WM_CLOSED, win->handle, 0, 0, 0, 0);
|
|
|
|
skip_drive[0] = '\0';
|
|
|
|
for( i = 0; i < 26; i++)
|
|
{
|
|
drv = 'A' + i;
|
|
|
|
if( pref_dialog[drive[i]].ob_state & SELECTED)
|
|
{
|
|
char t[2];
|
|
sprintf( t, "%c", drv);
|
|
strcat( skip_drive, t);
|
|
}
|
|
}
|
|
|
|
if( ( old_show_size != show_size) ||
|
|
( old_show_hidden != show_hidden) ||
|
|
( old_show_non_image != show_non_image))
|
|
{
|
|
int16 dum, w, h;
|
|
|
|
if( win_catalog)
|
|
{
|
|
WINDICON *wicones = ( WINDICON *)DataSearch( win_catalog, WD_ICON);
|
|
|
|
wicones -> case_h = thumbnail[thumbnail_size][1] + hcell + y_space + y_space + y_space;
|
|
|
|
if ( show_size)
|
|
wicones -> case_h += hcell + y_space;
|
|
|
|
win_catalog -> h_u = wicones -> case_h;
|
|
|
|
WindCalc( WC_BORDER, win_catalog, 0, 0, wicones->case_w + border_size + browser_frame_width, wicones->case_h, &dum, &dum, &w, &h);
|
|
|
|
win_catalog -> h_min = h;
|
|
win_catalog -> w_min = w;
|
|
|
|
|
|
if( old_show_hidden != show_hidden)
|
|
{
|
|
( void)scan_dir( win_catalog, wicones->directory);
|
|
win_catalog->ypos = 0;
|
|
snd_rdw( win_catalog);
|
|
WindMakePreview( win_catalog);
|
|
}
|
|
else
|
|
snd_rdw( win_catalog);
|
|
}
|
|
}
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
/* a wait loop while the mouse button is pressed */
|
|
while(( evnt.mbut == 1) || ( evnt.mbut == 2))
|
|
graf_mkstate( &evnt.mx, &evnt.my, &evnt.mbut, &evnt.mkstate);
|
|
}
|
|
|
|
|
|
/*==================================================================================*
|
|
* void preference_dialog: *
|
|
* Show the preference dialog. *
|
|
*----------------------------------------------------------------------------------*
|
|
* input: *
|
|
* -- *
|
|
*----------------------------------------------------------------------------------*
|
|
* returns: *
|
|
* -- *
|
|
*==================================================================================*/
|
|
void preference_dialog( void)
|
|
{
|
|
WINDOW *win;
|
|
int frms[] = { PREFS_PANEL1, PREFS_PANEL2, PREFS_PANEL3};
|
|
int buts[] = { PREFS_GENERAL, PREFS_BROWSER, PREFS_PDF};
|
|
|
|
old_show_size = show_size;
|
|
old_show_hidden = show_hidden;
|
|
old_show_non_image = show_non_image;
|
|
old_show_read_progress_bar = show_read_progress_bar;
|
|
old_show_write_progress_bar = show_write_progress_bar;
|
|
old_pdf_fit_to_win = pdf_fit_to_win;
|
|
old_pdf_aa = pdf_aa;
|
|
old_smooth_thumbnail = smooth_thumbnail;
|
|
|
|
pref_dialog = get_tree( PREFS);
|
|
|
|
pref_dialog[PREFS_SHOW_SIZE].ob_state |= ( show_size ? SELECTED : NORMAL);
|
|
pref_dialog[PREFS_SHOW_HIDDEN].ob_state |= ( show_hidden ? SELECTED : NORMAL);
|
|
pref_dialog[PREFS_SHOW_NON_IMAGE].ob_state |= ( show_non_image ? SELECTED : NORMAL);
|
|
pref_dialog[PREFS_SHOW_READ_PROGRESS].ob_state |= ( show_read_progress_bar ? SELECTED : NORMAL);
|
|
pref_dialog[PREFS_SHOW_WRITE_PROGRESS].ob_state |= ( show_write_progress_bar ? SELECTED : NORMAL);
|
|
pref_dialog[PREFS_PDF_ANTIALIAS].ob_state |= ( pdf_aa ? SELECTED : NORMAL);
|
|
pref_dialog[PREFS_PDF_FIT_TO_WINDOW].ob_state |= ( pdf_fit_to_win ? SELECTED : NORMAL);
|
|
strcpy( pref_dialog[PREFS_SMOOTH_METHOD].ob_spec.free_string, items[smooth_thumbnail]);
|
|
|
|
for( i = 0; i < 26; i++)
|
|
{
|
|
drv = 'A' + i;
|
|
|
|
pref_dialog[drive[i]].ob_state |= ( strchr( skip_drive, drv) ? SELECTED : NORMAL);
|
|
}
|
|
|
|
win = FormCreate( pref_dialog, NAME|MOVER, handle_preference, "Options", NULL, TRUE, FALSE);
|
|
|
|
FormThumb( win, frms, buts, 3);
|
|
|
|
WindSet( win, WF_BEVENT, BEVENT_MODAL, 0, 0, 0);
|
|
|
|
EvntAttach( win, WM_CLOSED, close_modal);
|
|
|
|
MenuDisable();
|
|
}
|
|
|