瀏覽代碼

Gray out the KatePart when it is disabled. (That was a lot harder than it should be.)

git-svn-id: file:///var/svn/tigccpp/trunk@304 9552661e-59e3-4036-b4f2-dbe53926924f
kevinkofler 18 年之前
父節點
當前提交
8287402122
共有 4 個文件被更改,包括 94 次插入10 次删除
  1. 1 1
      ktigcc/KTIGCC.prj
  2. 1 1
      ktigcc/KTIGCC.pws
  3. 66 2
      ktigcc/ktigcc.cpp
  4. 26 6
      ktigcc/mainform.ui.h

+ 1 - 1
ktigcc/KTIGCC.prj

@@ -61,7 +61,7 @@ preferences.indent.opening=0
 preferences.autoformat.disable=1
 preferences.indent.automatic=1
 preferences.use.tabs=0
-preferences.indent.size=4
+preferences.indent.size=2
 preferences.tabsize=4
 preferences.indent.closing=0
 

+ 1 - 1
ktigcc/KTIGCC.pws

@@ -7,7 +7,7 @@ clean before build=false
 
 [filenumbers]
 0=12
-1=30
+1=17
 2=27
 3=4
 

+ 66 - 2
ktigcc/ktigcc.cpp

@@ -18,15 +18,18 @@
    Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */
 
-#include <stdlib.h>
+#include <cstdio>
+#include <cstdlib>
 #include <unistd.h>
 #include <kapplication.h>
 #include <kcmdlineargs.h>
 #include "mainform.h"
+using namespace std;
 void qCleanupImages_ktigcc();
 void qInitImages_ktigcc();
 
 const char *tigcc_base;
+char tempdir[]="/tmp/ktigccXXXXXX";
 char *quill_drv;
 
 int main( int argc, char *argv[] )
@@ -72,10 +75,71 @@ int main( int argc, char *argv[] )
   free(quill_drv);
   quill_drv=NULL;
   quill_drv_found:
+
+  /* Make sure the Kate color schema we need exists */
+  char *home=getenv("HOME");
+  char fname[strlen(home)+32];
+  sprintf(fname,"%s/.kde/share/config/kateschemarc",home);
+  FILE *f=fopen(fname,"r+b");
+  if (!f) exit(1);
+  fseek(f,0,SEEK_END);
+  size_t flen=ftell(f);
+  fseek(f,0,SEEK_SET);
+  char buffer[flen+1];
+  memset(buffer,0,flen+1);
+  if (fread(buffer,1,flen,f)<flen) exit(1);
+  if (!strstr(buffer,"[ktigcc - Grayed Out]\n")) {
+    fseek(f,0,SEEK_END);
+    fputs("\n\n[ktigcc - Grayed Out]\n"
+          "Color Background=230,230,230\n"
+          "Color Highlighted Bracket=255,255,153\n"
+          "Color Highlighted Line=230,230,230\n"
+          "Color Icon Bar=234,233,232\n"
+          "Color Line Number=0,0,0\n"
+          "Color MarkType1=0,0,255\n"
+          "Color MarkType2=255,0,0\n"
+          "Color MarkType3=255,255,0\n"
+          "Color MarkType4=255,0,255\n"
+          "Color MarkType5=160,160,164\n"
+          "Color MarkType6=0,255,0\n"
+          "Color MarkType7=255,0,0\n"
+          "Color Selection=76,89,166\n"
+          "Color Tab Marker=0,0,0\n"
+          "Color Word Wrap Marker=120,120,120\n"
+          "Font=Monospace,10,-1,5,50,0,0,0,1,0\n",f);
+  }
+  fclose(f);
+  
+  if (!mkdtemp(tempdir)) exit(1);
   
   MainForm mainForm;
   app.setMainWidget( &mainForm );
   mainForm.show();
   
-  return app.exec();
+  int exitcode=app.exec();
+
+  rmdir(tempdir);
+  
+  return exitcode;
+}
+
+void write_temp_file(const char *filename, const char *data, const size_t len)
+{
+  char buffer[strlen(tempdir)+strlen(filename)+2];
+  sprintf(buffer,"%s/%s",tempdir,filename);
+  FILE *f=fopen(buffer,"wb");
+  if (!f) {error: fputs("Fatal error: Can't write temp file!\n",stderr); exit(1);}
+  if (len) {
+    if (fwrite(data,1,len,f)<len) goto error;
+  } else {
+    if (fputs(data,f)==EOF) goto error;
+  }
+  fclose(f);
+}
+
+void delete_temp_file(const char *filename)
+{
+  char buffer[strlen(tempdir)+strlen(filename)+2];
+  sprintf(buffer,"%s/%s",tempdir,filename);
+  if (unlink(buffer)) {fputs("Fatal error: Can't delete temp file!\n",stderr); exit(1);}
 }

+ 26 - 6
ktigcc/mainform.ui.h

@@ -36,6 +36,7 @@
 #include <kate/document.h>
 #include <kate/view.h>
 #include <kconfig.h>
+#include <ktexteditor/configinterfaceextension.h>
 #include <cstdio>
 #include <cstdlib>
 using std::puts;
@@ -43,6 +44,9 @@ using std::exit;
 
 extern const char *tigcc_base;
 extern const char *quill_drv;
+extern char tempdir[];
+extern void write_temp_file(const char *filename, const char *data, const size_t len);
+extern void delete_temp_file(const char *filename);
 
 // All the methods are inline because otherwise QT Designer will mistake them
 // for slots of the main form.
@@ -191,8 +195,12 @@ void MainForm::init()
       factory->createPart( 0, "", this, "", "KTextEditor::Document" );
   m_view = (Kate::View *) doc->createView( splitter, 0L );
   m_view->setEnabled(FALSE);
-  m_view->setPaletteBackgroundColor(QColor(230,230,230));
   m_view->setSizePolicy(QSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding,0,0));
+  write_temp_file("config.tmp","Highlighting=None\n[Kate Renderer Defaults]\nSchema=ktigcc - Grayed Out\n",0);
+  KConfig kconfig(QString(tempdir)+"/config.tmp",true);
+  m_view->getDoc()->readConfig(&kconfig);
+  m_view->getDoc()->readSessionConfig(&kconfig);
+  delete_temp_file("config.tmp");
   QValueList<int> list;
   list.append(150);
   list.append(500);
@@ -403,18 +411,30 @@ void MainForm::fileTreeClicked(QListViewItem *item)
     fileNewFolderAction->setEnabled(TRUE);
     m_view->setEnabled(FALSE);
     m_view->getDoc()->setText("");
-    m_view->setPaletteBackgroundColor(QColor(230,230,230));
+    write_temp_file("config.tmp","Highlighting=None\n[Kate Renderer Defaults]\nSchema=ktigcc - Grayed Out\n",0);
+    KConfig kconfig(QString(tempdir)+"/config.tmp",true);
+    m_view->getDoc()->readConfig(&kconfig);
+    m_view->getDoc()->readSessionConfig(&kconfig);
+    delete_temp_file("config.tmp");
   } else if (item->rtti()==0x716CC1) {
     fileNewFolderAction->setEnabled(TRUE);
     m_view->setEnabled(TRUE);
     m_view->getDoc()->setText(static_cast<ListViewFile *>(item)->textBuffer);
-    m_view->setPaletteBackgroundColor(QColor(255,255,255));
+    write_temp_file("config.tmp","Highlighting=None\n[Kate Renderer Defaults]\nSchema=kate - Normal\n",0);
+    KConfig kconfig(QString(tempdir)+"/config.tmp",true);
+    m_view->getDoc()->readConfig(&kconfig);
+    m_view->getDoc()->readSessionConfig(&kconfig);
+    delete_temp_file("config.tmp");
   } else {
     fileNewFolderAction->setEnabled(FALSE);
     m_view->setEnabled(FALSE);
     m_view->getDoc()->setText("");
-    m_view->setPaletteBackgroundColor(QColor(230,230,230));
-  }
+    write_temp_file("config.tmp","Highlighting=None\n[Kate Renderer Defaults]\nSchema=ktigcc - Grayed Out\n",0);
+    KConfig kconfig(QString(tempdir)+"/config.tmp",true);
+    m_view->getDoc()->readConfig(&kconfig);
+    m_view->getDoc()->readSessionConfig(&kconfig);
+    delete_temp_file("config.tmp");
+}
   currentListItem=item;
   updateLeftStatusLabel();
 }
@@ -555,7 +575,7 @@ void MainForm::newFile( QListViewItem *parent )
                  "\t 0b0000000000000000, \\\n"
                  "\t 0b0000000000000000, \\\n"
                  "\t 0b0000000000000000, \\\n"
-                 "\t 0b0000000000000000},\n"
+                 "\t 0b0000000000000000}, \\\n"
                  "\t{0b0000000000000000, \\\n"
                  "\t 0b0000000000000000, \\\n"
                  "\t 0b0000000000000000, \\\n"