NSSplitView autosaveName ?
mpergand
Membre
Comme pour NSTableView ça serait sympa, mais ça ne semble pas exister :-\\
Me gourge-je ???
Me gourge-je ???
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Tu vas devoir faire sans apparamment...
Mais pour sauvegarder quels paramètres au juste ?
Bon, j'ai bricolé un bout de code pour un splitView contenant deux tables:
Ca marche pour une plage très restrainte autour du centre du splitView, si le séparareur est trop près des bords, c'est sans effet ???
Cette dernière possède un mécanisme qui permet de gérer le redimensionnement et le repositionnement de ces NSViews à la volée (grâce à la barre de séparation) les unes par rapport aux autres.
Donc, pour mémoriser la position de la barre, c'est de mémoriser les frames (position X et Y, taille Width et Height) des 2 views incluses.
De même pour restaurer une position de barre, c'est de rétablir les 2 frames sauvegardées sur les 2 NSViews, suivi d'un setNeedsDisplay sur la splitview.
Du moins, c'est comme ça que je procéderai à première vue. Mais je n'ai pas testé.
.
CBPrefsPreviewSize () est juste une fonction qui renvoie la taille stockée dans les préférences ou une taille par défaut...
dans mon exemple, je ne m'intéresse ici qu'à la largeur, la hauteur dépend de la taille de la fenêtre.
#import <Foundation/Foundation.h>
#import <AppKit/AppKit.h>
#import "SplitViewCategory.h"
@implementation NSSplitView (SplitViewCategory)
- (float)heightFraction
{
NSRect topFrame, bottomFrame;
float result;
if ([[self subviews] count] < 2)
return 0.0;
topFrame = [[[self subviews] objectAtIndex:0] frame];
bottomFrame = [[[self subviews] objectAtIndex:1] frame];
result=bottomFrame.size.height/ (bottomFrame.size.height + topFrame.size.height);
return result;
}
- (void)setHeightFraction:(float)newFract
{
NSRect topFrame, bottomFrame;
NSView *topSubView;
NSView *bottomSubView;
float totalHeight;
if ([[self subviews] count] < 2)
return;
topSubView = [[self subviews] objectAtIndex:0];
bottomSubView = [[self subviews] objectAtIndex:1];
topFrame = [topSubView frame];
bottomFrame = [bottomSubView frame];
totalHeight = bottomFrame.size.height + topFrame.size.height;
bottomFrame.size.height = newFract * totalHeight;
topFrame.size.height = totalHeight - bottomFrame.size.height;
[topSubView setFrame:topFrame];
[bottomSubView setFrame:bottomFrame];
[self adjustSubviews];
[self setNeedsDisplay: YES];
}
- (float)widthFraction
{
NSRect leftFrame, rightFrame;
float result;
if ([[self subviews] count] < 2)
return 0.0;
leftFrame = [[[self subviews] objectAtIndex:0] frame];
rightFrame = [[[self subviews] objectAtIndex:1] frame];
result=rightFrame.size.width/ (rightFrame.size.width + leftFrame.size.width);
return result;
}
- (void)setWidthFraction:(float)newFract
{
NSRect leftFrame, rightFrame;
NSView *leftSubView;
NSView *rightSubView;
float totalWidth;
if ([[self subviews] count] < 2)
return;
leftSubView = [[self subviews] objectAtIndex:0];
rightSubView = [[self subviews] objectAtIndex:1];
leftFrame = [leftSubView frame];
rightFrame = [rightSubView frame];
totalWidth = rightFrame.size.width + leftFrame.size.width;
rightFrame.size.width = newFract * totalWidth;
leftFrame.size.width = totalWidth - rightFrame.size.width;
[leftSubView setFrame:leftFrame];
[rightSubView setFrame:rightFrame];
[self adjustSubviews];
[self setNeedsDisplay: YES];
}