MultyCell StatusBar.
authorDmintriy L. Kruglikov <master@shadow.breg.pl.ua>
Fri, 27 Jun 2008 13:53:15 +0000 (16:53 +0300)
committerDmintriy L. Kruglikov <master@shadow.breg.pl.ua>
Fri, 27 Jun 2008 13:53:15 +0000 (16:53 +0300)
HardCoded Menu and Language sekector.

src/ananas/ananasmainform.cpp
src/ananas/ananasmainform.h
src/ananas/main.cpp
src/lib/amenubar.cpp
src/lib/amenubar.h
src/plugins/engine.cpp
src/plugins/engine.h

index 6a72de1..ba95cee 100644 (file)
 #include <qapplication.h>
 #include <qaction.h>
 #include <qdir.h>
+#include <qtextcodec.h>
 
 #include "ananasmainform.h"
 
 #include "ananas.h"
 #include "aminicalc.h"
 #include "ananas.h"
+#include "binreloc.h"
 
 MainForm *mainform=NULL;
 QWorkspace *mainformws=NULL;
@@ -66,6 +68,26 @@ MainForm::MainForm( QWidget* parent, const char* name, WFlags fl )
     ws->setScrollBarsEnabled( TRUE );
     setCentralWidget( vb );
     statusBar()->setName("statusbar");
+
+    statusLabel1 = new QLabel(" Status ", this);
+    statusLabel1->setMinimumSize(statusLabel1->sizeHint());
+
+    statusLabel2 = new QLabel(tr(" Info1 "),this);
+    statusLabel2->setAlignment(AlignHCenter);
+    statusLabel2->setMinimumSize(statusLabel2->sizeHint());
+    statusLabel3 = new QLabel(tr(" Info2 "), this);
+    statusLabel3->setAlignment(AlignHCenter);
+    statusLabel3->setMinimumSize(statusLabel3->sizeHint());
+    //statusLabel3->clear();
+    statusLabel4 = new QLabel(tr(" Icon "), this);
+    statusLabel4->setMinimumSize(statusLabel4->sizeHint());
+    statusLabel4->setAlignment(AlignHCenter);
+    statusLabel4->setPixmap(rcIcon("ru.png"));
+    statusBar()->addWidget(statusLabel1, 1);
+    statusBar()->addWidget(statusLabel2);
+    statusBar()->addWidget(statusLabel3);
+    statusBar()->addWidget(statusLabel4, 0, true);
+
     if ( !name ) setName( "mainwindow" );
     engine_settings.insertSearchPath( QSettings::Unix, QString(QDir::homeDirPath())+QString("/.ananas"));
     engine_settings.insertSearchPath( QSettings::Windows, "/ananasgroup/ananas" );
@@ -113,6 +135,8 @@ MainForm::initEngine()
     engine.ws = ws;
     engine.wl = wl;
     connect( &engine, SIGNAL( statusMessage( const QString & ) ), this, SLOT( statusMessage( const QString & ) ) );
+    connect( &engine, SIGNAL( statusMessage( const QString &, const int & ) ), this, SLOT( statusMessage( const QString & , const int & ) ) );
+
     md = engine.md;
     if ( !md ) return false;
     initMenuBar();
