/********************************
filecanvas.cpp
Mike MacIntyre, David Boys
Function definitions for Class FileCanvas
last updated : August 9, 2000
*********************************/

#include "filecanvas.h"
#include "PreviewPanel.h"

///// FUNCTION DEFINITIONS /////

// *** FileCanvas Class ***

/**********************************************************************
   Function: FileCanvas::FileCanvas
   Receives: wxWindow *, wxWindowID, const wxPoint&, const wxSize&, int,
   			 vector <wxString> &, PreviewPanel *
   Returns:  N/A (Constructor)
   Description: Constructs a custom wxScrolledWindow,
**********************************************************************/
FileCanvas::FileCanvas(wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size,
					   int icon_size, vector <wxString> & temp, PreviewPanel * preview)
					
	        : wxScrolledWindow( parent, id, pos, size, wxSUNKEN_BORDER),
	     	  temp_selections(temp), preview(preview)

{
    SetBackgroundColour(* wxWHITE);
    temp_selections = temp;
    config_icon_size = icon_size;
}

FileCanvas::~FileCanvas()
{
    for(int i = 0; i < found_files.size(); i++)
        delete (found_files[i]);
}
/**********************************************************************
   Function: FileCanvas::add_panel
   Receives: const wxString &, const wxImage *,  int, int
   Returns:	 void
   Description: Instatiates a new ImagePanel adding it to the vector of
   				ImagePanel pointers
**********************************************************************/
void FileCanvas::add_panel(const wxString & path, const wxImage  *image,  int horizontal_pos, int vertical_pos)
{
	found_files.push_back(new ImagePanel (this, -1, wxPoint(horizontal_pos, vertical_pos),
	                      wxSize(0, 0), wxTAB_TRAVERSAL, path, config_icon_size, temp_selections,
	                      found_files, image, preview));
}

/**********************************************************************
   Function: FileCanvas::panel_width
   Receives: int
   Returns:	 int
   Description: Returns the width of the panel with the given
   				subscript
**********************************************************************/
int FileCanvas::panel_width(int subscript) const
{
    if(subscript >= 0 && subscript < found_files.size())
    {
    	int h, w ;
    	
    	found_files[subscript] -> GetSize(&w, &h);
    	return w;
	}
	
	return 0;
}

/**********************************************************************
   Function: FileCanvas::setscrllbar
   Receives: int
   Returns:	 void
   Description: Sets the scrollbar on the FileCanvas (wxScrolledWindow)
**********************************************************************/
void FileCanvas::setscrllbar(int x)
{
	SetScrollbars(10, 0 , x / 10 + 3, 0);		
}

/**********************************************************************
   Function: FileCanvas::clear_panels
   Receives: N/A (no parameters)
   Returns:	 void
   Description: Clears the panels from the FileCanvas, deallocates
   				memory, and resets the scrollbar.
***********************************************************************/
void FileCanvas::clear_panels()
{
	for(int i = 0; i < found_files.size(); i++)
		delete found_files[i];
		
	found_files.clear();
	
	SetScrollbars(0, 0, 0, 0);
}

//end