Added configuration options to style transmit and receive text
This commit is contained in:
		
							parent
							
								
									b0937ffe18
								
							
						
					
					
						commit
						775008be48
					
				| @ -433,7 +433,6 @@ private: | |||||||
|   void insert_station (); |   void insert_station (); | ||||||
| 
 | 
 | ||||||
|   Q_SLOT void on_font_push_button_clicked (); |   Q_SLOT void on_font_push_button_clicked (); | ||||||
|   Q_SLOT void on_decoded_text_font_push_button_clicked (); |  | ||||||
|   Q_SLOT void on_PTT_port_combo_box_activated (int); |   Q_SLOT void on_PTT_port_combo_box_activated (int); | ||||||
|   Q_SLOT void on_CAT_port_combo_box_activated (int); |   Q_SLOT void on_CAT_port_combo_box_activated (int); | ||||||
|   Q_SLOT void on_CAT_serial_baud_combo_box_currentIndexChanged (int); |   Q_SLOT void on_CAT_serial_baud_combo_box_currentIndexChanged (int); | ||||||
| @ -467,9 +466,13 @@ private: | |||||||
|   Q_SLOT void handle_transceiver_failure (QString const& reason); |   Q_SLOT void handle_transceiver_failure (QString const& reason); | ||||||
|   Q_SLOT void on_pbCQmsg_clicked(); |   Q_SLOT void on_pbCQmsg_clicked(); | ||||||
|   Q_SLOT void on_pbMyCall_clicked(); |   Q_SLOT void on_pbMyCall_clicked(); | ||||||
|   Q_SLOT void on_pbTxMsg_clicked(); |   Q_SLOT void on_rxBackgroundButton_clicked(); | ||||||
|   Q_SLOT void on_pbNewDXCC_clicked(); |   Q_SLOT void on_rxForegroundButton_clicked(); | ||||||
|   Q_SLOT void on_pbNewCall_clicked(); |   Q_SLOT void on_rxFontButton_clicked(); | ||||||
|  |   Q_SLOT void on_txBackgroundButton_clicked(); | ||||||
|  |   Q_SLOT void on_txForegroundButton_clicked(); | ||||||
|  |   Q_SLOT void on_txFontButton_clicked(); | ||||||
|  | 
 | ||||||
|   Q_SLOT void on_cbFox_clicked (bool); |   Q_SLOT void on_cbFox_clicked (bool); | ||||||
|   Q_SLOT void on_cbHound_clicked (bool); |   Q_SLOT void on_cbHound_clicked (bool); | ||||||
|   Q_SLOT void on_cbx2ToneSpacing_clicked(bool); |   Q_SLOT void on_cbx2ToneSpacing_clicked(bool); | ||||||
| @ -503,8 +506,11 @@ private: | |||||||
|   QFont font_; |   QFont font_; | ||||||
|   QFont next_font_; |   QFont next_font_; | ||||||
| 
 | 
 | ||||||
|   QFont decoded_text_font_; |   QFont rx_text_font_; | ||||||
|   QFont next_decoded_text_font_; |   QFont next_rx_text_font_; | ||||||
|  | 
 | ||||||
|  |   QFont tx_text_font_; | ||||||
|  |   QFont next_tx_text_font_; | ||||||
| 
 | 
 | ||||||
