Browse Source

Start moving file handling to the KatePart.

git-svn-id: file:///var/svn/tigccpp/trunk@1022 9552661e-59e3-4036-b4f2-dbe53926924f
kevinkofler 17 years ago
parent
commit
b4d7f92cae
4 changed files with 32 additions and 47 deletions
  1. 19 23
      ktigcc/mainform.cpp
  2. 2 3
      ktigcc/srcfile.h
  3. 9 19
      ktigcc/srcfilewin.cpp
  4. 2 2
      ktigcc/srcfilewin.h

+ 19 - 23
ktigcc/mainform.cpp

@@ -557,7 +557,7 @@ void DnDListView::dropEvent(QDropEvent *e) {
               KMessageBox::error(this,QString("Can't open \'%1\'").arg(static_cast<ListViewFile *>(currItem)->fileName));
               goto ignore2;
             }
-            static_cast<ListViewFile *>(currItem)->kateView=reinterpret_cast<KTextEditor::View *>(static_cast<MainForm *>(parent()->parent()->parent())->createView(static_cast<ListViewFile *>(currItem)->fileName,fileText,destCategory));
+            static_cast<ListViewFile *>(currItem)->kateView=reinterpret_cast<KTextEditor::View *>(static_cast<MainForm *>(parent()->parent()->parent())->createView(static_cast<ListViewFile *>(currItem)->fileName,QString::null,destCategory));
             MainForm::createErrorCursorsForSourceFile(currItem);
             // force reloading the text buffer
             if (currentListItem==currItem)
@@ -1693,7 +1693,6 @@ void MainForm::addRecent(const QString &fileName)
 
 Q3ListViewItem * MainForm::openFile(Q3ListViewItem * category, Q3ListViewItem * parent, const QString &fileCaption, const QString &fileName)
 {
-  QString fileText;
   switch (getPathType(fileName)) {
     case PATH_FILE: // OK
       break;
@@ -1705,7 +1704,7 @@ Q3ListViewItem * MainForm::openFile(Q3ListViewItem * category, Q3ListViewItem *
     return NULL;
   }
   if (IS_EDITABLE_CATEGORY(category)) {
-    fileText=loadFileText(fileName);
+    QString fileText=loadFileText(fileName);
     if (fileText.isNull()) {
       KMessageBox::error(this,QString("Can't open \'%1\'").arg(fileName));
       return NULL;
@@ -1728,7 +1727,7 @@ Q3ListViewItem * MainForm::openFile(Q3ListViewItem * category, Q3ListViewItem *
     SYSICON("unknown","filex.png"));
   newFile->fileName=fileName;
   if (IS_EDITABLE_CATEGORY(category)) {
-    newFile->kateView=reinterpret_cast<KTextEditor::View *>(createView(fileName,fileText,category));
+    newFile->kateView=reinterpret_cast<KTextEditor::View *>(createView(fileName,QString::null,category));
     KDirWatch::self()->addFile(fileName);
   }
   fileCount++;
@@ -1764,13 +1763,14 @@ void *MainForm::createView(const QString &fileName, const QString &fileText, Q3L
   if (!factory) qFatal("Failed to load KatePart");
   KTextEditor::Document *doc = (KTextEditor::Document *)
       factory->createPart(0,this,"KTextEditor::Document");
-  // Set the file name for printing.
-  doc->setModified(FALSE);
-  if (doc->openStream("text/plain",fileName))
-    doc->closeStream();
+  // Open the file.
+  doc->setEncoding(preferences.useCalcCharset?"TI-89":QTextCodec::codecForLocale()->name());
+  doc->openUrl(KUrl(fileName));
   // Set text.
-  SET_TEXT_SAFE(doc,fileText);
-  doc->setModified(FALSE);
+  if (!fileText.isNull()) {
+    SET_TEXT_SAFE(doc,fileText);
+    doc->setModified(FALSE);
+  }
   // Create View object.
   KTextEditor::View *newView = (KTextEditor::View *) doc->createView(widgetStack);
   newView->hide();
@@ -1778,12 +1778,14 @@ void *MainForm::createView(const QString &fileName, const QString &fileText, Q3L
   // Set highlighting mode.
   KTextEditor::HighlightingInterface *hliface
     =qobject_cast<KTextEditor::HighlightingInterface*>(newView->document());
+  QString firstLine;
+  if (doc->lines()) firstLine=doc->line(0);
   hliface->setHighlighting(
     (category==qllFilesListItem?
       QLL_HL_MODE:
-    (category==sFilesListItem||(category==hFilesListItem&&!fileText.isNull()&&!fileText.isEmpty()&&fileText[0]=='|'))?
+    (category==sFilesListItem||(category==hFilesListItem&&!firstLine.isEmpty()&&firstLine[0]=='|'))?
       S_HL_MODE:
-    (category==asmFilesListItem||(category==hFilesListItem&&!fileText.isNull()&&!fileText.isEmpty()&&fileText[0]==';'))?
+    (category==asmFilesListItem||(category==hFilesListItem&&!firstLine.isEmpty()&&firstLine[0]==';'))?
       ASM_HL_MODE:
     (category==cFilesListItem||category==hFilesListItem)?
       C_HL_MODE:
@@ -1800,7 +1802,7 @@ void *MainForm::createView(const QString &fileName, const QString &fileText, Q3L
     sendCommand(newView,"set-remove-trailing-space-save 0");
   }
   setTabWidth(newView,
-    (category==sFilesListItem||category==asmFilesListItem||((category==hFilesListItem&&!fileText.isNull()&&!fileText.isEmpty()&&(fileText[0]=='|'||fileText[0]==';'))))?preferences.tabWidthAsm:
+    (category==sFilesListItem||category==asmFilesListItem||((category==hFilesListItem&&!firstLine.isEmpty()&&(firstLine[0]=='|'||firstLine[0]==';'))))?preferences.tabWidthAsm:
     (category==cFilesListItem||category==qllFilesListItem||category==hFilesListItem)?preferences.tabWidthC:
     8
   );
@@ -2090,7 +2092,7 @@ bool MainForm::openProject(const QString &fileName)
                 1:
               0);
     
-    new SourceFile(this,fileName,fileText,
+    new SourceFile(this,fileName,
                    (category==qllFilesListItem)?QLL_ENABLED_HL_MODE:
                    (type==2)?S_ENABLED_HL_MODE:
                    (type==3)?ASM_ENABLED_HL_MODE:
@@ -6289,17 +6291,11 @@ void MainForm::KDirWatch_dirty(const QString &fileName)
               QString("The file \'%1\' has been changed by another program. "
                       "Do you want to reload it?").arg(fileName),"File Changed")
               ==KMessageBox::Yes) {
-          QString fileText=loadFileText(fileName);
-          if (fileText.isNull()) {
-            KMessageBox::error(this,QString("Can't open \'%1\'").arg(fileName));
-            return;
-          }
           static_cast<ListViewFile *>(item)->isNew=FALSE;
-          SET_TEXT_SAFE(static_cast<ListViewFile *>(item)->kateView->document(),fileText);
           static_cast<ListViewFile *>(item)->kateView->document()->setModified(FALSE);
-// FIXME
-//          static_cast<ListViewFile *>(item)->kateView->document()->clearUndo();
-//          static_cast<ListViewFile *>(item)->kateView->document()->clearRedo();
+          disableViewEvents=TRUE;
+          static_cast<ListViewFile *>(item)->kateView->document()->documentReload();
+          disableViewEvents=FALSE;
           updateRightStatusLabel();
         }
         return;

+ 2 - 3
ktigcc/srcfile.h

@@ -41,10 +41,10 @@ class KDirWatch;
 class FunctionDialog;
 
 struct SourceFile : public SourceFileWindow {
-  SourceFile(MainForm *mainfrm, const QString &fn, const QString &ft,
+  SourceFile(MainForm *mainfrm, const QString &fn,
              const QString &hlm, const bool *hle, void *cat,
              bool isc, bool isasm, bool istxt) :
-    SourceFileWindow(), mainForm(mainfrm), fileName(fn), fileText(ft),
+    SourceFileWindow(), mainForm(mainfrm), fileName(fn),
     hlMode(hlm), hlEnabled(hle), category(cat),
     isCFile(isc), isASMFile(isasm), isTextFile(istxt)
   {
@@ -54,7 +54,6 @@ struct SourceFile : public SourceFileWindow {
 
   MainForm *mainForm;
   QString fileName;
-  QString fileText;
   QString hlMode;
   const bool *hlEnabled;
   void *category;

+ 9 - 19
ktigcc/srcfilewin.cpp

@@ -44,6 +44,7 @@
 #include <Q3PopupMenu>
 #include <QEvent>
 #include <QCloseEvent>
+#include <QTextCodec>
 #include <QAssistantClient>
 #include <kparts/factory.h>
 #include <klibloader.h>
@@ -189,9 +190,8 @@ void SourceFileWindow::initBase()
   THIS->kfinddialog = static_cast<KFindDialog *>(NULL);
   THIS->kreplace = static_cast<KReplaceWithSelectionS *>(NULL);
   THIS->kateView=static_cast<KTextEditor::View *>(NULL);
-  THIS->kateView=reinterpret_cast<KTextEditor::View *>(createView(THIS->fileName,THIS->fileText,HL_MODE,
+  THIS->kateView=reinterpret_cast<KTextEditor::View *>(createView(THIS->fileName,HL_MODE,
     THIS->isASMFile?preferences.tabWidthAsm:THIS->isCFile?preferences.tabWidthC:8));
-  THIS->fileText=QString::null;
   int rightStatusSize=size().width();
   int line, col;
   CURRENT_VIEW->cursorPosition().position(line,col);
@@ -418,7 +418,7 @@ void SourceFileWindow::completionPopup_closed()
   THIS->accel->setItemEnabled(7,TRUE);
 }
 
-void *SourceFileWindow::createView(const QString &fileName, const QString &fileText, const QString &hlModeName, unsigned tabWidth)
+void *SourceFileWindow::createView(const QString &fileName, const QString &hlModeName, unsigned tabWidth)
 {
   // Create Document object.
   KParts::Factory *factory = (KParts::Factory *)
@@ -426,13 +426,9 @@ void *SourceFileWindow::createView(const QString &fileName, const QString &fileT
   if (!factory) qFatal("Failed to load KatePart");
   KTextEditor::Document *doc = (KTextEditor::Document *)
       factory->createPart(0,THIS->mainForm,"KTextEditor::Document");
-  // Set the file name for printing.
-  doc->setModified(FALSE);
-  if (doc->openStream("text/plain",fileName))
-    doc->closeStream();
-  // Set text.
-  SET_TEXT_SAFE(doc,fileText);
-  doc->setModified(FALSE);
+  // Open the file.
+  doc->setEncoding(preferences.useCalcCharset?"TI-89":QTextCodec::codecForLocale()->name());
+  doc->openUrl(KUrl(fileName));
   // Create View object.
   KTextEditor::View *newView = (KTextEditor::View *) doc->createView(centralWidget());
   newView->hide();
@@ -1329,16 +1325,10 @@ void SourceFileWindow::KDirWatch_dirty(const QString &fileName)
           QString("The file \'%1\' has been changed by another program. "
                   "Do you want to reload it?").arg(fileName),"File Changed")
           ==KMessageBox::Yes) {
-      QString fileText=loadFileText(fileName);
-      if (fileText.isNull()) {
-        KMessageBox::error(this,QString("Can't open \'%1\'").arg(fileName));
-        return;
-      }
-      SET_TEXT_SAFE(CURRENT_VIEW->document(),fileText);
       CURRENT_VIEW->document()->setModified(FALSE);
-// FIXME
-//      CURRENT_VIEW->document()->clearUndo();
-//      CURRENT_VIEW->document()->clearRedo();
+      disableViewEvents=TRUE;
+      CURRENT_VIEW->document()->documentReload();
+      disableViewEvents=FALSE;
       updateRightStatusLabel();
     }
   }

+ 2 - 2
ktigcc/srcfilewin.h

@@ -31,8 +31,8 @@ public:
     ~SourceFileWindow();
 
     virtual void initBase();
-    void * createView( const QString & fileName, const QString & fileText, const QString & hlModeName, unsigned tabWidth );
-    virtual int savePrompt( void );
+    void * createView(const QString &fileName, const QString &hlModeName, unsigned tabWidth);
+    virtual int savePrompt(void);
     virtual void applyPreferences();
 
 public slots: