UFO: Alien Invasion
Loading...
Searching...
No Matches
ui_node_abstractnode.h
Go to the documentation of this file.
1
4
5/*
6Copyright (C) 2002-2025 UFO: Alien Invasion.
7
8This program is free software; you can redistribute it and/or
9modify it under the terms of the GNU General Public License
10as published by the Free Software Foundation; either version 2
11of the License, or (at your option) any later version.
12
13This program is distributed in the hope that it will be useful,
14but WITHOUT ANY WARRANTY; without even the implied warranty of
15MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
16
17See the GNU General Public License for more details.
18
19You should have received a copy of the GNU General Public License
20along with this program; if not, write to the Free Software
21Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22
23*/
24
25#pragma once
26
27#include "../../../shared/cxx.h"
28#include "../ui_nodes.h"
29#include "../ui_node.h"
30
31struct uiBehaviour_t;
32
33class uiNode {
34public:
35 /* system allocation */
36
38 virtual void onLoading(uiNode_t* node);
40 virtual void onLoaded(uiNode_t* node);
42 virtual void clone(uiNode_t const* source, uiNode_t* clone);
44 virtual void initNode(uiNode_t* node);
46 virtual void initNodeDynamic(uiNode_t* node);
48 virtual void deleteNode(uiNode_t* node);
49
50 /* system callback */
51
53 virtual void onWindowOpened(uiNode_t* node, linkedList_t* params);
55 virtual void onWindowClosed(uiNode_t* node);
57 virtual void onWindowActivate(uiNode_t* node);
59 virtual void onActivate(uiNode_t* node);
61 virtual void onPropertyChanged(uiNode_t* node, const value_t* property);
62
63 virtual ~uiNode() {}
64};
65
67
68class uiLocatedNode : public uiNode {
69public:
71 virtual void draw(uiNode_t* node) {}
73 virtual void drawTooltip(const uiNode_t* node, int x, int y) const;
75 virtual void drawOverWindow(uiNode_t* node) {}
76
78 virtual void doLayout(uiNode_t* node);
80 virtual void onSizeChanged(uiNode_t* node);
81
82 /* mouse events */
83
85 virtual void onLeftClick(uiNode_t* node, int x, int y);
87 virtual void onRightClick(uiNode_t* node, int x, int y);
89 virtual void onMiddleClick(uiNode_t* node, int x, int y);
91 virtual bool onScroll(uiNode_t* node, int deltaX, int deltaY);
93 virtual void onMouseMove(uiNode_t* node, int x, int y) {}
95 virtual void onMouseDown(uiNode_t* node, int x, int y, int button) {}
97 virtual void onMouseUp(uiNode_t* node, int x, int y, int button) {}
102 virtual bool onMouseLongPress(uiNode_t* node, int x, int y, int button) {
103 return false;
104 }
105
106 virtual void onMouseEnter(uiNode_t* node);
108 virtual void onMouseLeave(uiNode_t* node);
110 virtual void onCapturedMouseMove(uiNode_t* node, int x, int y) {}
112 virtual void onCapturedMouseLost(uiNode_t* node) {}
117 virtual bool onStartDragging(uiNode_t* node, int startX, int startY, int currentX, int currentY, int button) {
118 return false;
119 }
120
121 /* drag and drop callback */
122
124 virtual bool onDndEnter(uiNode_t* node);
126 virtual bool onDndMove(uiNode_t* node, int x, int y);
128 virtual void onDndLeave(uiNode_t* node);
130 virtual bool onDndDrop(uiNode_t* node, int x, int y);
132 virtual bool onDndFinished(uiNode_t* node, bool isDropped);
133
134 /* focus and keyboard events */
135 virtual void onFocusGained(uiNode_t* node);
136 virtual void onFocusLost(uiNode_t* node);
137 virtual bool onKeyPressed(uiNode_t* node, unsigned int key, unsigned short unicode);
138 virtual bool onKeyReleased(uiNode_t* node, unsigned int key, unsigned short unicode);
139
141 virtual void getClientPosition(uiNode_t const* node, vec2_t position) {}
143 virtual int getCellWidth (uiNode_t* node) {return 1;}
145 virtual int getCellHeight (uiNode_t* node) {return 1;}
146
147};
148
unsigned int key
Definition cl_input.cpp:64
unsigned short unicode
Definition cl_input.cpp:65
virtual bool onKeyReleased(uiNode_t *node, unsigned int key, unsigned short unicode)
virtual void onMouseUp(uiNode_t *node, int x, int y, int button)
virtual int getCellHeight(uiNode_t *node)
virtual void onMouseEnter(uiNode_t *node)
virtual void onMouseDown(uiNode_t *node, int x, int y, int button)
virtual int getCellWidth(uiNode_t *node)
virtual bool onKeyPressed(uiNode_t *node, unsigned int key, unsigned short unicode)
virtual void onFocusGained(uiNode_t *node)
virtual void drawOverWindow(uiNode_t *node)
virtual bool onDndMove(uiNode_t *node, int x, int y)
virtual void onCapturedMouseLost(uiNode_t *node)
virtual bool onDndFinished(uiNode_t *node, bool isDropped)
virtual void onDndLeave(uiNode_t *node)
virtual void draw(uiNode_t *node)
virtual void drawTooltip(const uiNode_t *node, int x, int y) const
virtual bool onStartDragging(uiNode_t *node, int startX, int startY, int currentX, int currentY, int button)
Send mouse event when a pressed mouse button is dragged.
virtual bool onMouseLongPress(uiNode_t *node, int x, int y, int button)
Send mouse event when a pressed mouse button is dragged.
virtual void onMouseMove(uiNode_t *node, int x, int y)
virtual void onSizeChanged(uiNode_t *node)
Callback stub.
virtual void onMiddleClick(uiNode_t *node, int x, int y)
virtual void onLeftClick(uiNode_t *node, int x, int y)
virtual void onFocusLost(uiNode_t *node)
virtual void onRightClick(uiNode_t *node, int x, int y)
virtual void onMouseLeave(uiNode_t *node)
virtual bool onScroll(uiNode_t *node, int deltaX, int deltaY)
virtual void onCapturedMouseMove(uiNode_t *node, int x, int y)
virtual void getClientPosition(uiNode_t const *node, vec2_t position)
virtual bool onDndEnter(uiNode_t *node)
virtual void doLayout(uiNode_t *node)
Call to update the node layout. This common code revalidates the node tree.
virtual bool onDndDrop(uiNode_t *node, int x, int y)
virtual void onWindowClosed(uiNode_t *node)
virtual void initNodeDynamic(uiNode_t *node)
virtual void onWindowOpened(uiNode_t *node, linkedList_t *params)
virtual void onPropertyChanged(uiNode_t *node, const value_t *property)
virtual void onLoading(uiNode_t *node)
virtual void onLoaded(uiNode_t *node)
virtual void deleteNode(uiNode_t *node)
virtual void onWindowActivate(uiNode_t *node)
virtual void clone(uiNode_t const *source, uiNode_t *clone)
virtual ~uiNode()
virtual void initNode(uiNode_t *node)
virtual void onActivate(uiNode_t *node)
Activate the node. Can be used without the mouse (ie. a button will execute onClick).
node behaviour, how a node work
Atomic structure used to define most of the UI.
Definition ui_nodes.h:80
vec_t vec2_t[2]
Definition ufotypes.h:38
C interface to allow to access to cpp node code.
SharedPtr< uiNode > UINodePtr
void UI_RegisterAbstractNode(uiBehaviour_t *)
static int startY
static int startX