How to Mimic Finder NSPredicateEditor leftExpression list
Asked Answered
C

0

6

I would like to mimic the Finder's predicatesList. Especially the LeftExpressions popup with its "other" (in German: "Andere...") menu entry and like to popup a NSSheet with a user selectable list of search predicates.

My approach was to create some NSPredicateEditorRowTemplates and one last custom rowTemplate with a leftExpression named "other...".

Then I override the templateViews method and added a separatorItem:

-(NSArray *)templateViews{
 NSMutableArray * views = [[super templateViews] mutableCopy];

// I tried already to add here my custom menu entry, but if I add more templates my custom entry (and the separator line) is not fixed at the last index.
if (!isCustomMenuItemAdded) {

NSPopUpButton *leftButton = views[0];

    // Add a menu separator
[[leftButton menu]insertItem:[NSMenuItem separatorItem] atIndex:[leftButton menu].itemArray.count-1];   
}
return views;
}

My custom predicateEditor is now shown correctly, But if I click on the last menu item 'Other.." the dummy NSPredicateRowTemplate shows up.

I tried to override the -(id)copy method in my rowTemplate class to suppress the new line but that feels strange to me.

-(id)copy{
  return nil;  // OK, now there is no new row, but this throws an internal exception
}

My question is: Is there a better way to add a custom menu entry in the left expressions popupButton? and How can I suppress that a new predicateTemplateRow is shown in the PredicateEditor?

Concessionaire answered 11/3, 2014 at 14:38 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.