Browse Source

Display error messages if something goes wrong during TPR loading.

git-svn-id: file:///var/svn/tigccpp/trunk@365 9552661e-59e3-4036-b4f2-dbe53926924f
kevinkofler 18 years ago
parent
commit
a2d7c06b47
3 changed files with 40 additions and 29 deletions
  1. 36 24
      ktigcc/mainform.ui.h
  2. 3 4
      ktigcc/tpr.cxx
  3. 1 1
      ktigcc/tpr.h

+ 36 - 24
ktigcc/mainform.ui.h

@@ -553,8 +553,14 @@ void MainForm::openFile(QListViewItem * category, QListViewItem * parent, const
     category==hFilesListItem?"fileh.png":
     category==sFilesListItem||category==asmFilesListItem?"files.png":
     category==txtFilesListItem?"filet.png":"filex.png"));
-  if (IS_EDITABLE_CATEGORY(category))
-    newFile->textBuffer=loadFileText(fileName);
+  if (IS_EDITABLE_CATEGORY(category)) {
+    QString fileText=loadFileText(fileName);
+    if (fileText.isNull()) {
+      KMessageBox::sorry(this,QString("Can't open \'%1\'").arg(fileName),"Warning");
+      fileText="";
+    }
+    newFile->textBuffer=fileText;
+  }
   newFile->fileName=fileName;
   fileCount++;
   (category==hFilesListItem?hFileCount:category==cFilesListItem?cFileCount:
@@ -586,29 +592,35 @@ void MainForm::fileOpen()
   QString fileName=SGetFileName(KFileDialog::Opening,TIGCCOpenProjectFileFilter,"Open Project/File",this);
   KURL dir;
   dir.setPath(fileName);
-  if (!loadTPR(fileName, &TPRData))
-  {
-    if (TPRData.asm_files.path.count() && !asmFilesListItem) {
-      KMessageBox::error(this,"This project needs A68k, which is not installed.");
-      return;
-    }
-    if (TPRData.quill_files.path.count() && !qllFilesListItem) {
-      KMessageBox::error(this,"This project needs quill.drv, which is not installed.");
-      return;
-    }
-    fileNewProject();
-    fileOpen_addList(hFilesListItem,&TPRData.h_files,&dir);
-    fileOpen_addList(cFilesListItem,&TPRData.c_files,&dir);
-    fileOpen_addList(qllFilesListItem,&TPRData.quill_files,&dir);
-    fileOpen_addList(sFilesListItem,&TPRData.s_files,&dir);
-    fileOpen_addList(asmFilesListItem,&TPRData.asm_files,&dir);
-    fileOpen_addList(oFilesListItem,&TPRData.o_files,&dir);
-    fileOpen_addList(aFilesListItem,&TPRData.a_files,&dir);
-    fileOpen_addList(txtFilesListItem,&TPRData.txt_files,&dir);
-    fileOpen_addList(othFilesListItem,&TPRData.oth_files,&dir);
-    settings=TPRData.settings;
-    libopts=TPRData.libopts;
+  int ret=loadTPR(fileName, &TPRData);
+  if (ret == -1) {
+    KMessageBox::error(this,QString("Can't open \'%1\'").arg(fileName));
+    return;
+  }
+  if (ret > 0) {
+    KMessageBox::error(this,QString("Error at line %2 of \'%1\'").arg(fileName).arg(ret));
+    return;
+  }
+  if (TPRData.asm_files.path.count() && !asmFilesListItem) {
+    KMessageBox::error(this,"This project needs A68k, which is not installed.");
+    return;
+  }
+  if (TPRData.quill_files.path.count() && !qllFilesListItem) {
+    KMessageBox::error(this,"This project needs quill.drv, which is not installed.");
+    return;
   }
+  fileNewProject();
+  fileOpen_addList(hFilesListItem,&TPRData.h_files,&dir);
+  fileOpen_addList(cFilesListItem,&TPRData.c_files,&dir);
+  fileOpen_addList(qllFilesListItem,&TPRData.quill_files,&dir);
+  fileOpen_addList(sFilesListItem,&TPRData.s_files,&dir);
+  fileOpen_addList(asmFilesListItem,&TPRData.asm_files,&dir);
+  fileOpen_addList(oFilesListItem,&TPRData.o_files,&dir);
+  fileOpen_addList(aFilesListItem,&TPRData.a_files,&dir);
+  fileOpen_addList(txtFilesListItem,&TPRData.txt_files,&dir);
+  fileOpen_addList(othFilesListItem,&TPRData.oth_files,&dir);
+  settings=TPRData.settings;
+  libopts=TPRData.libopts;
 }
 
 void MainForm::fileSave()

+ 3 - 4
ktigcc/tpr.cxx

@@ -399,13 +399,12 @@ int parse_file(FILE *f,TPRDataStruct *dest)
 }
 
 //returns 0 on success
-short loadTPR(QString &fileName,TPRDataStruct *dest)
+int loadTPR(QString &fileName,TPRDataStruct *dest)
 {
   FILE *f;
-  short ret;
+  int ret;
   f = fopen(fileName, "r");
   if(f == NULL) {
-      //fprintf(stderr, "Unable to open this file: <%s>\n", filename); ***to be implemented the KDE way.
       return -1;
   }
   ret=parse_file(f,dest);
@@ -418,7 +417,7 @@ QString loadFileText(const char *fileName)
   FILE *f;
   f=fopen(fileName,"rb");
   if (!f)
-    return "";
+    return QString::null;
   fseek(f,0,SEEK_END);
   size_t flen=ftell(f);
   fseek(f,0,SEEK_SET);

+ 1 - 1
ktigcc/tpr.h

@@ -105,6 +105,6 @@ typedef struct
   TPRFileList quill_files;
 } TPRDataStruct;
 
-short loadTPR(QString &fileName,TPRDataStruct *dest);
+int loadTPR(QString &fileName,TPRDataStruct *dest);
 
 QString loadFileText(const char *fileName);