Skip to content
Snippets Groups Projects
Commit 72c8aa05 authored by Maxime Graulich's avatar Maxime Graulich
Browse files

Fix parameters on iOS

parent 56dfcaf8
No related branches found
No related tags found
No related merge requests found
...@@ -27,4 +27,6 @@ ...@@ -27,4 +27,6 @@
@property (weak, nonatomic) IBOutlet UILabel *detailDescriptionLabel; @property (weak, nonatomic) IBOutlet UILabel *detailDescriptionLabel;
@property (nonatomic, retain) NSString *initialModel;
@end @end
...@@ -55,6 +55,7 @@ ...@@ -55,6 +55,7 @@
[self configureView]; [self configureView];
scaleFactor = 1.; scaleFactor = 1.;
setObjCBridge((__bridge void*) self); setObjCBridge((__bridge void*) self);
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(requestRender) name:@"requestRender" object:nil];
if(![[UIDevice currentDevice].model isEqualToString:@"iPad"] && ![[UIDevice currentDevice].model isEqualToString:@"iPad Simulator"]){ if(![[UIDevice currentDevice].model isEqualToString:@"iPad"] && ![[UIDevice currentDevice].model isEqualToString:@"iPad Simulator"]){
UIBarButtonItem *settings = [[UIBarButtonItem alloc] initWithTitle:@"Settings" style:UIBarButtonItemStyleBordered target:self action:@selector(showSettings)]; UIBarButtonItem *settings = [[UIBarButtonItem alloc] initWithTitle:@"Settings" style:UIBarButtonItemStyleBordered target:self action:@selector(showSettings)];
UIBarButtonItem *postpro = [[UIBarButtonItem alloc] initWithTitle:@"Post processing" style:UIBarButtonItemStyleBordered target:self action:@selector(showPostpro)]; UIBarButtonItem *postpro = [[UIBarButtonItem alloc] initWithTitle:@"Post processing" style:UIBarButtonItemStyleBordered target:self action:@selector(showPostpro)];
...@@ -117,7 +118,7 @@ ...@@ -117,7 +118,7 @@
sender.numberOfTapsRequired = 2; sender.numberOfTapsRequired = 2;
if(sender.state == UIGestureRecognizerStateEnded){ if(sender.state == UIGestureRecognizerStateEnded){
scaleFactor = 1; scaleFactor = 1;
glView->mContext->eventHandler(5); glView->mContext->eventHandler(10);
[glView drawView]; [glView drawView];
} }
} }
...@@ -352,7 +353,7 @@ void messageFromCpp (void *self, std::string level, std::string msg) ...@@ -352,7 +353,7 @@ void messageFromCpp (void *self, std::string level, std::string msg)
{ {
if(level == "RequestRender"){ if(level == "RequestRender"){
[(__bridge id)self requestRender]; [(__bridge id)self requestRender];
//[[NSNotificationCenter defaultCenter] postNotificationName:@"refreshParameters" object:nil]; [[NSNotificationCenter defaultCenter] postNotificationName:@"refreshParameters" object:nil];
} }
else if(level == "Error") else if(level == "Error")
;//[(__bridge id)self showAlert:msg title:level]; ;//[(__bridge id)self showAlert:msg title:level];
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
@class DetailViewController; @class DetailViewController;
@interface MasterViewController : UITableViewController <UIPickerViewDataSource, UIPickerViewDelegate, UITextFieldDelegate> @interface MasterViewController : UITableViewController
{ {
@private @private
NSMutableArray *_sections; NSMutableArray *_sections;
...@@ -23,4 +23,6 @@ ...@@ -23,4 +23,6 @@
@property (strong, nonatomic) DetailViewController *detailViewController; @property (strong, nonatomic) DetailViewController *detailViewController;
- (void)resetParameters:(id)sender;
@end @end
This diff is collapsed.
//
// parameter.h
// Onelab
//
// Created by Maxime Graulich on 07/08/13.
// Copyright (c) 2013 Maxime Graulich. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <Gmsh/onelab.h>
#import "drawContext.h"
@interface parameter : NSObject
{
@protected
NSString *name;
UILabel *label;
}
-(id)init;
-(void)setFrame:(CGRect)frame;
-(void)setLabelFrame:(CGRect)frame;
-(NSString *)getName;
-(UILabel *)getLabel;
-(bool)isReadOnly;
+(double)getHeight;
@end
@interface parameterStringList : parameter <UIPickerViewDataSource, UIPickerViewDelegate>
{
@protected
UIPickerView *picker;
}
-(id)initWithString:(onelab::string)string;
-(UIPickerView *)getList;
@end
@interface parameterNumberList : parameter <UIPickerViewDataSource, UIPickerViewDelegate, UITextFieldDelegate>
{
@protected
UIPickerView *picker;
}
-(id)initWithNumber:(onelab::number)number;
-(UIPickerView *)getList;
@end
@interface parameterNumberCheckbox : parameter
{
@protected
UISwitch *checkbox;
}
-(id)initWithNumber:(onelab::number)number;
-(UISwitch *)getCheckbox;
@end
@interface parameterNumberRange : parameter
{
@protected
UISlider *slider;
}
-(id)initWithNumber:(onelab::number)number;
-(UISlider *)getSlider;
@end
@interface parameterNumberTextbox : parameter <UITextFieldDelegate>
{
@protected
UITextField *textbox;
}
-(id)initWithNumber:(onelab::number)number;
-(UITextField *)getTextbox;
@end
//
// parameter.m
// Onelab
//
// Created by Maxime Graulich on 07/08/13.
// Copyright (c) 2013 Maxime Graulich. All rights reserved.
//
#import "parameter.h"
@implementation parameter
-(id)init
{
self = [super init];
if(self)
{
label = [[UILabel alloc] init];
[label setBackgroundColor:[UIColor clearColor]];
}
return self;
}
-(NSString *)getName
{
return name;
}
-(UILabel *)getLabel
{
return label;
}
-(void)setFrame:(CGRect)frame
{
return;
}
-(void)setLabelFrame:(CGRect)frame
{
[label setFrame:frame];
}
-(bool)isReadOnly
{
return NO;
}
+(double)getHeight
{
return 60.0f;
}
@end
@implementation parameterStringList
-(id) initWithString:(onelab::string)string
{
self = [super init];
if(self)
{
label.alpha = (string.getReadOnly())? 0.439216f : 1.0f;
[label setText:[NSString stringWithCString:(string.getLabel() != "")?string.getLabel().c_str():string.getName().c_str() encoding:[NSString defaultCStringEncoding]]];
name = [NSString stringWithCString:string.getName().c_str() encoding:[NSString defaultCStringEncoding]];
picker = [[UIPickerView alloc] init];
picker.showsSelectionIndicator = YES;
[picker setDataSource:self];
[picker setDelegate:self];
for(int row=0;row<string.getChoices().size();row++)
if(string.getValue() == string.getChoices()[row])[picker selectRow:row inComponent:0 animated:NO];
}
return self;
}
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 1;
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
std::vector<onelab::string> string;
onelab::server::instance()->get(string,[name UTF8String]);
if(string.size() < 1) return 0;
return string[0].getChoices().size();
}
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
std::vector<onelab::string> string;
onelab::server::instance()->get(string,[name UTF8String]);
if(string.size() < 1) return @"NULL";
return [NSString stringWithCString:string[0].getChoices()[row].c_str() encoding:[NSString defaultCStringEncoding]];
}
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
std::vector<onelab::string> string;
onelab::server::instance()->get(string,[name UTF8String]);
if(string.size() < 1) return;
std::string selected = string[0].getChoices()[row];
string[0].setValue(selected);
onelab::server::instance()->set(string[0]);
if(onelab_cb("check") == 1)
[[NSNotificationCenter defaultCenter] postNotificationName:@"requestRender" object:nil];
}
-(void)setFrame:(CGRect)frame
{
[picker setFrame:frame];
}
-(UIPickerView *)getList
{
return picker;
}
-(bool)isReadOnly
{
std::vector<onelab::string> string;
onelab::server::instance()->get(string,[name UTF8String]);
if(string.size() < 1) return YES;
return string[0].getReadOnly();
}
+(double)getHeight
{
return 200.0f;
}
@end
@implementation parameterNumberList
-(id) initWithNumber:(onelab::number) number
{
self = [super init];
if(self)
{
label.alpha = (number.getReadOnly())? 0.439216f : 1.0f;
[label setText:[NSString stringWithCString:(number.getLabel() != "")?number.getLabel().c_str():number.getName().c_str() encoding:[NSString defaultCStringEncoding]]];
name = [NSString stringWithCString:number.getName().c_str() encoding:[NSString defaultCStringEncoding]];
picker = [[UIPickerView alloc] init];
picker.showsSelectionIndicator = YES;
[picker setDataSource:self];
[picker setDelegate:self];
for(int row=0;row<number.getChoices().size();row++)
if(number.getValue() == number.getChoices()[row])[picker selectRow:row inComponent:0 animated:NO];
}
return self;
}
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 1;
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
std::vector<onelab::number> number;
onelab::server::instance()->get(number,[name UTF8String]);
if(number.size() < 1) return 0;
return number[0].getChoices().size();
}
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
std::vector<onelab::number> number;
onelab::server::instance()->get(number,[name UTF8String]);
if(number.size() < 1) return @"NULL";
return [NSString stringWithCString:number[0].getValueLabel(number[0].getChoices()[row]).c_str() encoding:[NSString defaultCStringEncoding]];
}
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
std::vector<onelab::number> number;
onelab::server::instance()->get(number,[name UTF8String]);
if(number.size() < 1) return;
double selected = number[0].getChoices()[row];
number[0].setValue(selected);
onelab::server::instance()->set(number[0]);
if(onelab_cb("check") == 1)
[[NSNotificationCenter defaultCenter] postNotificationName:@"requestRender" object:nil];
}
-(void)setFrame:(CGRect)frame
{
[picker setFrame:frame];
}
-(UIPickerView *)getList
{
return picker;
}
-(bool)isReadOnly
{
std::vector<onelab::number> number;
onelab::server::instance()->get(number,[name UTF8String]);
if(number.size() < 1) return YES;
return number[0].getReadOnly();
}
+(double)getHeight
{
return 200.0f;
}
@end
@implementation parameterNumberCheckbox
-(id) initWithNumber:(onelab::number) number
{
self = [super init];
if(self)
{
label.alpha = (number.getReadOnly())? 0.439216f : 1.0f;
[label setText:[NSString stringWithCString:(number.getLabel() != "")?number.getLabel().c_str():number.getName().c_str() encoding:[NSString defaultCStringEncoding]]];
name = [NSString stringWithCString:number.getName().c_str() encoding:[NSString defaultCStringEncoding]];
checkbox = [[UISwitch alloc] init];
[checkbox setSelected:(number.getValue() == 1)];
[checkbox addTarget:self action:@selector(valueChange:) forControlEvents:UIControlEventValueChanged];
}
return self;
}
-(void) valueChange:(UISwitch *)sender
{
std::vector<onelab::number> number;
onelab::server::instance()->get(number,[name UTF8String]);
if(number.size() < 1) return;
number[0].setValue(([sender isOn])? 1 : 0);
onelab::server::instance()->set(number[0]);
if(onelab_cb("check") == 1)
[[NSNotificationCenter defaultCenter] postNotificationName:@"requestRender" object:nil];
}
-(void)setFrame:(CGRect)frame
{
[checkbox setFrame:frame];
}
-(UISwitch *)getCheckbox
{
return checkbox;
}
-(bool)isReadOnly
{
std::vector<onelab::number> number;
onelab::server::instance()->get(number,[name UTF8String]);
if(number.size() < 1) return YES;
return number[0].getReadOnly();
}
+(double)getHeight
{
return 40.0f;
}
@end
@implementation parameterNumberRange
-(id) initWithNumber:(onelab::number) number
{
self = [super init];
if(self)
{
label.alpha = (number.getReadOnly())? 0.439216f : 1.0f;
name = [NSString stringWithCString:number.getName().c_str() encoding:[NSString defaultCStringEncoding]];
slider = [[UISlider alloc] init];
[slider setMaximumValue:number.getMax()];
[slider setMinimumValue:number.getMin()];
[slider setValue:number.getValue()];
//TODO add step ?
[slider addTarget:self action:@selector(sliderValueChanged:) forControlEvents:UIControlEventTouchUpOutside];
[slider addTarget:self action:@selector(sliderValueChanged:) forControlEvents:UIControlEventTouchUpInside];
[label setText:[NSString stringWithFormat:@"%@ %f" ,[NSString stringWithCString:(number.getLabel() != "")?number.getLabel().c_str():number.getName().c_str() encoding:[NSString defaultCStringEncoding]], number.getValue()]];
}
return self;
}
-(void)sliderValueChanged:(UISlider *)sender
{
std::vector<onelab::number> number;
onelab::server::instance()->get(number,[name UTF8String]);
if(number.size() < 1) return;
number[0].setValue(sender.value);
onelab::server::instance()->set(number[0]);
[label setText:[NSString stringWithFormat:@"%s %f" ,(number[0].getLabel() != "")?number[0].getLabel().c_str():number[0].getName().c_str(), number[0].getValue()]];
if(onelab_cb("check") == 1)
[[NSNotificationCenter defaultCenter] postNotificationName:@"requestRender" object:nil];
}
-(void)setFrame:(CGRect)frame
{
[slider setFrame:frame];
}
-(UISlider *)getSlider
{
return slider;
}
-(bool)isReadOnly
{
std::vector<onelab::number> number;
onelab::server::instance()->get(number,[name UTF8String]);
if(number.size() < 1) return YES;
return number[0].getReadOnly();
}
+(double)getHeight
{
return 60.0f;
}
@end
@implementation parameterNumberTextbox
-(id)initWithNumber:(onelab::number)number
{
self = [super init];
if(self)
{
label.alpha = (number.getReadOnly())? 0.439216f : 1.0f;
[label setText:[NSString stringWithCString:(number.getLabel() != "")?number.getLabel().c_str():number.getName().c_str() encoding:[NSString defaultCStringEncoding]]];
name = [NSString stringWithCString:number.getName().c_str() encoding:[NSString defaultCStringEncoding]];
textbox = [[UITextField alloc] init];
[textbox setBorderStyle:UITextBorderStyleRoundedRect];
[textbox setKeyboardType:UIKeyboardTypeNumberPad];
[textbox setText:[NSString stringWithFormat:@"%f", number.getValue()]];
[textbox setDelegate:self];
}
return self;
}
-(BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
std::vector<onelab::number> number;
onelab::server::instance()->get(number,[name UTF8String]);
if(number.size() < 1) return YES;
number[0].setValue([textField.text doubleValue]);
onelab::server::instance()->set(number[0]);
return YES;
}
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
return [textField endEditing:YES];
}
-(void)setFrame:(CGRect)frame
{
[textbox setFrame:frame];
}
-(UITextField *)getTextbox
{
return textbox;
}
-(bool)isReadOnly
{
std::vector<onelab::number> number;
onelab::server::instance()->get(number,[name UTF8String]);
if(number.size() < 1) return YES;
return number[0].getReadOnly();
}
+(double)getHeight
{
return 60.f;
}
@end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment