Qt Python binding -- #512
This commit is contained in:
parent
0816b49a3f
commit
a3582b4780
@ -547,10 +547,23 @@ CV_IMPL void cvResizeWindow(const char* name, int width, int height )
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO: implement the real one, not a wrapper
|
|
||||||
CV_IMPL int cvCreateTrackbar2( const char* name_bar, const char* window_name, int* val, int count, CvTrackbarCallback2 on_notify, void* userdata )
|
CV_IMPL int cvCreateTrackbar2( const char* name_bar, const char* window_name, int* val, int count, CvTrackbarCallback2 on_notify, void* userdata )
|
||||||
{
|
{
|
||||||
return cvCreateTrackbar( name_bar, window_name, val, count, (CvTrackbarCallback)on_notify );
|
if (!guiMainThread)
|
||||||
|
CV_Error( CV_StsNullPtr, "NULL guiReceiver (please create a window)" );
|
||||||
|
|
||||||
|
QMetaObject::invokeMethod(guiMainThread,
|
||||||
|
"addSlider2",
|
||||||
|
Qt::AutoConnection,
|
||||||
|
Q_ARG(QString, QString(name_bar)),
|
||||||
|
Q_ARG(QString, QString(window_name)),
|
||||||
|
Q_ARG(void*, (void*)val),
|
||||||
|
Q_ARG(int, count),
|
||||||
|
Q_ARG(void*, (void*)on_notify),
|
||||||
|
Q_ARG(void*, (void*)userdata)
|
||||||
|
);
|
||||||
|
|
||||||
|
return 1;//dummy value
|
||||||
}
|
}
|
||||||
|
|
||||||
CV_IMPL int cvStartWindowThread()
|
CV_IMPL int cvStartWindowThread()
|
||||||
@ -1016,6 +1029,34 @@ void GuiReceiver::addButton(QString button_name, int button_type, int initial_bu
|
|||||||
b->addButton( button_name,(CvButtonCallback) on_change, userdata, button_type, initial_button_state);
|
b->addButton( button_name,(CvButtonCallback) on_change, userdata, button_type, initial_button_state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GuiReceiver::addSlider2(QString bar_name, QString window_name, void* value, int count, void* on_change, void *userdata)
|
||||||
|
{
|
||||||
|
QBoxLayout *layout = NULL;
|
||||||
|
QPointer<CvWindow> w;
|
||||||
|
if (window_name != "")
|
||||||
|
{
|
||||||
|
w = icvFindWindowByName( window_name.toLatin1().data() );
|
||||||
|
|
||||||
|
if (!w)
|
||||||
|
return;
|
||||||
|
}else{
|
||||||
|
if (global_control_panel)
|
||||||
|
layout = global_control_panel->myLayout;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPointer<CvTrackbar> t = icvFindTrackbarByName( bar_name.toLatin1().data() , window_name.toLatin1().data(), layout );
|
||||||
|
|
||||||
|
if (t)//trackbar exists
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!value)
|
||||||
|
CV_Error(CV_StsNullPtr, "NULL value pointer" );
|
||||||
|
|
||||||
|
if (count<= 0)//count is the max value of the slider, so must be bigger than 0
|
||||||
|
CV_Error(CV_StsNullPtr, "Max value of the slider must be bigger than 0" );
|
||||||
|
|
||||||
|
CvWindow::addSlider2(w,bar_name,(int*)value,count,(CvTrackbarCallback2) on_change, userdata);
|
||||||
|
}
|
||||||
|
|
||||||
void GuiReceiver::addSlider(QString bar_name, QString window_name, void* value, int count, void* on_change)
|
void GuiReceiver::addSlider(QString bar_name, QString window_name, void* value, int count, void* on_change)
|
||||||
{
|
{
|
||||||
@ -1051,8 +1092,25 @@ int GuiReceiver::start()
|
|||||||
return qApp->exec();
|
return qApp->exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CvTrackbar::CvTrackbar(CvWindow* arg, QString name, int* value, int count, CvTrackbarCallback2 on_change, void* data )
|
||||||
|
{
|
||||||
|
callback = NULL;
|
||||||
|
callback2 = on_change;
|
||||||
|
userdata = data;
|
||||||
|
|
||||||
|
construc_trackbar(arg,name, value, count);
|
||||||
|
}
|
||||||
|
|
||||||
CvTrackbar::CvTrackbar(CvWindow* arg, QString name, int* value, int count, CvTrackbarCallback on_change )
|
CvTrackbar::CvTrackbar(CvWindow* arg, QString name, int* value, int count, CvTrackbarCallback on_change )
|
||||||
|
{
|
||||||
|
callback = on_change;
|
||||||
|
callback2 = NULL;
|
||||||
|
userdata = NULL;
|
||||||
|
|
||||||
|
construc_trackbar(arg,name, value, count);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CvTrackbar::construc_trackbar(CvWindow* arg, QString name, int* value, int count)
|
||||||
{
|
{
|
||||||
type=type_CvTrackbar;
|
type=type_CvTrackbar;
|
||||||
myparent = arg;
|
myparent = arg;
|
||||||
@ -1060,7 +1118,6 @@ CvTrackbar::CvTrackbar(CvWindow* arg, QString name, int* value, int count, CvTra
|
|||||||
setObjectName(name_bar);
|
setObjectName(name_bar);
|
||||||
dataSlider = value;
|
dataSlider = value;
|
||||||
|
|
||||||
callback = on_change;
|
|
||||||
slider = new QSlider(Qt::Horizontal);
|
slider = new QSlider(Qt::Horizontal);
|
||||||
slider->setFocusPolicy(Qt::StrongFocus);
|
slider->setFocusPolicy(Qt::StrongFocus);
|
||||||
slider->setMinimum(0);
|
slider->setMinimum(0);
|
||||||
@ -1135,7 +1192,16 @@ void CvTrackbar::update(int myvalue)
|
|||||||
|
|
||||||
*dataSlider = myvalue;
|
*dataSlider = myvalue;
|
||||||
if (callback)
|
if (callback)
|
||||||
|
{
|
||||||
callback(myvalue);
|
callback(myvalue);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (callback2)
|
||||||
|
{
|
||||||
|
callback2(myvalue,userdata);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CvTrackbar::setLabel(int myvalue)
|
void CvTrackbar::setLabel(int myvalue)
|
||||||
@ -1422,8 +1488,6 @@ CvWindow::CvWindow(QString arg, int arg2)
|
|||||||
|
|
||||||
CvWindow::~CvWindow()
|
CvWindow::~CvWindow()
|
||||||
{
|
{
|
||||||
printf("delete w\n");
|
|
||||||
|
|
||||||
QLayoutItem *child;
|
QLayoutItem *child;
|
||||||
|
|
||||||
if (myGlobalLayout)
|
if (myGlobalLayout)
|
||||||
@ -1664,6 +1728,32 @@ void CvWindow::setMouseCallBack(CvMouseCallback m, void* param)
|
|||||||
myview->setMouseCallBack(m,param);
|
myview->setMouseCallBack(m,param);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//addSlider2 is static
|
||||||
|
void CvWindow::addSlider2(CvWindow* w,QString name, int* value, int count,CvTrackbarCallback2 on_change, void* userdata)
|
||||||
|
{
|
||||||
|
QPointer<CvTrackbar> t = new CvTrackbar(w,name,value, count, on_change, userdata);
|
||||||
|
t->setAlignment(Qt::AlignHCenter);
|
||||||
|
|
||||||
|
QPointer<QBoxLayout> myLayout;
|
||||||
|
|
||||||
|
if (w)
|
||||||
|
{
|
||||||
|
myLayout = w->myBarLayout;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
myLayout = global_control_panel->myLayout;
|
||||||
|
|
||||||
|
//if first one, enable control panel
|
||||||
|
if (myLayout->count() == 0)
|
||||||
|
guiMainThread->enablePropertiesButtonEachWindow();
|
||||||
|
}
|
||||||
|
|
||||||
|
myLayout->insertLayout( myLayout->count(),t);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
//addSlider is static
|
//addSlider is static
|
||||||
void CvWindow::addSlider(CvWindow* w,QString name, int* value, int count,CvTrackbarCallback on_change)
|
void CvWindow::addSlider(CvWindow* w,QString name, int* value, int count,CvTrackbarCallback on_change)
|
||||||
{
|
{
|
||||||
|
@ -127,6 +127,7 @@ public slots:
|
|||||||
void destroyWindow(QString name);
|
void destroyWindow(QString name);
|
||||||
void destroyAllWindow();
|
void destroyAllWindow();
|
||||||
void addSlider(QString trackbar_name, QString window_name, void* value, int count, void* on_change);
|
void addSlider(QString trackbar_name, QString window_name, void* value, int count, void* on_change);
|
||||||
|
void addSlider2(QString trackbar_name, QString window_name, void* value, int count, void* on_change, void *userdata);
|
||||||
void moveWindow(QString name, int x, int y);
|
void moveWindow(QString name, int x, int y);
|
||||||
void resizeWindow(QString name, int width, int height);
|
void resizeWindow(QString name, int width, int height);
|
||||||
void showImage(QString name, void* arr);
|
void showImage(QString name, void* arr);
|
||||||
@ -229,7 +230,8 @@ class CvTrackbar : public CvBar
|
|||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
CvTrackbar(CvWindow* parent, QString name, int* value, int count, CvTrackbarCallback on_change = NULL);
|
CvTrackbar(CvWindow* parent, QString name, int* value, int count, CvTrackbarCallback on_change);
|
||||||
|
CvTrackbar(CvWindow* parent, QString name, int* value, int count, CvTrackbarCallback2 on_change, void* data);
|
||||||
~CvTrackbar();
|
~CvTrackbar();
|
||||||
|
|
||||||
//QString trackbar_name;
|
//QString trackbar_name;
|
||||||
@ -241,10 +243,13 @@ private slots:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
void setLabel(int myvalue);
|
void setLabel(int myvalue);
|
||||||
|
void construc_trackbar(CvWindow* arg, QString name, int* value, int count);
|
||||||
QString createLabel();
|
QString createLabel();
|
||||||
QPointer<QPushButton > label;
|
QPointer<QPushButton > label;
|
||||||
CvTrackbarCallback callback;
|
CvTrackbarCallback callback;
|
||||||
|
CvTrackbarCallback2 callback2;//look like it is use by python binding
|
||||||
int* dataSlider;
|
int* dataSlider;
|
||||||
|
void* userdata;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -281,6 +286,7 @@ public:
|
|||||||
CvWindow(QString arg2, int flag = CV_WINDOW_NORMAL);
|
CvWindow(QString arg2, int flag = CV_WINDOW_NORMAL);
|
||||||
~CvWindow();
|
~CvWindow();
|
||||||
static void addSlider(CvWindow* w,QString name, int* value, int count, CvTrackbarCallback on_change CV_DEFAULT(NULL));
|
static void addSlider(CvWindow* w,QString name, int* value, int count, CvTrackbarCallback on_change CV_DEFAULT(NULL));
|
||||||
|
static void addSlider2(CvWindow* w,QString name, int* value, int count, CvTrackbarCallback2 on_change CV_DEFAULT(NULL), void* userdata CV_DEFAULT(0));
|
||||||
void setMouseCallBack(CvMouseCallback m, void* param);
|
void setMouseCallBack(CvMouseCallback m, void* param);
|
||||||
void updateImage(void* arr);
|
void updateImage(void* arr);
|
||||||
void displayInfo(QString text, int delayms );
|
void displayInfo(QString text, int delayms );
|
||||||
|
Loading…
x
Reference in New Issue
Block a user