+MESSAGE(STATUS "=======================================")
+MESSAGE(STATUS "CONFIGURING BBTK PACKAGE ${BBTK_PACKAGE_NAME}")
+
#---------------------------------------------------------------------------
SET(${BBTK_PACKAGE_NAME}_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
#---------------------------------------------------------------------------
#----------------------------------------------------------------------------
# CREATES LIBRARY
+#----------------------------------------------------------------------------
+# TCL WRAPPING FOR KWWIDGETS
+IF(BBTK_USE_KWWIDGETS)
+#MESSAGE(STATUS "****TCL=${${BBTK_PACKAGE_NAME}_CXX_SOURCES_WRAP_TCL}")
+IF(${BBTK_PACKAGE_NAME}_CXX_SOURCES_WRAP_TCL )
+#MESSAGE(STATUS "****TCL OK")
+include("${KWWidgets_CMAKE_DIR}/KWWidgetsWrappingMacros.cmake")
+kwwidgets_wrap_tcl(bb${BBTK_PACKAGE_NAME} LIB_TCL_SRCS ${${BBTK_PACKAGE_NAME}_CXX_SOURCES_WRAP_TCL} "")
+SET(${BBTK_PACKAGE_NAME}_CXX_SOURCES
+ ${${BBTK_PACKAGE_NAME}_CXX_SOURCES}
+ ${LIB_TCL_SRCS})
+ENDIF(${BBTK_PACKAGE_NAME}_CXX_SOURCES_WRAP_TCL)
+ENDIF(BBTK_USE_KWWIDGETS)
+#----------------------------------------------------------------------------
+#MESSAGE(STATUS ${${BBTK_PACKAGE_NAME}_CXX_SOURCES})
+
ADD_LIBRARY(bb${BBTK_PACKAGE_NAME} SHARED
${${BBTK_PACKAGE_NAME}_CXX_SOURCES} ${${BBTK_PACKAGE_NAME}_H_SOURCES}
)
Program: bbtk
Module: $RCSfile: bbtkKWBlackBox.cxx,v $
Language: C++
- Date: $Date: 2008/12/02 08:38:08 $
- Version: $Revision: 1.2 $
+ Date: $Date: 2008/12/02 10:21:40 $
+ Version: $Revision: 1.3 $
=========================================================================*/
/* ---------------------------------------------------------------------
vtkKWBlackBoxDialog* win = vtkKWBlackBoxDialog::New();
show = (Window*) win;
win->bbSetBlackBox( GetThisPointer<KWBlackBox>());
- //bbGetOutputWidget()->GetWidgetName());
- // win->SetName( bbGetInputWinTitle() + " - bbtk (c) CREATIS LRMN" );
- // win->SetWidth( bbGetInputWinWidth() );
- // win->SetHeight( bbGetInputWinHeight() );
KW::GetApplication()->AddWindow((vtkKWWindowBase*)win);
win->Create();
- // std::cout << "TclName='"<<win->GetTclName()<<"'"<<std::endl;
-
- bbUserCreateWidget(win);
- KW::GetApplication()->Script("pack %s -side top -expand yes",
- bbGetOutputWidget()->GetWidgetName());
+ win->SetResizable(0,0);
+ bbUserCreateWidget(win->GetFrame());
+
+ KW::GetApplication()->Script("place %s -x 0 -y 0 -width %d -height %d",
+ bbGetOutputWidget()->GetWidgetName(),
+ bbGetInputWinWidth(),
+ bbGetInputWinHeight());
+
/*
bbGetOutputWidget()->SetParent(win);
bbGetOutputWidget()->Create();
//-------------------------------------------------------------------------
vtkStandardNewMacro( vtkKWBlackBoxDialog );
- vtkCxxRevisionMacro( vtkKWBlackBoxDialog, "$Revision: 1.1 $");
+ vtkCxxRevisionMacro( vtkKWBlackBoxDialog, "$Revision: 1.2 $");
//-------------------------------------------------------------------------
//=========================================================================
- vtkKWBlackBoxDialog::vtkKWBlackBoxDialog()
- : mShown(false)
+vtkKWBlackBoxDialog::vtkKWBlackBoxDialog()
+ : mShown(false)
+{
+ bbtkDebugMessage("kw",9,"vtkKWBlackBoxDialog::vtkKWBlackBoxDialog()"
+ <<std::endl);
+ bbtk::KW::IncNbWindowsAlive();
+ this->mFrame = vtkKWFrame::New();
+}
+//=========================================================================
+ //=========================================================================
+ vtkKWBlackBoxDialog::~vtkKWBlackBoxDialog()
{
- bbtkDebugMessage("kw",9,"vtkKWBlackBoxDialog::vtkKWBlackBoxDialog()"
- <<std::endl);
- bbtk::KW::IncNbWindowsAlive();
+ bbtkDebugMessage("kw",9,"~vtkKWBlackBoxDialog()"<<std::endl);
+ this->mFrame->Delete();
+ bbHide();
+ bbtk::KW::DecNbWindowsAlive();
+ if (!mBox.expired())
+ {
+ mBox.lock()->bbSetWindow(0);
+ }
}
//=========================================================================
+
+//=========================================================================
+void vtkKWBlackBoxDialog::CreateWidget()
+{
+ bbtkDebugMessage("kw",5,"vtkKWBlackBoxDialog::CreateWidget() ["
+ <<bbGetBlackBox()->bbGetFullName()<<"]"<<std::endl);
+ if (this->IsCreated())
+ {
+ vtkErrorMacro("vtkKWBlackBoxDialog already created");
+ return;
+ }
+
+ this->Superclass::CreateWidget();
+ this->SetTitle((bbGetBlackBox()->bbGetInputWinTitle()+" - bbtk (c) CREATIS-LRMN").c_str());
+
+ this->mFrame->SetParent(this);
+ this->mFrame->Create();
+ this->mFrame->SetWidth ( bbGetBlackBox()->bbGetInputWinWidth() );
+ this->mFrame->SetHeight ( bbGetBlackBox()->bbGetInputWinHeight() );
+
+ this->Script("pack %s -side top -expand true",
+ this->mFrame->GetWidgetName());
+}
+//=========================================================================
+
+/*
+//=========================================================================
+void vtkKWBlackBoxDialog::Pack()
+{
+ this->Script("pack %s -side top -expand true",
+ this->mFrame->GetWidgetName());
+}
+//=========================================================================
+*/
+ //=========================================================================
+ void vtkKWBlackBoxDialog::Cancel()
+ {
+ bbtkDebugMessage("kw",9,"vtkKWBlackBoxDialog::Cancel()"<<std::endl);
+ // this->Delete();
+
+ // this->Withdraw();
+ bbHide();
+ this->Done = vtkKWDialog::StatusCanceled;
+ // std::cout << "REFS= "<<this->GetReferenceCount()<<std::endl;
+ // std::cout << "WINS= "<<this->GetApplication()->GetNumberOfWindows ()<<std::endl;
+ // this->Delete();
+
+ }
//=========================================================================
+
+
+//=========================================================================
void vtkKWBlackBoxDialog::bbShow()
{
if (bbIsShown()) return;
}
//=========================================================================
- //=========================================================================
- void vtkKWBlackBoxDialog::Cancel()
- {
- bbtkDebugMessage("kw",9,"vtkKWBlackBoxDialog::Cancel()"<<std::endl);
- // this->Delete();
-
- // this->Withdraw();
- bbHide();
- this->Done = vtkKWDialog::StatusCanceled;
- // std::cout << "REFS= "<<this->GetReferenceCount()<<std::endl;
- // std::cout << "WINS= "<<this->GetApplication()->GetNumberOfWindows ()<<std::endl;
- // this->Delete();
-
- }
- //=========================================================================
-
- //=========================================================================
- vtkKWBlackBoxDialog::~vtkKWBlackBoxDialog()
- {
- bbtkDebugMessage("kw",9,"~vtkKWBlackBoxDialog()"<<std::endl);
- bbHide();
- bbtk::KW::DecNbWindowsAlive();
- if (!mBox.expired())
- {
- mBox.lock()->bbSetWindow(0);
- }
- }
- //=========================================================================
/*
//-------------------------------------------------------------------------
vtkStandardNewMacro( vtkKWBlackBoxFrame );
- vtkCxxRevisionMacro(vtkKWBlackBoxFrame, "$Revision: 1.1 $");
+ vtkCxxRevisionMacro(vtkKWBlackBoxFrame, "$Revision: 1.2 $");
//-------------------------------------------------------------------------
//=========================================================================
vtkKWBlackBoxFrame::vtkKWBlackBoxFrame()
#include "bbtkKWBlackBox.h"
#include "vtkKWDialog.h"
+#include "vtkKWFrame.h"
+
typedef bbtk::KWBlackBox::Pointer BBPointer;
typedef bbtk::KWBlackBox::WeakPointer BBWeakPointer;
mBox.lock()->bbSetWindow(this);
}
virtual BBPointer bbGetBlackBox() { return mBox.lock(); }
+ vtkKWWidget* GetFrame() { return mFrame; }
+ void CreateWidget();
+ // void Pack();
protected:
vtkKWBlackBoxDialog();
~vtkKWBlackBoxDialog();
void operator=(const vtkKWBlackBoxDialog&); // Not implemented.
BBWeakPointer mBox;
bool mShown;
+ vtkKWFrame* mFrame;
};
//==================================================================
+SET( ${BBTK_PACKAGE_NAME}_CXX_SOURCES_WRAP_TCL vtkKWSlicer.cxx )
+
#---------------------------------------------------------------------------
# Include src configuration cmake script
INCLUDE(${BBTK_CMAKE_DIR}/BBTKConfigurePackage_src.cmake)
Program: bbtk
Module: $RCSfile: bbkwLayoutSplit.cxx,v $
Language: C++
- Date: $Date: 2008/11/29 21:41:58 $
- Version: $Revision: 1.1 $
+ Date: $Date: 2008/12/02 10:21:42 $
+ Version: $Revision: 1.2 $
=========================================================================*/
/* ---------------------------------------------------------------------
splitframe->SetFrame1MinimumSize(5);
splitframe->SetFrame2MinimumSize(5);
- splitframe->GetApplication()->Script("pack %s -side left -anchor c -expand y",
+ splitframe->GetApplication()->Script("pack %s -side top -expand y",
splitframe->GetWidgetName());
/*
- splitframe->SetParent(parent);
- splitframe->Create();
- splitframe->SetWidth(400);
- splitframe->SetHeight(200);
splitframe->SetReliefToGroove();
splitframe->SetBorderWidth(2);
splitframe->SetExpandableFrameToBothFrames();
-
- w->SetName( bbtk::std2kw( bbGetInputWinTitle() ) );
- */
- bbCreateWidgetOfInput("Widget1",splitframe);
- bbCreateWidgetOfInput("Widget2",splitframe);
- /*
- vtkKWWidget* w1 = bbGetInputWidget1();
- if (w1)
- {
- w1->SetParent(splitframe);
- w1->Create();
- }
- vtkKWWidget* w2 = bbGetInputWidget2();
- if (w2)
- {
- w2->SetParent(splitframe);
- w2->Create();
- }
*/
+ bbCreateWidgetOfInput("Widget1",splitframe->GetFrame1());
+ bbCreateWidgetOfInput("Widget2",splitframe->GetFrame2());
/*
int orientation=0;
if (orientation==1) { w->SplitHorizontally( w1, w2, 100); }
else { w->SplitVertically( w1, w2, 100); }
- bbSetOutputWidget( w );
*/
}
#include "vtkRenderWindowInteractor.h"
#include "vtkXMLImageDataReader.h"
+#include "vtkKWCornerAnnotationEditor.h"
+
//#include "vtkKWWidgetsPaths.h"
#include "vtkToolkits.h"
#include <vtksys/SystemTools.hxx>
+extern "C" int Bbkw_Init(Tcl_Interp *interp);
+
//namespace bbkw {
//----------------------------------------------------------------------------
vtkStandardNewMacro( vtkKWSlicer );
-vtkCxxRevisionMacro(vtkKWSlicer, "$Revision: 1.2 $");
+vtkCxxRevisionMacro(vtkKWSlicer, "$Revision: 1.3 $");
//----------------------------------------------------------------------------
vtkKWSlicer::vtkKWSlicer()
{
+
+ Bbkw_Init(vtkKWApplication::GetMainInterp ());
+
this->Frame = NULL;
this->RenderWidget = NULL;
this->Image = NULL;
{
this->WindowLevelPresetSelector->Delete();
}
+ if (this->AnnotationEditor)
+ {
+ this->AnnotationEditor->Delete();
+ }
if (this->AnimationWidget)
{
this->AnimationWidget->Delete();
vtkKWApplication *app = this->GetApplication();
// Add a SplitFrame
+ /*
Frame = vtkKWSplitFrame::New();
Frame->SetFrame1MinimumSize(150);
Frame->SetFrame2MinimumSize(250);
app->Script("pack %s -side top -expand yes",// -fill both",
this->Frame->GetWidgetName());
// Add a render widget, attach it to the view frame, and pack
+ */
if (!this->RenderWidget)
{
this->RenderWidget = vtkKWRenderWidget::New();
}
- this->RenderWidget->SetParent(Frame->GetFrame2());
+ this->RenderWidget->SetParent(this); //Frame->GetFrame2());
this->RenderWidget->Create();
this->RenderWidget->CornerAnnotationVisibilityOn();
// this->Script("grid rowconfigure %s 1 -weight 1 -minsize 100",
// this->RenderWidget->GetWidgetName());
- // Create a volume reader
- /*
- vtkXMLImageDataReader *reader = vtkXMLImageDataReader::New();
-
- char data_path[2048];
- sprintf(data_path, "%s/Data/head100x100x47.vti", KWWidgets_EXAMPLES_DIR);
- if (!vtksys::SystemTools::FileExists(data_path))
- {
- sprintf(data_path,
- "%s/..%s/Examples/Data/head100x100x47.vti",
- app->GetInstallationDirectory(), KWWidgets_INSTALL_DATA_DIR);
- }
- reader->SetFileName(data_path);
- */
+
// Create an image viewer
// Use the render window and renderer of the renderwidget
this->RenderWidget->GetRenderWindow()->GetInteractor());
- // Reset the window/level and the camera
- /*
- reader->Update();
- double *range = reader->GetOutput()->GetScalarRange();
- this->ImageViewer->SetColorWindow(range[1] - range[0]);
- this->ImageViewer->SetColorLevel(0.5 * (range[1] + range[0]));
-
- this->RenderWidget->ResetCamera();
- */
// The corner annotation has the ability to parse "tags" and fill
// them with information gathered from other objects.
// For example, let's display the slice and window/level in one corner
ca->SetText(2, "<slice>");
ca->SetText(3, "<window>\n<level>");
+
+
// Create a scale to control the slice
if (!this->SliceScale)
{
this->SliceScale = vtkKWScale::New();
}
- this->SliceScale->SetParent(Frame->GetFrame1());
+ this->SliceScale->SetParent(this); //Frame->GetFrame1());
this->SliceScale->Create();
// this->SliceScale->SetCommand(this, "SetSliceFromScaleCallback");
vtkKWMenuButtonWithSpinButtonsWithLabel *orientation_menubutton =
vtkKWMenuButtonWithSpinButtonsWithLabel::New();
- orientation_menubutton->SetParent(Frame->GetFrame1());
+ orientation_menubutton->SetParent(this); //Frame->GetFrame1());
orientation_menubutton->Create();
orientation_menubutton->SetLabelText("Orientation:");
orientation_menubutton->SetPadX(2);
// Create a window/level preset selector
- /*
vtkKWFrameWithLabel *wl_frame = vtkKWFrameWithLabel::New();
- wl_frame->SetParent(this); //->GetMainPanelFrame());
+ wl_frame->SetParent(this); //Frame->GetFrame1());
wl_frame->Create();
wl_frame->SetLabelText("Window/Level Presets");
-
+ wl_frame->CollapseFrame ();
app->Script("pack %s -side top -anchor nw -expand n -fill x -pady 2",
wl_frame->GetWidgetName());
this->WindowLevelPresetSelector->SetParent(wl_frame->GetFrame());
this->WindowLevelPresetSelector->Create();
this->WindowLevelPresetSelector->ThumbnailColumnVisibilityOn();
-
- this->WindowLevelPresetSelector->SetPresetAddCommand(
- this, "WindowLevelPresetAddCallback");
- this->WindowLevelPresetSelector->SetPresetApplyCommand(
- this, "WindowLevelPresetApplyCallback");
- this->WindowLevelPresetSelector->SetPresetUpdateCommand(
- this, "WindowLevelPresetUpdateCallback");
- this->WindowLevelPresetSelector->SetPresetHasChangedCommand(
- this, "WindowLevelPresetHasChangedCallback");
-
+
+
app->Script("pack %s -side top -anchor nw -expand n -fill x",
this->WindowLevelPresetSelector->GetWidgetName());
- // Create a simple animation widget
+ // Create a corner annotation editor
+ this->AnnotationEditor = vtkKWCornerAnnotationEditor::New();
+ this->AnnotationEditor->SetParent(this);
+ this->AnnotationEditor->Create();
+ this->AnnotationEditor->SetRenderWidget(this->RenderWidget);
+ this->AnnotationEditor->GetFrame()->CollapseFrame ();
+ app->Script("pack %s -side top -anchor nw -expand n -fill x",
+ this->AnnotationEditor->GetWidgetName());
+
+ // Create a simple animation widget
+ /*
vtkKWFrameWithLabel *animation_frame = vtkKWFrameWithLabel::New();
animation_frame->SetParent(this); //->GetMainPanelFrame());
animation_frame->Create();
app->Script("pack %s -side top -anchor nw -expand n -fill x",
this->AnimationWidget->GetWidgetName());
*/
+
this->UpdateSliceRanges();
// Callbacks
this->AddCallbackCommandObserver( menu,
vtkKWMenu::MenuItemInvokedEvent);
+ // this->AddCallbackCommandObserver( this->WindowLevelPresetSelector,
+
+ this->WindowLevelPresetSelector->SetPresetAddCommand(this,
+ "WindowLevelPresetAddCallback");
+ this->WindowLevelPresetSelector->SetPresetApplyCommand(this,
+ "WindowLevelPresetApplyCallback");
+ this->WindowLevelPresetSelector->SetPresetUpdateCommand(
+ this, "WindowLevelPresetUpdateCallback");
+ this->WindowLevelPresetSelector->SetPresetHasChangedCommand(
+ this, "WindowLevelPresetHasChangedCallback");
+
+
// Deallocate local objects
class vtkKWSimpleAnimationWidget;
class vtkKWMenu;
class vtkKWSplitFrame;
-
+class vtkKWCornerAnnotationEditor;
//namespace bbkw {
class vtkKWSlicer : public vtkKWCompositeWidget
vtkKWRenderWidget *RenderWidget;
vtkKWSimpleAnimationWidget *AnimationWidget;
vtkKWMenu *OrientationMenu;
+ vtkKWCornerAnnotationEditor *AnnotationEditor;
+
virtual void UpdateSliceRanges();
private: