00001
00007 #include "HSyntaxHighlighterDialog.h"
00008 #include "HBSettingsPanel.h"
00009
00010 HSyntaxHighlighterDialog::HSyntaxHighlighterDialog(QWidget *parent)
00011 : QDialog(parent)
00012 {
00013 userInterface.setupUi(this);
00014 connect(userInterface.HighlightBlocks,SIGNAL(currentTextChanged (const QString &)),this,SLOT(editedItemChanged(const QString &)));
00015 connect(userInterface.addBlockButton,SIGNAL(clicked()),this,SLOT(addNewItem()));
00016 connect(userInterface.removeBlockButton,SIGNAL(clicked()),this,SLOT(removeCurrentItem()));
00017 connect(userInterface.renameBlockButton,SIGNAL(clicked()),this,SLOT(renameCurrentItem()));
00018 }
00019
00020 HSyntaxHighlighterDialog::~HSyntaxHighlighterDialog()
00021 {
00022
00023 }
00024
00025 void HSyntaxHighlighterDialog::setSettings(HSyntaxHighlighterSettings _settings)
00026 {
00027 settings = _settings;
00028 this->constructBlockList();
00029 }
00030 HSyntaxHighlighterSettings HSyntaxHighlighterDialog::getSettings()
00031 {
00032 settings.modified=true;
00033 return settings;
00034 }
00035 void HSyntaxHighlighterDialog::constructBlockList()
00036 {
00037 userInterface.HighlightBlocks->clear();
00038
00039 int i=0;
00040 foreach(const SingleLineHighlightBlock block,settings.singleLine.values())
00041 {
00042 if(!block.getName().isEmpty())
00043 {
00044 userInterface.HighlightBlocks->addItem(block.getName());
00045 userInterface.HighlightBlocks->item(i)->setToolTip(block.getDescription());
00046 ++i;
00047 }
00048 }
00049 foreach(const MultiLinesHighlightBlock block,settings.multiLines.values())
00050 {
00051 if(!block.getName().isEmpty())
00052 {
00053 userInterface.HighlightBlocks->addItem(block.getName());
00054 userInterface.HighlightBlocks->item(i)->setToolTip(block.getDescription());
00055 ++i;
00056 }
00057 }
00058 }
00059
00060 void HSyntaxHighlighterDialog::editedItemChanged(const QString& _name)
00061 {
00062 QGroupBox * temp=userInterface.blockSettings;
00063 userInterface.horizontalLayout->removeWidget(userInterface.blockSettings);
00064 HighlightBlock * block;
00065 if(settings.singleLine.contains(_name))
00066 block=&(settings.singleLine[_name]);
00067 else
00068 block=&(settings.multiLines[_name]);
00069 userInterface.blockSettings=new HBSettingsPanel(this,block);
00070 userInterface.horizontalLayout->addWidget(userInterface.blockSettings);
00071 delete temp;
00072 }
00073
00074
00075
00076
00077