ui/cocoa/ListDelegate.m

Sat, 23 Aug 2025 17:45:15 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Sat, 23 Aug 2025 17:45:15 +0200
changeset 711
673e7e41c93e
child 712
9693f447a0c7
permissions
-rw-r--r--

add minimally working listview (Cocoa)

711
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
1 /*
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
3 *
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
4 * Copyright 2025 Olaf Wintermann. All rights reserved.
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
5 *
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
6 * Redistribution and use in source and binary forms, with or without
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
7 * modification, are permitted provided that the following conditions are met:
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
8 *
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
9 * 1. Redistributions of source code must retain the above copyright
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
10 * notice, this list of conditions and the following disclaimer.
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
11 *
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
12 * 2. Redistributions in binary form must reproduce the above copyright
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
13 * notice, this list of conditions and the following disclaimer in the
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
14 * documentation and/or other materials provided with the distribution.
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
15 *
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
26 * POSSIBILITY OF SUCH DAMAGE.
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
27 */
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
28
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
29 #import "ListDelegate.h"
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
30
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
31 @implementation ListDelegate
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
32
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
33 - (id)init:(UiObject*)obj {
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
34 _obj = obj;
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
35 return self;
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
36 }
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
37
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
38 - (void)activateEvent:(id)sender {
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
39 NSTableView *table = sender;
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
40 if(_onactivate) {
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
41 int row = (int)table.clickedRow;
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
42
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
43 UiListSelection sel;
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
44 sel.count = 1;
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
45 sel.rows = &row;
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
46
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
47 UiEvent event;
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
48 event.obj = _obj;
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
49 event.window = event.obj->window;
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
50 event.document = event.obj->ctx->document;
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
51 event.eventdata = &sel;
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
52 event.eventdatatype = UI_EVENT_DATA_LIST_SELECTION;
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
53 event.intval = row;
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
54 event.set = ui_get_setop();
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
55
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
56 _onactivate(&event, _onactivatedata);
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
57 }
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
58 }
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
59
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
60 @end

mercurial