diff options
Diffstat (limited to 'atari/history.c')
-rwxr-xr-x | atari/history.c | 108 |
1 files changed, 67 insertions, 41 deletions
diff --git a/atari/history.c b/atari/history.c index ad5deb2bd..aa32cbf7e 100755 --- a/atari/history.c +++ b/atari/history.c @@ -38,87 +38,107 @@ #include "atari/res/netsurf.rsh" #include "atari/history.h" + +//TODO: remove/add guiwin handle on close / open - so that the list +// is kept tiny. + extern char * tree_directory_icon_name; +extern GRECT desk_area; struct s_atari_global_history gl_history; void global_history_open( void ) { - GRECT pos = {app.w - (app.w/3), app.y, app.w/3, app.h/2}; - + global_history_init(); if (gl_history.init == false ) { - printf("history not init"); return; } if( gl_history.open == false ) { - WindOpen( gl_history.window, pos.g_x, pos.g_y, pos.g_w, pos.g_h); + + GRECT pos; + wind_get_grect(0, WF_WORKXYWH, &pos); + pos.g_x = desk_area.g_w - desk_area.g_w / 4; + pos.g_y = desk_area.g_y; + pos.g_w = desk_area.g_w / 4; + pos.g_h = desk_area.g_h; + + wind_open(gemtk_wm_get_handle(gl_history.window), pos.g_x, pos.g_y, + pos.g_w, pos.g_h); gl_history.open = true; - atari_treeview_open( gl_history.tv ); + atari_treeview_open(gl_history.tv); } else { - WindTop( gl_history.window ); + wind_set(gemtk_wm_get_handle(gl_history.window), WF_TOP, 1, 0, 0, 0); } } void global_history_close( void ) { - WindClose(gl_history.window); + wind_close(gemtk_wm_get_handle(gl_history.window)); gl_history.open = false; - atari_treeview_close( gl_history.tv ); + atari_treeview_close(gl_history.tv); } - -static void __CDECL evnt_history_close( WINDOW *win, short buff[8] ) +static short handle_event(GUIWIN *win, EVMULT_OUT *ev_out, short msg[8]) { - global_history_close(); -} + NSTREEVIEW tv=NULL; + //printf("Hotlist event %d, open: %d\n", ev_out->emo_events, gl_history.open); -static void __CDECL evnt_history_mbutton( WINDOW *win, short buff[8] ) -{ - /* todo: implement popup? - if(evnt.mbut & 2) { + if(ev_out->emo_events & MU_MESAG){ + switch (msg[0]) { + + case WM_CLOSED: + global_history_close(); + break; + default: break; + } } - */ + + // TODO: implement selectable objects in toolbar API: + // ObjcChange( OC_TOOLBAR, win, buff[4], ~SELECTED, OC_MSG ); } bool global_history_init( void ) { - if( gl_history.init == false ) { + if( gl_history.init == false ) { + + short handle; + GRECT desk; + int flags = ATARI_TREEVIEW_WIDGETS; - int flags = ATARI_TREEVIEW_WIDGETS; - gl_history.open = false; - gl_history.window = WindCreate( flags, 40, 40, app.w, app.h ); - if( gl_history.window == NULL ) { + gl_history.open = false; + handle = wind_create(flags, 40, 40, desk_area.g_w, desk_area.g_h); + gl_history.window = gemtk_wm_add(handle, GEMTK_WM_FLAG_DEFAULTS, NULL); + if( gl_history.window == NULL ) { LOG(("Failed to allocate history window")); return( false ); } - WindSetStr(gl_history.window, WF_NAME, messages_get("GlobalHistory")); - //WindSetPtr( gl_history.window, WF_TOOLBAR, tree, evnt_history_toolbar ); - EvntAttach( gl_history.window, WM_CLOSED, evnt_history_close ); - EvntAttach( gl_history.window, WM_XBUTTON,evnt_history_mbutton ); - - gl_history.tv = atari_treeview_create( - history_global_get_tree_flags(), - gl_history.window - ); - if (gl_history.tv == NULL) { - /* handle it properly, clean up previous allocs */ - LOG(("Failed to allocate history treeview")); - return( false ); - } + wind_set_str(handle, WF_NAME, (char*)messages_get("GlobalHistory")); - history_global_initialise( gl_history.tv->tree, "dir.png" ); - gl_history.init = true; - } + gl_history.tv = atari_treeview_create(history_global_get_tree_flags(), + gl_history.window, handle_event); + + gemtk_wm_unlink(gl_history.window); + + if (gl_history.tv == NULL) { + /* TODO: handle it properly, clean up previous allocs */ + LOG(("Failed to allocate history treeview")); + return( false ); + } + + history_global_initialise(gl_history.tv->tree, "dir.png"); + gl_history.init = true; + } return( true ); } void global_history_destroy( void ) { + if( gl_history.init == false ) { return; } @@ -126,12 +146,18 @@ void global_history_destroy( void ) history_global_cleanup(); if( gl_history.open ) global_history_close(); - WindDelete( gl_history.window ); + wind_delete(gemtk_wm_get_handle(gl_history.window)); + gemtk_wm_remove(gl_history.window); gl_history.window = NULL; - atari_treeview_destroy( gl_history.tv ); + atari_treeview_destroy(gl_history.tv); gl_history.init = false; } LOG(("done")); } +void global_history_redraw( void )
+{
+ atari_treeview_redraw( gl_history.tv );
+} + |