]> gitweb.hamatoma.de Git - reqt/commitdiff
reditor work under win with "open file"
authorHamatoma <git.tortouse@hm.f-r-e-i.de>
Sun, 21 Jun 2015 08:43:02 +0000 (10:43 +0200)
committerHamatoma <git.tortouse@hm.f-r-e-i.de>
Sun, 21 Jun 2015 08:43:02 +0000 (10:43 +0200)
appl/reditor/ReEditor.pro [deleted file]
appl/reditor/mainwindow.cpp
appl/reditor/mainwindow.hpp
appl/reditor/reditor.pro [new file with mode: 0644]
base/ReFile.cpp
base/ReFile.hpp

diff --git a/appl/reditor/ReEditor.pro b/appl/reditor/ReEditor.pro
deleted file mode 100644 (file)
index b22b7ab..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-#-------------------------------------------------
-#
-# Project created by QtCreator 2015-06-03T20:56:48
-#
-#-------------------------------------------------
-
-QT       += core gui
-
-greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
-
-TARGET = ReEditor
-TEMPLATE = app
-
-INCLUDEPATH += ../..
-
-SOURCES += main.cpp\
-        ../../gui/ReEdit.cpp \
-        ../../base/ReFile.cpp \
-       mainwindow.cpp
-
-
-HEADERS  += mainwindow.hpp \
-        ../../gui/ReEdit \
-        ../../gui/ReEdit.hpp \
-        ../../base/rebase.hpp \
-        ../../gui/regui.hpp
-
-FORMS    += mainwindow.ui
-
-RESOURCES += \
-        editor.qrc
index dafe856efb9c94ca73cbdaca68d232e33b7ad84c..a9064a0720cc01723ff2d49c6612c24cdd8d9a57 100644 (file)
@@ -13,6 +13,7 @@
 #include "gui/regui.hpp"
 #include "../reditor/mainwindow.hpp"
 #include "ui_mainwindow.h"
+#include <QFileDialog>
 
 MainWindow::MainWindow(QWidget *parent) :
          QMainWindow(parent), ui(new Ui::MainWindow){
@@ -22,9 +23,26 @@ MainWindow::MainWindow(QWidget *parent) :
    edit->setLines(m_file);
    edit->setCursorLine(0);
    edit->paragraphs().load(0, 5, edit);
+   connect(ui->actionOpen, SIGNAL(triggered()), this,
+      SLOT(openFile()));
 
 }
 
 MainWindow::~MainWindow(){
    delete ui;
 }
+
+/**
+ * Calls the file selection dialog.
+ */
+void MainWindow::openFile(){
+    QString name = m_file == NULL ? "" : m_file->filename();
+    name = QFileDialog::getOpenFileName(this, tr("Select File"),
+       name);
+    if (!name.isEmpty()){
+        delete m_file;
+        m_file = new ReFile(name, false);
+        ui->widget->setLines(m_file);
+    }
+
+}
index b4f4380afc2985488c62ab712e201dbe896bd944..eb31030a8861b6da184ba5a4352a350d95197e0e 100644 (file)
@@ -27,6 +27,8 @@ public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
 
+protected slots:
+    void openFile();
 private:
    Ui::MainWindow *ui;
    ReFile* m_file;
diff --git a/appl/reditor/reditor.pro b/appl/reditor/reditor.pro
new file mode 100644 (file)
index 0000000..b22b7ab
--- /dev/null
@@ -0,0 +1,31 @@
+#-------------------------------------------------
+#
+# Project created by QtCreator 2015-06-03T20:56:48
+#
+#-------------------------------------------------
+
+QT       += core gui
+
+greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
+
+TARGET = ReEditor
+TEMPLATE = app
+
+INCLUDEPATH += ../..
+
+SOURCES += main.cpp\
+        ../../gui/ReEdit.cpp \
+        ../../base/ReFile.cpp \
+       mainwindow.cpp
+
+
+HEADERS  += mainwindow.hpp \
+        ../../gui/ReEdit \
+        ../../gui/ReEdit.hpp \
+        ../../base/rebase.hpp \
+        ../../gui/regui.hpp
+
+FORMS    += mainwindow.ui
+
+RESOURCES += \
+        editor.qrc
index 8b5e26d0e808d597b7c4cec655ea1c4df4ebe299..6ff13abbb30550401438defadf12532a338a646c 100644 (file)
 
 #include "base/rebase.hpp"
 
+#if defined __linux__ || defined WIN32
+void* memichr(void* heap, int cc, size_t length){
+   const char* heap2 = reinterpret_cast<const char*>(heap);
+   int cc2 = tolower(cc);
+   void* rc = NULL;
+   while(length > 0){
+      if (cc2 == tolower(*heap2++)){
+         rc = (void*)(heap2 - 1);
+         break;
+      }
+   }
+   return rc;
+}
+
+int memicmp(const void* str1, const void* str2, size_t length){
+   const char* str12 = reinterpret_cast<const char*>(str1);
+   const char* str22 = reinterpret_cast<const char*>(str2);
+   int rc = 0;
+   for (size_t ix = 0; ix < length; ix++){
+      int diff = tolower(*str12++) - tolower(*str22++);
+      if (diff != 0){
+         rc = diff;
+         break;
+      }
+   }
+   return rc;
+}
+#endif /* __linux__ */
+
 /**
  * Constructor.
  */
@@ -191,35 +220,16 @@ void ReFile::close(){
    clear();
    m_file.close();
 }
-#if defined __linux__ || defined WIN32
-void* memichr(void* heap, int cc, size_t length){
-   const char* heap2 = reinterpret_cast<const char*>(heap);
-   int cc2 = tolower(cc);
-   void* rc = NULL;
-   while(length > 0){
-      if (cc2 == tolower(*heap2++)){
-         rc = (void*)(heap2 - 1);
-         break;
-      }
-   }
-   return rc;
-}
 
-int memicmp(const void* str1, const void* str2, size_t length){
-   const char* str12 = reinterpret_cast<const char*>(str1);
-   const char* str22 = reinterpret_cast<const char*>(str2);
-   int rc = 0;
-   for (size_t ix = 0; ix < length; ix++){
-      int diff = tolower(*str12++) - tolower(*str22++);
-      if (diff != 0){
-         rc = diff;
-         break;
-      }
-   }
-   return rc;
+/**
+ * Returns the current filename.
+ *
+ * @return  the filename (with path)
+ */
+QString ReFile::filename() const
+{
+    return m_filename;
 }
-#endif /* __linux__ */
-
 /**
  * Finds the next line with the string.
  *
@@ -290,6 +300,25 @@ bool ReFile::findLine(const QString& includePattern, bool includeIsRegExpr,
    }
    return rc;
 }
+
+int ReFile::hasMoreLines(int index){
+   bool rc = false;
+#if 0
+   if (m_countLines >= 0){
+      rc = index < m_countLines - 1;
+   } else{
+      seek(m_lastLineNo);
+      while (index > m_lastLineNo + 1){
+         if (! nextLine()){
+            break;
+         }
+      }
+      rc = index < m_lastLineNo;
+   }
+#endif
+   return rc;
+}
+
 /**
  * @brief Gets the line behind the current line.
  *
@@ -464,24 +493,6 @@ void ReFile::rewind(){
    m_startOfLine = NULL;
 }
 
-int ReFile::hasMoreLines(int index){
-   bool rc = false;
-#if 0
-   if (m_countLines >= 0){
-      rc = index < m_countLines - 1;
-   } else{
-      seek(m_lastLineNo);
-      while (index > m_lastLineNo + 1){
-         if (! nextLine()){
-            break;
-         }
-      }
-      rc = index < m_lastLineNo;
-   }
-#endif
-   return rc;
-}
-
 /**
  * Sets the internal blocksize.
  *
@@ -493,6 +504,16 @@ void ReFile::setBlocksize(const int64_t& blocksize){
       m_maxLineLength = blocksize / 2;
 }
 
+/**
+ * Sets the current filename.
+ *
+ * @param filename  the new filename
+ */
+void ReFile::setFilename(const QString &filename)
+{
+    m_filename = filename;
+}
+
 /**
  * @brief Returns the name of a directory in the temp dir.
  *
@@ -609,3 +630,4 @@ void ReFile::writeToFile(const char* filename, const char* content,
    }
 }
 
+
index 98b5aabe6db85c0b55a0a184d50ccd889175d7d0..cba9c8ddc3b0375b634ada57227700e2b4eaa6ec 100644 (file)
@@ -57,27 +57,41 @@ public:
 public:
    int64_t blocksize() const;
    void close();
-   bool findLine(const char* toFind, bool ignoreCase, int& lineNo,
-      QString* line);
-   bool findLine(const QString& includePattern, bool includeIsRegExpr,
+       /**
+        * Returns the current line number.
+        * @return the current line number
+        */
+       inline uint32_t currentLineNo() const{
+               return m_currentLineNo;
+       }
+       /** Returns the end of line separator.
+        * @return   the end of line separator. Default: windows: "\r\n" linux: "\n"
+        */
+       const QByteArray& endOfLine() const{
+               return m_endOfLine;
+       }
+       QString filename() const;
+       bool findLine(const char* toFind, bool ignoreCase, int& lineNo,
+               QString* line);
+       bool findLine(const QString& includePattern, bool includeIsRegExpr,
       bool includeIgnoreCase, const QString& excludePattern,
       bool excludeIsRegExpr, bool excludeIgnoreCase, int& lineNo,
       QString* line);
    virtual int hasMoreLines(int index);
-   /**
-    * Returns the current line number.
-    * @return the current line number
-    */
-   inline uint32_t currentLineNo() const{
-      return m_currentLineNo;
-   }
    char* nextLine(int& length);
    char* previousLine(int& length);
    bool read(const QString& filename = "");
    char* remap(int64_t offset, int size, int& length);
    void rewind();
    void setBlocksize(const int64_t& blocksize);
-   bool write(const QString& filename = "");
+       /**Sets the end of line separator.
+        * @param endOfLine  the end of line separator, usually "\n" or "\r\n"
+        */
+       void setEndOfLine(const char* endOfLine){
+               m_endOfLine = endOfLine;
+       }
+       void setFilename(const QString &filename);
+       bool write(const QString& filename = "");
 
 public:
    static QByteArray tempDir(const char* node, const char* parent = NULL,
@@ -87,23 +101,11 @@ public:
    static QByteArray& readFromFile(const char* filename, QByteArray& buffer);
    static void writeToFile(const char* filename, const char* content,
       size_t contentLength = (size_t) - 1, const char* mode = "w");
-   /** Returns the end of line separator.
-    * @return   the end of line separator. Default: windows: "\r\n" linux: "\n"
-    */
-   const QByteArray& endOfLine() const{
-      return m_endOfLine;
-   }
-   /**Sets the end of line separator.
-    * @param endOfLine  the end of line separator, usually "\n" or "\r\n"
-    */
-   void setEndOfLine(const char* endOfLine){
-      m_endOfLine = endOfLine;
-   }
 
 private:
-   QByteArray m_endOfLine;
-   QString m_filename;
-   QFile m_file;
+       QByteArray m_endOfLine;
+       QString m_filename;
+       QFile m_file;
    char* m_block;
    int64_t m_blocksize;
    int64_t m_blockOffset;