def mouseDown_(self, event): # find out if we hit anything p = self.convertPoint_fromView_(event.locationInWindow(), None) for aGraphic in self.graphics(): if aGraphic.hitTest_isSelected_(p, False): break; # aGraphic soll spaeter einen Wert haben, falls es getroffene gibt! else: aGraphic = None # if no graphic hit, then if extending selection do nothing # else set selection to nil if aGraphic is None: if not event.modifierFlags() & NSShiftKeyMask: self.selectionIndexesContainer.setValue_forKeyPath_(None, self.selectionIndexesKeyPath) return # graphic hit # if not extending selection (Shift key down) then set # selection to this graphic # if extending selection, then: # - if graphic in selection remove it # - if not in selection add it graphicIndex = self.graphics().index(aGraphic) if not event.modifierFlags() & NSShiftKeyMask: selection = NSIndexSet.indexSetWithIndex_(graphicIndex) else: if self.selectionIndexes().containsIndex_(graphicIndex): selection = self.selectionIndexes().mutableCopy() selection.removeIndex_(graphicIndex) else: selection = self.selectionIndexes().mutableCopy() selection.addIndex_(graphicIndex) self.selectionIndexesContainer.setValue_forKeyPath_(selection, self.selectionIndexesKeyPath)
def tableView_acceptDrop_row_dropOperation_(self, tv, info, row, op): if row < 0: row = 0 if info.draggingSource() == self.tableView: rows = info.draggingPasteboard().propertyListForType_( MovedRowsType) indexSet = self.indexSetFromRows_(rows) self.moveObjectsInArrangedObjectsFromIndexes_toIndex_( indexSet, row) # set selected rows to those that were just moved # Need to work out what moved where to determine proper selection... rowsAbove = self.rowsAboveRow_inIndexSet_(row, indexSet) aRange = NSMakeRange(row - rowsAbove, indexSet.count()) indexSet = NSIndexSet.indexSetWithIndexesInRange_(aRange) # set selected rows to those that were just copied self.setSelectionIndexes_(indexSet) return True # Can we get rows from another document? If so, add them, then return. newRows = info.draggingPasteboard().propertyListForType_( CopiedRowsType) if newRows: aRange = NSMakeRange(row, newRows.count()) indexSet = NSIndexSet.indexSetWithIndexesInRange_(aRange) self.insertObjects_atArrangedObjectIndexes_(newRows, indexSet) self.setSelectionIndexes_(indexSet) return True # Can we get an URL? If so, add a new row, configure it, then return. url = NSURL.URLFromPasteboard_(info.draggingPasteboard()) if url: newObject = self.newObject() self.insertObject_atArrangedObjectIndex_(newObject, row) newObject.setValue_forKey_(url.absoluteString(), u"url") newObject.setValue_forKey_(NSCalendarDate.date(), u"date") # set selected rows to those that were just copied self.setSelectionIndex_(row) return True return False
def awakeFromNib(self): # we're only using the AMWorkflowView for display self.workflowView.setEditable_(False) # set up the data for NSTableView. We'll store a list of # NSDictonary records each containing some information about the # workflow. We'll display the name of the workflow's file in the # window. # set up an array for storing the table information theWorkflows = NSMutableArray.alloc().initWithCapacity_(20) # retrieve a list of all of the workflows stored in the application's # resourced folder. workflowPaths = NSBundle.mainBundle( ).pathsForResourcesOfType_inDirectory_("workflow", "workflows") # iterate through the paths, adding them to our table information # as we go. for nthWorkflowPath in workflowPaths: wfError = None # convert the path into an URL nthWorkflowURL = NSURL.fileURLWithPath_isDirectory_( nthWorkflowPath, False) # allocate and initialize the workflow nthWorkflow, wfError = AMWorkflow.alloc( ).initWithContentsOfURL_error_(nthWorkflowURL, None) if nthWorkflow: # calculate the file name without path or extension nthFileName = nthWorkflowPath.componentsSeparatedByString_( "/")[-1] nthDisplayName = nthFileName[:-9] # add the workflow to the list theWorkflows.append({ "name": nthDisplayName, "path": nthWorkflowPath, "workflow": nthWorkflow, }) # set the workflows self._.workflows = theWorkflows # if there are any workflows in the list, then select and display the first one */ if len(self._.workflows): self.workflowTable.selectRowIndexes_byExtendingSelection_( NSIndexSet.indexSetWithIndex_(0), False) self.displaySelectedWorkflow()
def tableView_acceptDrop_row_dropOperation_(self, tv, info, row, op): if row < 0: row = 0 if info.draggingSource() == self.tableView: rows = info.draggingPasteboard().propertyListForType_(MovedRowsType) indexSet = self.indexSetFromRows_(rows) self.moveObjectsInArrangedObjectsFromIndexes_toIndex_(indexSet, row) # set selected rows to those that were just moved # Need to work out what moved where to determine proper selection... rowsAbove = self.rowsAboveRow_inIndexSet_(row, indexSet) aRange = NSMakeRange(row - rowsAbove, indexSet.count()) indexSet = NSIndexSet.indexSetWithIndexesInRange_(aRange) # set selected rows to those that were just copied self.setSelectionIndexes_(indexSet) return True # Can we get rows from another document? If so, add them, then return. newRows = info.draggingPasteboard().propertyListForType_(CopiedRowsType) if newRows: aRange = NSMakeRange(row, newRows.count()) indexSet = NSIndexSet.indexSetWithIndexesInRange_(aRange) self.insertObjects_atArrangedObjectIndexes_(newRows, indexSet) self.setSelectionIndexes_(indexSet) return True # Can we get an URL? If so, add a new row, configure it, then return. url = NSURL.URLFromPasteboard_(info.draggingPasteboard()) if url: newObject = self.newObject() self.insertObject_atArrangedObjectIndex_(newObject, row) newObject.setValue_forKey_(url.absoluteString(), u"url") newObject.setValue_forKey_(NSCalendarDate.date(), u"date") # set selected rows to those that were just copied self.setSelectionIndex_(row) return True return False
def awakeFromNib(self): # we're only using the AMWorkflowView for display self.workflowView.setEditable_(False) # set up the data for NSTableView. We'll store a list of # NSDictonary records each containing some information about the # workflow. We'll display the name of the workflow's file in the # window. # set up an array for storing the table information theWorkflows = NSMutableArray.alloc().initWithCapacity_(20) # retrieve a list of all of the workflows stored in the application's # resourced folder. workflowPaths = NSBundle.mainBundle().pathsForResourcesOfType_inDirectory_( "workflow", "workflows") # iterate through the paths, adding them to our table information # as we go. for nthWorkflowPath in workflowPaths: wfError = None # convert the path into an URL nthWorkflowURL = NSURL.fileURLWithPath_isDirectory_(nthWorkflowPath, False) # allocate and initialize the workflow nthWorkflow, wfError = AMWorkflow.alloc().initWithContentsOfURL_error_(nthWorkflowURL, None) if nthWorkflow: # calculate the file name without path or extension nthFileName = nthWorkflowPath.componentsSeparatedByString_("/")[-1] nthDisplayName = nthFileName[:-9] # add the workflow to the list theWorkflows.append(dict( name=nthDisplayName, path=nthWorkflowPath, workflow=nthWorkflow, )) # set the workflows self._.workflows = theWorkflows # if there are any workflows in the list, then select and display the first one */ if len(self._.workflows): self.workflowTable.selectRowIndexes_byExtendingSelection_( NSIndexSet.indexSetWithIndex_(0), False) self.displaySelectedWorkflow()