201 lines
6.2 KiB
Objective-C
201 lines
6.2 KiB
Objective-C
//
|
|
// MPExpressionView.h
|
|
// MathPad
|
|
//
|
|
// Created by Kim Wittenburg on 17.04.14.
|
|
// Copyright (c) 2014 Kim Wittenburg. All rights reserved.
|
|
//
|
|
|
|
|
|
/*!
|
|
@header
|
|
This file contains the <code>MPExpressionView</code> class.
|
|
|
|
<h2>The MathKit Expression System</h2>
|
|
MathKit contains class es that make up the so called <i>expression system</i>.
|
|
The expression system is divided into three layers: the model, the view and the
|
|
controller layer. The <code>MPExpressionView</code> class represents the view
|
|
layer and interacts with the Cocoa <code>NSView</code> system. The model is
|
|
represented by the classes <code>@link
|
|
//apple_ref/occ/cl/MPExpression@/link</code> and <code>@link
|
|
//apple_ref/occ/cl/MPFunction@/link</code>. The controller layer between the two
|
|
consists of the class <code>@link //apple_ref/occ/cl/MPLayout@/link</code> and
|
|
its subclasses. The purpose of the expression system is presenting expressions
|
|
to the user and offering possibilities to manipulate and work with expressions.
|
|
*/
|
|
|
|
|
|
|
|
@class MPExpressionView, MPExpressionStorage, MPFunction, MPRangePath;
|
|
|
|
|
|
/*!
|
|
@class MPExpressionView
|
|
@abstract The <code>MPExpressionView</code> class is the front-end class of
|
|
the MathKit expression system.
|
|
|
|
@discussion The class draws the expression managed by the the back-end class
|
|
<code>@link //apple_ref/occ/cl/MPExpressionStorage@/link</code>
|
|
and is the interface between Application Kit's view system and
|
|
the MathKit expression system.
|
|
*/
|
|
@interface MPExpressionView : NSView <NSUserInterfaceValidations>
|
|
|
|
#pragma mark Creation Methods
|
|
/*!
|
|
@methodgroup Creation Methods
|
|
*/
|
|
|
|
|
|
/*!
|
|
@method initWithFrame:
|
|
@abstract Initializes a <code>MPExpressionView</code> instance.
|
|
|
|
@discussion This method sets up all layers of the expression system including
|
|
an empty expression storage.
|
|
|
|
This method is the designated initializer of the
|
|
<code>MPExpressionView</code> class.
|
|
|
|
@param frameRect
|
|
The frame rectangle for the created view.
|
|
|
|
@return An initialized <code>MPExpressionView</code> or <code>nil</code>
|
|
if the object could not be created.
|
|
*/
|
|
- (id)initWithFrame:(NSRect)frameRect;
|
|
|
|
|
|
#pragma mark Properties
|
|
/*!
|
|
@methodgroup Properties
|
|
*/
|
|
|
|
|
|
/*!
|
|
@property expressionStorage
|
|
@abstract The receiver's expression storage.
|
|
|
|
@discussion The expression storage maintains the contents of the receiver.
|
|
User interactions change the underlying data. If the expression
|
|
storage or the underlying expression change the expression
|
|
storage updates the receiver.
|
|
*/
|
|
@property (nonatomic, strong) MPExpressionStorage *expressionStorage;
|
|
|
|
|
|
/*!
|
|
@property selection
|
|
@abstract The receiver's selection.
|
|
*/
|
|
@property (nonatomic, strong) MPRangePath *selection;
|
|
|
|
|
|
/*!
|
|
@property mathError
|
|
@abstract If set the receiver will display the localized description of the
|
|
specified error.
|
|
|
|
@discussion There can only be one math error at a time. This property should
|
|
not be set simutaneously with the <code>@link
|
|
//apple_ref/occ/instp/MPExpressionView/syntaxErrors@/link</code>.
|
|
*/
|
|
@property (nonatomic, strong) NSError *mathError;
|
|
|
|
|
|
/*!
|
|
@property syntaxErrors
|
|
@abstract If set the receiver will display a dropdown list of syntax
|
|
errors.
|
|
|
|
@discussion The array must only contain <code>NSError</code> instances. In
|
|
addition to that every instance must contain a valid
|
|
<code>NSIndexPath</code> for the <code>@link
|
|
//apple_ref/c/data/MPPathToExpressionKey@/link</code> in its
|
|
<code>userDict</code> acompanied by a <code>NSRange</code>
|
|
wrapped in a <code>NSValue</code> instance for the <code>@link
|
|
//apple_ref/c/data/MPErrorRangeKey@/link</code>.
|
|
|
|
If the user selects an item from the dropdown list the part of
|
|
the expression displayed by the receiver will be selected that is
|
|
specified by the values in the corresponding <code>NSError</code>
|
|
instance.
|
|
*/
|
|
@property (nonatomic, strong) NSArray *syntaxErrors;
|
|
|
|
|
|
/*!
|
|
@property target
|
|
@abstract The target object to receive action messages from the receiver.
|
|
*/
|
|
@property (nonatomic, weak) id target;
|
|
|
|
|
|
/*!
|
|
@property action
|
|
@abstract The receiver's action method to the specified selector.
|
|
|
|
@discussion The action method is invoked when the user presses <i>enter</i>
|
|
in the receiver. Typically this is understood as evaluation
|
|
request.
|
|
*/
|
|
@property (nonatomic) SEL action;
|
|
|
|
|
|
#pragma mark Actions
|
|
/*!
|
|
@methodgroup Actions
|
|
*/
|
|
|
|
|
|
/*!
|
|
@method switchToRadians:
|
|
@abstract Tells the receiver that it should switch the interpretation of
|
|
trigonometric function values to radians.
|
|
|
|
@param sender
|
|
Typically the object that invoked the method.
|
|
*/
|
|
- (IBAction)switchToRadians:(id)sender;
|
|
|
|
|
|
/*!
|
|
@method switchToDegrees:
|
|
@abstract Tells the receiver that it should switch the interpretation of
|
|
trigonometric function values to degrees.
|
|
|
|
@param sender
|
|
Typically the object that invoked the method.
|
|
*/
|
|
- (IBAction)switchToDegrees:(id)sender;
|
|
|
|
|
|
/*!
|
|
@method switchRadiansDegrees:
|
|
@abstract Tells the receiver that it should switch the interpretation of
|
|
trigonometric function values.
|
|
|
|
@discussion If the interpretation is currently degrees it is changed to
|
|
radians or vice versa.
|
|
|
|
@param sender
|
|
Typically the object that invoked the method.
|
|
*/
|
|
- (IBAction)switchRadiansDegrees:(id)sender;
|
|
|
|
|
|
/*!
|
|
@method toggleFunctionsPopover:
|
|
@abstract Tells the receiver to toggle the visibility of the functions
|
|
popover.
|
|
|
|
@discussion From the functions popover the user can select and insert
|
|
functions into the displayed expression
|
|
|
|
@param sender
|
|
Typically the object that invoked the method.
|
|
*/
|
|
- (IBAction)toggleFunctionsPopover:(id)sender;
|
|
|
|
@end
|