@@ -125,21 +149,51 @@ void
 MainForm::initMenuBar()
 {
        QPopupMenu *m;
-       QPopupMenu *s;
+       QPopupMenu *tools;
+       QPopupMenu *p;
+
        m = new QPopupMenu();
-       s = new QPopupMenu();
+       tools = new QPopupMenu();
+       lang = new QPopupMenu();
+       lang->setCheckable( TRUE );
+       // TODO!!! Check *qm files and complit list
+
+       statusLabel3->setText(QString("%1\n").arg(QTextCodec::locale()));
+       e_lang = lang->insertItem( tr("EN"), 0, 0);
+       lang->setItemChecked( e_lang, true );
+       r_lang = lang->insertItem(  tr("RU"), 1, 1);
+       lang->setItemChecked( r_lang, false );
+       u_lang = lang->insertItem( tr("UA"), 2, 2);
+       lang->setItemChecked( u_lang, false );
+
+       connect(lang, SIGNAL(activated(int)), this, SLOT(setLang(int)));
+
        windowsMenu = new QPopupMenu();
-       connect( windowsMenu, SIGNAL( aboutToShow() ),
+       connect( windowsMenu, SIGNAL( aboutToShow() ),
             this, SLOT( windowsMenuAboutToShow() ) );
+       systemMenu = new QPopupMenu();
+       systemMenu->insertItem( tr( "Login As..." ), this, SLOT( loginAs() ));
+       systemMenu->insertItem( "&Language Selector", lang );
+       systemMenu->insertSeparator();
+       systemMenu->insertItem(rcIcon("ananas-32x32.png"), tr( "Exit" ), qApp, SLOT( closeAllWindows() ), CTRL+Key_Q);
+
        m->insertItem(rcIcon("ananas-32x32.png"), tr( "About" ), this, SLOT( helpAbout() ), Key_F11);
-       s->insertItem(rcIcon("calc.png"), tr( "Calculator" ), this, SLOT( miniCalc() ), Key_F10);
-       s->insertItem(rcIcon("calendar.png"), tr( "Calendar" ), this, SLOT( ShowCalendar() ), Key_F12);
+       tools->insertItem(rcIcon("calc.png"), tr( "Calculator" ), this, SLOT( miniCalc() ), Key_F10);
+       tools->insertItem(rcIcon("calendar.png"), tr( "Calendar" ), this, SLOT( ShowCalendar() ), Key_F12);
        //windowsMenu->insertItem(rcIcon("ananas-32x32.png"), tr( "Windows" ), this, SLOT( windowsMenuAboutToShow() ));
         menubar = new AMenuBar( md, this, "menubar");
-       InsertMainMenu( tr("&Tools"), s );
+       InsertMainMenu( tr("&Tools"), tools );
        InsertMainMenu( tr("&Help"), m );
-       InsertMainMenu( tr("&Windows"), windowsMenu );
+       InsertMainMenu( tr("&Windows"), windowsMenu );
+       menuBar()->insertItem(tr("&System"),systemMenu,0,0);
        menuBar()->show();
+
+}
+
+void
+MainForm::loginAs()
+{
+       statusBar()->message( "Try again later...", 3000 );
 }
 
 void
@@ -180,7 +234,6 @@ MainForm::helpAbout()
 
 void MainForm::InsertMainMenu(QString text, QObject *pop){
     menubar->insertItem(text, (QPopupMenu *) pop);
-
 }
 
 
@@ -190,6 +243,7 @@ MainForm::Exit(int code)
 
        qApp->exit(code);
 }
+
 void
 MainForm::close()
 {
@@ -205,11 +259,38 @@ MainForm::close()
 }
 
 void
+MainForm::statusMessage( const QString &msg, const int &pos )
+{
+       switch ( pos )
+       {
+               case 0:
+                       statusBar()->message( msg, 3000);
+                       break;
+               case 1:
+                       statusLabel1->setText( msg );
+                       break;
+               case 2:
+                       statusLabel2->setText( msg );
+                       break;
+               case 3:
+                       statusLabel3->setText( msg );
+                       break;
+               default:
+                       statusBar()->message( msg, 3000 );
+                       break;
+       }
+
+}
+
+
+void
 MainForm::statusMessage( const QString &msg )
 {
-       statusBar()->message( msg );
+       //statusBar()->message( msg );
+       statusLabel1->setText( msg );
 }
 
+
 void
 MainForm::setBackground( const QPixmap &pix ){
        ws->setBackgroundPixmap( pix );
@@ -240,6 +321,14 @@ MainForm::~MainForm()
 void MainForm::languageChange()
 {
     setCaption(QString( tr("Ananas")+" "+ananas_libversion() )+": "+md->info( md_info_name ) );
+
+    int i;
+    for (i=0; i < menuBar()->count(); ++i)
+    {
+       menuBar()->changeItem(i, QString(tr(menuBar()->text(i))));
+
+    }
+    //menuBar()->changeItem(6, QString( tr("&Windows")));
 //    setCaption( tr( "Ananas VERSION" ) );
 }
 
@@ -274,6 +363,7 @@ void MainForm::windowsMenuAboutToShow()
     }while( i < count );
 }
 
