Index: src/QtWidgets/Makefile ================================================================== --- src/QtWidgets/Makefile +++ src/QtWidgets/Makefile @@ -4,10 +4,11 @@ STATIC_LIB_NOINST = ${QTWIDGETS_A} SRCS = QtAbstractButton.mm \ QtAction.mm \ QtApplication.mm \ + QtPushButton.mm \ QtWidget.mm include ../../buildsys.mk CPPFLAGS += -I. -I../QtCore -I../QtGui -I../common ADDED src/QtWidgets/QtPushButton.h Index: src/QtWidgets/QtPushButton.h ================================================================== --- src/QtWidgets/QtPushButton.h +++ src/QtWidgets/QtPushButton.h @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2017, Maximilian Schander + * Copyright (c) 2017, Jonathan Schleifer + * + * https://heap.zone/git/objqt.git + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice is present in all copies. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#import "QtAbstractButton.h" + +#include +#include + +@interface QtPushButton: QtAbstractButton +@property (readonly) QPushButton *qPushButton; +@property QMenu* menu; +@property bool autoDefault; +@property (getter=isDefault, setter=setDefault:) bool default_; +@property (getter=isFlat) bool flat; + +- initWithQPushButton: (QPushButton*)qPushButton; +- initWithText: (OFString*)text; +- initWithIcon: (QIcon)icon + text: (OFString*)text; +@end + +namespace ObjQt { + +static OF_INLINE QtPushButton* +toOF(QPushButton *qPushButton) +{ + return [[[QtPushButton alloc] + initWithQPushButton: qPushButton] autorelease]; +} + +static OF_INLINE QPushButton* +toQt(QtPushButton *pushButton) +{ + return [pushButton qPushButton]; +} + +} ADDED src/QtWidgets/QtPushButton.mm Index: src/QtWidgets/QtPushButton.mm ================================================================== --- src/QtWidgets/QtPushButton.mm +++ src/QtWidgets/QtPushButton.mm @@ -0,0 +1,121 @@ +/* + * Copyright (c) 2017, Maximilian Schander + * Copyright (c) 2017, Jonathan Schleifer + * + * https://heap.zone/git/objqt.git + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice is present in all copies. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#import "QtPushButton.h" +#import "OFString+QString.h" + +#import "helpers.h" + +using ObjQt::toOF; +using ObjQt::toQt; + +@implementation QtPushButton + +- initWithQAbstractButton: (QAbstractButton*)qAbstractButton +{ + OF_INVALID_INIT_METHOD +} + +- initWithQPushButton: (QPushButton*)qPushButton +{ + return [super initWithQAbstractButton: qPushButton]; +} + +- initWithText: (OFString*)text +{ + try { + self = [self initWithQPushButton: + new QPushButton(toQt(text))]; + + [self takeOwnership]; + + return self; + } catch (const std::bad_alloc &e) { + self = [super initWithQAbstractButton: NULL]; + [self release]; + throw; + } +} + +- initWithIcon: (QIcon)icon + text: (OFString*)text +{ + try { + self = [self initWithQPushButton: + new QPushButton(icon, toQt(text))]; + + [self takeOwnership]; + + return self; + } catch (const std::bad_alloc &e) { + self = [super initWithQAbstractButton: NULL]; + [self release]; + throw; + } +} + +- (QPushButton*)qPushButton +{ + return qobject_cast(_qObject); +} + +- (QMenu*)menu +{ + return toQt(self)->menu(); +} + +- (void)setMenu: (QMenu*)menu +{ + toQt(self)->setMenu(menu); +} + +- (bool)autoDefault +{ + return toQt(self)->autoDefault(); +} + +- (void)setAutoDefault: (bool)autodefault +{ + toQt(self)->setAutoDefault(autodefault); +} + +- (bool)isDefault +{ + return toQt(self)->isDefault(); +} + +- (void)setDefault: (bool)def +{ + toQt(self)->setDefault(def); +} + +- (bool)isFlat +{ + return toQt(self)->isFlat(); +} + +- (void)setFlat: (bool)flat +{ + toQt(self)->setFlat(flat); +} +@end