mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-11-03 21:40:52 -05:00 
			
		
		
		
	Also added Tx status to status UDP message. Added the above features to the reference UDP server message_aggregator. Merged from the wsjtx-1.5 branch. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5334 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
		
			
				
	
	
		
			83 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#ifndef QT_HELPERS_HPP_
 | 
						|
#define QT_HELPERS_HPP_
 | 
						|
 | 
						|
#include <stdexcept>
 | 
						|
#include <functional>
 | 
						|
 | 
						|
#include <QDataStream>
 | 
						|
#include <QMetaObject>
 | 
						|
#include <QMetaType>
 | 
						|
#include <QMetaEnum>
 | 
						|
#include <QString>
 | 
						|
#include <QDebug>
 | 
						|
#include <QHostAddress>
 | 
						|
 | 
						|
class QVariant;
 | 
						|
 | 
						|
#define ENUM_QDATASTREAM_OPS_DECL(CLASS, ENUM)				\
 | 
						|
  QDataStream& operator << (QDataStream&, CLASS::ENUM);			\
 | 
						|
  QDataStream& operator >> (QDataStream&, CLASS::ENUM&);
 | 
						|
 | 
						|
#define ENUM_QDATASTREAM_OPS_IMPL(CLASS, ENUM)				\
 | 
						|
  QDataStream& operator << (QDataStream& os, CLASS::ENUM v)		\
 | 
						|
  {									\
 | 
						|
    auto const& mo = CLASS::staticMetaObject;				\
 | 
						|
    return os << mo.enumerator (mo.indexOfEnumerator (#ENUM)).valueToKey (v); \
 | 
						|
  }									\
 | 
						|
									\
 | 
						|
  QDataStream& operator >> (QDataStream& is, CLASS::ENUM& v)		\
 | 
						|
  {									\
 | 
						|
    char * buffer;							\
 | 
						|
    is >> buffer;							\
 | 
						|
    bool ok {false};							\
 | 
						|
    auto const& mo = CLASS::staticMetaObject;				\
 | 
						|
    auto const& me = mo.enumerator (mo.indexOfEnumerator (#ENUM));	\
 | 
						|
    if (buffer)								\
 | 
						|
      {									\
 | 
						|
	v = static_cast<CLASS::ENUM> (me.keyToValue (buffer, &ok));	\
 | 
						|
	delete [] buffer;						\
 | 
						|
      }									\
 | 
						|
    if (!ok)								\
 | 
						|
      {									\
 | 
						|
	v = static_cast<CLASS::ENUM> (me.value (0));			\
 | 
						|
      }									\
 | 
						|
    return is;								\
 | 
						|
  }
 | 
						|
 | 
						|
#define ENUM_QDEBUG_OPS_DECL(CLASS, ENUM)				\
 | 
						|
  QDebug operator << (QDebug, CLASS::ENUM);
 | 
						|
 | 
						|
#define ENUM_QDEBUG_OPS_IMPL(CLASS, ENUM)				\
 | 
						|
  QDebug operator << (QDebug d, CLASS::ENUM m)				\
 | 
						|
  {									\
 | 
						|
    auto const& mo = CLASS::staticMetaObject;				\
 | 
						|
    return d << mo.enumerator (mo.indexOfEnumerator (#ENUM)).valueToKey (m); \
 | 
						|
  }
 | 
						|
 | 
						|
#define ENUM_CONVERSION_OPS_DECL(CLASS, ENUM)	\
 | 
						|
  QString enum_to_qstring (CLASS::ENUM);
 | 
						|
 | 
						|
#define ENUM_CONVERSION_OPS_IMPL(CLASS, ENUM)				\
 | 
						|
  QString enum_to_qstring (CLASS::ENUM m)				\
 | 
						|
  {									\
 | 
						|
    auto const& mo = CLASS::staticMetaObject;				\
 | 
						|
    return QString {mo.enumerator (mo.indexOfEnumerator (#ENUM)).valueToKey (m)}; \
 | 
						|
  }
 | 
						|
 | 
						|
inline
 | 
						|
void throw_qstring (QString const& qs)
 | 
						|
{
 | 
						|
  throw std::runtime_error {qs.toLocal8Bit ().constData ()};
 | 
						|
}
 | 
						|
 | 
						|
QString font_as_stylesheet (QFont const&);
 | 
						|
 | 
						|
// do what is necessary to change a dynamic property and trigger any
 | 
						|
// conditional style sheet updates
 | 
						|
void update_dynamic_property (QWidget *, char const * property, QVariant const& value);
 | 
						|
 | 
						|
// Register some useful Qt types with QMetaType
 | 
						|
Q_DECLARE_METATYPE (QHostAddress);
 | 
						|
 | 
						|
#endif
 |