Parts of Updates to or activation of wxChoice, wxStaticBitmap, wxCheckbox on iOS (#25899, #25846) * iOS only parts of #25846 Activate and use wxBitmapBundle in wxStaticBitmap Activate wxChoice and implement EVT_CHOICE Small correction about Resource directory on IOS Implement label next to checkbox * fixing trailing whitespace * fixing whitespace
| ... | ... | @@ -5606,6 +5606,7 @@ COND_TOOLKIT_OSX_IPHONE___GUI_SRC_OBJECTS = \ |
| 5606 | 5606 | monodll_iphone_anybutton.o \
|
| 5607 | 5607 | monodll_iphone_button.o \
|
| 5608 | 5608 | monodll_iphone_checkbox.o \
|
| 5609 | + monodll_iphone_choice.o \
|
|
| 5609 | 5610 | monodll_iphone_colour.o \
|
| 5610 | 5611 | monodll_iphone_dialog.o \
|
| 5611 | 5612 | monodll_iphone_evtloop.o \
|
| ... | ... | @@ -7387,6 +7388,7 @@ COND_TOOLKIT_OSX_IPHONE___GUI_SRC_OBJECTS_1 = \ |
| 7387 | 7388 | monolib_iphone_anybutton.o \
|
| 7388 | 7389 | monolib_iphone_button.o \
|
| 7389 | 7390 | monolib_iphone_checkbox.o \
|
| 7391 | + monolib_iphone_choice.o \
|
|
| 7390 | 7392 | monolib_iphone_colour.o \
|
| 7391 | 7393 | monolib_iphone_dialog.o \
|
| 7392 | 7394 | monolib_iphone_evtloop.o \
|
| ... | ... | @@ -9314,6 +9316,7 @@ COND_TOOLKIT_OSX_IPHONE___GUI_SRC_OBJECTS_2 = \ |
| 9314 | 9316 | coredll_iphone_anybutton.o \
|
| 9315 | 9317 | coredll_iphone_button.o \
|
| 9316 | 9318 | coredll_iphone_checkbox.o \
|
| 9319 | + coredll_iphone_choice.o \
|
|
| 9317 | 9320 | coredll_iphone_colour.o \
|
| 9318 | 9321 | coredll_iphone_dialog.o \
|
| 9319 | 9322 | coredll_iphone_evtloop.o \
|
| ... | ... | @@ -10823,6 +10826,7 @@ COND_TOOLKIT_OSX_IPHONE___GUI_SRC_OBJECTS_3 = \ |
| 10823 | 10826 | corelib_iphone_anybutton.o \
|
| 10824 | 10827 | corelib_iphone_button.o \
|
| 10825 | 10828 | corelib_iphone_checkbox.o \
|
| 10829 | + corelib_iphone_choice.o \
|
|
| 10826 | 10830 | corelib_iphone_colour.o \
|
| 10827 | 10831 | corelib_iphone_dialog.o \
|
| 10828 | 10832 | corelib_iphone_evtloop.o \
|
| ... | ... | @@ -16130,6 +16134,9 @@ monodll_iphone_button.o: $(srcdir)/src/osx/iphone/button.mm $(MONODLL_ODEP) |
| 16130 | 16134 | monodll_iphone_checkbox.o: $(srcdir)/src/osx/iphone/checkbox.mm $(MONODLL_ODEP)
|
| 16131 | 16135 | $(CXXC) -c -o $@ $(MONODLL_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/checkbox.mm
|
| 16132 | 16136 | |
| 16137 | +monodll_iphone_choice.o: $(srcdir)/src/osx/iphone/choice.mm $(MONODLL_ODEP)
|
|
| 16138 | + $(CXXC) -c -o $@ $(MONODLL_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/choice.mm
|
|
| 16139 | + |
|
| 16133 | 16140 | monodll_iphone_colour.o: $(srcdir)/src/osx/iphone/colour.mm $(MONODLL_ODEP)
|
| 16134 | 16141 | $(CXXC) -c -o $@ $(MONODLL_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/colour.mm
|
| 16135 | 16142 | |
| ... | ... | @@ -20909,6 +20916,9 @@ monolib_iphone_button.o: $(srcdir)/src/osx/iphone/button.mm $(MONOLIB_ODEP) |
| 20909 | 20916 | monolib_iphone_checkbox.o: $(srcdir)/src/osx/iphone/checkbox.mm $(MONOLIB_ODEP)
|
| 20910 | 20917 | $(CXXC) -c -o $@ $(MONOLIB_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/checkbox.mm
|
| 20911 | 20918 | |
| 20919 | +monolib_iphone_choice.o: $(srcdir)/src/osx/iphone/choice.mm $(MONOLIB_ODEP)
|
|
| 20920 | + $(CXXC) -c -o $@ $(MONOLIB_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/choice.mm
|
|
| 20921 | + |
|
| 20912 | 20922 | monolib_iphone_colour.o: $(srcdir)/src/osx/iphone/colour.mm $(MONOLIB_ODEP)
|
| 20913 | 20923 | $(CXXC) -c -o $@ $(MONOLIB_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/colour.mm
|
| 20914 | 20924 | |
| ... | ... | @@ -26357,6 +26367,9 @@ coredll_iphone_button.o: $(srcdir)/src/osx/iphone/button.mm $(COREDLL_ODEP) |
| 26357 | 26367 | coredll_iphone_checkbox.o: $(srcdir)/src/osx/iphone/checkbox.mm $(COREDLL_ODEP)
|
| 26358 | 26368 | $(CXXC) -c -o $@ $(COREDLL_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/checkbox.mm
|
| 26359 | 26369 | |
| 26370 | +coredll_iphone_choice.o: $(srcdir)/src/osx/iphone/choice.mm $(COREDLL_ODEP)
|
|
| 26371 | + $(CXXC) -c -o $@ $(COREDLL_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/choice.mm
|
|
| 26372 | + |
|
| 26360 | 26373 | coredll_iphone_colour.o: $(srcdir)/src/osx/iphone/colour.mm $(COREDLL_ODEP)
|
| 26361 | 26374 | $(CXXC) -c -o $@ $(COREDLL_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/colour.mm
|
| 26362 | 26375 | |
| ... | ... | @@ -30107,6 +30120,9 @@ corelib_iphone_button.o: $(srcdir)/src/osx/iphone/button.mm $(CORELIB_ODEP) |
| 30107 | 30120 | corelib_iphone_checkbox.o: $(srcdir)/src/osx/iphone/checkbox.mm $(CORELIB_ODEP)
|
| 30108 | 30121 | $(CXXC) -c -o $@ $(CORELIB_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/checkbox.mm
|
| 30109 | 30122 | |
| 30123 | +corelib_iphone_choice.o: $(srcdir)/src/osx/iphone/choice.mm $(CORELIB_ODEP)
|
|
| 30124 | + $(CXXC) -c -o $@ $(CORELIB_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/choice.mm
|
|
| 30125 | + |
|
| 30110 | 30126 | corelib_iphone_colour.o: $(srcdir)/src/osx/iphone/colour.mm $(CORELIB_ODEP)
|
| 30111 | 30127 | $(CXXC) -c -o $@ $(CORELIB_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/colour.mm
|
| 30112 | 30128 |
| ... | ... | @@ -2377,6 +2377,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! |
| 2377 | 2377 | src/osx/iphone/anybutton.mm
|
| 2378 | 2378 | src/osx/iphone/button.mm
|
| 2379 | 2379 | src/osx/iphone/checkbox.mm
|
| 2380 | + src/osx/iphone/choice.mm
|
|
| 2380 | 2381 | src/osx/iphone/colour.mm
|
| 2381 | 2382 | src/osx/iphone/dialog.mm
|
| 2382 | 2383 | src/osx/iphone/evtloop.mm
|
| ... | ... | @@ -2231,6 +2231,7 @@ set(OSX_IPHONE_SRC |
| 2231 | 2231 | src/osx/iphone/anybutton.mm
|
| 2232 | 2232 | src/osx/iphone/button.mm
|
| 2233 | 2233 | src/osx/iphone/checkbox.mm
|
| 2234 | + src/osx/iphone/choice.mm
|
|
| 2234 | 2235 | src/osx/iphone/colour.mm
|
| 2235 | 2236 | src/osx/iphone/dialog.mm
|
| 2236 | 2237 | src/osx/iphone/evtloop.mm
|
| ... | ... | @@ -2232,6 +2232,7 @@ OSX_IPHONE_SRC = |
| 2232 | 2232 | src/osx/iphone/anybutton.mm
|
| 2233 | 2233 | src/osx/iphone/button.mm
|
| 2234 | 2234 | src/osx/iphone/checkbox.mm
|
| 2235 | + src/osx/iphone/choice.mm
|
|
| 2235 | 2236 | src/osx/iphone/colour.mm
|
| 2236 | 2237 | src/osx/iphone/dialog.mm
|
| 2237 | 2238 | src/osx/iphone/evtloop.mm
|
| ... | ... | @@ -368,6 +368,7 @@ public: |
| 368 | 368 | - Unix: @c prefix/share/appinfo
|
| 369 | 369 | - Windows: the directory where the executable file is located
|
| 370 | 370 | - Mac: @c appinfo.app/Contents/Resources bundle subdirectory
|
| 371 | + - iOS: @c appinfo.app bundle subdirectory
|
|
| 371 | 372 | |
| 372 | 373 | @since 2.7.0
|
| 373 | 374 |
| ... | ... | @@ -12,6 +12,7 @@ |
| 12 | 12 | #if wxUSE_CHECKBOX
|
| 13 | 13 | |
| 14 | 14 | #include "wx/checkbox.h"
|
| 15 | +#include "wx/stattext.h"
|
|
| 15 | 16 | #include "wx/osx/private.h"
|
| 16 | 17 | |
| 17 | 18 | @interface wxUISwitch : UISwitch
|
| ... | ... | @@ -37,29 +38,60 @@ |
| 37 | 38 | class wxCheckBoxIPhoneImpl : public wxWidgetIPhoneImpl
|
| 38 | 39 | {
|
| 39 | 40 | public:
|
| 40 | - wxCheckBoxIPhoneImpl(wxWindowMac *wxpeer, UISwitch *v)
|
|
| 41 | + wxCheckBoxIPhoneImpl(wxWindowMac *wxpeer, UISwitch *v, wxStaticText *l)
|
|
| 41 | 42 | : wxWidgetIPhoneImpl(wxpeer, v)
|
| 42 | 43 | {
|
| 43 | 44 | m_control = v;
|
| 45 | + m_label = l;
|
|
| 44 | 46 | }
|
| 45 | 47 | |
| 46 | - wxInt32 GetValue() const
|
|
| 48 | + wxInt32 GetValue() const override
|
|
| 47 | 49 | {
|
| 48 | 50 | return [m_control isOn] ? 1 : 0;
|
| 49 | 51 | }
|
| 50 | 52 | |
| 51 | - void SetValue( wxInt32 v )
|
|
| 53 | + void SetValue( wxInt32 v ) override
|
|
| 52 | 54 | {
|
| 53 | 55 | [m_control setOn:v != 0 animated:NO];
|
| 54 | 56 | }
|
| 57 | + |
|
| 58 | + // a blog on spacing in iOS
|
|
| 59 | + // https://uxdesign.cc/designing-widgets-for-ios-macos-and-ipados-the-ultimate-guide-737fb284a9df
|
|
| 60 | + const int widthOfSpace = 9;
|
|
| 61 | + |
|
| 62 | + void Move(int x, int y, int width, int height) override
|
|
| 63 | + {
|
|
| 64 | + wxWidgetIPhoneImpl::Move( x, y, width, height );
|
|
| 65 | + |
|
| 66 | + int checkboxWidth = 0;
|
|
| 67 | + int checkboxHeight = 0;
|
|
| 68 | + // get size of checkbox
|
|
| 69 | + wxWidgetIPhoneImpl::GetSize( checkboxWidth, checkboxHeight );
|
|
| 70 | + |
|
| 71 | + // get size of label
|
|
| 72 | + wxSize sz = m_label->GetSize();
|
|
| 73 | + |
|
| 74 | + int offset = (checkboxHeight-sz.y) / 2;
|
|
| 75 | + |
|
| 76 | + m_label->SetPosition( wxPoint(x + checkboxWidth+widthOfSpace, y+offset) );
|
|
| 77 | + }
|
|
| 78 | + |
|
| 79 | + void GetSize( int &width, int &height ) const override
|
|
| 80 | + {
|
|
| 81 | + wxWidgetIPhoneImpl::GetSize( width, height );
|
|
| 82 | + wxSize sz = m_label->GetSize();
|
|
| 83 | + width += widthOfSpace + sz.x;
|
|
| 84 | + }
|
|
| 85 | + |
|
| 55 | 86 | private:
|
| 56 | 87 | UISwitch* m_control;
|
| 88 | + wxStaticText* m_label;
|
|
| 57 | 89 | };
|
| 58 | 90 | |
| 59 | 91 | wxWidgetImplType* wxWidgetImpl::CreateCheckBox( wxWindowMac* wxpeer,
|
| 60 | - wxWindowMac* WXUNUSED(parent),
|
|
| 92 | + wxWindowMac* parent,
|
|
| 61 | 93 | wxWindowID WXUNUSED(id),
|
| 62 | - const wxString& WXUNUSED(label),
|
|
| 94 | + const wxString& label,
|
|
| 63 | 95 | const wxPoint& pos,
|
| 64 | 96 | const wxSize& size,
|
| 65 | 97 | long style,
|
| ... | ... | @@ -68,10 +100,15 @@ wxWidgetImplType* wxWidgetImpl::CreateCheckBox( wxWindowMac* wxpeer, |
| 68 | 100 | CGRect r = wxOSXGetFrameForControl( wxpeer, pos , size ) ;
|
| 69 | 101 | wxUISwitch* v = [[wxUISwitch alloc] initWithFrame:r];
|
| 70 | 102 | |
| 103 | + wxStaticText* text = new wxStaticText( parent, -1, label );
|
|
| 104 | + |
|
| 71 | 105 | // if (style & wxCHK_3STATE)
|
| 72 | 106 | // [v setAllowsMixedState:YES];
|
| 73 | 107 | |
| 74 | - wxCheckBoxIPhoneImpl* c = new wxCheckBoxIPhoneImpl( wxpeer, v );
|
|
| 108 | + wxCheckBoxIPhoneImpl* c = new wxCheckBoxIPhoneImpl( wxpeer, v, text );
|
|
| 109 | + |
|
| 110 | + c->Move( pos.x, pos.y, size.y, size.y );
|
|
| 111 | + |
|
| 75 | 112 | return c;
|
| 76 | 113 | }
|
| 77 | 114 |
| ... | ... | @@ -83,6 +83,12 @@ |
| 83 | 83 | [self selectRow:v inComponent:0 animated:NO];
|
| 84 | 84 | }
|
| 85 | 85 | |
| 86 | +- (void) pickerView: (UIPickerView *)pickerView didSelectRow: (NSInteger)row inComponent: (NSInteger)component
|
|
| 87 | +{
|
|
| 88 | + wxWidgetIPhoneImpl* impl = (wxWidgetIPhoneImpl* ) wxWidgetImpl::FindFromWXWidget( pickerView );
|
|
| 89 | + wxChoice *choice = (wxChoice*) impl->GetWXPeer();
|
|
| 90 | + choice->SendSelectionChangedEvent(wxEVT_CHOICE);
|
|
| 91 | +}
|
|
| 86 | 92 | |
| 87 | 93 | |
| 88 | 94 | @end
|
| ... | ... | @@ -119,6 +125,10 @@ public: |
| 119 | 125 | [((wxUIPickerView*)m_osxView).rows replaceObjectAtIndex:pos withObject:cftext.AsNSString()];
|
| 120 | 126 | }
|
| 121 | 127 | |
| 128 | + wxInt32 GetValue() const override
|
|
| 129 | + {
|
|
| 130 | + return [((wxUIPickerView*)m_osxView) selectedRowInComponent:0 ];
|
|
| 131 | + }
|
|
| 122 | 132 | private:
|
| 123 | 133 | };
|
| 124 | 134 |
| ... | ... | @@ -28,6 +28,7 @@ |
| 28 | 28 | #endif
|
| 29 | 29 | |
| 30 | 30 | #include "wx/osx/private.h"
|
| 31 | +#include "wx/private/bmpbndl.h"
|
|
| 31 | 32 | |
| 32 | 33 | class wxStaticBitmapIPhoneImpl : public wxWidgetIPhoneImpl
|
| 33 | 34 | {
|
| ... | ... | @@ -46,6 +47,13 @@ public : |
| 46 | 47 | // although NSControl has this method, NSImageView throws an exception if it is called
|
| 47 | 48 | }
|
| 48 | 49 | |
| 50 | + void SetBitmap( const wxBitmapBundle& bitmap ) wxOVERRIDE
|
|
| 51 | + {
|
|
| 52 | + UIImageView* v = (UIImageView*) m_osxView;
|
|
| 53 | + [v setImage: wxOSXGetImageFromBundle(bitmap)];
|
|
| 54 | + [v setNeedsDisplay];
|
|
| 55 | + }
|
|
| 56 | + |
|
| 49 | 57 | void SetScaleMode(wxStaticBitmap::ScaleMode scaleMode)
|
| 50 | 58 | {
|
| 51 | 59 | UIImageView* v = (UIImageView*) m_osxView;
|
—
View it on GitLab.
You're receiving this email because of your account on gitlab.com. Manage all notifications · Help