Procházet zdrojové kódy

Process XML errors

Kandrashin Denis před 12 roky
rodič
revize
36f601b006

+ 2 - 1
source/fb2code.hpp

@@ -41,6 +41,8 @@ public:
 
     bool isModified() const { return document()->isModified(); }
 
+    void setCursor(int line, int column);
+
 signals:
     void status(const QString &text);
 
@@ -74,7 +76,6 @@ private:
     void lineNumberAreaPaintEvent(QPaintEvent *event);
     int lineNumberAreaWidth();
     void setZoomRatio(qreal ratio);
-    void setCursor(int line, int column);
 
 private:
     QWidget *lineNumberArea;

+ 14 - 0
source/fb2dock.cpp

@@ -57,6 +57,8 @@ FbMainDock::FbMainDock(QWidget *parent)
     connect(m_text->page(), SIGNAL(warning(int,int,QString)), parent, SLOT(warning(int,int,QString)));
     connect(m_text->page(), SIGNAL(error(int,int,QString)), parent, SLOT(error(int,int,QString)));
     connect(m_text->page(), SIGNAL(fatal(int,int,QString)), parent, SLOT(fatal(int,int,QString)));
+    connect(m_text->page(), SIGNAL(error(int,int,QString)), SLOT(error(int,int)));
+    connect(m_text->page(), SIGNAL(fatal(int,int,QString)), SLOT(error(int,int)));
     connect(m_text->page(), SIGNAL(status(QString)), parent, SLOT(status(QString)));
     connect(m_head, SIGNAL(status(QString)), parent, SLOT(status(QString)));
     connect(m_code, SIGNAL(status(QString)), parent, SLOT(status(QString)));
@@ -104,6 +106,7 @@ void FbMainDock::setMode(Fb::Mode mode)
         case Fb::Code: setModeCode(); break;
         case Fb::Html: setModeHtml(); break;
     }
+    m_actions[mode]->setChecked(true);
     emit status(QString());
 }
 
@@ -148,6 +151,12 @@ void FbMainDock::setModeHtml()
     m_code->connectActions(m_tool);
 }
 
+void FbMainDock::error(int row, int col)
+{
+    m_code->setCursor(row, col);
+    setMode(Fb::Code);
+}
+
 bool FbMainDock::load(const QString &filename)
 {
     QFile *file = new QFile(filename);
@@ -189,6 +198,11 @@ bool FbMainDock::isModified() const
     return false;
 }
 
+void FbMainDock::addAction(Fb::Mode mode, QAction *action)
+{
+    m_actions.insert(mode, action);
+}
+
 void FbMainDock::addMenu(QMenu *menu)
 {
     m_menus.append(menu);

+ 4 - 1
source/fb2dock.hpp

@@ -29,13 +29,15 @@ public:
     void switchMode(Fb::Mode mode);
     void setMode(Fb::Mode mode);
     void setTool(QToolBar *tool) { m_tool = tool; }
+    void addAction(Fb::Mode mode, QAction *action);
     void addMenu(QMenu *menu);
     bool isModified() const;
 
 signals:
     void status(const QString &text);
 
-public slots:
+private slots:
+    void error(int row, int col);
 
 private:
     void enableMenu(bool value);
@@ -46,6 +48,7 @@ private:
 
 private:
     QFrame *textFrame;
+    QMap<Fb::Mode, QAction*> m_actions;
     QList<QMenu*> m_menus;
     FbTextEdit *m_text;
     FbHeadEdit *m_head;

+ 4 - 0
source/fb2main.cpp

@@ -435,22 +435,26 @@ void FbMainWindow::createActions()
 
     act = new FbModeAction(mainDock, Fb::Text, FbIcon("x-office-document"), tr("&Text"));
     viewGroup->addAction(act);
+    mainDock->addAction(Fb::Text, act);
     menu->addAction(act);
     tool->addAction(act);
     act->setChecked(true);
 
     act = new FbModeAction(mainDock, Fb::Head, FbIcon("document-properties"), tr("&Head"));
     viewGroup->addAction(act);
+    mainDock->addAction(Fb::Head, act);
     menu->addAction(act);
     tool->addAction(act);
 
     act = new FbModeAction(mainDock, Fb::Code, FbIcon("text-x-generic"), tr("&XML"));
     viewGroup->addAction(act);
+    mainDock->addAction(Fb::Code, act);
     menu->addAction(act);
     tool->addAction(act);
 
 #ifdef QT_DEBUG
     act = new FbModeAction(mainDock, Fb::Html, FbIcon("text-html"), tr("&HTML"));
+    mainDock->addAction(Fb::Html, act);
     viewGroup->addAction(act);
     menu->addAction(act);
 #endif // _DEBUG

+ 1 - 1
source/fb2page.hpp

@@ -47,10 +47,10 @@ public:
     static QUrl createUrl();
 
 signals:
+    void status(const QString &text);
     void warning(int row, int col, const QString &msg);
     void error(int row, int col, const QString &msg);
     void fatal(int row, int col, const QString &msg);
-    void status(const QString &text);
 
 public slots:
     void html(const QString &html, FbStore *store);

+ 1 - 0
source/fb2read.hpp

@@ -21,6 +21,7 @@ public:
 signals:
     void binary(const QString &name, const QByteArray &data);
     void html(const QString &html, FbStore *store);
+    void error();
 
 protected:
     void run();

+ 1 - 1
source/fb2text.cpp

@@ -251,7 +251,7 @@ QAction * FbTextEdit::pAct(QWebPage::WebAction index) const
 
 void FbTextEdit::setAction(Fb::Actions index, QAction *action)
 {
-    m_actions[index] = action;
+    m_actions.insert(index, action);
 }
 
 void FbTextEdit::connectActions(QToolBar *tool)