|   bool restart_sound_input_device_; |   bool restart_sound_input_device_; | ||||||
|   bool restart_sound_output_device_; |   bool restart_sound_output_device_; | ||||||
| @ -561,12 +567,18 @@ private: | |||||||
|   QString reply_; |   QString reply_; | ||||||
|   int callsign_aging_; |   int callsign_aging_; | ||||||
|   int activity_aging_; |   int activity_aging_; | ||||||
|   QColor color_CQ_; |   QColor color_cq_; | ||||||
|   QColor next_color_CQ_; |   QColor next_color_cq_; | ||||||
|   QColor color_MyCall_; |   QColor color_mycall_; | ||||||
|   QColor next_color_MyCall_; |   QColor next_color_mycall_; | ||||||
|   QColor color_ReceivedMsg_; |   QColor color_rx_background_; | ||||||
|   QColor next_color_ReceivedMsg_; |   QColor next_color_rx_background_; | ||||||
|  |   QColor color_rx_foreground_; | ||||||
|  |   QColor next_color_rx_foreground_; | ||||||
|  |   QColor color_tx_background_; | ||||||
|  |   QColor next_color_tx_background_; | ||||||
|  |   QColor color_tx_foreground_; | ||||||
|  |   QColor next_color_tx_foreground_; | ||||||
|   QColor color_DXCC_; |   QColor color_DXCC_; | ||||||
|   QColor next_color_DXCC_; |   QColor next_color_DXCC_; | ||||||
|   QColor color_NewCall_; |   QColor color_NewCall_; | ||||||
| @ -671,13 +683,17 @@ bool Configuration::restart_audio_output () const {return m_->restart_sound_outp | |||||||
| auto Configuration::type_2_msg_gen () const -> Type2MsgGen {return m_->type_2_msg_gen_;} | auto Configuration::type_2_msg_gen () const -> Type2MsgGen {return m_->type_2_msg_gen_;} | ||||||
| bool Configuration::use_dynamic_grid() const {return m_->use_dynamic_info_; } | bool Configuration::use_dynamic_grid() const {return m_->use_dynamic_info_; } | ||||||
| QString Configuration::my_callsign () const {return m_->my_callsign_;} | QString Configuration::my_callsign () const {return m_->my_callsign_;} | ||||||
| QColor Configuration::color_CQ () const {return m_->color_CQ_;} | QColor Configuration::color_CQ () const {return m_->color_cq_;} | ||||||
| QColor Configuration::color_MyCall () const {return m_->color_MyCall_;} | QColor Configuration::color_MyCall () const {return m_->color_mycall_;} | ||||||
| QColor Configuration::color_ReceivedMsg () const {return m_->color_ReceivedMsg_;} | QColor Configuration::color_rx_background () const {return m_->color_rx_background_;} | ||||||
|  | QColor Configuration::color_rx_foreground () const {return m_->color_rx_foreground_;} | ||||||
|  | QColor Configuration::color_tx_background () const {return m_->color_tx_background_;} | ||||||
|  | QColor Configuration::color_tx_foreground () const {return m_->color_tx_foreground_;} | ||||||
| QColor Configuration::color_DXCC () const {return m_->color_DXCC_;} | QColor Configuration::color_DXCC () const {return m_->color_DXCC_;} | ||||||
| QColor Configuration::color_NewCall () const {return m_->color_NewCall_;} | QColor Configuration::color_NewCall () const {return m_->color_NewCall_;} | ||||||
| QFont Configuration::text_font () const {return m_->font_;} | QFont Configuration::text_font () const {return m_->font_;} | ||||||
| QFont Configuration::decoded_text_font () const {return m_->decoded_text_font_;} | QFont Configuration::rx_text_font () const {return m_->rx_text_font_;} | ||||||
|  | QFont Configuration::tx_text_font () const {return m_->tx_text_font_;} | ||||||
| qint32 Configuration::id_interval () const {return m_->id_interval_;} | qint32 Configuration::id_interval () const {return m_->id_interval_;} | ||||||
| qint32 Configuration::ntrials() const {return m_->ntrials_;} | qint32 Configuration::ntrials() const {return m_->ntrials_;} | ||||||
| qint32 Configuration::aggressive() const {return m_->aggressive_;} | qint32 Configuration::aggressive() const {return m_->aggressive_;} | ||||||
| @ -1244,11 +1260,14 @@ void Configuration::impl::initialize_models () | |||||||
|   ui_->cq_message_line_edit->setText(cq_.toUpper()); |   ui_->cq_message_line_edit->setText(cq_.toUpper()); | ||||||
|   ui_->reply_message_line_edit->setText (reply_.toUpper()); |   ui_->reply_message_line_edit->setText (reply_.toUpper()); | ||||||
|   ui_->use_dynamic_grid->setChecked(use_dynamic_info_); |   ui_->use_dynamic_grid->setChecked(use_dynamic_info_); | ||||||
|   ui_->labCQ->setStyleSheet(QString("background: %1").arg(color_CQ_.name())); |   ui_->labCQ->setStyleSheet(QString("background: %1").arg(color_cq_.name())); | ||||||
|   ui_->labMyCall->setStyleSheet(QString("background: %1").arg(color_MyCall_.name())); |   ui_->labMyCall->setStyleSheet(QString("background: %1").arg(color_mycall_.name())); | ||||||
|   ui_->labTx->setStyleSheet(QString("background: %1").arg(color_ReceivedMsg_.name())); | 
 | ||||||
|   ui_->labDXCC->setStyleSheet(QString("background: %1").arg(color_DXCC_.name())); |   ui_->rxLabel->setStyleSheet(QString("background: %1").arg(color_rx_background_.name())); | ||||||
|   ui_->labNewCall->setStyleSheet(QString("background: %1").arg(color_NewCall_.name())); |   ui_->txLabel->setStyleSheet(QString("background: %1").arg(color_tx_background_.name())); | ||||||
|  |   ui_->rxForegroundLabel->setStyleSheet(QString("background: %1; color: %2").arg(color_rx_background_.name()).arg(color_rx_foreground_.name())); | ||||||
|  |   ui_->txForegroundLabel->setStyleSheet(QString("background: %1; color: %2").arg(color_rx_background_.name()).arg(color_tx_foreground_.name())); | ||||||
|  | 
 | ||||||
|   ui_->CW_id_interval_spin_box->setValue (id_interval_);   |   ui_->CW_id_interval_spin_box->setValue (id_interval_);   | ||||||
|   ui_->sbNtrials->setValue (ntrials_); |   ui_->sbNtrials->setValue (ntrials_); | ||||||
|   ui_->sbTxDelay->setValue (txDelay_); |   ui_->sbTxDelay->setValue (txDelay_); | ||||||
| @ -1376,9 +1395,12 @@ void Configuration::impl::read_settings () | |||||||
|   my_qth_ = settings_->value("MyQTH", QString {}).toString(); |   my_qth_ = settings_->value("MyQTH", QString {}).toString(); | ||||||
|   cq_ = settings_->value("CQMessage", QString {"CQCQCQ"}).toString(); |   cq_ = settings_->value("CQMessage", QString {"CQCQCQ"}).toString(); | ||||||
|   reply_ = settings_->value("Reply", QString {"HW CPY?"}).toString(); |   reply_ = settings_->value("Reply", QString {"HW CPY?"}).toString(); | ||||||
|   next_color_CQ_ = color_CQ_ = settings_->value("colorCQ","#66ff66").toString(); |   next_color_cq_ = color_cq_ = settings_->value("colorCQ","#66ff66").toString(); | ||||||
|   next_color_MyCall_ = color_MyCall_ = settings_->value("colorMyCall","#ff6666").toString(); |   next_color_mycall_ = color_mycall_ = settings_->value("colorMyCall","#ff6666").toString(); | ||||||
|   next_color_ReceivedMsg_ = color_ReceivedMsg_ = settings_->value("colorReceivedMsg","#ffeaa7").toString(); |   next_color_rx_background_ = color_rx_background_ = settings_->value("color_rx_background","#ffeaa7").toString(); | ||||||
|  |   next_color_rx_foreground_ = color_rx_foreground_ = settings_->value("color_rx_foreground","#000000").toString(); | ||||||
|  |   next_color_tx_background_ = color_tx_background_ = settings_->value("color_tx_background","#ffffff").toString(); | ||||||
|  |   next_color_tx_foreground_ = color_tx_foreground_ = settings_->value("color_tx_foreground","#000000").toString(); | ||||||
|   next_color_DXCC_ = color_DXCC_ = settings_->value("colorDXCC","#ff00ff").toString(); |   next_color_DXCC_ = color_DXCC_ = settings_->value("colorDXCC","#ff00ff").toString(); | ||||||
|   next_color_NewCall_ = color_NewCall_ = settings_->value("colorNewCall","#ffaaff").toString(); |   next_color_NewCall_ = color_NewCall_ = settings_->value("colorNewCall","#ffaaff").toString(); | ||||||
| 
 | 
 | ||||||
| @ -1386,23 +1408,39 @@ void Configuration::impl::read_settings () | |||||||
|       && next_font_ != font_) |       && next_font_ != font_) | ||||||
|     { |     { | ||||||
|       font_ = next_font_; |       font_ = next_font_; | ||||||
|       Q_EMIT self_->text_font_changed (font_); |       Q_EMIT self_->gui_text_font_changed (font_); | ||||||
|     } |     } | ||||||
|   else |   else | ||||||
|     { |     { | ||||||
|       next_font_ = font_; |       next_font_ = font_; | ||||||
|     } |     } | ||||||
|   if (next_decoded_text_font_.fromString (settings_->value ("DecodedTextFont", "Courier, 10").toString ()) | 
 | ||||||
|       && next_decoded_text_font_ != decoded_text_font_) |   if (next_tx_text_font_.fromString (settings_->value ("TXTextFont", QGuiApplication::font ().toString ()).toString ()) | ||||||
|  |       && next_tx_text_font_ != tx_text_font_) | ||||||
|     { |     { | ||||||
|       decoded_text_font_ = next_decoded_text_font_; |       tx_text_font_ = next_tx_text_font_; | ||||||
|       Q_EMIT self_->decoded_text_font_changed (decoded_text_font_); |       Q_EMIT self_->tx_text_font_changed (tx_text_font_); | ||||||
|     } |     } | ||||||
|   else |   else | ||||||
|     { |     { | ||||||
|       next_decoded_text_font_ = decoded_text_font_; |       next_tx_text_font_ = tx_text_font_; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |   ui_->txFontButton->setText(QString("Font (%1 %2)").arg(next_tx_text_font_.family()).arg(next_tx_text_font_.pointSize())); | ||||||
|  | 
 | ||||||
|  |   if (next_rx_text_font_.fromString (settings_->value ("RXTextFont", QGuiApplication::font ().toString ()).toString ()) | ||||||
|  |       && next_rx_text_font_ != rx_text_font_) | ||||||
|  |     { | ||||||
|  |       rx_text_font_ = next_rx_text_font_; | ||||||
|  |       Q_EMIT self_->rx_text_font_changed (rx_text_font_); | ||||||
|  |     } | ||||||
|  |   else | ||||||
|  |     { | ||||||
|  |       next_rx_text_font_ = rx_text_font_; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |   ui_->rxFontButton->setText(QString("Font (%1 %2)").arg(next_rx_text_font_.family()).arg(next_rx_text_font_.pointSize())); | ||||||
|  | 
 | ||||||
|   id_interval_ = settings_->value ("IDint", 0).toInt (); |   id_interval_ = settings_->value ("IDint", 0).toInt (); | ||||||
|   ntrials_ = settings_->value ("nTrials", 6).toInt (); |   ntrials_ = settings_->value ("nTrials", 6).toInt (); | ||||||
|   txDelay_ = settings_->value ("TxDelay",0.2).toDouble(); |   txDelay_ = settings_->value ("TxDelay",0.2).toDouble(); | ||||||
| @ -1575,13 +1613,17 @@ void Configuration::impl::write_settings () | |||||||
|   settings_->setValue ("Reply", reply_); |   settings_->setValue ("Reply", reply_); | ||||||
|   settings_->setValue ("CallsignAging", callsign_aging_); |   settings_->setValue ("CallsignAging", callsign_aging_); | ||||||
|   settings_->setValue ("ActivityAging", activity_aging_); |   settings_->setValue ("ActivityAging", activity_aging_); | ||||||
|   settings_->setValue("colorCQ",color_CQ_); |   settings_->setValue("colorCQ",color_cq_); | ||||||
|   settings_->setValue("colorMyCall",color_MyCall_); |   settings_->setValue("colorMyCall",color_mycall_); | ||||||
|   settings_->setValue("colorReceivedMsg",color_ReceivedMsg_); |   settings_->setValue("color_rx_background",color_rx_background_); | ||||||
|  |   settings_->setValue("color_rx_foreground",color_rx_foreground_); | ||||||
|  |   settings_->setValue("color_tx_background",color_tx_background_); | ||||||
|  |   settings_->setValue("color_tx_foreground",color_tx_foreground_); | ||||||
|   settings_->setValue("colorDXCC",color_DXCC_); |   settings_->setValue("colorDXCC",color_DXCC_); | ||||||
|   settings_->setValue("colorNewCall",color_NewCall_); |   settings_->setValue("colorNewCall",color_NewCall_); | ||||||
|   settings_->setValue ("Font", font_.toString ()); |   settings_->setValue ("Font", font_.toString ()); | ||||||
|   settings_->setValue ("DecodedTextFont", decoded_text_font_.toString ()); |   settings_->setValue ("RXTextFont", rx_text_font_.toString ()); | ||||||
|  |   settings_->setValue ("TXTextFont", tx_text_font_.toString ()); | ||||||
|   settings_->setValue ("IDint", id_interval_); |   settings_->setValue ("IDint", id_interval_); | ||||||
|   settings_->setValue ("nTrials", ntrials_); |   settings_->setValue ("nTrials", ntrials_); | ||||||
|   settings_->setValue ("TxDelay", txDelay_); |   settings_->setValue ("TxDelay", txDelay_); | ||||||
| @ -1937,18 +1979,27 @@ void Configuration::impl::accept () | |||||||
|   if (next_font_ != font_) |   if (next_font_ != font_) | ||||||
|     { |     { | ||||||
|       font_ = next_font_; |       font_ = next_font_; | ||||||
|       Q_EMIT self_->text_font_changed (font_); |       Q_EMIT self_->gui_text_font_changed (font_); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|   if (next_decoded_text_font_ != decoded_text_font_) |   if (next_tx_text_font_ != tx_text_font_) | ||||||
|     { |     { | ||||||
|       decoded_text_font_ = next_decoded_text_font_; |       tx_text_font_ = next_tx_text_font_; | ||||||
|       Q_EMIT self_->decoded_text_font_changed (decoded_text_font_); |       Q_EMIT self_->tx_text_font_changed (tx_text_font_); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|   color_CQ_ = next_color_CQ_; |   if (next_rx_text_font_ != rx_text_font_) | ||||||
|   color_MyCall_ = next_color_MyCall_; |     { | ||||||
|   color_ReceivedMsg_ = next_color_ReceivedMsg_; |       rx_text_font_ = next_rx_text_font_; | ||||||
|  |       Q_EMIT self_->rx_text_font_changed (rx_text_font_); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |   color_cq_ = next_color_cq_; | ||||||
|  |   color_mycall_ = next_color_mycall_; | ||||||
|  |   color_rx_background_ = next_color_rx_background_; | ||||||
|  |   color_rx_foreground_ = next_color_rx_foreground_; | ||||||
|  |   color_tx_background_ = next_color_tx_background_; | ||||||
|  |   color_tx_foreground_ = next_color_tx_foreground_; | ||||||
|   color_DXCC_ = next_color_DXCC_; |   color_DXCC_ = next_color_DXCC_; | ||||||
|   color_NewCall_ = next_color_NewCall_; |   color_NewCall_ = next_color_NewCall_; | ||||||
| 
 | 
 | ||||||
| @ -2176,64 +2227,115 @@ void Configuration::impl::on_font_push_button_clicked () | |||||||
|   next_font_ = QFontDialog::getFont (0, next_font_, this); |   next_font_ = QFontDialog::getFont (0, next_font_, this); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | QColor getColor(QColor initial, QWidget *parent, QString title){ | ||||||
|  |     QList<QColor> custom = { | ||||||
|  |         QColor("#66FF66"), | ||||||
|  |         QColor("#FF6666"), | ||||||
|  |         QColor("#FFEAA7") | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     auto d = new QColorDialog(initial, parent); | ||||||
|  |     d->setWindowTitle(title); | ||||||
|  |     for(int i = 0; i < custom.length(); i++){ | ||||||
|  |         d->setCustomColor(i, custom.at(i)); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     if(d->exec() == QColorDialog::Accepted){ | ||||||
|  |         return d->selectedColor(); | ||||||
|  |     } else { | ||||||
|  |         return initial; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
| void Configuration::impl::on_pbCQmsg_clicked() | void Configuration::impl::on_pbCQmsg_clicked() | ||||||
| { | { | ||||||
|   auto new_color = QColorDialog::getColor(next_color_CQ_, this, "CQ and BEACON Messages Color"); |   auto new_color = getColor(next_color_cq_, this, "CQ Messages Color"); | ||||||
|   if (new_color.isValid ()) |   if (new_color.isValid ()) | ||||||
|     { |     { | ||||||
|       next_color_CQ_ = new_color; |       next_color_cq_ = new_color; | ||||||
|       ui_->labCQ->setStyleSheet(QString("background: %1").arg(next_color_CQ_.name())); |       ui_->labCQ->setStyleSheet(QString("background: %1").arg(next_color_cq_.name())); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void Configuration::impl::on_pbMyCall_clicked() | void Configuration::impl::on_pbMyCall_clicked() | ||||||
| { | { | ||||||
|   auto new_color = QColorDialog::getColor(next_color_MyCall_, this, "Directed Messages Color"); |   auto new_color = getColor(next_color_mycall_, this, "Directed Messages Color"); | ||||||
|   if (new_color.isValid ()) |   if (new_color.isValid ()) | ||||||
|     { |     { | ||||||
|       next_color_MyCall_ = new_color; |       next_color_mycall_ = new_color; | ||||||
|       ui_->labMyCall->setStyleSheet(QString("background: %1").arg(next_color_MyCall_.name())); |       ui_->labMyCall->setStyleSheet(QString("background: %1").arg(next_color_mycall_.name())); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void Configuration::impl::on_pbTxMsg_clicked() | void Configuration::impl::on_rxBackgroundButton_clicked() | ||||||
| { | { | ||||||
|   auto new_color = QColorDialog::getColor(next_color_ReceivedMsg_, this, "Received Messages Textarea Color"); |   auto new_color = getColor(next_color_rx_background_, this, "Received Messages Background Color"); | ||||||
|   if (new_color.isValid ()) |   if (new_color.isValid ()) | ||||||
|     { |     { | ||||||
|       next_color_ReceivedMsg_ = new_color; |       next_color_rx_background_ = new_color; | ||||||
|       ui_->labTx->setStyleSheet(QString("background: %1").arg(next_color_ReceivedMsg_.name())); |       ui_->rxLabel->setStyleSheet(QString("background: %1").arg(next_color_rx_background_.name())); | ||||||
|  |       ui_->rxForegroundLabel->setStyleSheet(QString("background: %1; color: %2").arg(next_color_rx_background_.name()).arg(next_color_rx_foreground_.name())); | ||||||
|  |       ui_->txForegroundLabel->setStyleSheet(QString("background: %1; color: %2").arg(next_color_rx_background_.name()).arg(next_color_tx_foreground_.name())); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void Configuration::impl::on_pbNewDXCC_clicked() | void Configuration::impl::on_rxForegroundButton_clicked() | ||||||
| { | { | ||||||
|   auto new_color = QColorDialog::getColor(next_color_DXCC_, this, "New DXCC Messages Color"); |   auto new_color = getColor(next_color_rx_foreground_, this, "Received Messages Foreground Color"); | ||||||
|   if (new_color.isValid ()) |   if (new_color.isValid ()) | ||||||
|     { |     { | ||||||
|       next_color_DXCC_ = new_color; |       next_color_rx_foreground_ = new_color; | ||||||
|       ui_->labDXCC->setStyleSheet(QString("background: %1").arg(next_color_DXCC_.name())); |       ui_->rxLabel->setStyleSheet(QString("background: %1").arg(next_color_rx_background_.name())); | ||||||
|  |       ui_->rxForegroundLabel->setStyleSheet(QString("background: %1; color: %2").arg(next_color_rx_background_.name()).arg(next_color_rx_foreground_.name())); | ||||||
|  |       ui_->txForegroundLabel->setStyleSheet(QString("background: %1; color: %2").arg(next_color_rx_background_.name()).arg(next_color_tx_foreground_.name())); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void Configuration::impl::on_pbNewCall_clicked() | void Configuration::impl::on_rxFontButton_clicked () | ||||||
| { | { | ||||||
|   auto new_color = QColorDialog::getColor(next_color_NewCall_, this, "New Call Messages Color"); |   next_rx_text_font_ = QFontDialog::getFont (0, rx_text_font_ , this | ||||||
|   if (new_color.isValid ()) |  | ||||||
|     { |  | ||||||
|       next_color_NewCall_ = new_color; |  | ||||||
|       ui_->labNewCall->setStyleSheet(QString("background: %1").arg(next_color_NewCall_.name())); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void Configuration::impl::on_decoded_text_font_push_button_clicked () |  | ||||||
| { |  | ||||||
|   next_decoded_text_font_ = QFontDialog::getFont (0, decoded_text_font_ , this |  | ||||||
|                                                   , tr ("Font Chooser") |                                                   , tr ("Font Chooser") | ||||||
| #if QT_VERSION >= 0x050201 | #if QT_VERSION >= 0x050201 | ||||||
|                                                   , QFontDialog::MonospacedFonts |                                                   , 0 | ||||||
| #endif | #endif | ||||||
|                                                   ); |                                                   ); | ||||||
|  |   ui_->rxFontButton->setText(QString("Font (%1 %2)").arg(next_rx_text_font_.family()).arg(next_rx_text_font_.pointSize())); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void Configuration::impl::on_txBackgroundButton_clicked() | ||||||
|  | { | ||||||
|  |   auto new_color = getColor(next_color_tx_background_, this, "Transmitted Messages Background Color"); | ||||||
|  |   if (new_color.isValid ()) | ||||||
|  |     { | ||||||
|  |       next_color_tx_background_ = new_color; | ||||||
|  |       ui_->txLabel->setStyleSheet(QString("background: %1").arg(next_color_tx_background_.name())); | ||||||
|  |       ui_->rxForegroundLabel->setStyleSheet(QString("background: %1; color: %2").arg(next_color_rx_background_.name()).arg(next_color_rx_foreground_.name())); | ||||||
|  |       ui_->txForegroundLabel->setStyleSheet(QString("background: %1; color: %2").arg(next_color_rx_background_.name()).arg(next_color_tx_foreground_.name())); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void Configuration::impl::on_txForegroundButton_clicked() | ||||||
|  | { | ||||||
|  |   auto new_color = getColor(next_color_tx_foreground_, this, "Transmitted Messages Foreground Color"); | ||||||
|  |   if (new_color.isValid ()) | ||||||
|  |     { | ||||||
|  |       next_color_tx_foreground_ = new_color; | ||||||
|  |       ui_->txLabel->setStyleSheet(QString("background: %1").arg(next_color_tx_background_.name())); | ||||||
|  |       ui_->rxForegroundLabel->setStyleSheet(QString("background: %1; color: %2").arg(next_color_rx_background_.name()).arg(next_color_rx_foreground_.name())); | ||||||
|  |       ui_->txForegroundLabel->setStyleSheet(QString("background: %1; color: %2").arg(next_color_rx_background_.name()).arg(next_color_tx_foreground_.name())); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void Configuration::impl::on_txFontButton_clicked () | ||||||
|  | { | ||||||
|  |   next_tx_text_font_ = QFontDialog::getFont (0, tx_text_font_ , this | ||||||
|  |                                                   , tr ("Font Chooser") | ||||||
|  | #if QT_VERSION >= 0x050201 | ||||||
|  |                                                   , 0 | ||||||
|  | #endif | ||||||
|  |                                                   ); | ||||||
|  | 
 | ||||||
|  |   ui_->txFontButton->setText(QString("Font (%1 %2)").arg(next_tx_text_font_.family()).arg(next_tx_text_font_.pointSize())); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void Configuration::impl::on_PTT_port_combo_box_activated (int /* index */) | void Configuration::impl::on_PTT_port_combo_box_activated (int /* index */) | ||||||
|  | |||||||
| @ -104,7 +104,8 @@ public: | |||||||
|   QString cq_message () const; |   QString cq_message () const; | ||||||
|   QString reply_message () const; |   QString reply_message () const; | ||||||
|   QFont text_font () const; |   QFont text_font () const; | ||||||
|   QFont decoded_text_font () const; |   QFont rx_text_font () const; | ||||||
|  |   QFont tx_text_font () const; | ||||||
|   qint32 id_interval () const; |   qint32 id_interval () const; | ||||||
|   qint32 ntrials() const; |   qint32 ntrials() const; | ||||||
|   qint32 aggressive() const; |   qint32 aggressive() const; | ||||||
| @ -178,7 +179,10 @@ public: | |||||||
|   Type2MsgGen type_2_msg_gen () const; |   Type2MsgGen type_2_msg_gen () const; | ||||||
|   QColor color_CQ () const; |   QColor color_CQ () const; | ||||||
|   QColor color_MyCall () const; |   QColor color_MyCall () const; | ||||||
|   QColor color_ReceivedMsg () const; |   QColor color_rx_background () const; | ||||||
|  |   QColor color_rx_foreground () const; | ||||||
|  |   QColor color_tx_background () const; | ||||||
|  |   QColor color_tx_foreground () const; | ||||||
|   QColor color_DXCC () const; |   QColor color_DXCC () const; | ||||||
|   QColor color_NewCall () const; |   QColor color_NewCall () const; | ||||||
|   bool pwrBandTxMemory () const; |   bool pwrBandTxMemory () const; | ||||||
| @ -271,8 +275,9 @@ public: | |||||||
|   // These signals indicate a font has been selected and accepted for
 |   // These signals indicate a font has been selected and accepted for
 | ||||||
|   // the application text and decoded text respectively.
 |   // the application text and decoded text respectively.
 | ||||||
|   //
 |   //
 | ||||||
|   Q_SIGNAL void text_font_changed (QFont); |   Q_SIGNAL void gui_text_font_changed (QFont); | ||||||
|   Q_SIGNAL void decoded_text_font_changed (QFont); |   Q_SIGNAL void tx_text_font_changed (QFont); | ||||||
|  |   Q_SIGNAL void rx_text_font_changed (QFont); | ||||||
|   Q_SIGNAL void colors_changed (); |   Q_SIGNAL void colors_changed (); | ||||||
| 
 | 
 | ||||||
|   //
 |   //
 | ||||||
|  | |||||||
							
								
								
									
										1050
									
								
								Configuration.ui
									
									
									
									
									
								
							
							
						
						
									
										1050
									
								
								Configuration.ui
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										113
									
								
								mainwindow.cpp
									
									
									
									
									
								
							
							
						
						
									
										113
									
								
								mainwindow.cpp
									
									
									
									
									
								
							| @ -65,6 +65,9 @@ | |||||||
| #include "ui_mainwindow.h" | #include "ui_mainwindow.h" | ||||||
| #include "moc_mainwindow.cpp" | #include "moc_mainwindow.cpp" | ||||||
| 
 | 
 | ||||||
|  | #define STATE_RX 1 | ||||||
|  | #define STATE_TX 2 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| extern "C" { | extern "C" { | ||||||
|   //----------------------------------------------------- C and Fortran routines
 |   //----------------------------------------------------- C and Fortran routines
 | ||||||
| @ -277,6 +280,52 @@ namespace | |||||||
|     } |     } | ||||||
|     return ""; |     return ""; | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
|  |   void setTextEditFont(QTextEdit *edit, QFont font){ | ||||||
|  |     edit->setFont(font); | ||||||
|  |     edit->setFontFamily(font.family()); | ||||||
|  |     edit->setFontItalic(font.italic()); | ||||||
|  |     edit->setFontPointSize(font.pointSize()); | ||||||
|  |     edit->setFontUnderline(font.underline()); | ||||||
|  |     edit->setFontWeight(font.weight()); | ||||||
|  | 
 | ||||||
|  |     auto d = edit->document(); | ||||||
|  |     d->setDefaultFont(font); | ||||||
|  |     edit->setDocument(d); | ||||||
|  | 
 | ||||||
|  |     auto c = edit->textCursor(); | ||||||
|  |     c.select(QTextCursor::Document); | ||||||
|  |     auto cf = c.blockCharFormat(); | ||||||
|  |     cf.setFont(font); | ||||||
|  |     c.mergeBlockCharFormat(cf); | ||||||
|  | 
 | ||||||
|  |     edit->updateGeometry(); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   void setTextEditBackground(QTextEdit *edit, QColor color){ | ||||||
|  |     edit->setStyleSheet(QString("QTextEdit{ background: %1 }").arg(color.name())); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   void highlightBlock(QTextBlock block, QFont font, QColor foreground, QColor background){ | ||||||
|  |     QTextCursor cursor(block); | ||||||
|  | 
 | ||||||
|  |     // Set background color
 | ||||||
|  |     QTextBlockFormat blockFormat = cursor.blockFormat(); | ||||||
|  |     blockFormat.setBackground(background); | ||||||
|  |     cursor.setBlockFormat(blockFormat); | ||||||
|  | 
 | ||||||
|  |     // Set font
 | ||||||
|  |     for (QTextBlock::iterator it = cursor.block().begin(); !(it.atEnd()); ++it) { | ||||||
|  |       QTextCharFormat charFormat = it.fragment().charFormat(); | ||||||
|  |       charFormat.setFont(font); | ||||||
|  |       charFormat.setForeground(QBrush(foreground)); | ||||||
|  | 
 | ||||||
|  |       QTextCursor tempCursor = cursor; | ||||||
|  |       tempCursor.setPosition(it.fragment().position()); | ||||||
|  |       tempCursor.setPosition(it.fragment().position() + it.fragment().length(), QTextCursor::KeepAnchor); | ||||||
|  |       tempCursor.setCharFormat(charFormat); | ||||||
|  |     } | ||||||
|  |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| //--------------------------------------------------- MainWindow constructor
 | //--------------------------------------------------- MainWindow constructor
 | ||||||
| @ -628,14 +677,37 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple, | |||||||
|   // defer initialization until after construction otherwise menu
 |   // defer initialization until after construction otherwise menu
 | ||||||
|   // fonts do not get set
 |   // fonts do not get set
 | ||||||
|   QTimer::singleShot (0, this, SLOT (initialize_fonts ())); |   QTimer::singleShot (0, this, SLOT (initialize_fonts ())); | ||||||
|   connect (&m_config, &Configuration::text_font_changed, [this] (QFont const& font) { |   connect (&m_config, &Configuration::gui_text_font_changed, [this] (QFont const& font) { | ||||||
|       set_application_font (font); |       set_application_font (font); | ||||||
|     }); |   }); | ||||||
|   connect (&m_config, &Configuration::decoded_text_font_changed, [this] (QFont const& font) { |   connect (&m_config, &Configuration::rx_text_font_changed, [this] (QFont const&) { | ||||||
|       setDecodedTextFont (font); |       setTextEditFont(ui->textEditRX, m_config.rx_text_font()); | ||||||
|     }); |   }); | ||||||
|  |   connect (&m_config, &Configuration::tx_text_font_changed, [this] (QFont const&) { | ||||||
|  |       setTextEditFont(ui->extFreeTextMsgEdit, m_config.tx_text_font()); | ||||||
|  |   }); | ||||||
|   connect (&m_config, &Configuration::colors_changed, [this](){ |   connect (&m_config, &Configuration::colors_changed, [this](){ | ||||||
|      ui->textEditRX->setStyleSheet(QString("QTextEdit{ background: %1 }").arg(m_config.color_ReceivedMsg().name())); |      setTextEditBackground(ui->textEditRX, m_config.color_rx_background()); | ||||||
|  |      setTextEditBackground(ui->extFreeTextMsgEdit, m_config.color_tx_background()); | ||||||
|  | 
 | ||||||
|  |      // rehighlight
 | ||||||
|  |      auto d = ui->textEditRX->document(); | ||||||
|  |      if(d){ | ||||||
|  |          for(int i = 0; i < d->lineCount(); i++){ | ||||||
|  |              auto b = d->findBlockByLineNumber(i); | ||||||
|  | 
 | ||||||
|  |              switch(b.userState()){ | ||||||
|  |              case STATE_RX: | ||||||
|  |                  highlightBlock(b, m_config.rx_text_font(), m_config.color_rx_foreground(), QColor(Qt::transparent)); | ||||||
|  |                  break; | ||||||
|  |              case STATE_TX: | ||||||
|  |                  highlightBlock(b, m_config.tx_text_font(), m_config.color_tx_foreground(), QColor(Qt::transparent)); | ||||||
|  |                  break; | ||||||
|  |              } | ||||||
|  |          } | ||||||
|  |      } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|   }); |   }); | ||||||
| 
 | 
 | ||||||
|   setWindowTitle (program_title ()); |   setWindowTitle (program_title ()); | ||||||
| @ -1376,7 +1448,9 @@ void MainWindow::not_GA_warning_message () | |||||||
| void MainWindow::initialize_fonts () | void MainWindow::initialize_fonts () | ||||||
| { | { | ||||||
|   set_application_font (m_config.text_font ()); |   set_application_font (m_config.text_font ()); | ||||||
|   setDecodedTextFont (m_config.decoded_text_font ()); | 
 | ||||||
|  |   setTextEditFont(ui->textEditRX, m_config.rx_text_font()); | ||||||
|  |   setTextEditFont(ui->extFreeTextMsgEdit, m_config.tx_text_font()); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void MainWindow::splash_done () | void MainWindow::splash_done () | ||||||
| @ -1716,7 +1790,7 @@ void MainWindow::readSettings() | |||||||
|   //ui->bandHorizontalWidget->setGeometry( m_settings->value("PanelWaterfallGeometry", ui->bandHorizontalWidget->geometry()).toRect());
 |   //ui->bandHorizontalWidget->setGeometry( m_settings->value("PanelWaterfallGeometry", ui->bandHorizontalWidget->geometry()).toRect());
 | ||||||
|   //qDebug() << m_settings->value("PanelTopGeometry") << ui->extFreeTextMsg;
 |   //qDebug() << m_settings->value("PanelTopGeometry") << ui->extFreeTextMsg;
 | ||||||
| 
 | 
 | ||||||
|   ui->textEditRX->setStyleSheet(QString("QTextEdit { background: %1 }").arg(m_config.color_ReceivedMsg().name())); |   ui->textEditRX->setStyleSheet(QString("QTextEdit { background: %1 }").arg(m_config.color_rx_background().name())); | ||||||
| 
 | 
 | ||||||
|   { |   { | ||||||
|     auto const& coeffs = m_settings->value ("PhaseEqualizationCoefficients" |     auto const& coeffs = m_settings->value ("PhaseEqualizationCoefficients" | ||||||
| @ -2898,6 +2972,7 @@ void MainWindow::on_actionFox_Log_triggered() | |||||||
| 
 | 
 | ||||||
| void MainWindow::on_actionMessage_averaging_triggered() | void MainWindow::on_actionMessage_averaging_triggered() | ||||||
| { | { | ||||||
|  | #if 0 | ||||||
|   if (!m_msgAvgWidget) |   if (!m_msgAvgWidget) | ||||||
|     { |     { | ||||||
|       m_msgAvgWidget.reset (new MessageAveraging {m_settings, m_config.decoded_text_font ()}); |       m_msgAvgWidget.reset (new MessageAveraging {m_settings, m_config.decoded_text_font ()}); | ||||||
| @ -2908,6 +2983,7 @@ void MainWindow::on_actionMessage_averaging_triggered() | |||||||
|   m_msgAvgWidget->showNormal(); |   m_msgAvgWidget->showNormal(); | ||||||
|   m_msgAvgWidget->raise (); |   m_msgAvgWidget->raise (); | ||||||
|   m_msgAvgWidget->activateWindow (); |   m_msgAvgWidget->activateWindow (); | ||||||
|  | #endif | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void MainWindow::on_actionOpen_triggered()                     //Open File
 | void MainWindow::on_actionOpen_triggered()                     //Open File
 | ||||||
| @ -4347,7 +4423,7 @@ void MainWindow::guiUpdate() | |||||||
|       write_transmit_entry ("ALL.TXT"); |       write_transmit_entry ("ALL.TXT"); | ||||||
|       if (m_config.TX_messages ()) { |       if (m_config.TX_messages ()) { | ||||||
|         ui->decodedTextBrowser2->displayTransmittedText(m_currentMessage,m_modeTx, |         ui->decodedTextBrowser2->displayTransmittedText(m_currentMessage,m_modeTx, | ||||||
|                      ui->TxFreqSpinBox->value(),m_config.color_ReceivedMsg(),m_bFastMode); |                      ui->TxFreqSpinBox->value(),m_config.color_rx_background(),m_bFastMode); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -4451,7 +4527,7 @@ void MainWindow::guiUpdate() | |||||||
| 
 | 
 | ||||||
|       if (m_config.TX_messages () && !m_tune && !m_config.bFox()) { |       if (m_config.TX_messages () && !m_tune && !m_config.bFox()) { | ||||||
|         ui->decodedTextBrowser2->displayTransmittedText(current_message, m_modeTx, |         ui->decodedTextBrowser2->displayTransmittedText(current_message, m_modeTx, | ||||||
|               ui->TxFreqSpinBox->value(),m_config.color_ReceivedMsg(),m_bFastMode); |               ui->TxFreqSpinBox->value(),m_config.color_rx_background(),m_bFastMode); | ||||||
|       } |       } | ||||||
| 
 | 
 | ||||||
|       switch (m_ntx) |       switch (m_ntx) | ||||||
| @ -5904,7 +5980,6 @@ void MainWindow::writeNoticeTextToUI(QDateTime date, QString text){ | |||||||
|     ui->textEditRX->verticalScrollBar()->setValue(ui->textEditRX->verticalScrollBar()->maximum()); |     ui->textEditRX->verticalScrollBar()->setValue(ui->textEditRX->verticalScrollBar()->maximum()); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| int MainWindow::writeMessageTextToUI(QDateTime date, QString text, int freq, bool bold, int block){ | int MainWindow::writeMessageTextToUI(QDateTime date, QString text, int freq, bool bold, int block){ | ||||||
|     auto c = ui->textEditRX->textCursor(); |     auto c = ui->textEditRX->textCursor(); | ||||||
| 
 | 
 | ||||||
| @ -5943,7 +6018,13 @@ int MainWindow::writeMessageTextToUI(QDateTime date, QString text, int freq, boo | |||||||
|         c.insertHtml(QString("<strong>%1 - (%2)</strong> - %3").arg(date.time().toString()).arg(freq).arg(text)); |         c.insertHtml(QString("<strong>%1 - (%2)</strong> - %3").arg(date.time().toString()).arg(freq).arg(text)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     c.movePosition(QTextCursor::End); |     if(bold){ | ||||||
|  |         c.block().setUserState(STATE_TX); | ||||||
|  |         highlightBlock(c.block(), m_config.tx_text_font(), m_config.color_tx_foreground(), QColor(Qt::transparent)); | ||||||
|  |     } else { | ||||||
|  |         c.block().setUserState(STATE_RX); | ||||||
|  |         highlightBlock(c.block(), m_config.rx_text_font(), m_config.color_rx_foreground(), QColor(Qt::transparent)); | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     ui->textEditRX->ensureCursorVisible(); |     ui->textEditRX->ensureCursorVisible(); | ||||||
|     ui->textEditRX->verticalScrollBar()->setValue(ui->textEditRX->verticalScrollBar()->maximum()); |     ui->textEditRX->verticalScrollBar()->setValue(ui->textEditRX->verticalScrollBar()->maximum()); | ||||||
| @ -6110,6 +6191,9 @@ void MainWindow::on_extFreeTextMsgEdit_currentTextChanged (QString const& text) | |||||||
|       ui->extFreeTextMsgEdit->setPlainText(x); |       ui->extFreeTextMsgEdit->setPlainText(x); | ||||||
|       QTextCursor c = ui->extFreeTextMsgEdit->textCursor(); |       QTextCursor c = ui->extFreeTextMsgEdit->textCursor(); | ||||||
|       c.setPosition(pos < maxpos ? pos : maxpos, QTextCursor::MoveAnchor); |       c.setPosition(pos < maxpos ? pos : maxpos, QTextCursor::MoveAnchor); | ||||||
|  | 
 | ||||||
|  |       highlightBlock(c.block(), m_config.tx_text_font(), QColor(Qt::black), QColor(Qt::transparent)); | ||||||
|  | 
 | ||||||
|       ui->extFreeTextMsgEdit->setTextCursor(c); |       ui->extFreeTextMsgEdit->setTextCursor(c); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -6121,6 +6205,9 @@ void MainWindow::on_extFreeTextMsgEdit_currentTextChanged (QString const& text) | |||||||
|         ui->startTxButton->setText("Send"); |         ui->startTxButton->setText("Send"); | ||||||
|         ui->startTxButton->setEnabled(false); |         ui->startTxButton->setEnabled(false); | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int MainWindow::currentFreqOffset(){ | int MainWindow::currentFreqOffset(){ | ||||||
| @ -11235,7 +11322,7 @@ void MainWindow::foxGenWaveform(int i,QString fm) | |||||||
|   QString txModeArg; |   QString txModeArg; | ||||||
|   txModeArg.sprintf("FT8fox %d",i+1); |   txModeArg.sprintf("FT8fox %d",i+1); | ||||||
|   ui->decodedTextBrowser2->displayTransmittedText(fm.trimmed(), txModeArg, |   ui->decodedTextBrowser2->displayTransmittedText(fm.trimmed(), txModeArg, | ||||||
|         ui->TxFreqSpinBox->value()+60*i,m_config.color_ReceivedMsg(),m_bFastMode); |         ui->TxFreqSpinBox->value()+60*i,m_config.color_rx_background(),m_bFastMode); | ||||||
|   foxcom_.i3bit[i]=0; |   foxcom_.i3bit[i]=0; | ||||||
|   if(fm.indexOf("<")>0) foxcom_.i3bit[i]=1; |   if(fm.indexOf("<")>0) foxcom_.i3bit[i]=1; | ||||||
|   strncpy(&foxcom_.cmsg[i][0],fm.toLatin1(),40);   //Copy this message into cmsg[i]
 |   strncpy(&foxcom_.cmsg[i][0],fm.toLatin1(),40);   //Copy this message into cmsg[i]
 | ||||||
|  | |||||||
| @ -1073,7 +1073,7 @@ background-color: #00ff00; | |||||||
|          </property> |          </property> | ||||||
|          <property name="font"> |          <property name="font"> | ||||||
|           <font> |           <font> | ||||||
|            <pointsize>12</pointsize> |            <pointsize>14</pointsize> | ||||||
|            <italic>false</italic> |            <italic>false</italic> | ||||||
|           </font> |           </font> | ||||||
|          </property> |          </property> | ||||||
| @ -1102,7 +1102,7 @@ background-color: #00ff00; | |||||||
|          </property> |          </property> | ||||||
|          <property name="font"> |          <property name="font"> | ||||||
|           <font> |           <font> | ||||||
|            <pointsize>12</pointsize> |            <pointsize>14</pointsize> | ||||||
|           </font> |           </font> | ||||||
|          </property> |          </property> | ||||||
|          <property name="styleSheet"> |          <property name="styleSheet"> | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Jordan Sherer
						Jordan Sherer