ui/ui/toolbar.h

Tue, 16 Jan 2024 12:49:46 +0100

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Tue, 16 Jan 2024 12:49:46 +0100
branch
newapi
changeset 226
4eef1d49f794
parent 207
93b9f502cb88
child 233
84665f0a9ab2
permissions
-rw-r--r--

split toolbar in left,center,right segments (WinUI3)

/*
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 *
 * Copyright 2017 Olaf Wintermann. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 *   1. Redistributions of source code must retain the above copyright
 *      notice, this list of conditions and the following disclaimer.
 *
 *   2. Redistributions in binary form must reproduce the above copyright
 *      notice, this list of conditions and the following disclaimer in the
 *      documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */

#ifndef UI_TOOLBAR_H
#define	UI_TOOLBAR_H

#include "toolkit.h"
#include <stdarg.h>

#ifdef	__cplusplus
extern "C" {
#endif

typedef struct UiToolbarItemArgs {
	const char* label;
	const char* stockid;
	const char* icon;

	ui_callback onclick;
	void* onclickdata;
} UiToolbarItemArgs;

typedef struct UiToolbarToggleItemArgs {
	const char* label;
	const char* stockid;
	const char* icon;

	const char* varname;
	ui_callback onchange;
	void* onchangedata;
} UiToolbarToggleItemArgs;

typedef struct UiToolbarMenuArgs {
	const char* label;
	const char* stockid;
	const char* icon;
} UiToolbarMenuArgs;

enum UiToolbarPos {
	UI_TOOLBAR_LEFT = 0,
	UI_TOOLBAR_CENTER,
	UI_TOOLBAR_RIGHT
};

#define ui_toolbar_item(name, ...) ui_toolbar_item_create(name, (UiToolbarItemArgs){ __VA_ARGS__ } )
#define ui_toolbar_toggleitem(name, ...) ui_toolbar_toggleitem_create(name, (UiToolbarToggleItemArgs){ __VA_ARGS__ } )

#define ui_toolbar_menu(obj, ...) for(ui_toolbar_menu_create(obj, (UiToolbarMenuArgs){ __VA_ARGS__ });ui_menu_is_open();ui_menu_close())


UIEXPORT void ui_toolbar_item_create(const char* name, UiToolbarItemArgs args);
UIEXPORT void ui_toolbar_toggleitem_create(const char* name, UiToolbarToggleItemArgs args);
UIEXPORT void ui_toolbar_menu_create(const char* name, UiToolbarMenuArgs args);


void ui_toolitem_deprecated(char *name, char *label, ui_callback f, void *udata);
void ui_toolitem_st(char *name, char *stockid, ui_callback f, void *udata);
void ui_toolitem_sti(char *name, char *stockid, ui_callback f, void *udata);
void ui_toolitem_stgr(char *name, char *stockid, ui_callback f, void *udata, ...);
void ui_toolitem_stgri(char *name, char *stockid, ui_callback f, void *userdata, ...);
void ui_toolitem_img(char *name, char *label, char *img, ui_callback f, void *udata);

void ui_toolitem_toggle(const char *name, const char *label, const char *img, UiInteger *i);
void ui_toolitem_toggle_st_deprecated(const char *name, const char *stockid, UiInteger *i);
void ui_toolitem_toggle_nv_deprecated(const char *name, const char *label, const char *img, const char *intvar);
void ui_toolitem_toggle_stnv_deprecated(const char *name, const char *stockid, const char *intvar);

void ui_toolbar_combobox_deprecated(char *name, UiList *list, ui_getvaluefunc getvalue, ui_callback f, void *udata);
void ui_toolbar_combobox_str_deprecated(char *name, UiList *list, ui_callback f, void *udata);
void ui_toolbar_combobox_nv_deprecated(char *name, char *listname, ui_getvaluefunc getvalue, ui_callback f, void *udata);

UIEXPORT void ui_toolbar_add_default(const char *name, enum UiToolbarPos pos);



#ifdef	__cplusplus
}
#endif

#endif	/* UI_TOOLBAR_H */

mercurial