const wxPoint& pos,
const wxSize& size,
int min_dim,
- int max_dim,
+ int max_dim,
int number_of_threads)
: wxPanel(parent,id,pos,size),
GimmickView(gimmick, number_of_threads),
- mProgressDialog(0),
+ mProgressDialog(NULL),
mConstructed(false)
{
- GimmickDebugMessage(1,"WxGimmickView::WxGimmickView"
- <<std::endl);
+
+ mViewer = NULL;
+ GimmickDebugMessage(1,"WxGimmickView::WxGimmickView" <<std::endl);
// Sets the current directory to the home dir
mCurrentDirectory = std2wx(gimmick->GetHomeDirectory());
-
// Connect the AddProgress callback
- gimmick->ConnectAddProgressObserver
- ( boost::bind( &WxGimmickView::OnAddProgress , this, _1 ) );
+ gimmick->ConnectAddProgressObserver( boost::bind( &WxGimmickView::OnAddProgress , this, _1 ) );
+
// Create the list of icons (mIcon)
CreateIconList();
+
// Global sizer
msizer = new wxBoxSizer(wxVERTICAL);
+
// Create the tool bar
- CreateToolBar();
+ CreateToolBar( );
msizer->Add( mToolBar, 0, wxGROW, 0);
+
// Split part below toolbar into notebook for views and panel
// for preview, messages...
mSplitter = new wxSplitterWindow( this , -1);
// Notebook
- mNotebook = new wxNotebook(mSplitter,
- -1, wxDefaultPosition, wxDefaultSize, 0);
+ mNotebook = new wxNotebook(mSplitter, -1, wxDefaultPosition, wxDefaultSize, 0);
//Gimmick
mGimmick=gimmick;
mSelectionMinDimension = min_dim;
// Create the views
+
CreateTreeViews();
// Bottom panel
mbottom_sizer->Add(mViewer,1,wxGROW,1);
+
+
// mViewer->Show();
mText = new wxStaticText(mBottomPanel, wxID_ANY, wxT("Welcome to Gimmick!"));
mbottom_sizer->Add(mText,0,wxGROW,0);
-
-
-
+
mBottomPanel->SetSizer(mbottom_sizer);
// Splitting
int bottom_minsize = 50;
mSplitter->SetMinimumPaneSize( bottom_minsize );
- mSplitter->SplitHorizontally( mNotebook, mBottomPanel,
- top_minsize);
+ mSplitter->SplitHorizontally( mNotebook, mBottomPanel, top_minsize);
msizer->Add( mSplitter, 1, wxGROW, 0);
- mProgressDialog=0;
+ mProgressDialog=NULL;
SetSizer( msizer );
SetAutoLayout(true);
+
Layout();
//mListener=new Listener();
//mListener->ConnectObserver(boost::bind( &WxGimmickView::OnDriveMount, this, _1 ) );
{
// stop the viewer before application exit.
mViewer->StopPlayer();
- GimmickDebugMessage(1,"WxGimmickView::~WxGimmickView"
- <<std::endl);
+ GimmickDebugMessage(1,"WxGimmickView::~WxGimmickView" <<std::endl);
delete mIcon;
delete mViewer;
+ mIcon = NULL;
+ mViewer = NULL;
//if(mListener->IsAlive()) { mListener->Delete(); }
}
//======================================================================
-
+
+
+
+void WxGimmickView::AddBtnTool(wxPanel *panel, wxBoxSizer *sizerH, int id, wxString label, int idBitmap, wxString tooltip )
+{
+ wxBoxSizer *sizer;
+ wxBitmapButton *btn;
+ wxBitmap bitmap;
+
+ bitmap = mIcon->GetBitmap(idBitmap);
+ btn = new wxBitmapButton(mToolBar, id, bitmap, wxDefaultPosition, wxSize(50,50) , wxBU_BOTTOM );
+ btn->SetToolTip( tooltip );
+ sizer = new wxBoxSizer(wxVERTICAL);
+ sizer->Add(btn,1,wxGROW,0);
+ sizer->Add(new wxStaticText(mToolBar,-1,label) , 0, wxALL | wxALIGN_CENTER, 3);
+ sizerH->Add( sizer ,1,wxGROW,0);
+}
+
//======================================================================
/// Creates the tool bar
void WxGimmickView::CreateToolBar()
{
+ mToolBar = new wxPanel(this,-1, wxDefaultPosition, wxSize(80,80) );
+ wxBoxSizer *sizerH = new wxBoxSizer(wxHORIZONTAL);
+
+ AddBtnTool(mToolBar, sizerH, TOOL_ADDFILES_ID , _T("Add file(s)") , Icon_page_down , _T("Add one or more file to database") );
+ AddBtnTool(mToolBar, sizerH, TOOL_ADDDIR_ID , _T("Add folder") , Icon_folder_down , _T("Add the content of a folder to database") );
+ AddBtnTool(mToolBar, sizerH, TOOL_ADDDATABASE_ID , _T("Open database") , Icon_database_add , _T("Open a local or distant database") );
+ AddBtnTool(mToolBar, sizerH, TOOL_REMOVE_ID , _T("Remove") , Icon_remove , _T("Remove selected items") );
+ AddBtnTool(mToolBar, sizerH, TOOL_SYNCHRONIZE_ID , _T("Synchronize") , Icon_synchronize , _T("Synchronizes the database with disk") );
+ AddBtnTool(mToolBar, sizerH, TOOL_HELP_ID , _T("Help") , Icon_help , _T("Open help window") );
+ AddBtnTool(mToolBar, sizerH, TOOL_SETTINGS_ID , _T("System settings") , Icon_settings , _T("Allows the modification of various system settings") );
+ AddBtnTool(mToolBar, sizerH, TOOL_TOOLS_ID , _T("Tools") , Icon_tools , _T("Applies tools to images") );
+ AddBtnTool(mToolBar, sizerH, TOOL_CREATEDB_ID , _T("Create database") , Icon_create_database , _T("Create DB from an Attributes Descriptor file") );
+ #if defined(BUILD_PACS)
+ AddBtnTool(mToolBar, sizerH, TOOL_PACS_ID , _T("PACS Connection,"), Icon_create_database , _T("Echo, Find and Get to a PACS") );
+ #endif
+ mToolBar->SetSizer( sizerH );
+ mToolBar->Layout();
+
+/* EED 2021-12-17
+ The wxToolBar depends from wxFrame, in this code it is not the case. In Mac Os is not working !
+ Change the mechanisme from wcToolBar to normal Buttons
long style = wxTB_HORIZONTAL | wxNO_BORDER | wxTB_TEXT;
- mToolBar = new wxToolBar(this,-1,wxDefaultPosition,wxDefaultSize,
- style);
+ mToolBar = new wxToolBar(this,-1,wxDefaultPosition,wxDefaultSize,style);
- mToolAddFile = mToolBar->AddTool( TOOL_ADDFILES_ID,
+ mToolAddFile = mToolBar->AddTool( TOOL_ADDFILES_ID,
_T("Add file(s)"),
mIcon->GetBitmap(Icon_page_down),
_T("Add one or more file to database")
);
- mToolAddDir = mToolBar->AddTool( TOOL_ADDDIR_ID,
+ mToolAddDir = mToolBar->AddTool( TOOL_ADDDIR_ID,
_T("Add folder"),
mIcon->GetBitmap(Icon_folder_down),
_T("Add the content of a folder to database")
);
#endif
//const wxBitmap& bitmap1, const wxString& shortHelpString = "", wxItemKind kind = wxITEM_NORMAL)
+ mToolBar->Realize();
- mToolBar->Realize();
+ */
}
//======================================================================
void WxGimmickView::CreateTreeView( TreeHandler* h)
{
std::string name(h->GetTree().GetAttribute("Name"));
- GimmickMessage(2,"Creating the tree view for '"<<
- name<<"'"<<std::endl);
+ GimmickMessage(2,"Creating the tree view for '"<< name<<"'"<<std::endl);
// Create the WxTreeView
WxTreeView* view = new WxTreeView(h, this, mNotebook, -1);
std::string asking;
std::string dim;
- bool bsingle = isSingle(files.front());
+ bool bsingle = isSingle( files.front() );
int i_dim_out;
mGimmick->GetSetting(SETTINGS_OUTPUT_ASK, asking);
mGimmick->GetSetting(SETTINGS_OUTPUT_DIM, dim);
-
if (asking == "true")
{
// display the output dialog box
}
// Now we read and create the waiting output (vtkImageData * or OutGimmickData *)
readImages(outG, sort_files, Oattr, i_dim_out, zspacing);
+
}
//EED1 2018-08
-//EED1 ReadImageThreaded(sel);
+// ReadImageThreaded(sel);
}
///Reads Images (Threaded)
void WxGimmickView::ReadImageThreaded(const std::vector<tree::Node*>& sel)
{
- GimmickDebugMessage(5,
- "ReadImageThreaded"
- <<std::endl);
+ GimmickDebugMessage(5, "ReadImageThreaded" <<std::endl);
int maxprio = GetMaximalPriority();
int prio = maxprio + 2000;
//==================================================
void WxGimmickView::OnInternalIdle()
{
- if (!mConstructed) return;
+ if (!mConstructed) return;
static bool first_time = true;
+
if (false)
{
first_time = false;
}
// GimmickMessage(1,"WxGimmickView : Refresh viewer"<<std::endl);
// mViewer->StartPlayer();
- if(mViewer)
+ if(mViewer!=NULL)
{
mViewer->RefreshIfNecessary();
}
#else
void WxGimmickView::UpdateWindowUI(long flags)
{
- if(mViewer)
+ if(mViewer!=NULL)
{
- mViewer->RefreshIfNecessary();
+// EED 2018-08-23
+// GL Conflict because window is not showing the fist time
+//EED mViewer->RefreshIfNecessary();
}
}
#endif
//==================================================
void WxGimmickView::ClearSelection()
{
-printf("EED WxGimmickView::ClearSelection Start\n");
pointers.clear();
pointers.push_back(boost::shared_ptr<creaImageIO::ImagePointerHolder>(new ImagePointerHolder(GetDefaultImage())));
//pointers.push_back(new ImagePointerHolder(GetDefaultImage()));
mViewer->SetImageVector(pointers);
mViewer->RefreshIfNecessary();
ResetExtent();
-printf("EED WxGimmickView::ClearSelection End\n");
}
//=================================================
wxString s(wxString::From8BitData(mess));
// std::cout << "Pulse"<<std::endl;
- if(mProgressDialog != 0)
+ if(mProgressDialog != NULL)
{
if (!mProgressDialog->Pulse(s))
{
{
mProgressDialog->Resume();
mProgressDialog->Destroy();
- mProgressDialog = 0;
+ mProgressDialog = NULL;
}
//=================================================
//=================================================
+
+BEGIN_EVENT_TABLE(WxGimmickView, wxPanel)
+ EVT_BUTTON(TOOL_CREATEDB_ID, WxGimmickView::OnCreateDB)
+ EVT_BUTTON(TOOL_ADDFILES_ID, WxGimmickView::OnAddFiles)
+ EVT_BUTTON(TOOL_ADDDIR_ID, WxGimmickView::OnAddDir)
+ EVT_BUTTON(TOOL_ADDDATABASE_ID, WxGimmickView::OnAddDB)
+ EVT_BUTTON(TOOL_REMOVE_ID, WxGimmickView::OnRemove)
+ EVT_BUTTON(TOOL_SYNCHRONIZE_ID, WxGimmickView::OnSynchronize)
+ EVT_BUTTON(TOOL_SETTINGS_ID, WxGimmickView::OnSettings)
+ EVT_BUTTON(TOOL_TOOLS_ID, WxGimmickView::OnTools)
+END_EVENT_TABLE()
+
+
+/*
BEGIN_EVENT_TABLE(WxGimmickView, wxPanel)
EVT_TOOL(TOOL_CREATEDB_ID, WxGimmickView::OnCreateDB)
EVT_TOOL(TOOL_ADDFILES_ID, WxGimmickView::OnAddFiles)
EVT_TOOL(TOOL_SETTINGS_ID, WxGimmickView::OnSettings)
EVT_TOOL(TOOL_TOOLS_ID, WxGimmickView::OnTools)
END_EVENT_TABLE()
+*/
//=================================================
} // EO namespace creaImageIO