+
 void MainForm::tileHorizontal()
 {
     // primitive horizontal tiling
@@ -316,6 +406,62 @@ void MainForm::windowsMenuActivated( int id )
 }
 
 /*
+ *  Language selector
+ */
+void MainForm::setLang( int lang_id )
+{
+       QString langdir;
+       QString a_lang;
+       extern QTranslator tr_app;
+       extern QTranslator tr_lib;
+       extern QTranslator tr_plugins;
+       qApp->removeTranslator( &tr_app );
+       qApp->removeTranslator( &tr_lib );
+       qApp->removeTranslator( &tr_plugins );
+
+#ifdef _Windows
+       langdir = qApp->applicationDirPath()+"/translations/";
+#else
+       //langdir = QString("/usr/share/ananas/translations/");
+       langdir = QString(br_find_data_dir("/usr/share")) + QString("/ananas/translations/");
+#endif
+       if (lang_id == 0)
+       {
+               lang->setItemChecked( 0, true );
+               lang->setItemChecked( 1, false );
+               lang->setItemChecked( 2, false );
+               a_lang = "en";
+       }
+       if (lang_id == 1)
+       {
+               lang->setItemChecked( 0, false );
+               lang->setItemChecked( 1, true );
+               lang->setItemChecked( 2, false );
+               a_lang = "ru";
+       }
+       if (lang_id == 2)
+       {
+               lang->setItemChecked( 0, false );
+               lang->setItemChecked( 1, false );
+               lang->setItemChecked( 2, true );
+               a_lang = "ua";
+       }
+
+       if (!tr_app.load("ananas-engine-"+a_lang.lower()+".qm", langdir)) printf("No tr_app.load\n");
+
+       if (!tr_lib.load("ananas-lib-"+a_lang.lower()+".qm", langdir)) printf("No tr_lib.load\n");
+
+       if (!tr_plugins.load("ananas-plugins-"+a_lang.lower()+".qm", langdir)) printf("No tr_plug.load\n");
+
+       qApp->installTranslator( &tr_app );
+       qApp->installTranslator( &tr_lib );
+       qApp->installTranslator( &tr_plugins );
+
+       languageChange();
+       statusBar()->message( QString(tr("Ananas"))+ QString(tr(" : %1")).arg(lang->text(lang_id)), 2000 );
+}
+
+/*
  *  Open a Calculator Widget
  */
 void
@@ -332,6 +478,6 @@ void
 MainForm::ShowCalendar()
 {
        PopupCalendar *calendar = new PopupCalendar(QDate::currentDate(),
-                              QPoint(ws->width() / 2, ws->height() / 2 ), ws, "");
+               QPoint(ws->width() / 2, ws->height() / 2 ), ws, "");
        calendar->show();
 }
index f4af300..ee9a4b8 100644 (file)
@@ -41,6 +41,8 @@
 #include <qvbox.h>
 #include <qapplication.h>
 #include <qsettings.h>
+#include <qtranslator.h>
+#include <qlabel.h>
 #include "ananas.h"
 #include "amenubar.h"
 #include "atoolbar.h"
@@ -73,13 +75,20 @@ public:
        aEngine engine;
        aCfg *md;
 
+       int e_lang, r_lang, u_lang;
        AMenuBar* menubar;
        QPopupMenu *windowsMenu;
+       QPopupMenu *systemMenu;
+       QPopupMenu *lang;
        QWorkspace* ws;
        aWindowsList* wl;
        MiniCalc* calc;
        PopupCalendar* calendar;
        QString rcfile;
+       QLabel *statusLabel1;
+       QLabel *statusLabel2;
+       QLabel *statusLabel3;
+       QLabel *statusLabel4;
 
 public slots:
        bool init();
@@ -93,11 +102,15 @@ public slots:
        void helpAbout();
        void miniCalc();
        void ShowCalendar();
+       void statusMessage( const QString &msg, const int &pos );
        void statusMessage( const QString &msg );
+
        void windowsMenuAboutToShow();
        void windowsMenuActivated( int id );
+       void setLang( int lang_id );
        void tileHorizontal();
        void setBackground( const QPixmap &pix );
+       void loginAs();
 
 protected:
        protected slots:
index 577234e..65edb60 100644 (file)
@@ -39,8 +39,8 @@
 #include "binreloc.h"
 
 //QApplication *application = 0;
-QTranslator *translator = 0, tr_app(0), tr_lib(0), tr_plugins(0);
-QString lang="en", 
+extern QTranslator *translator = 0, tr_app(0), tr_lib(0), tr_plugins(0);
+QString lang="en",
        rcfile="",
        username="",
        userpassword="";
@@ -51,13 +51,13 @@ int setTranslator(QString lang)
 #ifdef _Windows
        langdir = qApp->applicationDirPath()+"/translations/";
 #else
-       BrInitError error; 
-       if (br_init_lib(&error) == 0 && error != BR_INIT_ERROR_DISABLED) { 
+       BrInitError error;
+       if (br_init_lib(&error) == 0 && error != BR_INIT_ERROR_DISABLED) {
                aLog::print(aLog::MT_INFO, QObject::tr("Warning: BinReloc failed to initialize (error code %1)\n").arg(error));
                aLog::print(aLog::MT_INFO, QObject::tr("Will fallback to hardcoded default path.\n"));
-       } 
+       }
        aLog::print(aLog::MT_DEBUG, QObject::tr("setTranslator - BinReloc path to data dir is %1.\n").arg( br_find_data_dir("/usr/share") ));
-       
+
        langdir = QString(br_find_data_dir("/usr/share")) + QString("/ananas/translations/");
 #endif
        tr_app.load( langdir+"ananas-engine-"+lang.lower()+".qm",".");
@@ -66,7 +66,7 @@ int setTranslator(QString lang)
        return 0;
 }
 
-int 
+int
 parseCommandLine( int argc, char **argv )
 {
        QString param, name, value;
@@ -80,7 +80,7 @@ parseCommandLine( int argc, char **argv )
        }
         lang = locale;
         setTranslator( lang );
-//     printf("locale=%s\n", locale ); 
+//     printf("locale=%s\n", locale );
        QString str_ru=QString::null, str_en=QString::null;
        bool lang_setted = false;
        bool help_setted = false;
@@ -95,12 +95,12 @@ parseCommandLine( int argc, char **argv )
                    str_ru = "Использование: ananas [--help] [--lang=<LANG>] [--rc=<RC_PATH>]\n";
                    str_ru+= "LANG=ru|en\n";
                    str_ru+= "RC_PATH=путь к *.rc файлу описания бизнес схемы\n";
-                           
+
                    str_en = "Usage: ananas [--help] [--lang=<LANG>] [--rc=<RC_PATH>]\n";
                    str_en+= "LANG=ru|en\n";
                    str_en+= "RC_PATH=path to *.rc file of paticular business scheme\n";
                    help_setted = true;
-                           
+
            }
            if (name == "--lang") {
                lang = value;
@@ -120,7 +120,7 @@ parseCommandLine( int argc, char **argv )
                        printf("%s",str_en.ascii());
                }
                return 1;
-       }       
+       }
        return 0;
 }
 
@@ -134,7 +134,7 @@ int main( int argc, char ** argv )
        int rc = 1;
        bool ok;
        QPixmap pixmap;
-       BrInitError error; 
+       BrInitError error;
 
        QTextCodec::setCodecForCStrings( QTextCodec::codecForName("UTF8") );
        if ( parseCommandLine( qApp->argc(), qApp->argv() ) ) return 1;
@@ -147,30 +147,30 @@ int main( int argc, char ** argv )
        pixmap = QPixmap::fromMimeSource( qApp->applicationDirPath()+"/engine-splash-"+lang+".png" );
        qApp->addLibraryPath( qApp->applicationDirPath() );
 #else
-       if (br_init_lib(&error) == 0 && error != BR_INIT_ERROR_DISABLED) { 
+       if (br_init_lib(&error) == 0 && error != BR_INIT_ERROR_DISABLED) {
                aLog::print(aLog::MT_INFO, QObject::tr("Warning: BinReloc failed to initialize (error code %1)\n").arg(error));
                aLog::print(aLog::MT_INFO, QObject::tr("Will fallback to hardcoded default path.\n"));
-       } 
+       }
        aLog::print(aLog::MT_DEBUG, QObject::tr("main - BinReloc path to data dir is %1.\n").arg( br_find_data_dir("/usr/share") ));
        aLog::print(aLog::MT_DEBUG, QObject::tr("main - BinReloc path to lib dir is %1.\n").arg( br_find_data_dir("/usr/lib") ));
-       
+
        pixmap = QPixmap::fromMimeSource( QString(br_find_data_dir("/usr/share") ) + "/ananas/designer/locale/engine-splash-"+lang+".png");
        qApp->addLibraryPath( QString( br_find_lib_dir("/usr/lib")) + "/ananas/qt3plugins" );
-       
+
     QStringList list = a.libraryPaths();
     QString libPath = "";
     QStringList::Iterator it = list.begin();
     while( it != list.end() ) {
         libPath += *it+":";
         ++it;
-    }  
+    }
        aLog::print(aLog::MT_DEBUG, QString("main - qt library path is '%1'\n").arg( libPath));
 #endif
