mirror of
https://github.com/netsurf-browser/netsurf
synced 2024-12-21 03:32:35 +03:00
182 lines
4.2 KiB
C
182 lines
4.2 KiB
C
/*
|
|
* Copyright 2010 Ole Loots <ole@monochrom.net>
|
|
*
|
|
* This file is part of NetSurf, http://www.netsurf-browser.org/
|
|
*
|
|
* NetSurf is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; version 2 of the License.
|
|
*
|
|
* NetSurf is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef NS_ATARI_GUI_H_
|
|
#define NS_ATARI_GUI_H_
|
|
|
|
#include <stdbool.h>
|
|
#include <mt_gem.h>
|
|
|
|
#include "atari/redrawslots.h"
|
|
#include "atari/gemtk/gemtk.h"
|
|
|
|
#ifndef PATH_MAX
|
|
#define PATH_MAX 1024
|
|
#endif
|
|
|
|
#define CARET_STATE_VISIBLE 0x01
|
|
#define CARET_STATE_ENABLED 0x02
|
|
|
|
struct s_caret {
|
|
GRECT dimensions;
|
|
MFDB symbol;
|
|
int fd_size;
|
|
unsigned short state;
|
|
};
|
|
|
|
struct point_s {
|
|
int x;
|
|
int y;
|
|
};
|
|
|
|
typedef struct point_s POINT;
|
|
|
|
#define MFORM_EX_FLAG_USERFORM 0x01
|
|
|
|
struct mform_ex_s
|
|
{
|
|
unsigned char flags;
|
|
int number;
|
|
OBJECT * tree;
|
|
};
|
|
|
|
typedef struct mform_ex_s MFORM_EX;
|
|
|
|
struct s_gem_cursors {
|
|
MFORM_EX hand;
|
|
MFORM_EX ibeam;
|
|
MFORM_EX cross;
|
|
MFORM_EX sizeall;
|
|
MFORM_EX sizewe;
|
|
MFORM_EX sizens;
|
|
MFORM_EX sizenesw;
|
|
MFORM_EX sizenwse;
|
|
MFORM_EX wait;
|
|
MFORM_EX appstarting;
|
|
MFORM_EX nodrop;
|
|
MFORM_EX deny;
|
|
MFORM_EX help;
|
|
MFORM_EX menu;
|
|
MFORM_EX arrow;
|
|
} gem_cursors;
|
|
|
|
enum focus_element_type {
|
|
WIDGET_NONE=0,
|
|
URL_WIDGET,
|
|
SEARCH_INPUT,
|
|
BROWSER
|
|
};
|
|
|
|
|
|
struct s_focus_info
|
|
{
|
|
enum focus_element_type type;
|
|
void * element;
|
|
};
|
|
|
|
/* defines for data attached to components: */
|
|
#define CDT_OBJECT 0x004f424aUL
|
|
#define CDT_OWNER 0x03UL
|
|
#define CDT_ICON 0x04UL
|
|
#define CDT_ICON_TYPE 0x05UL
|
|
# define CDT_ICON_TYPE_NONE 0x00UL
|
|
# define CDT_ICON_TYPE_OBJECT 0x01UL
|
|
# define CDT_ICON_TYPE_BITMAP 0x02UL
|
|
|
|
|
|
struct gui_window;
|
|
struct s_browser;
|
|
struct s_statusbar;
|
|
struct s_toolbar;
|
|
|
|
typedef struct s_toolbar * CMP_TOOLBAR;
|
|
typedef struct s_statusbar * CMP_STATUSBAR;
|
|
typedef struct s_browser * CMP_BROWSER;
|
|
|
|
/*
|
|
This is the "main" window. It can consist of several components
|
|
and also holds information shared by several frames within
|
|
the window.
|
|
*/
|
|
struct s_gui_win_root
|
|
{
|
|
short aes_handle;
|
|
GUIWIN *win;
|
|
CMP_TOOLBAR toolbar;
|
|
CMP_STATUSBAR statusbar;
|
|
struct s_focus_info focus;
|
|
float scale;
|
|
char * title;
|
|
struct bitmap * icon;
|
|
struct gui_window *active_gui_window;
|
|
struct s_redrw_slots redraw_slots;
|
|
struct s_caret caret;
|
|
/* current size of window on screen: */
|
|
GRECT loc;
|
|
};
|
|
typedef struct s_gui_win_root ROOTWIN;
|
|
|
|
struct s_browser
|
|
{
|
|
struct browser_window * bw;
|
|
bool attached;
|
|
};
|
|
|
|
/*
|
|
This is the part of the gui which is known by netsurf core.
|
|
You must implement it. Altough, you are free how to do it.
|
|
Each of the browser "viewports" managed by netsurf are bound
|
|
to this structure.
|
|
*/
|
|
struct gui_window {
|
|
struct s_gui_win_root * root;
|
|
struct s_browser * browser;
|
|
MFORM_EX *cursor;
|
|
/* icon to be drawn when iconified, or NULL for default resource. */
|
|
char * status;
|
|
char * title;
|
|
char * url;
|
|
float scale;
|
|
struct bitmap * icon;
|
|
struct s_caret caret;
|
|
struct s_search_form_session *search;
|
|
struct gui_window *next, *prev;
|
|
};
|
|
|
|
extern struct gui_window *window_list;
|
|
|
|
/* -------------------------------------------------------------------------- */
|
|
/* Public - non core gui window functions */
|
|
/* -------------------------------------------------------------------------- */
|
|
void gui_set_input_gui_window(struct gui_window *gw);
|
|
struct gui_window *gui_get_input_window(void);
|
|
char *gui_window_get_url(struct gui_window *gw);
|
|
char *gui_window_get_title(struct gui_window *gw);
|
|
|
|
/**
|
|
* Set the status bar of a browser window.
|
|
*
|
|
* \param w The gui_window to update.
|
|
* \param text new status text
|
|
*/
|
|
void atari_window_set_status(struct gui_window *w, const char *text);
|
|
void gui_window_set_pointer(struct gui_window *gw, gui_pointer_shape shape);
|
|
void gui_window_destroy(struct gui_window *w);
|
|
|
|
#endif
|