Go to the documentation of this file.00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 #include "QFitWidget.h"
00015 
00016 #include <QContextMenuEvent>
00017 #include <QCloseEvent>
00018 #include <QtCore/QSignalMapper>
00019 #include <QMenu>
00020 
00021 #include "QFitItem.h"
00022 
00023 #include "TObject.h"
00024 #include "TGo4FitPanel.h"
00025 
00026 QFitWidget::QFitWidget( QWidget* parent, const char* name, Qt::WindowFlags fl ) :
00027    QWidget( parent, fl )
00028 {
00029    setObjectName(name ? name : "QFitWidget");
00030    resize( QSize(533, 405).expandedTo(minimumSizeHint()) );
00031 
00032    fxPanel = 0;
00033    fxItem = 0;
00034    fbFillWidget = false;
00035 }
00036 
00037 QFitWidget::~QFitWidget()
00038 {
00039 }
00040 
00041 void QFitWidget::SetItem(TGo4FitPanel* panel, QFitItem * item)
00042 {
00043    fxPanel = panel;
00044    fxItem = item;
00045    FillWidget();
00046 }
00047 
00048 QFitItem* QFitWidget::GetItem()
00049 {
00050    return fxItem;
00051 }
00052 
00053 TObject * QFitWidget::GetObject()
00054 {
00055    if(GetItem()) return GetItem()->Object();
00056             else return 0;
00057 }
00058 
00059 TGo4Fitter* QFitWidget::GetFitter()
00060 {
00061    return fxPanel==0 ? 0 : fxPanel->GetFitter();
00062 }
00063 
00064 void QFitWidget::FillWidget()
00065 {
00066   fbFillWidget = true;
00067   FillSpecificData();
00068   fbFillWidget = false;
00069 }
00070 
00071 void QFitWidget::FillSpecificData()
00072 {
00073 }
00074 
00075 void QFitWidget::contextMenuEvent(QContextMenuEvent* ev)
00076 {
00077   if ((GetItem()==0) || (fxPanel==0)) return;
00078 
00079   QSignalMapper map(this);
00080   connect(&map, SIGNAL(mapped(int)), fxPanel, SLOT(ItemMenuItemSelected(int)));
00081 
00082   QMenu menu(this);
00083 
00084   if (fxPanel->FillPopupForItem(GetItem(),&menu, &map)) {
00085     fxPanel->CurrFitItem = GetItem();
00086      menu.exec(ev->globalPos());
00087      fxPanel->CurrFitItem = 0;
00088   }
00089 }
00090 
00091 void QFitWidget::UpdateWidgetItem(bool trace)
00092 {
00093    if (fxPanel!=0)
00094      fxPanel->UpdateItem(GetItem(), trace);
00095 }
00096 
00097 void QFitWidget::SetWidgetItemText(bool trace)
00098 {
00099    if (fxPanel!=0)
00100       fxPanel->SetItemText(GetItem(), trace);
00101 }
00102 
00103 void QFitWidget::UpdateItemsOfType(int typ, bool allitems)
00104 {
00105    if (fxPanel!=0)
00106       fxPanel->UpdateItemsOfType(typ, allitems ? 0 : GetItem());
00107 }