-       printf("extensions: \n%s\n",( const char *) AExtensionFactory::keys().join("\n") );     
+       printf("extensions: \n%s\n",( const char *) AExtensionFactory::keys().join("\n") );
 // Test create extension
 //     AExtension *e = AExtensionFactory::create("AExtTest");
 //     if (e) printf("EXT OK\n"); else printf("NO EXT OK\n");
-       
+
        if ( pixmap.isNull() )
                pixmap = QPixmap::fromMimeSource( "engine-splash-en.png" );
        QSplashScreen *splash = new QSplashScreen( pixmap );
@@ -184,7 +184,7 @@ int main( int argc, char ** argv )
 //                 userpassword = dlogin.password;
 //             }
 //             if (dselectdb.rcfile.isEmpty()) return 0;
-               
+
                splash->show();
                splash->message( QObject::tr("Init application"), Qt::AlignBottom, Qt::white );
                MainForm *w = new MainForm( 0, "MainForm");
@@ -209,7 +209,7 @@ int main( int argc, char ** argv )
                }
                aLog::close();
                return rc;
-       } 
+       }
        else
        {
                aLog::close();
index 2a213ae..79231a9 100644 (file)
 
 /******************************************************************
  ******************************************************************/
-
-#include "amenubar.h"
+#include       <qapplication.h>
+#include       <qpopupmenu.h>
+#include       <qmenubar.h>
+#include       "amenubar.h"
 
 
 AMenuBar::AMenuBar( QWidget* parent , const char* name  )
-       :QMenuBar( parent, name ) {
-
+       :QMenuBar( parent, name )
+{
 }
 
 AMenuBar::AMenuBar( aCfg *cfg, QWidget* parent , const char* name  )
@@ -87,8 +89,8 @@ AMenuBar::ReadMenu( QPopupMenu *parent, aCfgItem obj )
        aCfgItem        cobj, apix;
        QPopupMenu      *mparent;
        QString         text, aKey;
-       long id, pid;
-    QPixmap            pix;
+       long            id, pid;
+       QPixmap         pix;
 
        if ( !md )
                return;
@@ -128,16 +130,18 @@ AMenuBar::ReadMenu( QPopupMenu *parent, aCfgItem obj )
 AMenuBar::~AMenuBar(){
 }
 
-int AMenuBar::insertItem ( const QString & text, QPopupMenu * popup, int id, int index ) {
+int AMenuBar::insertItem ( const QString & text, QPopupMenu * popup, int id, int index )
+{
        return QMenuBar::insertItem ( text, popup, id, index);
 };
 
+
 /*
 int
 AMenuBar::insertItem ( const QString & text, const QObject * receiver, const char * member, const QKeySequence & accel, int id , int index ) {
        return QMenuBar::insertItem( text, receiver, member, accel, id, index);
 }
-int 
+int
 AMenuBar::insertItem ( const QPixmap & pixmap, const QObject * receiver, const char * member, const QKeySequence & accel , int id , int index ) {
        return QMenuBar::insertItem ( pixmap, receiver, member, accel,  id, index);
 }
@@ -176,5 +180,5 @@ int AMenuBar::insertItem ( QCustomMenuItem * custom, int id , int index ) {
 };
 int AMenuBar::insertSeparator ( int index ) {
        return QMenuBar::insertSeparator ( index);
-};     
+};
 */
index 2606fee..8c9fc2d 100644 (file)
@@ -33,8 +33,9 @@
 #ifndef AMENUBAR_H
 #define AMENUBAR_H
 
-#include <qmenubar.h>
-
+#include       <qmenubar.h>
+#include       <qpopupmenu.h>
+#include       <qapplication.h>
 #include       "acfg.h"
 
 class  ANANAS_EXPORT AMenuBar : public QMenuBar
@@ -44,6 +45,7 @@ class  ANANAS_EXPORT AMenuBar : public QMenuBar
        private:
        aCfg    *md;
 
+
     public:
        AMenuBar( QWidget* parent = 0, const char* name = 0 );
        AMenuBar( aCfg *cfg, QWidget* parent = 0, const char* name = 0 );
@@ -54,10 +56,9 @@ class  ANANAS_EXPORT AMenuBar : public QMenuBar
 
     public slots:
        void on_Item(){};
-
        int insertItem ( const QString & text, QPopupMenu * popup, int id = -1, int index = -1 );
 /*
-       int insertItem ( const QString & text, const QObject * receiver, const char * member, const QKeySequence & accel = 0, int id = -1, int index = -1 ); 
+       int insertItem ( const QString & text, const QObject * receiver, const char * member, const QKeySequence & accel = 0, int id = -1, int index = -1 );
        int insertItem ( const QPixmap & pixmap, const QObject * receiver, const char * member, const QKeySequence & accel = 0, int id = -1, int index = -1 );
        int insertItem ( const QIconSet & icon, const QPixmap & pixmap, const QObject * receiver, const char * member, const QKeySequence & accel = 0, int id = -1, int index = -1 );
        int insertItem ( const QString & text, int id = -1, int index = -1 );
@@ -71,9 +72,10 @@ class  ANANAS_EXPORT AMenuBar : public QMenuBar
        int insertItem ( const QIconSet & icon, QCustomMenuItem * custom, int id = -1, int index = -1 );
        int insertItem ( QCustomMenuItem * custom, int id = -1, int index = -1 );
        int insertSeparator ( int index = -1 );
-*/     
+*/
 private:
        QIntDict <aCfgItem> cfgItems;
+
 };
 
 
index a6c6aa4..088b223 100644 (file)
@@ -95,7 +95,7 @@ aObjectsFactory::aObjectsFactory( aEngine *e )
 
 //Register extensions classes
        QStringList extlist = AExtensionFactory::keys();
-       for ( int i=0; i<extlist.count(); i++) 
+       for ( int i=0; i<extlist.count(); i++)
            registerClass(extlist[i],extlist[i]);
 }
 
@@ -104,7 +104,7 @@ aObjectsFactory::aObjectsFactory( aEngine *e )
 
 /*!
  *     \~english
- *     Creates script object. Mapping Script name to real name. 
+ *     Creates script object. Mapping Script name to real name.
  *     \~russian
  *     Создает объект. Отображает имена из скрипта в имена объектов библиотеки.
  *     \param className - \~english scripn object name \~russian имя объекта в скрипте \~
@@ -193,7 +193,7 @@ aObjectsFactory::create( const QString &className,
  *     Constructor.
  *\_en
  *\ru
- *     Конструктор. Создает новый объект с именем "sys". Доступ к функциям этого объекта из Ананас.Скрипта возможен примерно так: 
+ *     Конструктор. Создает новый объект с именем "sys". Доступ к функциям этого объекта из Ананас.Скрипта возможен примерно так:
  *     \code
  *     sys.Date(); // текущая дата
  *     sys.OpenForm("DocJournal.Системный журнал.Form.Список документов"); // открывает форму "Список Документов" журнала "Системный журнал"
@@ -209,7 +209,7 @@ aEngine::aEngine():QObject(0,"sys")
 
 
 /*!
- *\en 
+ *\en
  *     Destructor
  *\_en \ru
  *     Деструктор.
@@ -236,7 +236,7 @@ aEngine::init( const QString &rcfile )
 {
 //     QString mGlobal;
        aCfgItem gobj, obj, obj0;
-       QString sysf = 
+       QString sysf =
 //     "function Message( t, msg ){ sys.Message( t, msg );}"
 //     "function StatusMessage( msg ){ sys.StatusMessage( msg );}"
 //     "function Date(){ return sys.Date();}"
@@ -419,8 +419,6 @@ aEngine::Message(int n, const QString &msg)
        cfg_message(n, (const char *) msg.utf8());
 }
 
-
-
 /*!
  *\en
  *     Outputs status messages.
@@ -435,7 +433,22 @@ aEngine::StatusMessage( const QString &msg )
         emit statusMessage( msg );
 }
 
-
+/*!
+ *\en
+ *     Outputs status messages in target label.
+ *\_en \ru
+ *     Вывод сообщений в строке состояния в целевую метку.
+ *     pos модет принимать любые значения.
+ *     Если метка не 1, 2 или 3, то сообщение выводится
+ *     в StatusBar на 3 секунды.
+ *     \param msg - текст сообщения, \param pos - номер метки.
+ *\_ru
+ */
+void
+aEngine::StatusMessage( const QString &msg, const int &pos )
+{
+       emit statusMessage( msg, pos );
+}
 
 /*!
  *\en
@@ -489,7 +502,7 @@ aEngine::on_MenuBar( int id )
  *\en
  *\_en \ru
  *     Вспомогательный метод.
- *     Запускает действие в указанном контексте. Правильная работа не гарантируется (где-то там ошибки есть). 
+ *     Запускает действие в указанном контексте. Правильная работа не гарантируется (где-то там ошибки есть).
  *     \param act - ссылка на объект метаданных, описывающий действие
  *     \param context - контекст выполнения действия.
  *\_ru
@@ -523,7 +536,7 @@ void aEngine::execAction( aCfgItem &act, QObject *context )
                                openEmbedCatalogueEditor(oid, NULL, false); //open to edit
                                break;
                        }
-                       
+
                        openForm(oid, foid, satype, 0, 0, 0 );
                        break;
 /*                     if ( !arg.isEmpty() ) {
@@ -538,7 +551,7 @@ void aEngine::execAction( aCfgItem &act, QObject *context )
                                printf("form already exist,set focus \n");
                                wl->get( foid )->setFocus();
                        }
-                       else 
+                       else
                        {
                                printf("execute action\n");
                        if ( oid )
@@ -608,14 +621,14 @@ aEngine::OpenForm(QString formName, int mode, int ido, aObject* selector, bool m
        aCfgItem        form;
        int             formOwnerId;
        int             formId;
-       
+
        form = md->find( formName );
        if(!form.isNull())
        {
                formOwner = md->parent(md->parent(form));
                if( formOwner.isNull() ) return 0;
                Q_ULLONG idOfObjectToViewInForm = 0;
-               if (selector) 
+               if (selector)
                {
                        idOfObjectToViewInForm = selector->sysValue("id").toULongLong();
                }
@@ -730,7 +743,7 @@ aEngine::openForm(int formOwnerId, int formId, int defaultfor, int mode, ANANAS_
                                //printf("open form for edit %llu\n ",id);
                                break;
                        default:
-                               aLog::print(aLog::MT_ERROR, tr("aEngine open form mode %1 not supported").arg(defaultfor)); 
+                               aLog::print(aLog::MT_ERROR, tr("aEngine open form mode %1 not supported").arg(defaultfor));
                        }
                        connect( this, SIGNAL( event(const QString &, const QString&)),
                                 form, SLOT( on_event(const QString &, const QString&)));
index 3fb2c21..e8c624e 100644 (file)
@@ -57,7 +57,7 @@ class aWidget;
  *     делая доступным работу с объектами зарегистрированного класса из Ананас.Скрипта.
  *     Наследует QSObjectFactory.
  * \~
- */ 
+ */
 class ANANAS_EXPORT aObjectsFactory : public QSObjectFactory
 {
 public:
@@ -78,9 +78,9 @@ class aForm;
  *     \~russian
  *     \brief Определяет программный интерфейс Runtime системы, который используется Ананас скриптом.
  *     Наследует QObject.
- *     
- *     Класс, реализующий обработку и выполнение скриптов, открытие экранных форм, 
- *     предварительную обработку скрипта перед выполнением (для последующего использования русских управляющих инструкций), 
+ *
+ *     Класс, реализующий обработку и выполнение скриптов, открытие экранных форм,
+ *     предварительную обработку скрипта перед выполнением (для последующего использования русских управляющих инструкций),
  *     системные функции получения даты и времени, печати сообщений об ошибках и т.д
  *     \~
  */
@@ -144,7 +144,7 @@ public:
  *     \~
 */
        int             next_obj_id;
-       
+
        aEngine();
         virtual        ~aEngine();
        virtual bool init( const QString &rcfile );
@@ -166,9 +166,10 @@ public slots:
        void Exit();
        void Message(int n, const QString &msg );
        void StatusMessage( const QString &msg );
+       void StatusMessage( const QString &msg, const int &pos );
        void settimer(int sec, QString proc);
        aForm * OpenForm(QString fname, int mode=0, aObject * selecter=0, bool modal=false);
-       aForm * OpenForm(QString fname, int mode, int ido,aObject * selecter=0, bool modal=false);      
+       aForm * OpenForm(QString fname, int mode, int ido,aObject * selecter=0, bool modal=false);
        QVariant value( const QString &name );
        void setValue( const QString &name, QVariant value = QVariant::Invalid );
 
@@ -185,6 +186,7 @@ private slots:
        void on_event( const QString &data );
 signals:
         void statusMessage( const QString &msg );
+       void statusMessage( const QString &msg, const int &pos );
        void event( const QString &source, const QString &data );
 
 private: