#include <qlineedit.h>
#include <qpushbutton.h>
#include <qspinbox.h>
+#include <qstring.h>
using std::string;
connect(convertersModule->converterRemovePB, SIGNAL(clicked()), this, SLOT(remove_converter()));
connect(convertersModule->converterModifyPB, SIGNAL(clicked()), this, SLOT(modify_converter()));
connect(convertersModule->convertersLB, SIGNAL(highlighted(int)), this, SLOT(switch_converter(int)));
+ connect(convertersModule->converterFromCO, SIGNAL(activated(const QString&)), this, SLOT(converter_changed()));
+ connect(convertersModule->converterToCO, SIGNAL(activated(const QString&)), this, SLOT(converter_changed()));
+ connect(convertersModule->converterED, SIGNAL(textChanged(const QString&)), this, SLOT(converter_changed()));
+ connect(convertersModule->converterFlagED, SIGNAL(textChanged(const QString&)), this, SLOT(converter_changed()));
// Qt really sucks. This is as ugly as it looks, but the alternative
// means having to derive every module == bloat
Converters::const_iterator ccit = form_->converters().begin();
Converters::const_iterator cend = form_->converters().end();
for (; ccit != cend; ++ccit) {
- string const name(ccit->From->prettyname() + " -> " +
- ccit->To->prettyname());
+ std::string const name = ccit->From->prettyname() + " -> "
+ + ccit->To->prettyname();
convertmod->convertersLB->insertItem(toqstr(name));
}
if (convertmod->convertersLB->currentItem() == -1)
convertmod->convertersLB->setCurrentItem(0);
+
+ updateConverterButtons();
}
convertersModule->converterToCO->setCurrentItem(form_->formats().getNumber(c.to));
convertersModule->converterED->setText(toqstr(c.command));
convertersModule->converterFlagED->setText(toqstr(c.flags));
+
+ updateConverterButtons();
+}
+
+
+void QPrefsDialog::converter_changed()
+{
+ updateConverterButtons();
+}
+
+
+void QPrefsDialog::updateConverterButtons()
+{
+ Format const & from(form_->formats().get(
+ convertersModule->converterFromCO->currentItem()));
+ Format const & to(form_->formats().get(
+ convertersModule->converterToCO->currentItem()));
+ int const sel = form_->converters().getNumber(from.name(), to.name());
+ bool const known = !(sel < 0);
+ bool const valid = !(convertersModule->converterED->text().isEmpty()
+ || from.name() == to.name());
+
+ Converter const & c(form_->converters().get(
+ convertersModule->convertersLB->currentItem()));
+ string const old_command = c.command;
+ string const old_flag = c.flags;
+ string const new_command(fromqstr(convertersModule->converterED->text()));
+ string const new_flag(fromqstr(convertersModule->converterFlagED->text()));
+
+ bool modified = ((old_command != new_command) || (old_flag != new_flag));
+
+ convertersModule->converterModifyPB->setEnabled(valid && known && modified);
+ convertersModule->converterNewPB->setEnabled(valid && !known);
+ convertersModule->converterRemovePB->setEnabled(known);
}
{
Format const & from(form_->formats().get(convertersModule->converterFromCO->currentItem()));
Format const & to(form_->formats().get(convertersModule->converterToCO->currentItem()));
+ string const command(fromqstr(convertersModule->converterED->text()));
+ string const flags(fromqstr(convertersModule->converterFlagED->text()));
Converter const * old = form_->converters().getConverter(from.name(), to.name());
- form_->converters().add(from.name(), to.name(), "", "");
+ form_->converters().add(from.name(), to.name(), command, flags);
if (!old) {
form_->converters().updateLast(form_->formats());
}
form_->formats().sort();
updateFormats();
fileformatsModule->formatsLB->setCurrentItem(form_->formats().getNumber(_("New")));
+ form_->converters().update(form_->formats());
updateConverters();
}
return;
form_->formats().erase(form_->formats().get(nr).name());
updateFormats();
+ form_->converters().update(form_->formats());
updateConverters();
}
<rect>
<x>0</x>
<y>0</y>
- <width>384</width>
- <height>261</height>
+ <width>466</width>
+ <height>265</height>
</rect>
</property>
<property stdset="1">
<name>caption</name>
<string>File Conversion</string>
</property>
- <hbox>
+ <grid>
<property stdset="1">
<name>margin</name>
<number>11</number>
<name>spacing</name>
<number>6</number>
</property>
- <widget>
+ <widget row="0" column="0" >
<class>QLayoutWidget</class>
<property stdset="1">
<name>name</name>
- <cstring>Layout4</cstring>
+ <cstring>Layout7</cstring>
</property>
- <vbox>
+ <grid>
<property stdset="1">
<name>margin</name>
<number>0</number>
<name>spacing</name>
<number>6</number>
</property>
- <widget>
+ <widget row="0" column="0" rowspan="1" colspan="2" >
<class>QLabel</class>
<property stdset="1">
<name>name</name>
<cstring>convertersLB</cstring>
</property>
</widget>
- <widget>
- <class>QLayoutWidget</class>
+ <spacer row="2" column="1" >
+ <property>
+ <name>name</name>
+ <cstring>Spacer8</cstring>
+ </property>
+ <property stdset="1">
+ <name>orientation</name>
+ <enum>Horizontal</enum>
+ </property>
+ <property stdset="1">
+ <name>sizeType</name>
+ <enum>Expanding</enum>
+ </property>
+ <property>
+ <name>sizeHint</name>
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget row="2" column="0" >
+ <class>QPushButton</class>
<property stdset="1">
<name>name</name>
- <cstring>Layout1</cstring>
+ <cstring>converterRemovePB</cstring>
</property>
- <grid>
- <property stdset="1">
- <name>margin</name>
- <number>0</number>
- </property>
- <property stdset="1">
- <name>spacing</name>
- <number>6</number>
+ <property stdset="1">
+ <name>text</name>
+ <string>&Remove</string>
+ </property>
+ </widget>
+ <widget row="1" column="0" rowspan="1" colspan="2" >
+ <class>QListBox</class>
+ <item>
+ <property>
+ <name>text</name>
+ <string>New Item</string>
</property>
- <widget row="0" column="0" rowspan="1" colspan="2" >
- <class>QListBox</class>
- <item>
- <property>
- <name>text</name>
- <string>New Item</string>
- </property>
- </item>
- <property stdset="1">
- <name>name</name>
- <cstring>convertersLB</cstring>
- </property>
- <property stdset="1">
- <name>sizePolicy</name>
- <sizepolicy>
- <hsizetype>3</hsizetype>
- <vsizetype>7</vsizetype>
- </sizepolicy>
- </property>
- <property stdset="1">
- <name>vScrollBarMode</name>
- <enum>AlwaysOn</enum>
- </property>
- <property stdset="1">
- <name>hScrollBarMode</name>
- <enum>AlwaysOff</enum>
- </property>
- </widget>
- <widget row="1" column="0" >
- <class>QPushButton</class>
- <property stdset="1">
- <name>name</name>
- <cstring>converterNewPB</cstring>
- </property>
- <property stdset="1">
- <name>text</name>
- <string>&New</string>
- </property>
- </widget>
- <widget row="1" column="1" >
- <class>QPushButton</class>
- <property stdset="1">
- <name>name</name>
- <cstring>converterRemovePB</cstring>
- </property>
- <property stdset="1">
- <name>text</name>
- <string>&Remove</string>
- </property>
- </widget>
- </grid>
+ </item>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>convertersLB</cstring>
+ </property>
+ <property stdset="1">
+ <name>sizePolicy</name>
+ <sizepolicy>
+ <hsizetype>3</hsizetype>
+ <vsizetype>7</vsizetype>
+ </sizepolicy>
+ </property>
+ <property stdset="1">
+ <name>vScrollBarMode</name>
+ <enum>AlwaysOn</enum>
+ </property>
+ <property stdset="1">
+ <name>hScrollBarMode</name>
+ <enum>AlwaysOff</enum>
+ </property>
</widget>
- </vbox>
+ </grid>
</widget>
- <widget>
+ <widget row="0" column="1" >
<class>QLayoutWidget</class>
<property stdset="1">
<name>name</name>
- <cstring>Layout6</cstring>
+ <cstring>Layout16</cstring>
</property>
- <vbox>
+ <grid>
<property stdset="1">
<name>margin</name>
<number>0</number>
<name>spacing</name>
<number>6</number>
</property>
- <widget>
+ <widget row="0" column="0" >
<class>QLayoutWidget</class>
<property stdset="1">
<name>name</name>
</widget>
</grid>
</widget>
- <widget>
+ <spacer row="2" column="0" >
+ <property>
+ <name>name</name>
+ <cstring>Spacer28</cstring>
+ </property>
+ <property stdset="1">
+ <name>orientation</name>
+ <enum>Vertical</enum>
+ </property>
+ <property stdset="1">
+ <name>sizeType</name>
+ <enum>Expanding</enum>
+ </property>
+ <property>
+ <name>sizeHint</name>
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget row="1" column="0" >
<class>QLayoutWidget</class>
<property stdset="1">
<name>name</name>
- <cstring>Layout5</cstring>
+ <cstring>Layout14</cstring>
</property>
<hbox>
<property stdset="1">
<name>spacing</name>
<number>6</number>
</property>
+ <widget>
+ <class>QPushButton</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>converterNewPB</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>A&dd</string>
+ </property>
+ </widget>
<widget>
<class>QPushButton</class>
<property stdset="1">
<spacer>
<property>
<name>name</name>
- <cstring>Spacer2</cstring>
+ <cstring>Spacer3</cstring>
</property>
<property stdset="1">
<name>orientation</name>
</spacer>
</hbox>
</widget>
- <spacer>
- <property>
- <name>name</name>
- <cstring>Spacer28</cstring>
- </property>
- <property stdset="1">
- <name>orientation</name>
- <enum>Vertical</enum>
- </property>
- <property stdset="1">
- <name>sizeType</name>
- <enum>Expanding</enum>
- </property>
- <property>
- <name>sizeHint</name>
- <size>
- <width>20</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </vbox>
+ </grid>
</widget>
- </hbox>
+ </grid>
</widget>
<tabstops>
<tabstop>convertersLB</tabstop>