00001 00007 #include "HSyntaxHighlighterDialog.h" 00008 #include "HBSettingsPanel.h" 00009 00010 HSyntaxHighlighterDialog::HSyntaxHighlighterDialog(QWidget *parent) 00011 : QDialog(parent) 00012 { 00013 slBlocks=NULL; 00014 mlBlocks=NULL; 00015 userInterface.setupUi(this); 00016 } 00017 00018 HSyntaxHighlighterDialog::~HSyntaxHighlighterDialog() 00019 { 00020 if(slBlocks!=NULL) 00021 { 00022 delete slBlocks; 00023 } 00024 slBlocks=NULL; 00025 if(mlBlocks!=NULL) 00026 { 00027 delete mlBlocks; 00028 } 00029 mlBlocks=NULL; 00030 } 00031 00032 void HSyntaxHighlighterDialog::setSettings(HSyntaxHighlighterSettings _settings) 00033 { 00034 settings = _settings; 00035 allBlocks.clear(); 00036 00037 if(slBlocks!=NULL) 00038 { 00039 delete slBlocks; 00040 } 00041 slBlocks=new SingleLineHighlightBlock[settings.singleLine.count()]; 00042 for (int i = 0; i < settings.singleLine.size(); ++i) { 00043 slBlocks[i]=settings.singleLine[i]; 00044 allBlocks.append(slBlocks+i); 00045 } 00046 00047 if(mlBlocks!=NULL) 00048 { 00049 delete mlBlocks; 00050 } 00051 mlBlocks=new MultiLinesHighlightBlock[settings.multiLines.count()]; 00052 for (int i = 0; i < settings.multiLines.size(); ++i) { 00053 mlBlocks[i]=settings.multiLines[i]; 00054 allBlocks.append(mlBlocks+i); 00055 } 00056 this->constructBlockList(); 00057 } 00058 HSyntaxHighlighterSettings HSyntaxHighlighterDialog::getSettings() 00059 { 00060 for (int i = 0; i < settings.singleLine.size(); ++i) { 00061 settings.singleLine[i]=slBlocks[i]; 00062 } 00063 00064 for (int i = 0; i < settings.multiLines.size(); ++i) { 00065 settings.multiLines[i]=mlBlocks[i]; 00066 } 00067 00068 settings.modified=true; 00069 return settings; 00070 } 00071 void HSyntaxHighlighterDialog::constructBlockList() 00072 { 00073 00074 int i=0; 00075 foreach(const HighlightBlock* block,allBlocks) 00076 { 00077 userInterface.HighlightBlocks->addItem(block->getName()); 00078 userInterface.HighlightBlocks->item(i)->setToolTip(block->getDescription()); 00079 ++i; 00080 } 00081 00082 connect(userInterface.HighlightBlocks,SIGNAL(currentRowChanged(int)),this,SLOT(editedItemChanged(int))); 00083 } 00084 00085 void HSyntaxHighlighterDialog::editedItemChanged(int _number) 00086 { 00087 QGroupBox * temp=userInterface.groupBox; 00088 userInterface.horizontalLayout->removeWidget(userInterface.groupBox); 00089 userInterface.groupBox=new HBSettingsPanel(this,allBlocks[_number]); 00090 userInterface.horizontalLayout->addWidget(userInterface.groupBox); 00091 delete temp; 00092 } 00093 00094 00095 00096 00097
1.5.8