Imported Upstream version 2~rc2+svn387
authorDimitrios Eftaxiopoulos <eftaxi12@otenet.gr>
Tue, 27 Mar 2012 16:19:36 +0000 (19:19 +0300)
committerDimitrios Eftaxiopoulos <eftaxi12@otenet.gr>
Tue, 27 Mar 2012 16:19:36 +0000 (19:19 +0300)
17 files changed:
CMakeLists.txt
examples/wnd_samples.cpp
include/mgl/qt.h
lang/CMakeLists.txt
lang/setup.py.in
mgllab/data.cpp
mgllab/help.cpp
src/canvas_cf.cpp
texinfo/CMakeLists.txt
todo.txt
udav/help_pnl.cpp
udav/help_pnl.h
udav/newcmd_dlg.cpp
udav/udav_wnd.cpp
udav/udav_wnd.h
widgets/fltk.cpp
widgets/qt.cpp

index 2921bc75b7a4c14e5487280e56c4ca75f8ef0662..4ac51923a697d96efa599c85a492fcd33a9d7e81 100644 (file)
@@ -297,6 +297,7 @@ endif(WIN32)
 if(NOT WIN32)
 set(MGL_DATA_PATH "${CMAKE_INSTALL_PREFIX}/share/mathgl")
 set(MGL_DOC_PATH "${CMAKE_INSTALL_PREFIX}/share/doc/mathgl")
+set(MGL_MAN_PATH "${CMAKE_INSTALL_PREFIX}/share/man")
 set(MGL_FONT_PATH "${MGL_DATA_PATH}/fonts")
 install(DIRECTORY fonts/ DESTINATION ${MGL_FONT_PATH}
                PATTERN ".svn" EXCLUDE
index a2856d2532bd16fe4881f998325b0ebf7c440e0f..97d002461b112120bab17e3677615d135d5c2969 100644 (file)
@@ -34,30 +34,7 @@ void mgls_prepare3v(mglData *ex, mglData *ey, mglData *ez);
 int test_wnd(mglGraph *gr)\r
 {\r
 mgl_set_test_mode(true);\r
-\r
-       gr->SubPlot(2,2,0);\r
-       gr->Rotate(60,70);      gr->Ternary(2);\r
-       gr->Axis();\r
-       gr->Box();\r
-//     gr->SetRotatedText(false);\r
-       gr->Label('t',"A",1);   gr->Label('x',"B",1);\r
-       gr->Label('y',"C",1);   gr->Label('z',"D",1);\r
-\r
-       gr->SubPlot(2,2,1);\r
-       gr->Rotate(60,70);      gr->Ternary(1);\r
-       gr->Axis();\r
-       gr->Box();\r
-       gr->Label('x',"x comp.");\r
-       gr->Label('y',"y comp.");\r
-       gr->Label('t',"t comp.");\r
-\r
-       gr->SubPlot(2,2,3);\r
-       gr->Rotate(60,70);      gr->Ternary(0);\r
-       gr->Axis();\r
        gr->Box();\r
-//     gr->SetRotatedText(false);\r
-       gr->Label('t',"A",1);   gr->Label('x',"X",1);\r
-       gr->Label('y',"Y",1);   gr->Label('z',"Z",1);\r
        return 0;\r
 }\r
 //-----------------------------------------------------------------------------\r
index bf8c97d940a5f4e185972c79f75362ebf0b4c543..17e906e1f82fb206826f4a3e8098a7aec44f335b 100644 (file)
@@ -55,7 +55,7 @@ public:
        inline void setDraw(int (*func)(mglBase *gr, void *par), void *par=0)\r
        {       draw_func = func;       draw_par = par; }\r
        inline void setDraw(mglDraw *dr)\r
-       {       setDraw(mgl_draw_class,(void*)dr);      }\r
+       {       draw = dr;      }\r
        inline void setDraw(int (*draw)(mglGraph *gr))\r
        {       setDraw(mgl_draw_graph,(void*)draw);    }\r
 \r
@@ -144,6 +144,7 @@ protected:
        void *draw_par;         ///< Parameters for drawing function mglCanvasWnd::DrawFunc.\r
        /// Drawing function for window procedure. It should return the number of frames.\r
        int (*draw_func)(mglBase *gr, void *par);\r
+       mglDraw *draw;          ///< Class for drawing -- need to call directly due to inheritance mechanism\r
        QString mousePos;       ///< Last mouse position\r
        QPixmap pic;            ///< Pixmap for drawing (changed by update)\r
        double tet, phi;        ///< Rotation angles\r
index edee957fbf7dcbd48b90ecb84386eae42ad9c660..0db2473f40ff162d26cfc2f32636c75eff1dc48e 100644 (file)
@@ -36,4 +36,5 @@ if(MGL_HAVE_PYTHON)
        )
        add_custom_target(mgl_python_module ALL DEPENDS _mathgl.so mathgl.py)
        install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_BINARY_DIR}/lang/setup.py install --prefix=${CMAKE_INSTALL_PREFIX} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/lang )")
+       set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "mgl.i;numpy.i;setup.py;mgl_wrap.cpp;build;mathgl.pyc")
 endif(MGL_HAVE_PYTHON)
index 98a693df7e9a85c105a07ec4ec76133937933a80..f7bc2bdaa54f06b2fbdd94b55710f762b3401c6e 100644 (file)
@@ -18,6 +18,7 @@ mgl_module = Extension('_mathgl',
     swig_opts=[
 #      "-outdir %s/lang" % binary_dir,
        '-c++',
+       '-threads',
        "-I%s" % binary_dir,
        "-I%s" % source_dir],
     extra_objects=[mgl_lib,mgl_lib_wnd]
index a5e339ce8e589d1fb6934f604fd0b2acc44d6465..7f6bf3b1cb3900aa57897b82222de7dd060f58ea 100644 (file)
@@ -202,9 +202,9 @@ void type_cmd_cb(Fl_Widget *w, void *v)
                static char str[300];   // load help for command\r
                char *docdir;   get_doc_dir(docdir);\r
 #ifdef WIN32\r
-               sprintf(str,"%s\\mgl_en.html\\mgl_en_1.html#%s",docdir,first[val]);\r
+               sprintf(str,"%s\\mgl_en.html#%s",docdir,first[val]);\r
 #else\r
-               sprintf(str,"%s/mgl_en.html/mgl_en_1.html#%s",docdir,first[val]);\r
+               sprintf(str,"%s/mgl_en.html#%s",docdir,first[val]);\r
 #endif\r
                free(docdir);   cmd_dlg.help->load(str);\r
        }\r
@@ -220,9 +220,9 @@ void desc_cmd_cb(Fl_Widget *w, void *v)
        static char str[300];   // load help for command\r
        char *docdir;   get_doc_dir(docdir);\r
 #ifdef WIN32\r
-       sprintf(str,"%s\\mgl_en.html\\mgl_en_1.html#%s",docdir,name);\r
+       sprintf(str,"%s\\mgl_en.html#%s",docdir,name);\r
 #else\r
-       sprintf(str,"%s/mgl_en.html/mgl_en_1.html#%s",docdir,name);\r
+       sprintf(str,"%s/mgl_en.html#%s",docdir,name);\r
 #endif\r
        free(docdir);   cmd_dlg.help->load(str);\r
 }\r
index 825a175dbfdf65e45969de6528f6a1dc6a718fe7..3e2bb448e77f303adedd5df64aaea61178d9b1ed 100644 (file)
@@ -26,9 +26,9 @@ void get_doc_dir(char *&docdir)
        static char str[300];\r
        pref.get("help_dir",docdir,"");\r
 #ifdef WIN32\r
-       sprintf(str,"%s\\mgl_en.html\\mgl_en_1.html",docdir);\r
+       sprintf(str,"%s\\mgl_en.html",docdir);\r
 #else\r
-       sprintf(str,"%s/mgl_en.html/mgl_en_1.html",docdir);\r
+       sprintf(str,"%s/mgl_en.html",docdir);\r
 #endif\r
        FILE *fp = fopen(str,"r");\r
        if(fp)  fclose(fp);\r
@@ -54,9 +54,9 @@ void help_cb(Fl_Widget*, void*v)
        free(buf);\r
        get_doc_dir(buf);\r
 #ifdef WIN32\r
-       sprintf(str,"%s\\mgl_en.html\\mgl_en_1.html#%s",buf,s);\r
+       sprintf(str,"%s\\mgl_en.html#%s",buf,s);\r
 #else\r
-       sprintf(str,"%s/mgl_en.html/mgl_en_1.html#%s",buf,s);\r
+       sprintf(str,"%s/mgl_en.html#%s",buf,s);\r
 #endif\r
        free(buf);      e->hd->load(str);\r
        if(e->rtab)     e->rtab->value(e->ghelp);\r
@@ -69,9 +69,9 @@ void link_cb(Fl_Widget*, void*v)
        char *docdir;\r
        get_doc_dir(docdir);\r
 #ifdef WIN32\r
-       sprintf(str,"%s\\mgl_en.html\\mgl_en_1.html#%s",docdir,e->link_cmd->value());\r
+       sprintf(str,"%s\\mgl_en.html#%s",docdir,e->link_cmd->value());\r
 #else\r
-       sprintf(str,"%s/mgl_en.html/mgl_en_1.html#%s",docdir,e->link_cmd->value());\r
+       sprintf(str,"%s/mgl_en.html#%s",docdir,e->link_cmd->value());\r
 #endif\r
        free(docdir);   e->hd->load(str);\r
        if(e->rtab)     e->rtab->value(e->ghelp);\r
index 453443a4abd5cc40a49871f93927d918bcbee025..9150eb63a5f7925eccb0868341ffe8424f8ca1e0 100644 (file)
@@ -370,7 +370,7 @@ void mgl_mpi_send_(uintptr_t *gr, int *id)  {       mgl_mpi_send(_GR_, *id);        }
 void mgl_mpi_recv_(uintptr_t *gr, int *id)     {       mgl_mpi_recv(_GR_, *id);        }\r
 //-----------------------------------------------------------------------------\r
 void mgl_wnd_set_delay_(uintptr_t *gr, mreal *dt)      {       _GR_->SetDelay(*dt);    }\r
-void mgl_wnd_set_delay(HMGL gr, mreal dt)      {       _Gr_->SetDelay(dt);     }\r
+void mgl_wnd_set_delay(HMGL gr, float dt)      {       _Gr_->SetDelay(dt);     }\r
 //-----------------------------------------------------------------------------\r
 HMEX mgl_create_expr(const char *expr) {       return new mglFormula(expr);    }\r
 void mgl_delete_expr(HMEX ex)  {       delete ex;      }\r
index 7ab2b1e2e0409b0902291f252fa00c0363f4d40c..62e94b5c5887b72d577e7e53554c45e256bd1da8 100644 (file)
@@ -69,7 +69,22 @@ if(MGL_HAVE_DOC)
                        FILES_MATCHING PATTERN ".svn" EXCLUDE
                        PATTERN "CMakeFiles" EXCLUDE
                        PATTERN "*.png"
+                       PATTERN "*.html"
                        PATTERN "*/*.html"
                        PATTERN "./mathgl*.info*"
                        PATTERN "./mathgl*.pdf")
+       install(DIRECTORY ./ DESTINATION ${MGL_MAN_PATH}/man1
+                       FILES_MATCHING PATTERN ".svn" EXCLUDE
+                       PATTERN "CMakeFiles" EXCLUDE
+                       PATTERN "*_en" EXCLUDE
+                       PATTERN "png" EXCLUDE
+                       PATTERN "small" EXCLUDE
+                       PATTERN "*.1")
+       install(DIRECTORY ./ DESTINATION ${MGL_MAN_PATH}/man5
+                       FILES_MATCHING PATTERN ".svn" EXCLUDE
+                       PATTERN "CMakeFiles" EXCLUDE
+                       PATTERN "*_en" EXCLUDE
+                       PATTERN "png" EXCLUDE
+                       PATTERN "small" EXCLUDE
+                       PATTERN "*.5")
 endif(MGL_HAVE_DOC)
index 5551f9ac3fbffb5a23dbc00b336a0156af4ac9b8..8478e7c050138e7f2db5b2a18f03d9b4d2bcdf4e 100644 (file)
--- a/todo.txt
+++ b/todo.txt
@@ -3,8 +3,8 @@ Device 0 (VID=0502 and PID=337d) is UNKNOWN.
 
 ============= NEW  =============
 
-1. Add sample for window in python/octave (like pthread) -- Docs
 2. Add help about cmake into the "Installation and using" -- after build system will be ready
+
 4. Check RunThr() in python
 
 ============= FOR V.2.1 ========
@@ -35,6 +35,7 @@ Device 0 (VID=0502 and PID=337d) is UNKNOWN.
 21. MGL testing system ???
 22. Export to X3D
 23. Try libtcc (TinyCC) as alternative to MGL -- in mgllab???
+24. Use OI & Z for determening {x,y,z} from {xs,ys}. Try to find closest.
 
 ============= UDAV =============
 
index 1589242a26d1bf82d9885cc9f1628a4743539830..e831279ceb117fa8b489cc9c810c692df62f2fb5 100644 (file)
@@ -30,7 +30,7 @@ void raisePanel(QWidget *w);
 //-----------------------------------------------------------------------------
 QWidget *createHlpPanel(QWidget *p)            {       return new HelpPanel(p);        }
 void showHelpMGL(QWidget *hlp,QString s){      ((HelpPanel *)hlp)->showHelp(s);        }
-void showExMGL(QWidget *hlp)                   {       ((HelpPanel *)hlp)->showExamples();     }
+//void showExMGL(QWidget *hlp)                 {       ((HelpPanel *)hlp)->showExamples();     }
 //-----------------------------------------------------------------------------
 HelpPanel::HelpPanel(QWidget *parent) : QWidget(parent)
 {
@@ -48,8 +48,8 @@ HelpPanel::HelpPanel(QWidget *parent) : QWidget(parent)
        connect(entry, SIGNAL(returnPressed()), this, SLOT(showHelp()));
        b = new QPushButton(QPixmap(":/xpm/go-next.png"), tr("Forward"));
        connect(b, SIGNAL(clicked()), help, SLOT(forward()));   a->addWidget(b);
-       b = new QPushButton(QPixmap(":/xpm/help-faq.png"), tr("&Examples"));
-       connect(b, SIGNAL(clicked()), this, SLOT(showExamples()));      a->addWidget(b);
+//     b = new QPushButton(QPixmap(":/xpm/help-faq.png"), tr("&Examples"));
+//     connect(b, SIGNAL(clicked()), this, SLOT(showExamples()));      a->addWidget(b);
        t = new QToolButton(this);      t->setIcon(QPixmap(":/xpm/zoom-in.png"));
        connect(t, SIGNAL(clicked()), this, SLOT(zoomIn()));    a->addWidget(t);
        t = new QToolButton(this);      t->setIcon(QPixmap(":/xpm/zoom-out.png"));
@@ -57,23 +57,23 @@ HelpPanel::HelpPanel(QWidget *parent) : QWidget(parent)
        setWindowTitle(tr("Help"));
 }
 //-----------------------------------------------------------------------------
-void HelpPanel::showExamples()
-{
-       QStringList s;  s<<(pathHelp+"/"+tr("mgl_en")+".html/");
-       help->setSearchPaths(s);
-       setWindowTitle("Examples");     raisePanel(this);
-       help->setSource(tr("mgl_en")+"_2.html");
-}
+// void HelpPanel::showExamples()
+// {
+//     QStringList s;  s<<(pathHelp);
+//     help->setSearchPaths(s);
+//     setWindowTitle("Examples");     raisePanel(this);
+//     help->setSource(tr("mgl_en")+"_2.html");
+// }
 //-----------------------------------------------------------------------------
 void HelpPanel::showHelp(const QString &txt)
 {
        QString cmd=txt;
        raisePanel(this);
-       QStringList s;  s<<(pathHelp+"/"+tr("mgl_en")+".html/");
+       QStringList s;  s<<(pathHelp);
        help->setSearchPaths(s);
        if(cmd.isEmpty())       cmd = entry->text().trimmed();
-       if(cmd.isEmpty())       help->setSource(tr("mgl_en")+"_1.html");
-       else    help->setSource(tr("mgl_en")+"_1.html#"+cmd);
+       if(cmd.isEmpty())       help->setSource(tr("mgl_en")+".html");
+       else    help->setSource(tr("mgl_en")+".html#"+cmd);
        setWindowTitle("Help");
 }
 //-----------------------------------------------------------------------------
index 40cb8fabf70114424f809648e2100d394f2ca43f..132f7ed4b2775d4e3fe9ae3765aca482ac5118cf 100644 (file)
@@ -30,7 +30,7 @@ Q_OBJECT
 public:
        HelpPanel(QWidget *parent = 0);
 public slots:
-       void showExamples();
+//     void showExamples();
        void showHelp(const QString &cmd=QString::null);
        void zoomIn();
        void zoomOut();
index 2ce448ae2c9c08332b62e6e40763c2a3f7ccb16a..0547b4ffc740b83a6c09aef2c99552b62849f7df 100644 (file)
@@ -231,9 +231,9 @@ void NewCmdDialog::nameChanged(int s)
        QString n=name->itemText(s), par, a;
        int k;
        if(n.isEmpty()) return;
-       QStringList ss; ss<<(pathHelp+"/"+tr("mgl_en")+".html/");
+       QStringList ss; ss<<(pathHelp);
        help->setSearchPaths(ss);
-       help->setSource(tr("mgl_en")+"_1.html#"+n);
+       help->setSource(tr("mgl_en")+".html#"+n);
        // clear old
        kind->clear();  kinds.clear();  for(k=0;k<NUM_CH;k++)   argn[k].clear();
        // try to find the keyword
index 239fb26e2f3f5520a81a40db8559c6ced9effb0a..3f70661008889927918a42924f8b739f5a120377 100644 (file)
@@ -290,8 +290,8 @@ void MainWindow::makeMenu()
        connect(a, SIGNAL(triggered()), this, SLOT(showHelp()));
        a->setToolTip(tr("Show help on MGL commands (F1)."));
        a->setShortcut(Qt::Key_F1);     o->addAction(a);
-       a = new QAction(QPixmap(":/xpm/help-faq.png"), tr("&Examples"), this);
-       connect(a, SIGNAL(triggered()), this, SLOT(showExamples()));
+//     a = new QAction(QPixmap(":/xpm/help-faq.png"), tr("&Examples"), this);
+//     connect(a, SIGNAL(triggered()), this, SLOT(showExamples()));
        a->setToolTip(tr("Show examples of MGL usage (Shift+F1)."));
        a->setShortcut(Qt::SHIFT+Qt::Key_F1);   o->addAction(a);
        a = new QAction(QPixmap(":/xpm/help-faq.png"), tr("H&ints"), this);
index cd260a52cbc9299581bfb8dea131fc886b7a8e23..3758cdbcff988b3573db887bd0c2b6354d8d9a43 100644 (file)
@@ -92,7 +92,7 @@ private slots:
        void setAsterix();
        void warnChanged();
        void showHint() {       udavShowHint(this);     }
-       void showExamples()     {       showExMGL(hlp); }
+//     void showExamples()     {       showExMGL(hlp); }
 
        void setCurrentFile(const QString &);
        void setStatus(const QString &txt);
index 8c73ded0df49eca045493ee29c00e868a6d9d8fc..23ecdfe3a3e2f9a006d0736a7ebe8026a83e8221 100644 (file)
@@ -122,7 +122,7 @@ void Fl_MathGL::update()
                gr->Alpha(flag&1);      gr->Light(flag&2);
                if(tet_val)     tet = tet_val->value();
                if(phi_val)     phi = phi_val->value();
-               gr->Zoom(x1,y1,x2,y2);  gr->View(tet,phi);
+               gr->Zoom(x1,y1,x2,y2);  gr->View(phi,tet);
                draw_func(gr, draw_par);        // drawing itself
                const char *buf = gr->Mess.c_str();
                if(*buf)        fl_message("%s",buf);
@@ -142,14 +142,14 @@ int Fl_MathGL::handle(int code)
                const Fl_Menu_Item *m = popup->popup(Fl::event_x(), Fl::event_y(), 0, 0, 0);
                if(m)   m->do_callback(wpar, vpar);
        }
-       if(gr->get(MGL_SHOW_POS) && !zoom && !rotate && code==FL_PUSH && Fl::event_button()==FL_LEFT_MOUSE)
+       else if(gr->get(MGL_SHOW_POS) && !zoom && !rotate && code==FL_PUSH && Fl::event_button()==FL_LEFT_MOUSE)
        {
                mglPoint p = gr->CalcXYZ(Fl::event_x()-x(), Fl::event_y()-y());
                char s[128];
                sprintf(s,"x=%g, y=%g, z=%g",p.x,p.y,p.z);
                draw(); fl_color(FL_BLACK);             fl_draw(s,40,70);
        }
-       if((!rotate && !zoom) || Fl::event_button()!=FL_LEFT_MOUSE)
+       else if((!rotate && !zoom) || Fl::event_button()!=FL_LEFT_MOUSE)
        {
                if(code==FL_FOCUS || code==FL_UNFOCUS)  return 1;
                if(code==FL_KEYUP)
@@ -210,23 +210,25 @@ int Fl_MathGL::handle(int code)
                }
                return 0;
        }
-       if(code==FL_PUSH)       {       xe=x0=Fl::event_x();    ye=y0=Fl::event_y();    }
-       if(code==FL_DRAG)
+       else if(code==FL_PUSH)  {       xe=x0=Fl::event_x();    ye=y0=Fl::event_y();    }
+       else if(code==FL_DRAG)
        {
                xe=Fl::event_x();       ye=Fl::event_y();
-               mreal ff = 240/sqrt(mreal(w()*h()));
+               mreal ff = 240./sqrt(w()*h());
                if(rotate)
                {
-                       phi += int((x0-xe)*ff);
-                       tet += int((y0-ye)*ff);
+                       phi += (x0-xe)*ff;
+                       tet += (y0-ye)*ff;
                        if(phi>180)     phi-=360;               if(phi<-180)    phi+=360;
                        if(tet>180)     tet-=360;               if(tet<-180)    tet+=360;
+                       if(tet_val)     tet_val->value(tet);
+                       if(phi_val)     phi_val->value(phi);
                        x0 = xe;        y0 = ye;
                        update();
                }
                redraw();
        }
-       if(code==FL_RELEASE)
+       else if(code==FL_RELEASE)
        {
                if(zoom)
                {
index 16dabc189b51c534be447d426f6d3f202f4d77e3..1c983efa5f25a5cf263ef9f4a598473229879c19 100644 (file)
@@ -73,7 +73,7 @@ QMathGL::QMathGL(QWidget *parent, Qt::WindowFlags f) : QWidget(parent, f)
 {
        autoResize = false;     draw_par = 0;   draw_func = 0;
        gr = new mglCanvas;             appName = "MathGL";
-       popup = 0;              grBuf = 0;
+       popup = 0;              grBuf = 0;      draw = 0;
        phi = tet = per = 0;
        x1 = y1 = 0;    x2 = y2 = 1;
        alpha = light = zoom = rotate = grid = false;
@@ -198,13 +198,14 @@ void QMathGL::update()
        else    while(thr->isRunning()) qApp->processEvents();
        if(warnMGL)     warnMGL->setText(thr->warn);*/
 
-       if(draw_func)
+       if(draw_func || draw)
        {
                if(gr->get(MGL_CLF_ON_UPD))     gr->DefaultPlotParam();
                gr->Alpha(alpha);       gr->Light(light);
                if(!isHidden()) QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
                setlocale(LC_NUMERIC, "C");     // NOTE: I'm not sure what I should selocale manually???
-               draw_func(gr, draw_par);
+               if(draw_func)   draw_func(gr, draw_par);
+               else    {       mglGraph g(gr); draw->Draw(&g); }
                setlocale(LC_NUMERIC, "");
                if(!isHidden()) QApplication::restoreOverrideCursor();
                emit refreshData();