Renamed jwidget to Widget.

Refactored jwidget_set_text to Widget::setText (same for setFont, setEnabled, etc.).
Created "Frame" class.
Refactored "jwindow_funcname" functions to "Frame::funcname".
Renamed JWidgetPtr to FramePtr.
This commit is contained in:
David Capello 2010-01-26 00:38:05 +00:00
parent 13c87691b9
commit 77c009de55
116 changed files with 1555 additions and 1596 deletions

View File

@ -106,17 +106,17 @@ public:
App* App::m_instance = NULL;
static JWidget top_window = NULL; /* top level window (the desktop) */
static JWidget box_menubar = NULL; /* box where the menu bar is */
static JWidget box_colorbar = NULL; /* box where the color bar is */
static JWidget box_toolbar = NULL; /* box where the tools bar is */
static JWidget box_statusbar = NULL; /* box where the status bar is */
static JWidget box_tabsbar = NULL; /* box where the tabs bar is */
static JWidget menubar = NULL; /* the menu bar widget */
static JWidget statusbar = NULL; /* the status bar widget */
static JWidget colorbar = NULL; /* the color bar widget */
static JWidget toolbar = NULL; /* the tool bar widget */
static JWidget tabsbar = NULL; /* the tabs bar widget */
static Frame* top_window = NULL; /* top level window (the desktop) */
static Widget* box_menubar = NULL; /* box where the menu bar is */
static Widget* box_colorbar = NULL; /* box where the color bar is */
static Widget* box_toolbar = NULL; /* box where the tools bar is */
static Widget* box_statusbar = NULL; /* box where the status bar is */
static Widget* box_tabsbar = NULL; /* box where the tabs bar is */
static Widget* menubar = NULL; /* the menu bar widget */
static Widget* statusbar = NULL; /* the status bar widget */
static Widget* colorbar = NULL; /* the color bar widget */
static Widget* toolbar = NULL; /* the tool bar widget */
static Widget* tabsbar = NULL; /* the tabs bar widget */
static char *palette_filename = NULL;
@ -192,7 +192,7 @@ int App::run()
{
/* initialize GUI interface */
if (ase_mode & MODE_GUI) {
JWidget view, editor;
Widget* view, *editor;
PRINTF("GUI mode\n");
@ -200,8 +200,8 @@ int App::run()
jmouse_set_cursor(JI_CURSOR_NORMAL);
jmanager_refresh_screen();
/* load main window */
top_window = load_widget("main.jid", "main_window");
// load main window
top_window = static_cast<Frame*>(load_widget("main.jid", "main_window"));
if (!top_window) {
allegro_message("Error loading data data/jids/main.jid file.\n"
"You have to reinstall the program.\n");
@ -217,7 +217,7 @@ int App::run()
menubar = jmenubar_new();
statusbar = statusbar_new();
colorbar = colorbar_new(box_colorbar->align());
colorbar = colorbar_new(box_colorbar->getAlign());
toolbar = toolbar_new();
tabsbar = tabs_new(tabsbar_select_callback);
view = editor_view_new();
@ -249,7 +249,7 @@ int App::run()
if (box_tabsbar) jwidget_add_child(box_tabsbar, tabsbar);
/* prepare the window */
jwindow_remap(top_window);
top_window->remap_window();
/* rebuild menus */
app_realloc_sprite_list();
@ -259,7 +259,7 @@ int App::run()
set_current_editor(editor);
/* open the window */
jwindow_open(top_window);
top_window->open_window();
/* refresh the screen */
jmanager_refresh_screen();
@ -338,7 +338,7 @@ int App::run()
module should destroy it) */
jmenubar_set_menu(menubar, NULL);
/* destroy the top-window */
// destroy the top-window
jwidget_free(top_window);
top_window = NULL;
}
@ -451,8 +451,8 @@ void app_realloc_sprite_list()
*/
bool app_realloc_recent_list()
{
JWidget list_menuitem = get_recent_list_menuitem();
JWidget menuitem;
Widget* list_menuitem = get_recent_list_menuitem();
Widget* menuitem;
/* update the recent file list menu item */
if (list_menuitem) {
@ -461,7 +461,7 @@ bool app_realloc_recent_list()
Command *cmd_open_file = CommandsModule::instance()->get_command_by_name(CommandId::open_file);
JWidget submenu = jmenuitem_get_submenu(list_menuitem);
Widget* submenu = jmenuitem_get_submenu(list_menuitem);
if (submenu) {
jmenuitem_set_submenu(list_menuitem, NULL);
jwidget_free(submenu);
@ -508,12 +508,12 @@ int app_get_current_image_type()
return IMAGE_RGB;
}
JWidget app_get_top_window() { return top_window; }
JWidget app_get_menubar() { return menubar; }
JWidget app_get_statusbar() { return statusbar; }
JWidget app_get_colorbar() { return colorbar; }
JWidget app_get_toolbar() { return toolbar; }
JWidget app_get_tabsbar() { return tabsbar; }
Frame* app_get_top_window() { return top_window; }
Widget* app_get_menubar() { return menubar; }
Widget* app_get_statusbar() { return statusbar; }
Widget* app_get_colorbar() { return colorbar; }
Widget* app_get_toolbar() { return toolbar; }
Widget* app_get_tabsbar() { return tabsbar; }
void app_default_statusbar_message()
{
@ -555,7 +555,7 @@ int app_get_color_to_clear_layer(Layer *layer)
return get_color_for_layer(layer, color);
}
static void tabsbar_select_callback(JWidget tabs, void *data, int button)
static void tabsbar_select_callback(Widget* tabs, void *data, int button)
{
// Note: data can be NULL (the "Nothing" tab)
Sprite* sprite = (Sprite*)data;

View File

@ -76,12 +76,12 @@ bool app_realloc_recent_list();
int app_get_current_image_type();
JWidget app_get_top_window();
JWidget app_get_menubar();
JWidget app_get_statusbar();
JWidget app_get_colorbar();
JWidget app_get_toolbar();
JWidget app_get_tabsbar();
Frame* app_get_top_window();
Widget* app_get_menubar();
Widget* app_get_statusbar();
Widget* app_get_colorbar();
Widget* app_get_toolbar();
Widget* app_get_tabsbar();
void app_default_statusbar_message();

View File

@ -57,15 +57,15 @@ void AboutCommand::execute(Context* context)
JWidget label3, label4, box2, box3, box4, button1;
char *authors_txt = read_authors_txt("AUTHORS.txt");
JWidgetPtr window;
FramePtr window;
if (authors_txt)
window = jwindow_new_desktop();
window = new Frame(true, NULL);
else
window = jwindow_new(_("About ASE"));
window = new Frame(false, _("About ASE"));
box1 = jbox_new(JI_VERTICAL);
label1 = jlabel_new("Allegro Sprite Editor - " VERSION);
label2 = jlabel_new(_("Just another tool to create sprites"));
label2 = jlabel_new(_("A pixel-art program"));
separator1 = ji_separator_new(NULL, JI_HORIZONTAL);
if (authors_txt) {
@ -108,7 +108,7 @@ void AboutCommand::execute(Context* context)
button1->border_width.r+16,
button1->border_width.b);
jwindow_open_fg(window);
window->open_window_fg();
}
char* AboutCommand::read_authors_txt(const char *filename)

View File

@ -66,8 +66,8 @@ void AdvancedModeCommand::execute(Context* context)
jwidget_show(app_get_tabsbar());
}
jwindow_remap(app_get_top_window());
jwidget_dirty(app_get_top_window());
app_get_top_window()->remap_window();
app_get_top_window()->dirty();
if (advanced_mode &&
get_config_bool("AdvancedMode", "Warning", true)) {
@ -77,17 +77,17 @@ void AdvancedModeCommand::execute(Context* context)
char key[1024];
char buf[1024];
JWidgetPtr window(load_widget("advanced.jid", "advanced_mode_warning"));
JWidget warning_label = find_widget(window, "warning_label");
JWidget donot_show = find_widget(window, "donot_show");
FramePtr window(load_widget("advanced.jid", "advanced_mode_warning"));
Widget* warning_label = find_widget(window, "warning_label");
Widget* donot_show = find_widget(window, "donot_show");
strcpy(warning, _("You can back pressing the \"%s\" key."));
jaccel_to_string(accel, key);
sprintf(buf, warning, key);
jwidget_set_text(warning_label, buf);
warning_label->setText(buf);
jwindow_open_fg(window);
window->open_window_fg();
set_config_bool("AdvancedMode", "Warning",
!jwidget_is_selected(donot_show));

View File

@ -66,7 +66,7 @@ void CanvasSizeCommand::execute(Context* context)
JWidget left, top, right, bottom, ok;
// load the window widget
JWidgetPtr window(load_widget("canvas.jid", "canvas_size"));
FramePtr window(load_widget("canvas.jid", "canvas_size"));
get_widgets(window,
"left", &left,
"top", &top,
@ -74,26 +74,26 @@ void CanvasSizeCommand::execute(Context* context)
"bottom", &bottom,
"ok", &ok, NULL);
jwindow_remap(window);
jwindow_center(window);
window->remap_window();
window->center_window();
left->textf("%d", m_left);
right->textf("%d", m_right);
top->textf("%d", m_top);
bottom->textf("%d", m_bottom);
left->setTextf("%d", m_left);
right->setTextf("%d", m_right);
top->setTextf("%d", m_top);
bottom->setTextf("%d", m_bottom);
load_window_pos(window, "CanvasSize");
jwidget_show(window);
jwindow_open_fg(window);
window->open_window_fg();
save_window_pos(window, "CanvasSize");
if (jwindow_get_killer(window) != ok)
if (window->get_killer() != ok)
return;
m_left = left->text_int();
m_right = right->text_int();
m_top = top->text_int();
m_bottom = bottom->text_int();
m_left = left->getTextInt();
m_right = right->getTextInt();
m_top = top->getTextInt();
m_bottom = bottom->getTextInt();
}
// resize canvas

View File

@ -76,7 +76,7 @@ void CelPropertiesCommand::execute(Context* context)
/* get current cel (can be NULL) */
cel = static_cast<LayerImage*>(layer)->get_cel(sprite->frame);
JWidgetPtr window(load_widget("celprop.jid", "cel_properties"));
FramePtr window(load_widget("celprop.jid", "cel_properties"));
get_widgets(window,
"frame", &label_frame,
"pos", &label_pos,
@ -86,17 +86,17 @@ void CelPropertiesCommand::execute(Context* context)
/* if the layer isn't writable */
if (!layer->is_writable()) {
jwidget_set_text(button_ok, _("Locked"));
jwidget_disable(button_ok);
button_ok->setText(_("Locked"));
button_ok->setEnabled(false);
}
usprintf(buf, "%d/%d", sprite->frame+1, sprite->frames);
jwidget_set_text(label_frame, buf);
label_frame->setText(buf);
if (cel != NULL) {
/* position */
usprintf(buf, "%d, %d", cel->x, cel->y);
jwidget_set_text(label_pos, buf);
label_pos->setText(buf);
/* dimension (and memory size) */
memsize =
@ -112,7 +112,7 @@ void CelPropertiesCommand::execute(Context* context)
sizeof(buf)-ustrsize(buf));
ustrcat(buf, ")");
jwidget_set_text(label_size, buf);
label_size->setText(buf);
/* opacity */
jslider_set_value(slider_opacity, cel->opacity);
@ -123,15 +123,15 @@ void CelPropertiesCommand::execute(Context* context)
}
}
else {
jwidget_set_text(label_pos, "None");
jwidget_set_text(label_size, "Empty (0 bytes)");
label_pos->setText("None");
label_size->setText("Empty (0 bytes)");
jslider_set_value(slider_opacity, 0);
jwidget_disable(slider_opacity);
}
jwindow_open_fg(window);
window->open_window_fg();
if (jwindow_get_killer(window) == button_ok) {
if (window->get_killer() == button_ok) {
int new_opacity = jslider_get_value(slider_opacity);
/* the opacity was changed? */

View File

@ -96,7 +96,7 @@ void ConfigureScreen::show_dialog(Context* context)
{
JWidget resolution, color_depth, pixel_scale, fullscreen;
JWidgetPtr window(load_widget("confscr.jid", "configure_screen"));
FramePtr window(load_widget("confscr.jid", "configure_screen"));
get_widgets(window,
"resolution", &resolution,
"color_depth", &color_depth,
@ -110,9 +110,9 @@ void ConfigureScreen::show_dialog(Context* context)
else
jwidget_select(fullscreen);
jwindow_open_fg(window);
window->open_window_fg();
if (jwindow_get_killer(window) == jwidget_find_name(window, "ok")) {
if (window->get_killer() == jwidget_find_name(window, "ok")) {
new_w = m_resolutions[jcombobox_get_selected_index(resolution)].first;
new_h = m_resolutions[jcombobox_get_selected_index(resolution)].second;
new_depth = m_colordepths[jcombobox_get_selected_index(color_depth)];
@ -122,21 +122,21 @@ void ConfigureScreen::show_dialog(Context* context)
/* setup graphics mode */
if (try_new_gfx_mode(context)) {
JWidgetPtr alert_window(jalert_new("Confirm Screen"
"<<Do you want to keep this screen resolution?"
"<<In 10 seconds the screen will be restored."
"||&Yes||&No"));
FramePtr alert_window(jalert_new("Confirm Screen"
"<<Do you want to keep this screen resolution?"
"<<In 10 seconds the screen will be restored."
"||&Yes||&No"));
jwidget_add_hook(alert_window, -1, alert_msg_proc, NULL);
seconds_to_accept = 10;
timer_to_accept = jmanager_add_timer(alert_window, 1000);
jmanager_start_timer(timer_to_accept);
jwindow_open_fg(alert_window);
alert_window->open_window_fg();
jmanager_remove_timer(timer_to_accept);
if (jwindow_get_killer(alert_window) != NULL &&
ustrcmp(jwidget_get_name(jwindow_get_killer(alert_window)), "button-1") == 0) {
if (alert_window->get_killer() != NULL &&
ustrcmp(alert_window->get_killer()->getName(), "button-1") == 0) {
/* do nothing */
}
else {
@ -286,7 +286,7 @@ static bool try_new_gfx_mode(Context* context)
/* redraw top window */
if (app_get_top_window()) {
jwindow_remap(app_get_top_window());
app_get_top_window()->remap_window();
jmanager_refresh_screen();
}
@ -304,13 +304,13 @@ static bool alert_msg_proc(JWidget widget, JMessage msg)
seconds_to_accept = MAX(0, seconds_to_accept);
usprintf(buf, "In %d seconds the screen will be restored.", seconds_to_accept);
jwidget_set_text((JWidget)labels->end->next->next->data, buf);
((JWidget)labels->end->next->next->data)->setText(buf);
jlist_free(labels);
if (seconds_to_accept == 0) {
jmanager_stop_timer(timer_to_accept);
jwindow_close(widget, NULL);
return TRUE;
static_cast<Frame*>(widget)->closeWindow(NULL);
return true;
}
}
}

View File

@ -51,7 +51,7 @@ public:
}
};
static JWidget window = NULL;
static Frame* window = NULL;
static bool brush_preview_msg_proc(JWidget widget, JMessage msg);
@ -103,12 +103,12 @@ void ConfigureTools::execute(Context* context)
bool first_time = FALSE;
if (!window) {
window = load_widget("toolconf.jid", "configure_tool");
window = static_cast<Frame*>(load_widget("toolconf.jid", "configure_tool"));
first_time = TRUE;
}
/* if the window is opened, close it */
else if (jwidget_is_visible(window)) {
jwindow_close(window, NULL);
window->closeWindow(NULL);
return;
}
@ -140,7 +140,7 @@ void ConfigureTools::execute(Context* context)
/* cursor-color */
if (first_time) {
cursor_color = colorbutton_new(get_cursor_color(), IMAGE_INDEXED);
jwidget_set_name(cursor_color, "cursor_color");
cursor_color->setName("cursor_color");
}
else {
cursor_color = jwidget_find_name(window, "cursor_color");
@ -148,11 +148,11 @@ void ConfigureTools::execute(Context* context)
/* brush-preview */
if (first_time) {
brush_preview = new jwidget(JI_WIDGET);
brush_preview = new Widget(JI_WIDGET);
brush_preview->min_w = 32 + 4;
brush_preview->min_h = 32 + 4;
jwidget_set_name(brush_preview, "brush_preview");
brush_preview->setName("brush_preview");
jwidget_add_hook(brush_preview, JI_WIDGET,
brush_preview_msg_proc, NULL);
}
@ -167,7 +167,7 @@ void ConfigureTools::execute(Context* context)
GFX_BRUSH_SQUARE,
GFX_BRUSH_LINE);
jwidget_set_name(brush_type, "brush_type");
brush_type->setName("brush_type");
}
else {
brush_type = jwidget_find_name(window, "brush_type");
@ -216,13 +216,13 @@ void ConfigureTools::execute(Context* context)
}
/* default position */
jwindow_remap(window);
jwindow_center(window);
window->remap_window();
window->center_window();
/* load window configuration */
load_window_pos(window, "ConfigureTool");
jwindow_open_bg(window);
window->open_window_bg();
}
static bool brush_preview_msg_proc(JWidget widget, JMessage msg)
@ -317,8 +317,8 @@ static bool tiled_check_change_hook(JWidget widget, void *data)
{
bool flag = jwidget_is_selected(widget);
set_tiled_mode(flag ? TILED_BOTH: TILED_NONE);
jwidget_set_selected(jwidget_find_name(jwidget_get_window(widget), "tiled_x"), flag);
jwidget_set_selected(jwidget_find_name(jwidget_get_window(widget), "tiled_y"), flag);
widget->findSibling("tiled_x")->setSelected(flag);
widget->findSibling("tiled_y")->setSelected(flag);
return FALSE;
}
@ -332,8 +332,7 @@ static bool tiled_xy_check_change_hook(JWidget widget, void *data)
else
tiled_mode &= ~tiled_axis;
jwidget_set_selected(jwidget_find_name(jwidget_get_window(widget), "tiled"),
(tiled_mode != TILED_NONE));
widget->findSibling("tiled")->setSelected(tiled_mode != TILED_NONE);
set_tiled_mode((tiled_t)tiled_mode);
return FALSE;

View File

@ -65,24 +65,24 @@ void DuplicateSpriteCommand::execute(Context* context)
char buf[1024];
/* load the window widget */
JWidgetPtr window(load_widget("dupspr.jid", "duplicate_sprite"));
FramePtr window(load_widget("dupspr.jid", "duplicate_sprite"));
src_name = jwidget_find_name(window, "src_name");
dst_name = jwidget_find_name(window, "dst_name");
flatten = jwidget_find_name(window, "flatten");
jwidget_set_text(src_name, get_filename(sprite->filename));
src_name->setText(get_filename(sprite->filename));
sprintf(buf, "%s %s", sprite->filename, _("Copy"));
jwidget_set_text(dst_name, buf);
dst_name->setText(buf);
if (get_config_bool("DuplicateSprite", "Flatten", FALSE))
jwidget_select(flatten);
/* open the window */
jwindow_open_fg(window);
window->open_window_fg();
if (jwindow_get_killer(window) == jwidget_find_name(window, "ok")) {
if (window->get_killer() == jwidget_find_name(window, "ok")) {
set_config_bool("DuplicateSprite", "Flatten",
jwidget_is_selected(flatten));
@ -94,7 +94,7 @@ void DuplicateSpriteCommand::execute(Context* context)
sprite_copy = sprite_new_copy(sprite);
if (sprite_copy != NULL) {
sprite_set_filename(sprite_copy, jwidget_get_text(dst_name));
sprite_set_filename(sprite_copy, dst_name->getText());
context->add_sprite(sprite_copy);
set_sprite_in_more_reliable_editor(sprite_copy);

View File

@ -61,7 +61,7 @@ void ExitCommand::execute(Context* context)
}
/* close the window */
jwindow_close(app_get_top_window(), 0);
app_get_top_window()->closeWindow(NULL);
}
//////////////////////////////////////////////////////////////////////

View File

@ -69,7 +69,7 @@ void dialogs_frame_length(const SpriteReader& sprite, int sprite_frame)
JWidget frame, frlen, ok;
char buf[64];
JWidgetPtr window(load_widget("frlen.jid", "frame_duration"));
FramePtr window(load_widget("frlen.jid", "frame_duration"));
get_widgets(window,
"frame", &frame,
"frlen", &frlen,
@ -79,14 +79,13 @@ void dialogs_frame_length(const SpriteReader& sprite, int sprite_frame)
strcpy(buf, "All");
else
sprintf(buf, "%d", sprite_frame+1);
jwidget_set_text(frame, buf);
frame->setText(buf);
sprintf(buf, "%d", sprite_get_frlen(sprite, sprite->frame));
jwidget_set_text(frlen, buf);
frlen->setTextf("%d", sprite_get_frlen(sprite, sprite->frame));
jwindow_open_fg(window);
if (jwindow_get_killer(window) == ok) {
int num = strtol(jwidget_get_text(frlen), NULL, 10);
window->open_window_fg();
if (window->get_killer() == ok) {
int num = strtol(frlen->getText(), NULL, 10);
if (sprite_frame < 0) {
if (jalert("Warning"

View File

@ -65,7 +65,7 @@ void LayerPropertiesCommand::execute(Context* context)
Layer* layer = sprite->layer;
bool with_blend_modes = (layer->is_image() && sprite->imgtype != IMAGE_INDEXED);
JWidgetPtr window(jwindow_new(_("Layer Properties")));
FramePtr window(new Frame(false, _("Layer Properties")));
box1 = jbox_new(JI_VERTICAL);
box2 = jbox_new(JI_HORIZONTAL);
box3 = jbox_new(JI_HORIZONTAL + JI_HOMOGENEOUS);
@ -122,10 +122,10 @@ void LayerPropertiesCommand::execute(Context* context)
jwidget_magnetic(entry_name, true);
jwidget_magnetic(button_ok, true);
jwindow_open_fg(window);
window->open_window_fg();
if (jwindow_get_killer(window) == button_ok) {
layer->set_name(jwidget_get_text(entry_name));
if (window->get_killer() == button_ok) {
layer->set_name(entry_name->getText());
if (with_blend_modes)
static_cast<LayerImage*>(layer)->set_blend_mode(jlistbox_get_selected_index(list_bm));

View File

@ -82,7 +82,7 @@ void NewFileCommand::execute(Context* context)
};
/* load the window widget */
JWidgetPtr window(load_widget("newspr.jid", "new_sprite"));
FramePtr window(load_widget("newspr.jid", "new_sprite"));
width = jwidget_find_name(window, "width");
height = jwidget_find_name(window, "height");
@ -99,8 +99,8 @@ void NewFileCommand::execute(Context* context)
h = get_config_int("NewSprite", "Height", 200); /* default = 200 */
bg = get_config_int("NewSprite", "Background", 2); /* default = white */
usprintf(buf, "%d", w); jwidget_set_text(width, buf);
usprintf(buf, "%d", h); jwidget_set_text(height, buf);
width->setTextf("%d", w);
height->setTextf("%d", h);
/* select image-type */
switch (imgtype) {
@ -113,9 +113,9 @@ void NewFileCommand::execute(Context* context)
jlistbox_select_index(bg_box, bg);
/* open the window */
jwindow_open_fg(window);
window->open_window_fg();
if (jwindow_get_killer(window) == ok) {
if (window->get_killer() == ok) {
bool ok = FALSE;
/* get the options */
@ -123,8 +123,8 @@ void NewFileCommand::execute(Context* context)
else if (jwidget_is_selected(radio2)) imgtype = IMAGE_GRAYSCALE;
else if (jwidget_is_selected(radio3)) imgtype = IMAGE_INDEXED;
w = width->text_int();
h = height->text_int();
w = width->getTextInt();
h = height->getTextInt();
bg = jlistbox_get_selected_index(bg_box);
w = MID(1, w, 9999);

View File

@ -63,19 +63,19 @@ void NewLayerCommand::execute(Context* context)
{
CurrentSpriteWriter sprite(context);
JWidgetPtr window(load_widget("newlay.jid", "new_layer"));
FramePtr window(load_widget("newlay.jid", "new_layer"));
JWidget name_widget = find_widget(window, "name");
{
char* name = get_unique_layer_name(sprite);
jwidget_set_text(name_widget, name);
name_widget->setText(name);
jfree(name);
}
jwidget_set_min_size(name_widget, 128, 0);
jwindow_open_fg(window);
window->open_window_fg();
if (jwindow_get_killer(window) == jwidget_find_name(window, "ok")) {
const char* name = jwidget_get_text(jwidget_find_name(window, "name"));
if (window->get_killer() == jwidget_find_name(window, "ok")) {
const char* name = jwidget_find_name(window, "name")->getText();
Layer* layer;
{
Undoable undoable(sprite, "New Layer");

View File

@ -60,12 +60,12 @@ void NewLayerSetCommand::execute(Context* context)
CurrentSpriteWriter sprite(context);
// load the window widget
JWidgetPtr window(load_widget("newlay.jid", "new_layer_set"));
FramePtr window(load_widget("newlay.jid", "new_layer_set"));
jwindow_open_fg(window);
window->open_window_fg();
if (jwindow_get_killer(window) == jwidget_find_name(window, "ok")) {
const char *name = jwidget_get_text(jwidget_find_name(window, "name"));
if (window->get_killer() == jwidget_find_name(window, "ok")) {
const char *name = jwidget_find_name(window, "name")->getText();
Layer* layer = new LayerFolder(sprite);
layer->set_name(name);

View File

@ -58,7 +58,7 @@ typedef struct OpenFileData
FileOp *fop;
Progress *progress;
JThread thread;
JWidget alert_window;
Frame* alert_window;
} OpenFileData;
/**
@ -142,7 +142,7 @@ static void monitor_free(void* _data)
if (data->alert_window != NULL) {
data->monitor = NULL;
jwindow_close(data->alert_window, NULL);
data->alert_window->closeWindow(NULL);
}
#if 0
@ -204,7 +204,7 @@ void OpenFileCommand::execute(Context* context)
data->monitor = add_gui_monitor(monitor_openfile_bg,
monitor_free, data);
jwindow_open_fg(data->alert_window);
data->alert_window->open_window_fg();
if (data->monitor != NULL)
remove_gui_monitor(data->monitor);

View File

@ -53,7 +53,7 @@ protected:
void execute(Context* context);
};
#define get_sprite(wgt) (*(const SpriteReader*)(jwidget_get_window(wgt))->user_data[0])
#define get_sprite(wgt) (*(const SpriteReader*)(wgt->getRoot())->user_data[0])
static Palette **palettes;
@ -107,7 +107,7 @@ void PaletteEditorCommand::execute(Context* context)
}
/* load widgets */
JWidgetPtr window(load_widget("paledit.jid", "palette_editor"));
FramePtr window(load_widget("paledit.jid", "palette_editor"));
get_widgets(window,
"red", &slider_R,
"green", &slider_G,
@ -216,17 +216,17 @@ void PaletteEditorCommand::execute(Context* context)
jbutton_add_command(button_quantize, quantize_command);
/* default position */
jwindow_remap(window);
jwindow_center(window);
window->remap_window();
window->center_window();
/* load window configuration */
load_window_pos(window, "PaletteEditor");
/* open and run the window */
jwindow_open_fg(window);
window->open_window_fg();
/* check the killer widget */
if (jwindow_get_killer(window) == button_ok) {
if (window->get_killer() == button_ok) {
if (sprite) {
SpriteWriter sprite_writer(sprite);
sprite_reset_palettes(sprite_writer);

View File

@ -39,7 +39,7 @@ typedef struct SaveFileData
FileOp *fop;
Progress *progress;
JThread thread;
JWidget alert_window;
Frame* alert_window;
} SaveFileData;
/**
@ -79,11 +79,11 @@ static void monitor_savefile_bg(void *_data)
*/
static void monitor_free(void *_data)
{
SaveFileData *data = (SaveFileData *)_data;
SaveFileData *data = (SaveFileData*)_data;
if (data->alert_window != NULL) {
data->monitor = NULL;
jwindow_close(data->alert_window, NULL);
data->alert_window->closeWindow(NULL);
}
}
@ -108,7 +108,7 @@ static void save_sprite_in_background(Sprite* sprite, bool mark_as_saved)
/* TODO error handling */
jwindow_open_fg(data->alert_window);
data->alert_window->open_window_fg();
if (data->monitor != NULL)
remove_gui_monitor(data->monitor);

View File

@ -70,7 +70,7 @@ void SpritePropertiesCommand::execute(Context* context)
char buf[256];
/* load the window widget */
JWidgetPtr window(load_widget("sprprop.jid", "sprite_properties"));
FramePtr window(load_widget("sprprop.jid", "sprite_properties"));
get_widgets(window,
"name", &name,
"type", &type,
@ -96,10 +96,10 @@ void SpritePropertiesCommand::execute(Context* context)
}
/* filename */
jwidget_set_text(name, sprite->filename);
name->setText(sprite->filename);
/* color mode */
jwidget_set_text(type, imgtype_text.c_str());
type->setText(imgtype_text.c_str());
/* sprite size (width and height) */
usprintf(buf, "%dx%d (", sprite->w, sprite->h);
@ -107,22 +107,21 @@ void SpritePropertiesCommand::execute(Context* context)
buf+ustrsize(buf),
sizeof(buf)-ustrsize(buf));
ustrcat(buf, ")");
jwidget_set_text(size, buf);
size->setText(buf);
/* how many frames */
usprintf(buf, "%d", sprite->frames);
jwidget_set_text(frames, buf);
frames->setTextf("%d", sprite->frames);
jwindow_remap(window);
jwindow_center(window);
window->remap_window();
window->center_window();
for (;;) {
load_window_pos(window, "SpriteProperties");
jwidget_show(window);
jwindow_open_fg(window);
window->open_window_fg();
save_window_pos(window, "SpriteProperties");
killer = jwindow_get_killer(window);
killer = window->get_killer();
if (killer == ok)
break;
else if (killer == speed) {

View File

@ -187,7 +187,7 @@ void SpriteSizeCommand::execute(Context* context)
const CurrentSpriteReader sprite(context);
// load the window widget
JWidgetPtr window(load_widget("sprsize.jid", "sprite_size"));
FramePtr window(load_widget("sprsize.jid", "sprite_size"));
get_widgets(window,
"width_px", &width_px,
"height_px", &height_px,
@ -197,8 +197,8 @@ void SpriteSizeCommand::execute(Context* context)
"method", &method,
"ok", &ok, NULL);
width_px->textf("%d", sprite->w);
height_px->textf("%d", sprite->h);
width_px->setTextf("%d", sprite->w);
height_px->setTextf("%d", sprite->h);
HOOK(lock_ratio, JI_SIGNAL_CHECK_CHANGE, lock_ratio_change_hook, 0);
HOOK(width_px, JI_SIGNAL_ENTRY_CHANGE, width_px_change_hook, 0);
@ -210,17 +210,17 @@ void SpriteSizeCommand::execute(Context* context)
jcombobox_add_string(method, "Bilinear", NULL);
jcombobox_select_index(method, get_config_int("SpriteSize", "Method", RESIZE_METHOD_NEAREST_NEIGHBOR));
jwindow_remap(window);
jwindow_center(window);
window->remap_window();
window->center_window();
load_window_pos(window, "SpriteSize");
jwidget_show(window);
jwindow_open_fg(window);
window->open_window_fg();
save_window_pos(window, "SpriteSize");
if (jwindow_get_killer(window) == ok) {
int new_width = width_px->text_int();
int new_height = height_px->text_int();
if (window->get_killer() == ok) {
int new_width = width_px->getTextInt();
int new_height = height_px->getTextInt();
ResizeMethod resize_method =
(ResizeMethod)jcombobox_get_selected_index(method);
@ -239,8 +239,8 @@ static bool lock_ratio_change_hook(JWidget widget, void *data)
{
const CurrentSpriteReader sprite(UIContext::instance()); // TODO use the context in sprite size command
if (widget->selected())
width_px_change_hook(widget->find_sibling("width_px"), NULL);
if (widget->isSelected())
width_px_change_hook(widget->findSibling("width_px"), NULL);
return true;
}
@ -248,14 +248,14 @@ static bool lock_ratio_change_hook(JWidget widget, void *data)
static bool width_px_change_hook(JWidget widget, void *data)
{
const CurrentSpriteReader sprite(UIContext::instance()); // TODO use the context in sprite size command
int width = widget->text_int();
int width = widget->getTextInt();
double perc = 100.0 * width / sprite->w;
widget->find_sibling("width_perc")->textf(PERC_FORMAT, perc);
widget->findSibling("width_perc")->setTextf(PERC_FORMAT, perc);
if (widget->find_sibling("lock_ratio")->selected()) {
widget->find_sibling("height_perc")->textf(PERC_FORMAT, perc);
widget->find_sibling("height_px")->textf("%d", sprite->h * width / sprite->w);
if (widget->findSibling("lock_ratio")->isSelected()) {
widget->findSibling("height_perc")->setTextf(PERC_FORMAT, perc);
widget->findSibling("height_px")->setTextf("%d", sprite->h * width / sprite->w);
}
return true;
@ -264,14 +264,14 @@ static bool width_px_change_hook(JWidget widget, void *data)
static bool height_px_change_hook(JWidget widget, void *data)
{
const CurrentSpriteReader sprite(UIContext::instance()); // TODO use the context in sprite size command
int height = widget->text_int();
int height = widget->getTextInt();
double perc = 100.0 * height / sprite->h;
widget->find_sibling("height_perc")->textf(PERC_FORMAT, perc);
widget->findSibling("height_perc")->setTextf(PERC_FORMAT, perc);
if (widget->find_sibling("lock_ratio")->selected()) {
widget->find_sibling("width_perc")->textf(PERC_FORMAT, perc);
widget->find_sibling("width_px")->textf("%d", sprite->w * height / sprite->h);
if (widget->findSibling("lock_ratio")->isSelected()) {
widget->findSibling("width_perc")->setTextf(PERC_FORMAT, perc);
widget->findSibling("width_px")->setTextf("%d", sprite->w * height / sprite->h);
}
return true;
@ -280,13 +280,13 @@ static bool height_px_change_hook(JWidget widget, void *data)
static bool width_perc_change_hook(JWidget widget, void *data)
{
const CurrentSpriteReader sprite(UIContext::instance()); // TODO use the context in sprite size command
double width = widget->text_double();
double width = widget->getTextDouble();
widget->find_sibling("width_px")->textf("%d", (int)(sprite->w * width / 100));
widget->findSibling("width_px")->setTextf("%d", (int)(sprite->w * width / 100));
if (widget->find_sibling("lock_ratio")->selected()) {
widget->find_sibling("height_px")->textf("%d", (int)(sprite->h * width / 100));
widget->find_sibling("height_perc")->text(widget->text());
if (widget->findSibling("lock_ratio")->isSelected()) {
widget->findSibling("height_px")->setTextf("%d", (int)(sprite->h * width / 100));
widget->findSibling("height_perc")->setText(widget->getText());
}
return true;
@ -295,13 +295,13 @@ static bool width_perc_change_hook(JWidget widget, void *data)
static bool height_perc_change_hook(JWidget widget, void *data)
{
const CurrentSpriteReader sprite(UIContext::instance()); // TODO use the context in sprite size command
double height = widget->text_double();
double height = widget->getTextDouble();
widget->find_sibling("height_px")->textf("%d", (int)(sprite->h * height / 100));
widget->findSibling("height_px")->setTextf("%d", (int)(sprite->h * height / 100));
if (widget->find_sibling("lock_ratio")->selected()) {
widget->find_sibling("width_px")->textf("%d", (int)(sprite->w * height / 100));
widget->find_sibling("width_perc")->text(widget->text());
if (widget->findSibling("lock_ratio")->isSelected()) {
widget->findSibling("width_px")->setTextf("%d", (int)(sprite->w * height / 100));
widget->findSibling("width_perc")->setText(widget->getText());
}
return true;

View File

@ -65,6 +65,7 @@ CommandsModule::~CommandsModule()
CommandsModule* CommandsModule::instance()
{
assert(m_instance != NULL);
return m_instance;
}

View File

@ -99,7 +99,7 @@ void ColorCurveCommand::execute(Context* context)
App::instance()->add_hook(AppEvent::Exit, new DestroyCurve(the_curve));
}
JWidgetPtr window(load_widget("colcurv.jid", "color_curve"));
FramePtr window(load_widget("colcurv.jid", "color_curve"));
get_widgets(window,
"preview", &check_preview,
"button_ok", &button_ok,
@ -130,8 +130,8 @@ void ColorCurveCommand::execute(Context* context)
jwidget_add_hook(window, -1, window_msg_proc, NULL);
/* default position */
jwindow_remap(window);
jwindow_center(window);
window->remap_window();
window->center_window();
/* first preview */
make_preview();
@ -140,9 +140,9 @@ void ColorCurveCommand::execute(Context* context)
load_window_pos(window, "ColorCurve");
/* open the window */
jwindow_open_fg(window);
window->open_window_fg();
if (jwindow_get_killer(window) == button_ok)
if (window->get_killer() == button_ok)
effect_apply_to_target_with_progressbar(&effect);
/* update editors */

View File

@ -102,7 +102,7 @@ void ConvolutionMatrixCommand::execute(Context* context)
JWidget box_target;
JWidget reload, generate;
JWidgetPtr window(load_widget("convmatr.jid", "convolution_matrix"));
FramePtr window(load_widget("convmatr.jid", "convolution_matrix"));
get_widgets(window,
"preview", &check_preview,
"tiled", &check_tiled,
@ -144,8 +144,8 @@ void ConvolutionMatrixCommand::execute(Context* context)
jwidget_disable(generate);
/* default position */
jwindow_remap(window);
jwindow_center(window);
window->remap_window();
window->center_window();
/* load window configuration */
load_window_pos(window, "ConvolutionMatrix");
@ -154,9 +154,9 @@ void ConvolutionMatrixCommand::execute(Context* context)
listbox_select_current_convmatr(list_convmatr);
/* open the window */
jwindow_open_fg(window);
window->open_window_fg();
if (jwindow_get_killer(window) == button_ok)
if (window->get_killer() == button_ok)
effect_apply_to_target_with_progressbar(&effect);
/* update editors */
@ -192,7 +192,7 @@ static void listbox_select_current_convmatr(JWidget listbox)
JI_LIST_FOR_EACH(listbox->children, link) {
child = reinterpret_cast<JWidget>(link->data);
if (strcmp(jwidget_get_text(child), selected) == 0) {
if (strcmp(child->getText(), selected) == 0) {
select_this = child;
break;
}
@ -277,7 +277,7 @@ static bool generate_select_hook(JWidget widget, void *data)
jwidget_set_min_size(div, 1, 1);
jwidget_set_min_size(bias, 1, 1);
jwindow_open_fg(window);
window->open_window_fg();
/* TODO do something */

View File

@ -85,9 +85,8 @@ void DespeckleCommand::execute(Context* context)
{
const CurrentSpriteReader sprite(context);
JWidget box_target, target_button, button_ok;
char buf[32];
JWidgetPtr window(load_widget("median.jid", "median"));
FramePtr window(load_widget("median.jid", "median"));
get_widgets(window,
"width", &entry_width,
"height", &entry_height,
@ -106,10 +105,8 @@ void DespeckleCommand::execute(Context* context)
target_button = target_button_new(sprite->imgtype, TRUE);
target_button_set_target(target_button, effect.target);
sprintf(buf, "%d", get_config_int("Median", "Width", 3));
jwidget_set_text(entry_width, buf);
sprintf(buf, "%d", get_config_int("Median", "Height", 3));
jwidget_set_text(entry_height, buf);
entry_width->setTextf("%d", get_config_int("Median", "Width", 3));
entry_height->setTextf("%d", get_config_int("Median", "Height", 3));
if (get_config_bool("Median", "Preview", TRUE))
jwidget_select(check_preview);
@ -127,8 +124,8 @@ void DespeckleCommand::execute(Context* context)
HOOK(check_tiled, JI_SIGNAL_CHECK_CHANGE, tiled_change_hook, 0);
/* default position */
jwindow_remap(window);
jwindow_center(window);
window->remap_window();
window->center_window();
/* first preview */
make_preview();
@ -137,9 +134,9 @@ void DespeckleCommand::execute(Context* context)
load_window_pos(window, "Median");
/* open the window */
jwindow_open_fg(window);
window->open_window_fg();
if (jwindow_get_killer(window) == button_ok)
if (window->get_killer() == button_ok)
effect_apply_to_target_with_progressbar(&effect);
/* update editors */
@ -151,16 +148,14 @@ void DespeckleCommand::execute(Context* context)
static bool width_change_hook(JWidget widget, void *data)
{
set_config_int("Median", "Width",
strtol(jwidget_get_text(widget), NULL, 10));
set_config_int("Median", "Width", widget->getTextInt());
make_preview();
return TRUE;
}
static bool height_change_hook(JWidget widget, void *data)
{
set_config_int("Median", "Height",
strtol(jwidget_get_text(widget), NULL, 10));
set_config_int("Median", "Height", widget->getTextInt());
make_preview();
return TRUE;
}
@ -177,7 +172,7 @@ static bool preview_change_hook(JWidget widget, void *data)
{
set_config_bool("Median", "Preview", jwidget_is_selected(widget));
make_preview();
return FALSE;
return false;
}
static bool tiled_change_hook(JWidget widget, void *data)

View File

@ -80,7 +80,8 @@ void InvertColorCommand::execute(Context* context)
{
const CurrentSpriteReader sprite(context);
JWidget box_target, target_button, button_ok;
JWidgetPtr window(load_widget("invrtcol.jid", "invert_color"));
FramePtr window(load_widget("invrtcol.jid", "invert_color"));
get_widgets(window,
"target", &box_target,
"preview", &check_preview,
@ -105,8 +106,8 @@ void InvertColorCommand::execute(Context* context)
HOOK(check_preview, JI_SIGNAL_CHECK_CHANGE, preview_change_hook, 0);
/* default position */
jwindow_remap(window);
jwindow_center(window);
window->remap_window();
window->center_window();
/* first preview */
make_preview();
@ -115,9 +116,9 @@ void InvertColorCommand::execute(Context* context)
load_window_pos(window, "InvertColor");
/* open the window */
jwindow_open_fg(window);
window->open_window_fg();
if (jwindow_get_killer(window) == button_ok)
if (window->get_killer() == button_ok)
effect_apply_to_target_with_progressbar(&effect);
/* update editors */

View File

@ -86,7 +86,7 @@ void ReplaceColorCommand::execute(Context* context)
JWidget box_target, target_button;
JWidget button_ok;
JWidgetPtr window(load_widget("replcol.jid", "replace_color"));
FramePtr window(load_widget("replcol.jid", "replace_color"));
get_widgets(window,
"color_buttons_box", &color_buttons_box,
"preview", &check_preview,
@ -131,8 +131,8 @@ void ReplaceColorCommand::execute(Context* context)
HOOK(check_preview, JI_SIGNAL_CHECK_CHANGE, preview_change_hook, 0);
/* default position */
jwindow_remap(window);
jwindow_center(window);
window->remap_window();
window->center_window();
/* first preview */
make_preview();
@ -141,9 +141,9 @@ void ReplaceColorCommand::execute(Context* context)
load_window_pos(window, "ReplaceColor");
/* open the window */
jwindow_open_fg(window);
window->open_window_fg();
if (jwindow_get_killer(window) == button_ok)
if (window->get_killer() == button_ok)
effect_apply_to_target_with_progressbar(&effect);
/* update editors */

View File

@ -49,7 +49,7 @@ typedef struct ThreadData
Monitor *monitor; /* monitor to update the progress-bar */
Progress *progress; /* the progress-bar */
JThread thread; /* thread to apply the effect in background */
JWidget alert_window; /* alert for the user to cancel the
Frame* alert_window; /* alert for the user to cancel the
effect-progress if he wants */
} ThreadData;
@ -138,7 +138,7 @@ static void monitor_free(void *_data)
ThreadData *data = (ThreadData *)_data;
if (data->alert_window != NULL)
jwindow_close(data->alert_window, NULL);
data->alert_window->closeWindow(NULL);
}
/**
@ -169,7 +169,7 @@ void effect_apply_to_target_with_progressbar(Effect* effect)
/* TODO error handling */
jwindow_open_fg(data->alert_window);
data->alert_window->open_window_fg();
jmutex_lock(data->mutex);
if (!data->done) {

View File

@ -30,10 +30,10 @@
#include "modules/gui.h"
#include "widgets/statebar.h"
static JWidget wid_console = NULL;
static JWidget wid_view = NULL;
static JWidget wid_textbox = NULL;
static JWidget wid_cancel = NULL;
static Frame* wid_console = NULL;
static Widget* wid_view = NULL;
static Widget* wid_textbox = NULL;
static Widget* wid_cancel = NULL;
static int console_counter = 0;
static bool console_locked;
static bool want_close_flag = FALSE;
@ -48,16 +48,11 @@ Console::Console()
console_counter > 1)
return;
else {
JWidget window, grid, view, textbox, button;
window = jwindow_new(_("Errors Console"));
if (!window)
return;
grid = jgrid_new(1, FALSE);
view = jview_new();
textbox = jtextbox_new(NULL, JI_WORDWRAP);
button = jbutton_new(_("&Cancel"));
Frame* window = new Frame(false, _("Errors Console"));
Widget* grid = jgrid_new(1, FALSE);
Widget* view = jview_new();
Widget* textbox = jtextbox_new(NULL, JI_WORDWRAP);
Widget* button = jbutton_new(_("&Cancel"));
if (!grid || !textbox || !button)
return;
@ -95,10 +90,10 @@ Console::~Console()
&& !want_close_flag
&& jwidget_is_visible(wid_console)) {
/* open in foreground */
jwindow_open_fg(wid_console);
wid_console->open_window_fg();
}
jwidget_free(wid_console);
delete wid_console; // window
wid_console = NULL;
want_close_flag = FALSE;
}
@ -106,7 +101,7 @@ Console::~Console()
void Console::printf(const char *format, ...)
{
char buf[1024];
char buf[1024]; // TODO warning buffer overflow
va_list ap;
va_start(ap, format);
@ -119,7 +114,7 @@ void Console::printf(const char *format, ...)
/* open the window */
if (jwidget_is_hidden(wid_console)) {
jwindow_open(wid_console);
wid_console->open_window();
jmanager_refresh_screen();
}
@ -130,15 +125,15 @@ void Console::printf(const char *format, ...)
jwidget_show(wid_view);
jwindow_remap(wid_console);
wid_console->remap_window();
jwidget_set_rect(wid_console, rect);
jwindow_center(wid_console);
jwidget_dirty(wid_console);
wid_console->center_window();
wid_console->dirty();
jrect_free(rect);
}
text = jwidget_get_text(wid_textbox);
text = wid_textbox->getText();
if (!text)
final = jstrdup(buf);
else {
@ -149,21 +144,24 @@ void Console::printf(const char *format, ...)
ustrcat(final, buf);
}
jwidget_set_text(wid_textbox, final);
wid_textbox->setText(final);
jfree(final);
}
else {
fputs(buf, stdout);
fflush(stdout);
if (ji_screen) {
fputs(buf, stdout);
fflush(stdout);
if (ji_screen)
jalert("Error<<%s||OK", buf);
}
else
allegro_message(buf);
}
}
void user_printf(const char *format, ...)
{
char buf[1024];
char buf[1024]; // TODO warning buffer overflow
va_list ap;
va_start(ap, format);

View File

@ -67,7 +67,7 @@ void check_for_dropped_files()
if (!base_wnd_proc) // drop-files hook not installed
return;
if (!jwindow_is_toplevel(app_get_top_window()))
if (!app_get_top_window()->is_toplevel())
return;
jmutex_lock(dropped_files_mutex);

View File

@ -78,7 +78,7 @@ Job::~Job()
void Job::do_job()
{
m_thread = jthread_new(&Job::thread_proc, (void*)this);
jwindow_open_fg(m_alert_window);
m_alert_window->open_window_fg();
}
void Job::job_progress(float f)
@ -129,7 +129,7 @@ void Job::on_monitor_destroyed()
{
if (m_alert_window != NULL) {
m_monitor = NULL;
jwindow_close(m_alert_window, NULL);
m_alert_window->closeWindow(NULL);
}
}

View File

@ -21,6 +21,7 @@
#include "jinete/jbase.h"
class Frame;
struct Monitor;
struct Progress;
@ -30,7 +31,7 @@ class Job
Monitor* m_monitor;
Progress* m_progress;
JMutex m_mutex;
JWidget m_alert_window;
Frame* m_alert_window;
float m_last_progress;
bool m_done_flag;
bool m_canceled_flag;

View File

@ -63,13 +63,13 @@
#define THUMBSIZE (32*guiscale())
/* height of the headers */
#define HDRSIZE (3 + text_height(widget->font())*2 + 3 + 3)
#define HDRSIZE (3 + text_height(widget->getFont())*2 + 3 + 3)
/* width of the frames */
#define FRMSIZE (3 + THUMBSIZE + 3)
/* height of the layers */
#define LAYSIZE (3 + MAX(text_height(widget->font()), THUMBSIZE) + 4)
#define LAYSIZE (3 + MAX(text_height(widget->getFont()), THUMBSIZE) + 4)
/* space between icons and other information in the layer */
#define ICONSEP (2*guiscale())
@ -164,25 +164,22 @@ bool animation_editor_is_movingcel()
void switch_between_animation_and_sprite_editor()
{
const Sprite* sprite = UIContext::instance()->get_current_sprite();
JWidget window;
JWidget anieditor;
int layer;
/* create the window & the animation-editor */
window = jwindow_new_desktop();
anieditor = anieditor_new(sprite);
Frame* window = new Frame(true, NULL);
Widget* anieditor = anieditor_new(sprite);
current_anieditor = anieditor;
jwidget_add_child(window, anieditor);
jwindow_remap(window);
window->remap_window();
/* show the current cel */
layer = anieditor_get_layer_index(anieditor, sprite->layer);
int layer = anieditor_get_layer_index(anieditor, sprite->layer);
if (layer >= 0)
anieditor_center_cel(anieditor, layer, sprite->frame);
/* show the window */
jwindow_open_fg(window);
window->open_window_fg();
/* destroy the window */
jwidget_free(window);
@ -200,7 +197,7 @@ void switch_between_animation_and_sprite_editor()
static JWidget anieditor_new(const Sprite* sprite)
{
JWidget widget = new jwidget(anieditor_type());
Widget* widget = new Widget(anieditor_type());
AniEditor* anieditor = new AniEditor;
anieditor->sprite = sprite;
@ -979,11 +976,11 @@ static void anieditor_draw_header_part(JWidget widget, JRect clip, int x1, int y
if (align1 < 0)
x = x1+3;
else if (align1 == 0)
x = (x1+x2)/2 - text_length(widget->font(), line1)/2;
x = (x1+x2)/2 - text_length(widget->getFont(), line1)/2;
else
x = x2 - 3 - text_length(widget->font(), line1);
x = x2 - 3 - text_length(widget->getFont(), line1);
jdraw_text(widget->font(), line1,
jdraw_text(widget->getFont(), line1,
x, y1+3,
fg, face, TRUE);
}
@ -992,12 +989,12 @@ static void anieditor_draw_header_part(JWidget widget, JRect clip, int x1, int y
if (align2 < 0)
x = x1+3;
else if (align2 == 0)
x = (x1+x2)/2 - text_length(widget->font(), line2)/2;
x = (x1+x2)/2 - text_length(widget->getFont(), line2)/2;
else
x = x2 - 3 - text_length(widget->font(), line2);
x = x2 - 3 - text_length(widget->getFont(), line2);
jdraw_text(widget->font(), line2,
x, y1+3+ji_font_get_size(widget->font())+3,
jdraw_text(widget->getFont(), line2,
x, y1+3+ji_font_get_size(widget->getFont())+3,
fg, face, TRUE);
}
}
@ -1102,16 +1099,16 @@ static void anieditor_draw_layer(JWidget widget, JRect clip, int layer_index)
u += ICONBORDER+icon2->w+ICONBORDER+ICONSEP;
/* draw the layer's name */
jdraw_text(widget->font(), layer->get_name().c_str(),
u, y_mid - ji_font_get_size(widget->font())/2,
jdraw_text(widget->getFont(), layer->get_name().c_str(),
u, y_mid - ji_font_get_size(widget->getFont())/2,
fg, bg, TRUE);
/* the background should be underlined */
if (layer->is_background()) {
hline(ji_screen,
u,
y_mid - ji_font_get_size(widget->font())/2 + ji_font_get_size(widget->font()) + 1,
u + text_length(widget->font(), layer->get_name().c_str()),
y_mid - ji_font_get_size(widget->getFont())/2 + ji_font_get_size(widget->getFont()) + 1,
u + text_length(widget->getFont(), layer->get_name().c_str()),
fg);
}

View File

@ -92,11 +92,11 @@ void dialogs_draw_text(Sprite* sprite)
get_config_string("DrawText", "Text", "ABCabc"));
/* window */
jwindow_remap(window);
jwindow_center(window);
jwindow_open_fg(window);
window->remap_window();
window->center_window();
window->open_window_fg();
if (jwindow_get_killer(window) == button_ok) {
if (window->get_killer() == button_ok) {
color_t color_with_type = colorbutton_get_color(color_but);
const char *text = jwidget_get_text(entry_text);
const char *size_str = jwidget_get_text(entry_size);
@ -291,5 +291,5 @@ static void update_button_text()
{
const char *font_str = get_config_string("DrawText", "Font", "allegro.pcx");
jwidget_set_text(font_button, get_filename(font_str));
font_button->setText(get_filename(font_str));
}

View File

@ -90,10 +90,10 @@ jstring ase_file_selector(const jstring& message,
const jstring& init_path,
const jstring& exts)
{
static JWidget window = NULL;
JWidget fileview;
JWidget filename_entry;
JWidget filetype;
static Frame* window = NULL;
Widget* fileview;
Widget* filename_entry;
Widget* filetype;
jstring result;
file_system_refresh();
@ -145,9 +145,7 @@ jstring ase_file_selector(const jstring& message,
if (!window) {
// load the window widget
window = load_widget("filesel.jid", "file_selector");
if (!window)
return NULL;
window = static_cast<Frame*>(load_widget("filesel.jid", "file_selector"));
JWidget box = jwidget_find_name(window, "box");
JWidget goback = jwidget_find_name(window, "goback");
@ -177,7 +175,7 @@ jstring ase_file_selector(const jstring& message,
jwidget_add_hook(filetype, -1, filetype_msg_proc, NULL);
jwidget_add_hook(filename_entry, -1, filename_msg_proc, NULL);
jwidget_set_name(fileview, "fileview");
fileview->setName("fileview");
jview_attach(view, fileview);
jwidget_expansive(view, TRUE);
@ -185,8 +183,8 @@ jstring ase_file_selector(const jstring& message,
jwidget_add_child(box, view);
jwidget_set_min_size(window, JI_SCREEN_W*9/10, JI_SCREEN_H*9/10);
jwindow_remap(window);
jwindow_center(window);
window->remap_window();
window->center_window();
}
else {
fileview = jwidget_find_name(window, "fileview");
@ -217,12 +215,12 @@ jstring ase_file_selector(const jstring& message,
jcombobox_add_string(filetype, tok->c_str(), NULL);
// file name entry field
jwidget_set_text(filename_entry, init_path.filename().c_str());
filename_entry->setText(init_path.filename().c_str());
select_filetype_from_filename(window);
jentry_select_text(filename_entry, 0, -1);
// setup the title of the window
jwidget_set_text(window, message.c_str());
window->setText(message.c_str());
// get the ok-button
JWidget ok = jwidget_find_name(window, "ok");
@ -232,14 +230,14 @@ jstring ase_file_selector(const jstring& message,
// open the window and run... the user press ok?
again:
jwindow_open_fg(window);
if (jwindow_get_killer(window) == ok ||
jwindow_get_killer(window) == fileview) {
window->open_window_fg();
if (window->get_killer() == ok ||
window->get_killer() == fileview) {
// open the selected file
FileItem *folder = fileview_get_current_folder(fileview);
assert(folder);
jstring fn = jwidget_get_text(filename_entry);
jstring fn = filename_entry->getText();
jstring buf;
FileItem* enter_folder = NULL;
@ -325,7 +323,7 @@ again:
fileview_set_current_folder(fileview, enter_folder);
// clear the text of the entry widget
jwidget_set_text(filename_entry, "");
filename_entry->setText("");
// show the window again
jwidget_show(window);
@ -401,8 +399,8 @@ static void update_location(JWidget window)
jwidget_signal_off(location);
jcombobox_select_index(location, selected_index);
jwidget_set_text(jcombobox_get_entry_widget(location),
fileitem_get_displayname(current_folder).c_str());
jcombobox_get_entry_widget(location)
->setText(fileitem_get_displayname(current_folder).c_str());
jentry_deselect_text(jcombobox_get_entry_widget(location));
jwidget_signal_on(location);
@ -480,7 +478,7 @@ static void select_filetype_from_filename(JWidget window)
{
JWidget entry = jwidget_find_name(window, "filename");
JWidget filetype = jwidget_find_name(window, "filetype");
const char *filename = jwidget_get_text(entry);
const char *filename = entry->getText();
char *p = get_extension(filename);
char buf[MAX_PATH];
@ -493,8 +491,7 @@ static void select_filetype_from_filename(JWidget window)
static void goback_command(JWidget widget)
{
JWidget fileview = jwidget_find_name(jwidget_get_window(widget),
"fileview");
JWidget fileview = widget->findSibling("fileview");
if (jlist_length(navigation_history) > 1) {
if (!navigation_position)
@ -513,8 +510,7 @@ static void goback_command(JWidget widget)
static void goforward_command(JWidget widget)
{
JWidget fileview = jwidget_find_name(jwidget_get_window(widget),
"fileview");
JWidget fileview = widget->findSibling("fileview");
if (jlist_length(navigation_history) > 1) {
if (!navigation_position)
@ -533,8 +529,7 @@ static void goforward_command(JWidget widget)
static void goup_command(JWidget widget)
{
JWidget fileview = jwidget_find_name(jwidget_get_window(widget),
"fileview");
JWidget fileview = widget->findSibling("fileview");
fileview_goup(fileview);
}
@ -548,11 +543,11 @@ static bool fileview_msg_proc(JWidget widget, JMessage msg)
FileItem* fileitem = fileview_get_selected(widget);
if (!fileitem_is_folder(fileitem)) {
JWidget window = jwidget_get_window(widget);
JWidget entry = jwidget_find_name(window, "filename");
Frame* window = static_cast<Frame*>(widget->getRoot());
Widget* entry = window->findChild("filename");
jstring filename = fileitem_get_filename(fileitem).filename();
jwidget_set_text(entry, filename.c_str());
entry->setText(filename.c_str());
select_filetype_from_filename(window);
}
break;
@ -565,7 +560,7 @@ static bool fileview_msg_proc(JWidget widget, JMessage msg)
/* when the current folder change */
case SIGNAL_FILEVIEW_CURRENT_FOLDER_CHANGED: {
JWidget window = jwidget_get_window(widget);
Frame* window = static_cast<Frame*>(widget->getRoot());
if (!navigation_locked)
add_in_navigation_history(fileview_get_current_folder(widget));
@ -594,8 +589,7 @@ static bool location_msg_proc(JWidget widget, JMessage msg)
jcombobox_get_selected_index(widget)));
if (fileitem) {
JWidget fileview = jwidget_find_name(jwidget_get_window(widget),
"fileview");
Widget* fileview = widget->findSibling("fileview");
fileview_set_current_folder(fileview, fileitem);
@ -620,16 +614,16 @@ static bool filetype_msg_proc(JWidget widget, JMessage msg)
change the file-extension in the 'filename' entry widget */
case JI_SIGNAL_COMBOBOX_SELECT: {
const char *ext = jcombobox_get_selected_string(widget);
JWidget window = jwidget_get_window(widget);
JWidget entry = jwidget_find_name(window, "filename");
Frame* window = static_cast<Frame*>(widget->getRoot());
Widget* entry = window->findChild("filename");
char buf[MAX_PATH];
char *p;
ustrcpy(buf, jwidget_get_text(entry));
ustrcpy(buf, entry->getText());
p = get_extension(buf);
if (p && *p != 0) {
ustrcpy(p, ext);
jwidget_set_text(entry, buf);
entry->setText(buf);
jentry_select_text(entry, 0, -1);
}
break;
@ -650,13 +644,12 @@ static bool filename_msg_proc(JWidget widget, JMessage msg)
}
// string to be autocompleted
jstring left_part = jwidget_get_text(widget);
jstring left_part = widget->getText();
if (left_part.empty())
return FALSE;
// first we'll need the fileview widget
JWidget fileview = jwidget_find_name(jwidget_get_window(widget),
"fileview");
Widget* fileview = widget->findSibling("fileview");
const FileItemList& children = fileview_get_filelist(fileview);
@ -676,7 +669,7 @@ static bool filename_msg_proc(JWidget widget, JMessage msg)
// is the pattern (left_part) in the child_name's beginning?
if (it2 == left_part.end()) {
jwidget_set_text(widget, child_name.c_str());
widget->setText(child_name.c_str());
jentry_select_text(widget,
child_name.size(),
left_part.size());

View File

@ -53,7 +53,7 @@ static void mask_preview(Sprite* sprite);
void dialogs_mask_color(Sprite* sprite)
{
JWidget window, box1, box2, box3, box4;
JWidget box1, box2, box3, box4;
JWidget label_color, button_1, button_2;
JWidget label_fuzziness;
JWidget button_ok, button_cancel;
@ -66,7 +66,7 @@ void dialogs_mask_color(Sprite* sprite)
if (!image)
return;
window = jwindow_new(_("Mask by Color"));
FramePtr window(new Frame(false, _("Mask by Color")));
box1 = jbox_new(JI_VERTICAL);
box2 = jbox_new(JI_HORIZONTAL);
box3 = jbox_new(JI_HORIZONTAL);
@ -110,8 +110,8 @@ void dialogs_mask_color(Sprite* sprite)
jwidget_add_children(box4, button_ok, button_cancel, NULL);
/* default position */
jwindow_remap(window);
jwindow_center(window);
window->remap_window();
window->center_window();
/* mask first preview */
mask_preview(sprite);
@ -120,9 +120,9 @@ void dialogs_mask_color(Sprite* sprite)
load_window_pos(window, "MaskColor");
/* open the window */
jwindow_open_fg(window);
window->open_window_fg();
if (jwindow_get_killer(window) == button_ok) {
if (window->get_killer() == button_ok) {
Mask *mask;
/* undo */
@ -152,8 +152,6 @@ void dialogs_mask_color(Sprite* sprite)
/* save window configuration */
save_window_pos(window, "MaskColor");
jwidget_free(window);
}
static void button_1_command(JWidget widget)

View File

@ -50,7 +50,6 @@ void dialogs_options()
JWidget move_click2, draw_click2, killer;
JWidget undo_size_limit;
int x, y, old_x, old_y;
char buf[512];
x = get_config_int("Options", "MouseX", 6);
y = get_config_int("Options", "MouseY", 6);
@ -60,7 +59,7 @@ void dialogs_options()
old_y = y;
/* load the window widget */
JWidgetPtr window(load_widget("options.jid", "options"));
FramePtr window(load_widget("options.jid", "options"));
get_widgets(window,
"mouse_x", &slider_x,
"mouse_y", &slider_y,
@ -87,14 +86,13 @@ void dialogs_options()
if (get_config_bool("Options", "Dither", FALSE))
jwidget_select(check_dither);
uszprintf(buf, sizeof(buf), "%d", get_config_int("Options", "UndoSizeLimit", 8));
jwidget_set_text(undo_size_limit, buf);
undo_size_limit->setTextf("%d", get_config_int("Options", "UndoSizeLimit", 8));
HOOK(slider_x, JI_SIGNAL_SLIDER_CHANGE, slider_mouse_hook, NULL);
HOOK(slider_y, JI_SIGNAL_SLIDER_CHANGE, slider_mouse_hook, NULL);
jwindow_open_fg(window);
killer = jwindow_get_killer(window);
window->open_window_fg();
killer = window->get_killer();
if (killer == button_ok) {
int undo_size_limit_value;
@ -109,7 +107,7 @@ void dialogs_options()
refresh_all_editors();
}
undo_size_limit_value = undo_size_limit->text_int();
undo_size_limit_value = undo_size_limit->getTextInt();
undo_size_limit_value = MID(1, undo_size_limit_value, 9999);
set_config_int("Options", "UndoSizeLimit", undo_size_limit_value);

View File

@ -39,9 +39,9 @@ static void delete_command(JWidget widget, void *data);
void ji_show_repo_dlg(RepoDlg *repo_dlg)
{
JWidget window, box1, box2, view, button_close;
JWidget box1, box2, view, button_close;
window = jwindow_new(repo_dlg->title);
Frame* window = new Frame(false, repo_dlg->title);
box1 = jbox_new(JI_HORIZONTAL);
box2 = jbox_new(JI_VERTICAL);
view = jview_new();
@ -84,14 +84,14 @@ void ji_show_repo_dlg(RepoDlg *repo_dlg)
jwidget_add_child(window, box1);
/* default position */
jwindow_remap(window);
jwindow_center(window);
window->remap_window();
window->center_window();
/* load window configuration */
load_window_pos(window, repo_dlg->config_section);
/* open window */
jwindow_open_fg(window);
window->open_window_fg();
/* kill the list */
kill_listbox(repo_dlg);

View File

@ -33,7 +33,7 @@
#include "modules/palettes.h"
#include "raster/palette.h"
static JWidget tips_new();
static Widget* tips_new();
static int tips_type();
static bool tips_msg_proc(JWidget widget, JMessage msg);
static void tips_request_size(JWidget widget, int *w, int *h);
@ -54,7 +54,7 @@ static bool check_change_hook(JWidget widget, void *data);
void dialogs_tips(bool forced)
{
JWidget window, vbox, hbox, box;
JWidget vbox, hbox, box;
JWidget button_close, button_prev, button_next;
JWidget view, tips;
JWidget check;
@ -83,7 +83,7 @@ void dialogs_tips(bool forced)
}
}
window = jwindow_new("Allegro Sprite Editor");
Frame* window = new Frame(false, "Allegro Sprite Editor");
vbox = jbox_new(JI_VERTICAL);
hbox = jbox_new(JI_HORIZONTAL);
box = jbox_new(0);
@ -128,7 +128,7 @@ void dialogs_tips(bool forced)
/* jwidget_set_static_size(window, 282, 200); */
/* open the window */
jwindow_open(window);
window->open_window();
jwidget_set_min_size(window, 0, 0);
/* load first page */
@ -136,7 +136,7 @@ void dialogs_tips(bool forced)
tips_load_page(tips);
/* run the window */
jwindow_open_fg(window);
window->open_window_fg();
jwidget_free(window);
/* restore the palette */
@ -150,9 +150,9 @@ void dialogs_tips(bool forced)
Tips
***********************************************************************/
static JWidget tips_new()
static Widget* tips_new()
{
JWidget widget = new jwidget(tips_type());
Widget* widget = new Widget(tips_type());
jwidget_add_hook(widget, tips_type(), tips_msg_proc, NULL);
jwidget_focusrest(widget, TRUE);
@ -367,7 +367,7 @@ static JWidget tips_load_box(FILE *f, char *buf, int sizeof_buf, int *take)
/* add a box with an static size to separate paragraphs */
JWidget box = jbox_new(0);
jwidget_set_min_size(box, 0, text_height(box->font()));
jwidget_set_min_size(box, 0, text_height(box->getFont()));
jwidget_add_child(vbox, box);
}

View File

@ -360,7 +360,7 @@ static FormatOptions *get_options_JPEG(FileOp *fop)
return (FormatOptions*)jpeg_options;
/* widgets */
JWidgetPtr window(load_widget("jpeg_options.jid", "jpeg_options"));
FramePtr window(load_widget("jpeg_options.jid", "jpeg_options"));
JWidget slider_quality, ok;
get_widgets(window,
"quality", &slider_quality,
@ -368,9 +368,9 @@ static FormatOptions *get_options_JPEG(FileOp *fop)
jslider_set_value(slider_quality, jpeg_options->quality * 10.0f);
jwindow_open_fg(window);
window->open_window_fg();
if (jwindow_get_killer(window) == ok) {
if (window->get_killer() == ok) {
jpeg_options->quality = jslider_get_value(slider_quality) / 10.0f;
set_config_float("JPEG", "Quality", jpeg_options->quality);
}

View File

@ -61,17 +61,17 @@
#include "jinete/jinete.h"
static JWidget create_alert(char *buf, JList *labels, JList *buttons);
static Frame* create_alert(char *buf, JList *labels, JList *buttons);
/* creates a new alert-box
the buttons will have names like: button-1, button-2, etc.
*/
JWidget jalert_new(const char *format, ...)
Frame* jalert_new(const char *format, ...)
{
JList labels, buttons;
char buf[4096];
JWidget window;
Frame* window;
va_list ap;
/* process arguments */
@ -95,7 +95,8 @@ JWidget jalert_new(const char *format, ...)
int jalert(const char *format, ...)
{
JList labels, buttons;
JWidget window, killer;
Frame* window;
Widget* killer;
char buf[4096];
int c, ret = 0;
JLink link;
@ -115,10 +116,10 @@ int jalert(const char *format, ...)
/* was created succefully? */
if (window) {
/* open it */
jwindow_open_fg(window);
window->open_window_fg();
/* check the killer */
killer = jwindow_get_killer(window);
killer = window->get_killer();
if (killer) {
c = 1;
JI_LIST_FOR_EACH(buttons, link) {
@ -141,9 +142,10 @@ int jalert(const char *format, ...)
return ret;
}
static JWidget create_alert(char *buf, JList *labels, JList *buttons)
static Frame* create_alert(char *buf, JList *labels, JList *buttons)
{
JWidget box1, box2, grid, box3, box4, box5, window = NULL;
JWidget box1, box2, grid, box3, box4, box5;
Frame* window = NULL;
bool title = true;
bool label = false;
bool separator = false;
@ -169,11 +171,11 @@ static JWidget create_alert(char *buf, JList *labels, JList *buttons)
buf[c] = 0;
if (title) {
window = jwindow_new(beg);
window = new Frame(false, beg);
}
else if (label) {
JWidget label = jlabel_new(beg);
jwidget_set_align(label, align);
label->setAlign(align);
jlist_append(*labels, label);
}
else if (separator) {
@ -186,7 +188,7 @@ static JWidget create_alert(char *buf, JList *labels, JList *buttons)
jlist_append(*buttons, button_widget);
usprintf(button_name, "button-%d", jlist_length(*buttons));
jwidget_set_name(button_widget, button_name);
button_widget->setName(button_name);
}
buf[c] = chr;
@ -220,8 +222,8 @@ static JWidget create_alert(char *buf, JList *labels, JList *buttons)
box3 = jbox_new(JI_HORIZONTAL | JI_HOMOGENEOUS);
/* to identify by the user */
jwidget_set_name(box2, "labels");
jwidget_set_name(box3, "buttons");
box2->setName("labels");
box3->setName("buttons");
/* pseudo separators (only to fill blank space) */
box4 = jbox_new(0);

View File

@ -32,9 +32,9 @@
#ifndef JINETE_JALERT_H_INCLUDED
#define JINETE_JALERT_H_INCLUDED
#include "jinete/jbase.h"
class Frame;
JWidget jalert_new(const char *format, ...);
Frame* jalert_new(const char *format, ...);
int jalert(const char *format, ...);
#endif

View File

@ -73,7 +73,9 @@ union jmessage;
struct jrect;
struct jregion;
class jtheme;
class jwidget;
class Widget;
class Frame;
/* alignment */
#define JI_HORIZONTAL 0x0001
@ -132,7 +134,7 @@ enum {
JI_VIEW,
JI_VIEW_SCROLLBAR,
JI_VIEW_VIEWPORT,
JI_WINDOW,
JI_FRAME,
/* user widgets */
JI_USER_WIDGET,
@ -232,7 +234,7 @@ typedef struct jstream* JStream;
typedef struct jrect* JRect;
typedef struct jregion* JRegion;
typedef class jtheme* JTheme;
typedef class jwidget* JWidget;
typedef class Widget* JWidget;
typedef struct jxml* JXml;
typedef struct jxmlattr* JXmlAttr;
typedef struct jxmlnode* JXmlNode;

View File

@ -45,10 +45,10 @@ static void box_set_position(JWidget widget, JRect rect);
JWidget jbox_new(int align)
{
JWidget widget = new jwidget(JI_BOX);
Widget* widget = new Widget(JI_BOX);
jwidget_add_hook(widget, JI_BOX, box_msg_proc, NULL);
jwidget_set_align(widget, align);
widget->setAlign(align);
jwidget_init_theme(widget);
return widget;
@ -79,7 +79,7 @@ static void box_request_size(JWidget widget, int *w, int *h)
{
#define GET_CHILD_SIZE(w, h) \
{ \
if (widget->align() & JI_HOMOGENEOUS) \
if (widget->getAlign() & JI_HOMOGENEOUS) \
*w = MAX(*w, req_##w); \
else \
*w += req_##w; \
@ -89,7 +89,7 @@ static void box_request_size(JWidget widget, int *w, int *h)
#define FINAL_SIZE(w) \
{ \
if (widget->align() & JI_HOMOGENEOUS) \
if (widget->getAlign() & JI_HOMOGENEOUS) \
*w *= nvis_children; \
\
*w += widget->child_spacing * (nvis_children-1); \
@ -117,7 +117,7 @@ static void box_request_size(JWidget widget, int *w, int *h)
jwidget_request_size(child, &req_w, &req_h);
if (widget->align() & JI_HORIZONTAL) {
if (widget->getAlign() & JI_HORIZONTAL) {
GET_CHILD_SIZE(w, h);
}
else {
@ -126,7 +126,7 @@ static void box_request_size(JWidget widget, int *w, int *h)
}
if (nvis_children > 0) {
if (widget->align() & JI_HORIZONTAL) {
if (widget->getAlign() & JI_HORIZONTAL) {
FINAL_SIZE(w);
}
else {
@ -143,7 +143,7 @@ static void box_set_position(JWidget widget, JRect rect)
#define FIXUP(x, y, w, h, l, t, r, b) \
{ \
if (nvis_children > 0) { \
if (widget->align() & JI_HOMOGENEOUS) { \
if (widget->getAlign() & JI_HOMOGENEOUS) { \
width = (jrect_##w(widget->rc) \
- widget->border_width.l \
- widget->border_width.r \
@ -169,7 +169,7 @@ static void box_set_position(JWidget widget, JRect rect)
child = (JWidget)link->data; \
\
if (!(child->flags & JI_HIDDEN)) { \
if (widget->align() & JI_HOMOGENEOUS) { \
if (widget->getAlign() & JI_HOMOGENEOUS) { \
if (nvis_children == 1) \
child_width = width; \
else \
@ -196,7 +196,7 @@ static void box_set_position(JWidget widget, JRect rect)
\
w = MAX(1, child_width); \
\
if (widget->align() & JI_HORIZONTAL) \
if (widget->getAlign() & JI_HORIZONTAL) \
jrect_replace(&cpos, x, y, x+w, y+h); \
else \
jrect_replace(&cpos, y, x, y+h, x+w); \
@ -234,7 +234,7 @@ static void box_set_position(JWidget widget, JRect rect)
jwidget_request_size(widget, &req_w, &req_h);
if (widget->align() & JI_HORIZONTAL) {
if (widget->getAlign() & JI_HORIZONTAL) {
FIXUP(x, y, w, h, l, t, r, b);
}
else {

View File

@ -43,6 +43,7 @@
#include "jinete/jrect.h"
#include "jinete/jtheme.h"
#include "jinete/jwidget.h"
#include "jinete/jwindow.h"
typedef void (*command_t)(JWidget widget);
typedef void (*command_data_t)(JWidget widget, void *data);
@ -78,7 +79,7 @@ JWidget ji_generic_button_new(const char *text,
int behavior_type,
int draw_type)
{
JWidget widget = new jwidget(behavior_type);
Widget* widget = new Widget(behavior_type);
Button *button = jnew(Button, 1);
button->draw_type = draw_type;
@ -92,8 +93,8 @@ JWidget ji_generic_button_new(const char *text,
button->group = 0;
jwidget_add_hook(widget, behavior_type, button_msg_proc, button);
jwidget_set_align(widget, JI_CENTER | JI_MIDDLE);
jwidget_set_text(widget, text);
widget->setAlign(JI_CENTER | JI_MIDDLE);
widget->setText(text);
jwidget_focusrest(widget, true);
// initialize theme
@ -143,7 +144,7 @@ JWidget jbutton_new(const char *text)
{
JWidget widget = ji_generic_button_new(text, JI_BUTTON, JI_BUTTON);
if (widget)
jwidget_set_align(widget, JI_CENTER | JI_MIDDLE);
widget->setAlign(JI_CENTER | JI_MIDDLE);
return widget;
}
@ -204,7 +205,7 @@ JWidget jcheck_new(const char *text)
{
JWidget widget = ji_generic_button_new(text, JI_CHECK, JI_CHECK);
if (widget) {
jwidget_set_align(widget, JI_LEFT | JI_MIDDLE);
widget->setAlign(JI_LEFT | JI_MIDDLE);
}
return widget;
}
@ -216,7 +217,7 @@ JWidget jradio_new(const char *text, int radio_group)
{
JWidget widget = ji_generic_button_new(text, JI_RADIO, JI_RADIO);
if (widget) {
jwidget_set_align(widget, JI_LEFT | JI_MIDDLE);
widget->setAlign(JI_LEFT | JI_MIDDLE);
jradio_set_group(widget, radio_group);
}
return widget;
@ -240,7 +241,7 @@ int jradio_get_group(JWidget widget)
void jradio_deselect_group(JWidget widget)
{
JWidget window = jwidget_get_window(widget);
Frame* window = static_cast<Frame*>(widget->getRoot());
if (window)
button_deselect_group(window, jradio_get_group(widget));
}

View File

@ -35,28 +35,28 @@
#include "jinete/jinete.h"
typedef struct ComboBox
struct ComboBox
{
JWidget entry;
JWidget button;
JWidget window;
JWidget listbox;
Widget* entry;
Widget* button;
Frame* window;
Widget* listbox;
JList items;
int selected;
bool editable : 1;
bool clickopen : 1;
bool casesensitive : 1;
} ComboBox;
};
typedef struct ComboItem
struct ComboItem
{
char *text;
void *data;
} ComboItem;
char* text;
void* data;
};
#define COMBOBOX(widget) ((ComboBox *)jwidget_get_data(widget, JI_COMBOBOX))
#define COMBOBOX(widget) ((ComboBox*)jwidget_get_data(widget, JI_COMBOBOX))
#define IS_VALID_ITEM(widget, index) \
(index >= 0 && index < jlist_length(COMBOBOX(widget)->items))
(index >= 0 && (size_t)index < jlist_length(COMBOBOX(widget)->items))
static bool combobox_msg_proc(JWidget widget, JMessage msg);
static bool combobox_entry_msg_proc(JWidget widget, JMessage msg);
@ -73,7 +73,7 @@ static void comboitem_free(ComboItem *item);
JWidget jcombobox_new()
{
JWidget widget = new jwidget(JI_COMBOBOX);
Widget* widget = new Widget(JI_COMBOBOX);
ComboBox *combobox = jnew(ComboBox, 1);
combobox->entry = jentry_new(256, "");
@ -208,7 +208,7 @@ void jcombobox_select_index(JWidget widget, int index)
combobox->selected = index;
item = reinterpret_cast<ComboItem*>(link->data);
jwidget_set_text(combobox->entry, item->text);
combobox->entry->setText(item->text);
}
}
@ -235,7 +235,7 @@ const char *jcombobox_get_string(JWidget widget, int index)
{
ComboBox* combobox = reinterpret_cast<ComboBox*>(jwidget_get_data(widget, JI_COMBOBOX));
if (index >= 0 && index < jlist_length(combobox->items)) {
if (index >= 0 && (size_t)index < jlist_length(combobox->items)) {
ComboItem* item = reinterpret_cast<ComboItem*>(jlist_nth_link(combobox->items, index)->data);
return item->text;
}
@ -247,7 +247,7 @@ void *jcombobox_get_data(JWidget widget, int index)
{
ComboBox* combobox = reinterpret_cast<ComboBox*>(jwidget_get_data(widget, JI_COMBOBOX));
if (index >= 0 && index < jlist_length(combobox->items)) {
if (index >= 0 && (size_t)index < jlist_length(combobox->items)) {
ComboItem* item = reinterpret_cast<ComboItem*>(jlist_nth_link(combobox->items, index)->data);
return item->data;
}
@ -321,7 +321,7 @@ static bool combobox_msg_proc(JWidget widget, JMessage msg)
/* get the text-length of every item and put in 'w' the maximum value */
JI_LIST_FOR_EACH(combobox->items, link) {
int item_w = 2+text_length(widget->font(),
int item_w = 2+text_length(widget->getFont(),
((ComboItem *)link->data)->text)+2;
w = MAX(w, item_w);
@ -360,7 +360,7 @@ static bool combobox_msg_proc(JWidget widget, JMessage msg)
case JM_WINMOVE:
if (combobox->window) {
JRect rc = combobox_get_windowpos(combobox);
jwindow_move(combobox->window, rc);
combobox->window->move_window(rc);
jrect_free(rc);
}
break;
@ -511,7 +511,7 @@ static void combobox_open_window(JWidget widget)
int size;
JRect rc;
combobox->window = jwindow_new(NULL);
combobox->window = new Frame(false, NULL);
view = jview_new();
combobox->listbox = jlistbox_new();
@ -525,13 +525,13 @@ static void combobox_open_window(JWidget widget)
jlistitem_new(item->text));
}
jwindow_ontop(combobox->window, true);
combobox->window->set_ontop(true);
jwidget_noborders(combobox->window);
size = jlist_length(combobox->items);
jwidget_set_min_size
(view,
jrect_w(combobox->entry->rc),
combobox->button->rc->x2 - combobox->entry->rc->x1,
2+(2+jwidget_get_text_height(combobox->listbox))*MID(1, size, 16)+2);
jwidget_add_child(combobox->window, view);
@ -541,15 +541,15 @@ static void combobox_open_window(JWidget widget)
jlistbox_select_index(combobox->listbox, combobox->selected);
jwidget_signal_on(combobox->listbox);
jwindow_remap(combobox->window);
combobox->window->remap_window();
rc = combobox_get_windowpos(combobox);
jwindow_position(combobox->window, rc->x1, rc->y1);
combobox->window->position_window(rc->x1, rc->y1);
jrect_free(rc);
jmanager_add_msg_filter(JM_BUTTONPRESSED, widget);
jwindow_open_bg(combobox->window);
combobox->window->open_window_bg();
jmanager_set_focus(combobox->listbox);
}
}
@ -558,7 +558,7 @@ static void combobox_close_window(JWidget widget)
{
ComboBox* combobox = reinterpret_cast<ComboBox*>(jwidget_get_data(widget, JI_COMBOBOX));
if (combobox->window) {
jwindow_close(combobox->window, widget);
combobox->window->closeWindow(widget);
jwidget_free(combobox->window);
combobox->window = NULL;
@ -580,9 +580,8 @@ static JRect combobox_get_windowpos(ComboBox *combobox)
{
JRect rc = jrect_new(combobox->entry->rc->x1,
combobox->entry->rc->y2,
combobox->entry->rc->x2,
combobox->entry->rc->y2+
jrect_h(combobox->window->rc));
combobox->button->rc->x2,
combobox->entry->rc->y2+jrect_h(combobox->window->rc));
if (rc->y2 > JI_SCREEN_H)
jrect_displace(rc, 0, -(jrect_h(rc)+jrect_h(combobox->entry->rc)));
return rc;

View File

@ -220,10 +220,10 @@ void jdraw_text(FONT *font, const char *s, int x, int y,
void jdraw_widget_text(JWidget widget, int fg, int bg, bool fill_bg)
{
if (widget->text()) {
if (widget->getText()) {
struct jrect box, text, icon;
jwidget_get_texticon_info(widget, &box, &text, &icon, 0, 0, 0);
jdraw_text(widget->font(), widget->text(),
jdraw_text(widget->getFont(), widget->getText(),
text.x1, text.y1, fg, bg, fill_bg);
}
}

View File

@ -91,7 +91,7 @@ static void entry_backward_word(JWidget widget);
JWidget jentry_new(size_t maxsize, const char *format, ...)
{
JWidget widget = new jwidget(JI_ENTRY);
Widget* widget = new Widget(JI_ENTRY);
Entry* entry = (Entry*)jnew(Entry, 1);
char buf[4096];
@ -122,7 +122,7 @@ JWidget jentry_new(size_t maxsize, const char *format, ...)
/* TODO support for text alignment and multi-line */
/* widget->align = JI_LEFT | JI_MIDDLE; */
widget->text(buf);
widget->setText(buf);
jwidget_focusrest(widget, true);
jwidget_init_theme(widget);
@ -179,7 +179,7 @@ void jentry_hide_cursor(JWidget widget)
void jentry_set_cursor_pos(JWidget widget, int pos)
{
Entry* entry = reinterpret_cast<Entry*>(jwidget_get_data(widget, JI_ENTRY));
const char *text = widget->text();
const char *text = widget->getText();
int x, c;
entry->cursor = pos;
@ -193,7 +193,7 @@ void jentry_set_cursor_pos(JWidget widget, int pos)
do {
x = widget->rc->x1 + widget->border_width.l;
for (c=++entry->scroll; ; c++) {
x += CHARACTER_LENGTH(widget->font(),
x += CHARACTER_LENGTH(widget->getFont(),
(c < ustrlen(text))? ugetat(text, c): ' ');
if (x >= widget->rc->x2-widget->border_width.r)
@ -210,7 +210,7 @@ void jentry_set_cursor_pos(JWidget widget, int pos)
void jentry_select_text(JWidget widget, int from, int to)
{
Entry* entry = reinterpret_cast<Entry*>(jwidget_get_data(widget, JI_ENTRY));
int end = ustrlen(widget->text());
int end = ustrlen(widget->getText());
entry->select = from;
jentry_set_cursor_pos(widget, from); // to move scroll
@ -375,7 +375,7 @@ static bool entry_msg_proc(JWidget widget, JMessage msg)
case JM_MOTION:
if (jwidget_has_capture(widget)) {
const char *text = widget->text();
const char *text = widget->getText();
bool move, dirty;
int c, x;
@ -397,7 +397,7 @@ static bool entry_msg_proc(JWidget widget, JMessage msg)
entry->scroll++;
x = widget->rc->x1 + widget->border_width.l;
for (c=entry->scroll; ; c++) {
x += CHARACTER_LENGTH(widget->font(),
x += CHARACTER_LENGTH(widget->getFont(),
(c < ustrlen(text))? ugetat(text, c): ' ');
if (x > widget->rc->x2-widget->border_width.r) {
c--;
@ -471,14 +471,14 @@ static void entry_request_size(JWidget widget, int *w, int *h)
*w =
+ widget->border_width.l
+ ji_font_char_len(widget->font(), 'w') * MIN(entry->maxsize, 6)
+ ji_font_char_len(widget->getFont(), 'w') * MIN(entry->maxsize, 6)
+ 2 + widget->border_width.r;
*w = MIN(*w, JI_SCREEN_W/2);
*h =
+ widget->border_width.t
+ text_height(widget->font())
+ text_height(widget->getFont())
+ widget->border_width.b;
}
@ -493,8 +493,8 @@ static int entry_get_cursor_from_mouse(JWidget widget, JMessage msg)
widget->rc->x2-widget->border_width.r-1);
x = widget->rc->x1 + widget->border_width.l;
for (c=entry->scroll; ugetat(widget->text(), c); c++) {
w = CHARACTER_LENGTH(widget->font(), ugetat(widget->text(), c));
for (c=entry->scroll; ugetat(widget->getText(), c); c++) {
w = CHARACTER_LENGTH(widget->getFont(), ugetat(widget->getText(), c));
if (x+w >= widget->rc->x2-widget->border_width.r)
break;
if ((mx >= x) && (mx < x+w)) {
@ -504,7 +504,7 @@ static int entry_get_cursor_from_mouse(JWidget widget, JMessage msg)
x += w;
}
if (!ugetat(widget->text(), c))
if (!ugetat(widget->getText(), c))
if ((mx >= x) &&
(mx <= widget->rc->x2-widget->border_width.r-1))
cursor = c;
@ -516,7 +516,7 @@ static void entry_execute_cmd(JWidget widget, EntryCmd::Type cmd,
int ascii, bool shift_pressed)
{
Entry* entry = reinterpret_cast<Entry*>(jwidget_get_data(widget, JI_ENTRY));
std::string text = widget->text();
std::string text = widget->getText();
int c, selbeg, selend;
jtheme_entry_info(widget, NULL, NULL, NULL, &selbeg, &selend);
@ -674,8 +674,8 @@ static void entry_execute_cmd(JWidget widget, EntryCmd::Type cmd,
break;
}
if (text != widget->text()) {
widget->text(text.c_str());
if (text != widget->getText()) {
widget->setText(text.c_str());
jwidget_emit_signal(widget, JI_SIGNAL_ENTRY_CHANGE);
}
@ -692,14 +692,14 @@ static void entry_forward_word(JWidget widget)
Entry* entry = reinterpret_cast<Entry*>(jwidget_get_data(widget, JI_ENTRY));
int ch;
for (; entry->cursor<ustrlen(widget->text()); entry->cursor++) {
ch = ugetat(widget->text(), entry->cursor);
for (; entry->cursor<ustrlen(widget->getText()); entry->cursor++) {
ch = ugetat(widget->getText(), entry->cursor);
if (IS_WORD_CHAR (ch))
break;
}
for (; entry->cursor<ustrlen(widget->text()); entry->cursor++) {
ch = ugetat(widget->text(), entry->cursor);
for (; entry->cursor<ustrlen(widget->getText()); entry->cursor++) {
ch = ugetat(widget->getText(), entry->cursor);
if (!IS_WORD_CHAR(ch)) {
entry->cursor++;
break;
@ -713,13 +713,13 @@ static void entry_backward_word(JWidget widget)
int ch;
for (entry->cursor--; entry->cursor >= 0; entry->cursor--) {
ch = ugetat(widget->text(), entry->cursor);
ch = ugetat(widget->getText(), entry->cursor);
if (IS_WORD_CHAR(ch))
break;
}
for (; entry->cursor >= 0; entry->cursor--) {
ch = ugetat(widget->text(), entry->cursor);
ch = ugetat(widget->getText(), entry->cursor);
if (!IS_WORD_CHAR(ch)) {
entry->cursor++;
break;

View File

@ -124,9 +124,8 @@ static JWidget convert_xmlelement_to_widget(TiXmlElement* elem)
bool bottom = bool_attr_is_true(elem, "bottom");
const char *_bevel = elem->Attribute("bevel");
jwidget_set_align(widget,
(left ? JI_LEFT: (right ? JI_RIGHT: JI_CENTER)) |
(top ? JI_TOP: (bottom ? JI_BOTTOM: JI_MIDDLE)));
widget->setAlign((left ? JI_LEFT: (right ? JI_RIGHT: JI_CENTER)) |
(top ? JI_TOP: (bottom ? JI_BOTTOM: JI_MIDDLE)));
if (_bevel != NULL) {
char *bevel = jstrdup(_bevel);
@ -159,11 +158,10 @@ static JWidget convert_xmlelement_to_widget(TiXmlElement* elem)
bool top = bool_attr_is_true(elem, "top");
bool bottom = bool_attr_is_true(elem, "bottom");
jwidget_set_align(widget,
(center ? JI_CENTER:
(right ? JI_RIGHT: JI_LEFT)) |
(top ? JI_TOP:
(bottom ? JI_BOTTOM: JI_MIDDLE)));
widget->setAlign((center ? JI_CENTER:
(right ? JI_RIGHT: JI_LEFT)) |
(top ? JI_TOP:
(bottom ? JI_BOTTOM: JI_MIDDLE)));
}
}
/* combobox */
@ -206,11 +204,10 @@ static JWidget convert_xmlelement_to_widget(TiXmlElement* elem)
bool top = bool_attr_is_true(elem, "top");
bool bottom = bool_attr_is_true(elem, "bottom");
jwidget_set_align(widget,
(center ? JI_CENTER:
(right ? JI_RIGHT: JI_LEFT)) |
(top ? JI_TOP:
(bottom ? JI_BOTTOM: JI_MIDDLE)));
widget->setAlign((center ? JI_CENTER:
(right ? JI_RIGHT: JI_LEFT)) |
(top ? JI_TOP:
(bottom ? JI_BOTTOM: JI_MIDDLE)));
}
}
/* listbox */
@ -244,11 +241,10 @@ static JWidget convert_xmlelement_to_widget(TiXmlElement* elem)
bool top = bool_attr_is_true(elem, "top");
bool bottom = bool_attr_is_true(elem, "bottom");
jwidget_set_align(widget,
(center ? JI_CENTER:
(right ? JI_RIGHT: JI_LEFT)) |
(top ? JI_TOP:
(bottom ? JI_BOTTOM: JI_MIDDLE)));
widget->setAlign((center ? JI_CENTER:
(right ? JI_RIGHT: JI_LEFT)) |
(top ? JI_TOP:
(bottom ? JI_BOTTOM: JI_MIDDLE)));
}
}
/* separator */
@ -299,9 +295,9 @@ static JWidget convert_xmlelement_to_widget(TiXmlElement* elem)
bool desktop = bool_attr_is_true(elem, "desktop");
if (desktop)
widget = jwindow_new_desktop();
widget = new Frame(true, NULL);
else
widget = jwindow_new(TRANSLATE_ATTR(text));
widget = new Frame(false, TRANSLATE_ATTR(text));
}
}
@ -322,7 +318,7 @@ static JWidget convert_xmlelement_to_widget(TiXmlElement* elem)
const char *childspacing = elem->Attribute("childspacing");
if (name != NULL)
jwidget_set_name(widget, name);
widget->setName(name);
if (tooltip != NULL)
jwidget_add_tooltip_text(widget, tooltip);

View File

@ -116,7 +116,7 @@ char *ji_file_select_ex(const char *message,
const char *exts,
JWidget widget_extension)
{
JWidget window, box1, box2, box3, box4, panel, view1, view2;
JWidget box1, box2, box3, box4, panel, view1, view2;
JWidget button_select, button_cancel, tmp;
int size = 1024;
char buf[1024];
@ -133,7 +133,7 @@ char *ji_file_select_ex(const char *message,
ustrcpy(buf, init_path);
window = jwindow_new(message);
Frame* window = new Frame(false, message);
box1 = jbox_new(JI_VERTICAL);
box2 = jbox_new(JI_HORIZONTAL);
box3 = jbox_new(JI_HORIZONTAL | JI_HOMOGENEOUS);
@ -219,8 +219,8 @@ char *ji_file_select_ex(const char *message,
/* setup window size */
jwidget_set_min_size(panel, JI_SCREEN_W*9/10, JI_SCREEN_H*3/5);
jwindow_remap(window);
jwindow_center(window);
window->remap_window();
window->center_window();
/* jwidget_set_static_size(panel, JI_SCREEN_W*9/10, JI_SCREEN_H*3/5); */
/* jwidget_set_static_size(panel, 0, 0); */
@ -232,12 +232,12 @@ char *ji_file_select_ex(const char *message,
s = get_filename(buf);
if (s > buf) *(s-1) = 0;
jwidget_set_text(entry_path, buf);
jwidget_set_text(entry_name, s);
entry_path->setText(buf);
entry_name->setText(s);
/* select the filename */
JI_LIST_FOR_EACH(listbox2->children, link) {
if (ustrcmp(s, jwidget_get_text(reinterpret_cast<JWidget>(link->data))) == 0) {
if (ustrcmp(s, (reinterpret_cast<JWidget>(link->data))->getText()) == 0) {
jlistbox_select_child(listbox2, reinterpret_cast<JWidget>(link->data));
break;
}
@ -246,19 +246,19 @@ char *ji_file_select_ex(const char *message,
jlistbox_center_scroll(listbox2);
/* open and run */
jwindow_open_fg(window);
window->open_window_fg();
/* button "select"? */
if ((jwindow_get_killer(window) == button_select) ||
(jwindow_get_killer(window) == listbox2) ||
(jwindow_get_killer(window) == entry_path) ||
(jwindow_get_killer(window) == entry_name)) {
if ((window->get_killer() == button_select) ||
(window->get_killer() == listbox2) ||
(window->get_killer() == entry_path) ||
(window->get_killer() == entry_name)) {
/* copy the new name */
selected_filename = (char*)jmalloc(1024);
ustrcpy(selected_filename, jwidget_get_text(entry_path));
ustrcpy(selected_filename, entry_path->getText());
put_backslash(selected_filename);
ustrcat(selected_filename, jwidget_get_text(entry_name));
ustrcat(selected_filename, entry_name->getText());
fix_filename_slashes(selected_filename);
}
@ -298,8 +298,8 @@ void ji_file_select_refresh_listbox()
void ji_file_select_enter_to_path(const char *path)
{
jwidget_set_text(entry_path, path);
jwidget_set_text(entry_name, "");
entry_path->setText(path);
entry_name->setText("");
enter_to_path_in_entry();
}
@ -338,9 +338,9 @@ static bool filesel_msg_proc(JWidget widget, JMessage msg)
jmanager_set_focus(widget);
/* close the window when we double-click in a normal file */
ustrcpy(filename, jwidget_get_text(entry_path));
ustrcpy(filename, entry_path->getText());
put_backslash(filename);
ustrcat(filename, jwidget_get_text(entry_name));
ustrcat(filename, entry_name->getText());
if (file_exists(filename, FA_ALL, &attr)) {
if (!(attr & FA_DIREC))
@ -354,22 +354,22 @@ static bool filesel_msg_proc(JWidget widget, JMessage msg)
(jwidget_get_data(widget, filesel_type()));
JWidget item = jlistbox_get_selected_child(widget);
const char *filename = item ? jwidget_get_text(item):
const char *filename = item ? item->getText():
empty_string;
jwidget_signal_off(the_other_listbox);
jlistbox_select_child(the_other_listbox, 0);
jwidget_signal_on(the_other_listbox);
jwidget_set_text(entry_path, current_path);
jwidget_set_text(entry_name, filename);
entry_path->setText(current_path);
entry_name->setText(filename);
jentry_select_text(entry_name, 0, -1);
break;
}
case JI_SIGNAL_ENTRY_CHANGE: {
if (widget == entry_path) {
jwidget_set_text(entry_name, "");
entry_name->setText("");
}
break;
}
@ -403,9 +403,9 @@ static bool enter_to_path_in_entry()
jmanager_set_focus(entry_path);
fix_filename_path(path, jwidget_get_text(entry_path), sizeof(path));
fix_filename_path(path, entry_path->getText(), sizeof(path));
put_backslash(path);
ustrcat(path, jwidget_get_text(entry_name));
ustrcat(path, entry_name->getText());
fixup_filename(buf, from, path);
ustrcpy(path, buf);
@ -432,7 +432,7 @@ static bool enter_to_path_in_entry()
fill_listbox_with_files(buf, sizeof(buf));
/* change the edit text */
jwidget_set_text(entry_path, buf);
entry_path->setText(buf);
jentry_select_text(entry_path, 0, -1);
/* select the filename */
@ -440,7 +440,7 @@ static bool enter_to_path_in_entry()
ustrcpy(from, "..");
JI_LIST_FOR_EACH(listbox1->children, link) {
filename = jwidget_get_text(reinterpret_cast<JWidget>(link->data));
filename = (reinterpret_cast<JWidget>(link->data))->getText();
#ifdef HAVE_DRIVES
if (ustricmp(filename, from) == 0)
@ -494,7 +494,7 @@ static void fill_listbox_callback(const char* filename, int attrib, int param)
}
JI_LIST_FOR_EACH(*list, link) {
other_filename = jwidget_get_text(reinterpret_cast<JWidget>(link->data));
other_filename = (reinterpret_cast<JWidget>(link->data))->getText();
if (my_ustrfilecmp(buf, other_filename) < 0)
break;
}

View File

@ -80,7 +80,7 @@ static void grid_inc_row_size(Grid *grid, int row, int size);
JWidget jgrid_new(int columns, bool same_width_columns)
{
JWidget widget = new jwidget(JI_GRID);
Widget* widget = new Widget(JI_GRID);
Grid *grid = jnew(Grid, 1);
int col;

View File

@ -45,10 +45,10 @@ static bool image_msg_proc(JWidget widget, JMessage msg);
JWidget jimage_new(BITMAP *bmp, int align)
{
JWidget widget = new jwidget(JI_IMAGE);
JWidget widget = new Widget(JI_IMAGE);
jwidget_add_hook(widget, JI_IMAGE, image_msg_proc, bmp);
jwidget_set_align(widget, align);
widget->setAlign(align);
return widget;
}
@ -62,7 +62,7 @@ static bool image_msg_proc(JWidget widget, JMessage msg)
struct jrect box, text, icon;
jwidget_get_texticon_info(widget, &box, &text, &icon,
widget->align(), bmp->w, bmp->h);
widget->getAlign(), bmp->w, bmp->h);
msg->reqsize.w = widget->border_width.l + jrect_w(&box) + widget->border_width.r;
msg->reqsize.h = widget->border_width.t + jrect_h(&box) + widget->border_width.b;
@ -74,7 +74,7 @@ static bool image_msg_proc(JWidget widget, JMessage msg)
struct jrect box, text, icon;
jwidget_get_texticon_info(widget, &box, &text, &icon,
widget->align(), bmp->w, bmp->h);
widget->getAlign(), bmp->w, bmp->h);
jdraw_rectexclude(widget->rc, &icon,
jwidget_get_bg_color(widget));

View File

@ -56,10 +56,12 @@
#include "jinete/jmessage.h"
#include "jinete/jmutex.h"
#include "jinete/jpanel.h"
#include "jinete/jpoint.h"
#include "jinete/jquickmenu.h"
#include "jinete/jrect.h"
#include "jinete/jregion.h"
#include "jinete/jsep.h"
#include "jinete/jsize.h"
#include "jinete/jslider.h"
#include "jinete/jstream.h"
#include "jinete/jstring.h"

View File

@ -120,7 +120,7 @@ void _ji_set_font_of_all_widgets(struct FONT *f)
// first of all, we have to set the font to all the widgets
for (c=0; c<widgets->size(); c++)
if (_ji_is_valid_widget((*widgets)[c]))
(*widgets)[c]->font(f);
(*widgets)[c]->setFont(f);
/* then we can reinitialize the theme of each widget */
for (c=0; c<widgets->size(); c++)
@ -130,8 +130,8 @@ void _ji_set_font_of_all_widgets(struct FONT *f)
/* remap the windows */
for (c=0; c<widgets->size(); c++)
if (_ji_is_valid_widget((*widgets)[c])) {
if ((*widgets)[c]->type == JI_WINDOW)
jwindow_remap((*widgets)[c]);
if ((*widgets)[c]->type == JI_FRAME)
static_cast<Frame*>((*widgets)[c])->remap_window();
}
/* refresh the screen */

View File

@ -36,6 +36,7 @@
struct FONT;
struct BITMAP;
class Frame;
//////////////////////////////////////////////////////////////////////
// jintern.c
@ -57,8 +58,8 @@ bool _jwindow_is_moving();
//////////////////////////////////////////////////////////////////////
// jmanager.c
void _jmanager_open_window(JWidget manager, JWidget window);
void _jmanager_close_window(JWidget manager, JWidget window, bool redraw_background);
void _jmanager_open_window(JWidget manager, Frame* frame);
void _jmanager_close_window(JWidget manager, Frame* frame, bool redraw_background);
//////////////////////////////////////////////////////////////////////
// jtheme.c

View File

@ -39,11 +39,11 @@ static bool label_msg_proc(JWidget widget, JMessage msg);
JWidget jlabel_new(const char *text)
{
JWidget widget = new jwidget(JI_LABEL);
JWidget widget = new Widget(JI_LABEL);
jwidget_add_hook(widget, JI_LABEL, label_msg_proc, NULL);
jwidget_set_align(widget, JI_LEFT | JI_MIDDLE);
jwidget_set_text(widget, text);
widget->setAlign(JI_LEFT | JI_MIDDLE);
widget->setText(text);
jwidget_init_theme(widget);
return widget;
@ -54,7 +54,7 @@ static bool label_msg_proc(JWidget widget, JMessage msg)
switch (msg->type) {
case JM_REQSIZE:
if (widget->has_text()) {
if (widget->hasText()) {
msg->reqsize.w = jwidget_get_text_length(widget);
msg->reqsize.h = jwidget_get_text_height(widget);
}

View File

@ -52,7 +52,7 @@ static void listitem_request_size(JWidget widget, int *w, int *h);
JWidget jlistbox_new()
{
JWidget widget = new jwidget(JI_LISTBOX);
JWidget widget = new Widget(JI_LISTBOX);
jwidget_add_hook(widget, JI_LISTBOX, listbox_msg_proc, NULL);
jwidget_focusrest(widget, true);
@ -63,11 +63,11 @@ JWidget jlistbox_new()
JWidget jlistitem_new(const char *text)
{
JWidget widget = new jwidget(JI_LISTITEM);
JWidget widget = new Widget(JI_LISTITEM);
jwidget_add_hook(widget, JI_LISTITEM, listitem_msg_proc, NULL);
jwidget_set_align(widget, JI_LEFT | JI_MIDDLE);
jwidget_set_text(widget, text);
widget->setAlign(JI_LEFT | JI_MIDDLE);
widget->setText(text);
jwidget_init_theme(widget);
return widget;
@ -426,7 +426,7 @@ static void listitem_request_size(JWidget widget, int *w, int *h)
int req_w, req_h;
JLink link;
if (widget->has_text()) {
if (widget->hasText()) {
max_w = jwidget_get_text_length(widget);
max_h = jwidget_get_text_height(widget);
}

View File

@ -44,7 +44,7 @@
#include "jinete/jinete.h"
#include "jinete/jintern.h"
#define TOPWND(manager) reinterpret_cast<JWidget>(jlist_first_data((manager)->children))
#define TOPWND(manager) reinterpret_cast<Frame*>(jlist_first_data((manager)->children))
#define ACCEPT_FOCUS(widget) \
(((widget)->flags & (JI_FOCUSREST | \
@ -191,7 +191,7 @@ JWidget jmanager_new()
n_timers = 0;
}
widget = new jwidget(JI_MANAGER);
widget = new Widget(JI_MANAGER);
jwidget_add_hook(widget, JI_MANAGER, manager_msg_proc, NULL);
@ -303,7 +303,7 @@ bool jmanager_generate_messages(JWidget manager)
/* attract the focus to the magnetic widget... */
/* 1) get the magnetic widget */
magnet = find_magnetic_widget(jwidget_get_window(window));
magnet = find_magnetic_widget(window->getRoot());
/* 2) if magnetic widget exists and it doesn't have the focus */
if (magnet && !jwidget_has_focus(magnet))
jmanager_set_focus(magnet);
@ -433,21 +433,21 @@ bool jmanager_generate_messages(JWidget manager)
that aren't the desktop) */
if (msg->type == JM_BUTTONPRESSED &&
!capture_widget && mouse_widget) {
JWidget window = jwidget_get_window(mouse_widget);
JWidget win_manager = window ? jwidget_get_manager(window): NULL;
Frame* window = static_cast<Frame*>(mouse_widget->getRoot());
JWidget win_manager = window ? window->getManager(): NULL;
if ((window) &&
(!jwindow_is_desktop(window)) &&
(!window->is_desktop()) &&
(window != TOPWND(win_manager))) {
/* put it in the top of the list */
jlist_remove(win_manager->children, window);
if (jwindow_is_ontop(window))
if (window->is_ontop())
jlist_prepend(win_manager->children, window);
else {
int pos = jlist_length(win_manager->children);
JI_LIST_FOR_EACH_BACK(win_manager->children, link) {
if (jwindow_is_ontop((JWidget)link->data))
if (((Frame*)link->data)->is_ontop())
break;
pos--;
}
@ -861,7 +861,7 @@ void jmanager_set_capture(JWidget widget)
void jmanager_attract_focus(JWidget widget)
{
/* get the magnetic widget */
JWidget magnet = find_magnetic_widget(jwidget_get_window(widget));
JWidget magnet = find_magnetic_widget(widget->getRoot());
/* if magnetic widget exists and it doesn't have the focus */
if (magnet && !jwidget_has_focus(magnet))
@ -870,9 +870,7 @@ void jmanager_attract_focus(JWidget widget)
void jmanager_focus_first_child(JWidget widget)
{
JWidget it;
for (it=jwidget_get_window(widget); it; it=next_widget(it)) {
for (Widget* it=widget->getRoot(); it; it=next_widget(it)) {
if (ACCEPT_FOCUS(it) && !(childs_accept_focus(it, true))) {
jmanager_set_focus(it);
break;
@ -971,12 +969,12 @@ void jmanager_remove_msg_filter_for(JWidget widget)
}
/* configures the window for begin the loop */
void _jmanager_open_window(JWidget manager, JWidget window)
void _jmanager_open_window(JWidget manager, Frame* window)
{
JMessage msg;
// free all widgets of special states
if (jwindow_is_wantfocus(window)) {
if (window->is_wantfocus()) {
jmanager_free_capture();
jmanager_free_mouse();
jmanager_free_focus();
@ -998,7 +996,7 @@ void _jmanager_open_window(JWidget manager, JWidget window)
jlist_append(new_windows, window);
}
void _jmanager_close_window(JWidget manager, JWidget window, bool redraw_background)
void _jmanager_close_window(JWidget manager, Frame* window, bool redraw_background)
{
JMessage msg;
JRegion reg1;
@ -1012,7 +1010,7 @@ void _jmanager_close_window(JWidget manager, JWidget window, bool redraw_backgro
reg1 = NULL;
/* close all windows to this desktop */
if (jwindow_is_desktop(window)) {
if (window->is_desktop()) {
JLink link, next;
JI_LIST_FOR_EACH_SAFE(manager->children, link, next) {
@ -1023,19 +1021,19 @@ void _jmanager_close_window(JWidget manager, JWidget window, bool redraw_backgro
jregion_union(reg1, reg1, reg2);
jregion_free(reg2);
_jmanager_close_window(manager, reinterpret_cast<JWidget>(link->data), false);
_jmanager_close_window(manager, reinterpret_cast<Frame*>(link->data), false);
}
}
}
/* free all widgets of special states */
if (capture_widget != NULL && jwidget_get_window(capture_widget) == window)
if (capture_widget != NULL && capture_widget->getRoot() == window)
jmanager_free_capture();
if (mouse_widget != NULL && jwidget_get_window(mouse_widget) == window)
if (mouse_widget != NULL && mouse_widget->getRoot() == window)
jmanager_free_mouse();
if (focus_widget != NULL && jwidget_get_window(focus_widget) == window)
if (focus_widget != NULL && focus_widget->getRoot() == window)
jmanager_free_focus();
/* hide window */
@ -1101,15 +1099,15 @@ static bool manager_msg_proc(JWidget widget, JMessage msg)
/* continue sending the message to the children of all windows
(until a desktop or foreground window) */
JI_LIST_FOR_EACH(widget->children, link) {
JWidget w = (JWidget)link->data;
Frame* w = (Frame*)link->data;
/* send to the window */
JI_LIST_FOR_EACH(w->children, link2)
if (jwidget_send_message(reinterpret_cast<JWidget>(link2->data), msg))
return true;
if (jwindow_is_foreground(w) ||
jwindow_is_desktop(w))
if (w->is_foreground() ||
w->is_desktop())
break;
}
@ -1214,38 +1212,37 @@ static void manager_pump_queue(JWidget widget_manager)
#ifdef REPORT_EVENTS
{
static char *msg_name[] = {
"Open",
"Close",
"Destroy",
"Draw",
"Signal",
"Timer",
"ReqSize",
"SetPos",
"WinMove",
"DrawRgn",
"DeferredFree",
"DirtyChildren",
"QueueProcessing",
"KeyPressed",
"KeyReleased",
"FocusEnter",
"FocusLeave",
"ButtonPressed",
"ButtonReleased",
"DoubleClick",
"MouseEnter",
"MouseLeave",
"Motion",
"SetCursor",
"Wheel",
"JM_OPEN",
"JM_CLOSE",
"JM_DESTROY",
"JM_DRAW",
"JM_SIGNAL",
"JM_TIMER",
"JM_REQSIZE",
"JM_SETPOS",
"JM_WINMOVE",
"JM_DEFERREDFREE",
"JM_DIRTYCHILDREN",
"JM_QUEUEPROCESSING",
"JM_KEYPRESSED",
"JM_KEYRELEASED",
"JM_FOCUSENTER",
"JM_FOCUSLEAVE",
"JM_BUTTONPRESSED",
"JM_BUTTONRELEASED",
"JM_DOUBLECLICK",
"JM_MOUSEENTER",
"JM_MOUSELEAVE",
"JM_MOTION",
"JM_SETCURSOR",
"JM_WHEEL",
};
const char *string =
(msg->type >= JM_OPEN &&
msg->type <= JM_WHEEL) ? msg_name[msg->type]:
"Unknown";
printf("Event: %s (%d)\n", string, widget->id);
printf("Event #%d: %s (%d)\n", msg->type, string, widget->id);
fflush(stdout);
}
#endif
@ -1264,7 +1261,7 @@ static void manager_pump_queue(JWidget widget_manager)
msg->draw.rect.x1, msg->draw.rect.y1,
msg->draw.rect.x2-1, msg->draw.rect.y2-1);
#ifdef REPORT_EVENTS
printf("set_clip(%d, %d, %d, %d)\n",
printf(" - set_clip(%d, %d, %d, %d)\n",
msg->draw.rect.x1, msg->draw.rect.y1,
msg->draw.rect.x2-1, msg->draw.rect.y2-1);
fflush(stdout);
@ -1304,7 +1301,7 @@ static void manager_pump_queue(JWidget widget_manager)
void jmanager_invalidate_region(JWidget widget, JRegion region)
{
JWidget window;
Frame* window;
JRegion reg1 = jregion_new(NULL, 0);
JRegion reg2 = jregion_new(widget->rc, 0);
JRegion reg3;
@ -1315,13 +1312,13 @@ void jmanager_invalidate_region(JWidget widget, JRegion region)
/* redraw windows from top to background */
JI_LIST_FOR_EACH(widget->children, link) {
window = (JWidget)link->data;
window = (Frame*)link->data;
// invalidate regions of this window
jwidget_invalidate_region(window, reg1);
/* there is desktop? */
if (jwindow_is_desktop(window))
if (window->is_desktop())
break; /* work done */
/* clip this window area for the next window */
@ -1380,15 +1377,15 @@ static void generate_proc_windows_list()
static void generate_proc_windows_list2(JWidget widget)
{
JWidget window;
Frame* window;
JLink link;
if (widget->type == JI_MANAGER) {
JI_LIST_FOR_EACH(widget->children, link) {
window = reinterpret_cast<JWidget>(link->data);
window = reinterpret_cast<Frame*>(link->data);
jlist_append(proc_windows_list, window);
if (jwindow_is_foreground(window) ||
jwindow_is_desktop(window))
if (window->is_foreground() ||
window->is_desktop())
break;
}
}
@ -1486,15 +1483,15 @@ static void filter_free(Filter* filter)
static bool move_focus(JWidget manager, JMessage msg)
{
int (*cmp)(JWidget, int, int) = NULL;
JWidget focus = NULL;
JWidget it, *list;
Widget* focus = NULL;
Widget* it, **list;
bool ret = false;
JWidget window;
Frame* window;
int c, count;
/* who have the focus */
if (focus_widget)
window = jwidget_get_window(focus_widget);
window = static_cast<Frame*>(focus_widget->getRoot());
else if (!jlist_empty(manager->children))
window = TOPWND(manager);
else

View File

@ -154,7 +154,7 @@ static JWidget find_previtem(JWidget menu, JWidget menuitem);
JWidget jmenu_new()
{
JWidget widget = new jwidget(JI_MENU);
JWidget widget = new Widget(JI_MENU);
Menu *menu = jnew(Menu, 1);
menu->menuitem = NULL;
@ -179,7 +179,7 @@ JWidget jmenubar_new()
JWidget jmenubox_new()
{
JWidget widget = new jwidget(JI_MENUBOX);
JWidget widget = new Widget(JI_MENUBOX);
MenuBox *menubox = jnew(MenuBox, 1);
menubox->base = NULL;
@ -193,7 +193,7 @@ JWidget jmenubox_new()
JWidget jmenuitem_new(const char *text)
{
JWidget widget = new jwidget(JI_MENUITEM);
JWidget widget = new Widget(JI_MENUITEM);
MenuItem *menuitem = jnew(MenuItem, 1);
menuitem->accel = NULL;
@ -202,7 +202,7 @@ JWidget jmenuitem_new(const char *text)
menuitem->submenu_menubox = NULL;
jwidget_add_hook(widget, JI_MENUITEM, menuitem_msg_proc, menuitem);
jwidget_set_text(widget, text);
widget->setText(text);
jwidget_init_theme(widget);
return widget;
@ -321,41 +321,39 @@ int jmenuitem_is_highlight(JWidget widget)
void jmenu_popup(JWidget menu, int x, int y)
{
JWidget window, menubox;
Base *base;
do {
jmouse_poll();
} while (jmouse_b(0));
/* new window and new menu-box */
window = jwindow_new(NULL);
menubox = jmenubox_new();
// new window and new menu-box
Frame* window = new Frame(false, NULL);
Widget* menubox = jmenubox_new();
base = create_base(menubox);
base->was_clicked = true;
base->is_filtering = true;
jmanager_add_msg_filter(JM_BUTTONPRESSED, menubox);
jwindow_moveable(window, false); /* can't move the window */
window->set_moveable(false); /* can't move the window */
/* set children */
jmenubox_set_menu(menubox, menu);
jwidget_add_child(window, menubox);
jwindow_remap(window);
window->remap_window();
/* menubox position */
jwindow_position(window,
MID(0, x, JI_SCREEN_W-jrect_w(window->rc)),
MID(0, y, JI_SCREEN_H-jrect_h(window->rc)));
window->position_window(MID(0, x, JI_SCREEN_W-jrect_w(window->rc)),
MID(0, y, JI_SCREEN_H-jrect_h(window->rc)));
/* set the focus to the new menubox */
jmanager_set_focus(menubox);
jwidget_magnetic(menubox, true);
/* open the window */
jwindow_open_fg(window);
window->open_window_fg();
/* free the keyboard focus */
jmanager_free_focus();
@ -768,8 +766,8 @@ static bool menubox_msg_proc(JWidget widget, JMessage msg)
default:
if (msg->type == JM_CLOSE_POPUP) {
_jmanager_close_window(jwidget_get_manager(widget),
jwidget_get_window(widget), true);
_jmanager_close_window(widget->getManager(),
static_cast<Frame*>(widget->getRoot()), true);
}
break;
@ -839,9 +837,10 @@ static bool menuitem_msg_proc(JWidget widget, JMessage msg)
default:
if (msg->type == JM_OPEN_MENUITEM) {
Base* base = get_base(widget);
JWidget window, menubox;
Frame* window;
Widget* menubox;
JRect pos, old_pos;
bool select_first = (bool)msg->user.a;
bool select_first = msg->user.a ? true: false;
assert(base != NULL);
assert(base->is_processing);
@ -850,20 +849,20 @@ static bool menuitem_msg_proc(JWidget widget, JMessage msg)
old_pos = jwidget_get_rect(widget->parent->parent);
/* new window and new menu-box */
window = jwindow_new(NULL);
window = new Frame(false, NULL);
jwidget_add_hook(window, -1, window_msg_proc, NULL);
menubox = jmenubox_new();
menuitem->submenu_menubox = menubox;
jwindow_moveable(window, false); /* can't move the window */
window->set_moveable(false); // can't move the window
/* set children */
jmenubox_set_menu(menubox, menuitem->submenu);
jwidget_add_child(window, menubox);
jwindow_remap(window);
window->remap_window();
/* menubox position */
pos = jwidget_get_rect(window);
@ -910,7 +909,7 @@ static bool menuitem_msg_proc(JWidget widget, JMessage msg)
jrect_moveto(pos, x, y);
}
jwindow_position(window, pos->x1, pos->y1);
window->position_window(pos->x1, pos->y1);
jrect_free(pos);
/* set the focus to the new menubox */
@ -943,7 +942,7 @@ static bool menuitem_msg_proc(JWidget widget, JMessage msg)
unhighlight(menuitem->submenu);
/* run in background */
jwindow_open_bg(window);
window->open_window_bg();
base->is_processing = false;
@ -952,8 +951,9 @@ static bool menuitem_msg_proc(JWidget widget, JMessage msg)
}
else if (msg->type == JM_CLOSE_MENUITEM) {
Base* base = get_base(widget);
JWidget menubox, window;
bool last_of_close_chain = (bool)msg->user.a;
Frame* window;
Widget* menubox;
bool last_of_close_chain = msg->user.a ? true: false;
assert(base != NULL);
assert(base->is_processing);
@ -963,14 +963,14 @@ static bool menuitem_msg_proc(JWidget widget, JMessage msg)
assert(menubox != NULL);
window = menubox->parent;
assert(window && window->type == JI_WINDOW);
window = (Frame*)menubox->parent;
assert(window && window->type == JI_FRAME);
/* fetch the "menu" to avoid free it with 'jwidget_free()' */
jmenubox_set_menu(menubox, NULL);
/* destroy the window */
jwindow_close(window, NULL);
window->closeWindow(NULL);
/* set the focus to this menu-box of this menu-item */
if (base->close_all)
@ -1006,7 +1006,7 @@ static void menuitem_request_size(JWidget widget, int *w, int *h)
MenuItem *menuitem = MITEM(widget);
int bar = widget->parent->parent->type == JI_MENUBAR;
if (widget->has_text()) {
if (widget->hasText()) {
*w =
+ widget->border_width.l
+ jwidget_get_text_length(widget)
@ -1021,7 +1021,7 @@ static void menuitem_request_size(JWidget widget, int *w, int *h)
if (menuitem->accel) {
char buf[256];
jaccel_to_string(menuitem->accel, buf);
*w += ji_font_text_len(widget->font(), buf);
*w += ji_font_text_len(widget->getFont(), buf);
}
}
else {
@ -1341,10 +1341,10 @@ static JWidget check_for_letter(JWidget menu, int ascii)
if (menuitem->type != JI_MENUITEM)
continue;
if (menuitem->has_text())
for (c=0; menuitem->text()[c]; c++)
if ((menuitem->text()[c] == '&') && (menuitem->text()[c+1] != '&'))
if (tolower(ascii) == tolower(menuitem->text()[c+1]))
if (menuitem->hasText())
for (c=0; menuitem->getText()[c]; c++)
if ((menuitem->getText()[c] == '&') && (menuitem->getText()[c+1] != '&'))
if (tolower(ascii) == tolower(menuitem->getText()[c+1]))
return menuitem;
}

View File

@ -49,11 +49,11 @@ static void panel_set_position(JWidget widget, JRect rect);
JWidget jpanel_new(int align)
{
JWidget widget = new jwidget(JI_PANEL);
Widget* widget = new Widget(JI_PANEL);
Panel *panel = jnew(Panel, 1);
jwidget_add_hook(widget, JI_PANEL, panel_msg_proc, panel);
jwidget_set_align(widget, align);
widget->setAlign(align);
panel->pos = 50;
@ -117,7 +117,7 @@ static bool panel_msg_proc(JWidget widget, JMessage msg)
++bar;
if (widget->align() & JI_HORIZONTAL) {
if (widget->getAlign() & JI_HORIZONTAL) {
x1 = c1->rc->x2;
y1 = widget->rc->y1;
x2 = c2->rc->x1;
@ -149,7 +149,7 @@ static bool panel_msg_proc(JWidget widget, JMessage msg)
if (jwidget_has_capture(widget)) {
Panel* panel = reinterpret_cast<Panel*>(jwidget_get_data(widget, JI_PANEL));
if (widget->align() & JI_HORIZONTAL) {
if (widget->getAlign() & JI_HORIZONTAL) {
panel->pos =
100.0 * (msg->mouse.x-widget->rc->x1) / jrect_w(widget->rc);
}
@ -185,7 +185,7 @@ static bool panel_msg_proc(JWidget widget, JMessage msg)
c1 = reinterpret_cast<JWidget>(link->data);
c2 = reinterpret_cast<JWidget>(link->next->data);
if (widget->align() & JI_HORIZONTAL) {
if (widget->getAlign() & JI_HORIZONTAL) {
x1 = c1->rc->x2;
y1 = widget->rc->y1;
x2 = c2->rc->x1;
@ -207,7 +207,7 @@ static bool panel_msg_proc(JWidget widget, JMessage msg)
}
if (change_cursor) {
if (widget->align() & JI_HORIZONTAL)
if (widget->getAlign() & JI_HORIZONTAL)
jmouse_set_cursor(JI_CURSOR_SIZE_L);
else
jmouse_set_cursor(JI_CURSOR_SIZE_T);
@ -259,14 +259,14 @@ static void panel_request_size(JWidget widget, int *w, int *h)
jwidget_request_size(child, &req_w, &req_h);
if (widget->align() & JI_HORIZONTAL)
if (widget->getAlign() & JI_HORIZONTAL)
GET_CHILD_SIZE(w, h);
else
GET_CHILD_SIZE(h, w);
}
if (nvis_children > 0) {
if (widget->align() & JI_HORIZONTAL)
if (widget->getAlign() & JI_HORIZONTAL)
FINAL_SIZE(w);
else
FINAL_SIZE(h);
@ -315,7 +315,7 @@ static void panel_set_position(JWidget widget, JRect rect)
jwidget_request_size(child1, &req1_w, &req1_h);
jwidget_request_size(child2, &req2_w, &req2_h);
if (widget->align() & JI_HORIZONTAL)
if (widget->getAlign() & JI_HORIZONTAL)
FIXUP(x, y, w, h, l, t, r, b);
else
FIXUP(y, x, h, w, t, l, b, r);

View File

@ -39,13 +39,13 @@
static bool separator_msg_proc(JWidget widget, JMessage msg);
JWidget ji_separator_new(const char *text, int align)
JWidget ji_separator_new(const char* text, int align)
{
JWidget widget = new jwidget(JI_SEPARATOR);
Widget* widget = new Widget(JI_SEPARATOR);
jwidget_add_hook(widget, JI_SEPARATOR, separator_msg_proc, NULL);
jwidget_set_align(widget, align);
jwidget_set_text(widget, text);
widget->setAlign(align);
widget->setText(text);
jwidget_init_theme(widget);
return widget;
@ -70,7 +70,7 @@ static bool separator_msg_proc(JWidget widget, JMessage msg)
max_h = MAX(max_h, req_h);
}
if (widget->has_text())
if (widget->hasText())
max_w = MAX(max_w, jwidget_get_text_length(widget));
msg->reqsize.w = widget->border_width.l + max_w + widget->border_width.r;

View File

@ -58,8 +58,8 @@ static void slider_setcursor(JWidget widget);
JWidget jslider_new(int min, int max, int value)
{
JWidget widget = new jwidget(JI_SLIDER);
Slider *slider = jnew(Slider, 1);
Widget* widget = new Widget(JI_SLIDER);
Slider* slider = jnew(Slider, 1);
slider->min = min;
slider->max = max;
@ -281,13 +281,13 @@ static void slider_request_size(JWidget widget, int *w, int *h)
char buf[256];
usprintf(buf, "%d", slider->min);
min_w = ji_font_text_len(widget->font(), buf);
min_w = ji_font_text_len(widget->getFont(), buf);
usprintf(buf, "%d", slider->max);
max_w = ji_font_text_len(widget->font(), buf);
max_w = ji_font_text_len(widget->getFont(), buf);
*w = MAX(min_w, max_w);
*h = text_height(widget->font());
*h = text_height(widget->getFont());
*w += widget->border_width.l + widget->border_width.r;
*h += widget->border_width.t + widget->border_width.b;

View File

@ -49,12 +49,12 @@ static void textbox_request_size(JWidget widget, int *w, int *h);
JWidget jtextbox_new(const char *text, int align)
{
JWidget widget = new jwidget(JI_TEXTBOX);
Widget* widget = new Widget(JI_TEXTBOX);
jwidget_add_hook(widget, JI_TEXTBOX, textbox_msg_proc, NULL);
jwidget_focusrest(widget, true);
jwidget_set_align(widget, align);
jwidget_set_text(widget, text);
widget->setAlign(align);
widget->setText(text);
jwidget_init_theme(widget);
@ -204,7 +204,7 @@ static void textbox_request_size(JWidget widget, int *w, int *h)
_ji_theme_textbox_draw(NULL, widget, w, h, 0, 0);
if (widget->align() & JI_WORDWRAP) {
if (widget->getAlign() & JI_WORDWRAP) {
JWidget view = jwidget_get_view(widget);
int width, min = *w;

View File

@ -185,14 +185,14 @@ void _ji_theme_textbox_draw(BITMAP *bmp, JWidget widget,
int *w, int *h, int bg, int fg)
{
JWidget view = jwidget_get_view(widget);
char *text = (char*)widget->text(); // TODO warning: removing const modifier
char *text = (char*)widget->getText(); // TODO warning: removing const modifier
char *beg, *end;
int x1, y1, x2, y2;
int x, y, chr, len;
int scroll_x, scroll_y;
int viewport_w, viewport_h;
int textheight = jwidget_get_text_height(widget);
FONT *font = widget->font();
FONT *font = widget->getFont();
char *beg_end, *old_end;
int width;
@ -218,7 +218,7 @@ void _ji_theme_textbox_draw(BITMAP *bmp, JWidget widget,
chr = 0;
/* without word-wrap */
if (!(widget->align() & JI_WORDWRAP)) {
if (!(widget->getAlign() & JI_WORDWRAP)) {
width = jrect_w(widget->rc);
}
/* with word-wrap */
@ -252,7 +252,7 @@ void _ji_theme_textbox_draw(BITMAP *bmp, JWidget widget,
x = x1 - scroll_x;
/* without word-wrap */
if (!(widget->align() & JI_WORDWRAP)) {
if (!(widget->getAlign() & JI_WORDWRAP)) {
end = ustrchr(beg, '\n');
if (end) {
chr = *end;
@ -302,9 +302,9 @@ void _ji_theme_textbox_draw(BITMAP *bmp, JWidget widget,
if (bmp) {
int xout;
if (widget->align() & JI_CENTER)
if (widget->getAlign() & JI_CENTER)
xout = x + width/2 - len/2;
else if (widget->align() & JI_RIGHT)
else if (widget->getAlign() & JI_RIGHT)
xout = x + width - len;
else /* left */
xout = x;

View File

@ -85,7 +85,7 @@ public:
virtual void draw_view(JWidget widget, JRect clip) = 0;
virtual void draw_view_scrollbar(JWidget widget, JRect clip) = 0;
virtual void draw_view_viewport(JWidget widget, JRect clip) = 0;
virtual void draw_window(JWidget widget, JRect clip) = 0;
virtual void draw_frame(Frame* frame, JRect clip) = 0;
};

View File

@ -26,27 +26,16 @@
typedef struct TipData
{
JWidget widget; /* widget that shows the tooltip */
JWidget window; /* window where is the tooltip */
Widget* widget; // Widget that shows the tooltip
Frame* window; // Frame where is the tooltip
char *text;
int timer_id;
} TipData;
typedef struct TipWindow
{
bool close_on_buttonpressed;
JRegion hot_region;
bool filtering;
} TipWindow;
static int tip_type();
static bool tip_hook(JWidget widget, JMessage msg);
static JWidget tipwindow_new(const char *text, bool close_on_buttonpressed);
static int tipwindow_type();
static TipWindow *tipwindow_data(JWidget widget);
static bool tipwindow_msg_proc(JWidget widget, JMessage msg);
void jwidget_add_tooltip_text(JWidget widget, const char *text)
{
TipData* tip = reinterpret_cast<TipData*>(jwidget_get_data(widget, tip_type()));
@ -71,39 +60,6 @@ void jwidget_add_tooltip_text(JWidget widget, const char *text)
}
}
/**
* Creates a window to show a tool-tip.
*/
JWidget jtooltip_window_new(const char *text)
{
JWidget window = tipwindow_new(text, false);
return window;
}
/**
* @param widget The tooltip window.
* @param region The new hot-region. This pointer is holded by the @a widget.
* So you can't destroy it after calling this routine.
*/
void jtooltip_window_set_hotregion(JWidget widget, JRegion region)
{
TipWindow *tipwindow = tipwindow_data(widget);
assert(region != NULL);
if (tipwindow->hot_region != NULL)
jregion_free(tipwindow->hot_region);
if (!tipwindow->filtering) {
tipwindow->filtering = true;
jmanager_add_msg_filter(JM_MOTION, widget);
jmanager_add_msg_filter(JM_BUTTONPRESSED, widget);
jmanager_add_msg_filter(JM_KEYPRESSED, widget);
}
tipwindow->hot_region = region;
}
/********************************************************************/
/* hook for widgets that want a tool-tip */
@ -141,8 +97,8 @@ static bool tip_hook(JWidget widget, JMessage msg)
case JM_BUTTONPRESSED:
case JM_MOUSELEAVE:
if (tip->window) {
jwindow_close(tip->window, NULL);
jwidget_free(tip->window);
tip->window->closeWindow(NULL);
delete tip->window; // widget
tip->window = NULL;
}
@ -153,7 +109,7 @@ static bool tip_hook(JWidget widget, JMessage msg)
case JM_TIMER:
if (msg->timer.timer_id == tip->timer_id) {
if (!tip->window) {
JWidget window = tipwindow_new(tip->text, true);
Frame* window = new TipWindow(tip->text, true);
/* int x = tip->widget->rc->x1; */
/* int y = tip->widget->rc->y2; */
int x = jmouse_x(0)+12;
@ -162,7 +118,7 @@ static bool tip_hook(JWidget widget, JMessage msg)
tip->window = window;
jwindow_remap(window);
window->remap_window();
w = jrect_w(window->rc);
h = jrect_h(window->rc);
@ -172,10 +128,9 @@ static bool tip_hook(JWidget widget, JMessage msg)
y = jmouse_y(0);
}
jwindow_position(window,
MID(0, x, JI_SCREEN_W-w),
MID(0, y, JI_SCREEN_H-h));
jwindow_open(window);
window->position_window(MID(0, x, JI_SCREEN_W-w),
MID(0, y, JI_SCREEN_H-h));
window->open_window();
}
jmanager_stop_timer(tip->timer_id);
}
@ -188,91 +143,88 @@ static bool tip_hook(JWidget widget, JMessage msg)
/********************************************************************/
/* TipWindow */
static JWidget tipwindow_new(const char *text, bool close_on_buttonpressed)
TipWindow::TipWindow(const char *text, bool close_on_buttonpressed)
: Frame(false, text)
{
JWidget window = jwindow_new(text);
JLink link, next;
TipWindow *tipwindow = jnew(TipWindow, 1);
tipwindow->close_on_buttonpressed = close_on_buttonpressed;
tipwindow->hot_region = NULL;
tipwindow->filtering = false;
m_close_on_buttonpressed = close_on_buttonpressed;
m_hot_region = NULL;
m_filtering = false;
jwindow_sizeable(window, false);
jwindow_moveable(window, false);
jwindow_wantfocus(window, false);
set_sizeable(false);
set_moveable(false);
set_wantfocus(false);
setAlign(JI_LEFT | JI_TOP);
jwidget_set_align(window, JI_LEFT | JI_TOP);
/* remove decorative widgets */
JI_LIST_FOR_EACH_SAFE(window->children, link, next)
// remove decorative widgets
JI_LIST_FOR_EACH_SAFE(this->children, link, next)
jwidget_free(reinterpret_cast<JWidget>(link->data));
jwidget_add_hook(window, tipwindow_type(),
tipwindow_msg_proc, tipwindow);
jwidget_init_theme(window);
return window;
jwidget_init_theme(this);
}
static int tipwindow_type()
/**
* @param region The new hot-region. This pointer is holded by the @a widget.
* So you can't destroy it after calling this routine.
*/
void TipWindow::set_hotregion(JRegion region)
{
static int type = 0;
if (!type)
type = ji_register_widget_type();
return type;
assert(region != NULL);
if (m_hot_region != NULL)
jregion_free(m_hot_region);
if (!m_filtering) {
m_filtering = true;
jmanager_add_msg_filter(JM_MOTION, this);
jmanager_add_msg_filter(JM_BUTTONPRESSED, this);
jmanager_add_msg_filter(JM_KEYPRESSED, this);
}
m_hot_region = region;
}
static TipWindow *tipwindow_data(JWidget widget)
bool TipWindow::msg_proc(JMessage msg)
{
return (TipWindow *)jwidget_get_data(widget,
tipwindow_type());
}
static bool tipwindow_msg_proc(JWidget widget, JMessage msg)
{
TipWindow *tipwindow = tipwindow_data(widget);
switch (msg->type) {
case JM_CLOSE:
if (tipwindow->filtering) {
tipwindow->filtering = false;
jmanager_remove_msg_filter(JM_MOTION, widget);
jmanager_remove_msg_filter(JM_BUTTONPRESSED, widget);
jmanager_remove_msg_filter(JM_KEYPRESSED, widget);
if (m_filtering) {
m_filtering = false;
jmanager_remove_msg_filter(JM_MOTION, this);
jmanager_remove_msg_filter(JM_BUTTONPRESSED, this);
jmanager_remove_msg_filter(JM_KEYPRESSED, this);
}
break;
case JM_DESTROY:
if (tipwindow->filtering) {
tipwindow->filtering = false;
jmanager_remove_msg_filter(JM_MOTION, widget);
jmanager_remove_msg_filter(JM_BUTTONPRESSED, widget);
jmanager_remove_msg_filter(JM_KEYPRESSED, widget);
if (m_filtering) {
m_filtering = false;
jmanager_remove_msg_filter(JM_MOTION, this);
jmanager_remove_msg_filter(JM_BUTTONPRESSED, this);
jmanager_remove_msg_filter(JM_KEYPRESSED, this);
}
if (tipwindow->hot_region != NULL) {
jregion_free(tipwindow->hot_region);
if (m_hot_region != NULL) {
jregion_free(m_hot_region);
}
jfree(tipwindow);
break;
case JM_REQSIZE: {
int w = 0, h = 0;
_ji_theme_textbox_draw(NULL, widget, &w, &h, 0, 0);
_ji_theme_textbox_draw(NULL, this, &w, &h, 0, 0);
msg->reqsize.w = w;
msg->reqsize.h = widget->border_width.t + widget->border_width.b;
msg->reqsize.h = this->border_width.t + this->border_width.b;
if (!jlist_empty(widget->children)) {
if (!jlist_empty(this->children)) {
int max_w, max_h;
int req_w, req_h;
JWidget child;
JLink link;
max_w = max_h = 0;
JI_LIST_FOR_EACH(widget->children, link) {
JI_LIST_FOR_EACH(this->children, link) {
child = (JWidget)link->data;
jwidget_request_size(child, &req_w, &req_h);
@ -282,7 +234,7 @@ static bool tipwindow_msg_proc(JWidget widget, JMessage msg)
}
msg->reqsize.w = MAX(msg->reqsize.w,
widget->border_width.l + max_w + widget->border_width.r);
this->border_width.l + max_w + this->border_width.r);
msg->reqsize.h += max_h;
}
return true;
@ -292,80 +244,81 @@ static bool tipwindow_msg_proc(JWidget widget, JMessage msg)
if (msg->signal.num == JI_SIGNAL_INIT_THEME) {
int w = 0, h = 0;
widget->border_width.l = 3;
widget->border_width.t = 3;
widget->border_width.r = 3;
widget->border_width.b = 3;
this->border_width.l = 3;
this->border_width.t = 3;
this->border_width.r = 3;
this->border_width.b = 3;
_ji_theme_textbox_draw(NULL, widget, &w, &h, 0, 0);
_ji_theme_textbox_draw(NULL, this, &w, &h, 0, 0);
widget->border_width.t = h-3;
this->border_width.t = h-3;
/* setup the background color */
jwidget_set_bg_color(widget, makecol(255, 255, 200));
setBgColor(makecol(255, 255, 200));
return true;
}
break;
case JM_MOUSELEAVE:
if (tipwindow->hot_region == NULL)
jwindow_close(widget, NULL);
if (m_hot_region == NULL)
this->closeWindow(NULL);
break;
case JM_KEYPRESSED:
if (tipwindow->filtering && msg->key.scancode < KEY_MODIFIERS)
jwindow_close(widget, NULL);
if (m_filtering && msg->key.scancode < KEY_MODIFIERS)
this->closeWindow(NULL);
break;
case JM_BUTTONPRESSED:
/* if the user click outside the window, we have to close the
tooltip window */
if (tipwindow->filtering) {
JWidget picked = jwidget_pick(widget, msg->mouse.x, msg->mouse.y);
if (!picked || jwidget_get_window(picked) != widget) {
jwindow_close(widget, NULL);
if (m_filtering) {
JWidget picked = jwidget_pick(this, msg->mouse.x, msg->mouse.y);
if (!picked || picked->getRoot() != this) {
this->closeWindow(NULL);
}
}
/* this is used when the user click inside a small text
tooltip */
if (tipwindow->close_on_buttonpressed)
jwindow_close(widget, NULL);
if (m_close_on_buttonpressed)
this->closeWindow(NULL);
break;
case JM_MOTION:
if (tipwindow->hot_region != NULL &&
if (m_hot_region != NULL &&
jmanager_get_capture() == NULL) {
struct jrect box;
/* if the mouse is outside the hot-region we have to close the window */
if (!jregion_point_in(tipwindow->hot_region,
if (!jregion_point_in(m_hot_region,
msg->mouse.x, msg->mouse.y, &box)) {
jwindow_close(widget, NULL);
this->closeWindow(NULL);
}
}
break;
case JM_DRAW: {
JRect pos = jwidget_get_rect(widget);
JRect pos = jwidget_get_rect(this);
int oldt;
jdraw_rect(pos, makecol(0, 0, 0));
jrect_shrink(pos, 1);
jdraw_rectfill(pos, widget->bg_color());
jdraw_rectfill(pos, this->getBgColor());
oldt = widget->border_width.t;
widget->border_width.t = 3;
_ji_theme_textbox_draw(ji_screen, widget, NULL, NULL,
widget->bg_color(),
oldt = this->border_width.t;
this->border_width.t = 3;
_ji_theme_textbox_draw(ji_screen, this, NULL, NULL,
this->getBgColor(),
ji_color_foreground());
widget->border_width.t = oldt;
this->border_width.t = oldt;
jrect_free(pos);
return true;
}
}
return false;
return Frame::msg_proc(msg);
}

View File

@ -33,10 +33,23 @@
#define JINETE_JTOOLTIPS_H_INCLUDED
#include "jinete/jbase.h"
#include "jinete/jwindow.h"
void jwidget_add_tooltip_text(JWidget widget, const char *text);
class TipWindow : public Frame
{
bool m_close_on_buttonpressed;
JRegion m_hot_region;
bool m_filtering;
JWidget jtooltip_window_new(const char *text);
void jtooltip_window_set_hotregion(JWidget window, JRegion region);
public:
TipWindow(const char *text, bool close_on_buttonpressed = false);
void set_hotregion(JRegion region);
protected:
bool msg_proc(JMessage msg);
};
void jwidget_add_tooltip_text(Widget* widget, const char *text);
#endif

View File

@ -73,8 +73,8 @@ static void displace_widgets(JWidget widget, int x, int y);
JWidget jview_new()
{
JWidget widget = new jwidget(JI_VIEW);
View *view = jnew(View, 1);
Widget* widget = new Widget(JI_VIEW);
View* view = jnew(View, 1);
view->viewport = viewport_new();
view->scrollbar_h = scrollbar_new(JI_HORIZONTAL);
@ -395,7 +395,7 @@ static bool view_msg_proc(JWidget widget, JMessage msg)
static JWidget viewport_new()
{
JWidget widget = new jwidget(JI_VIEW_VIEWPORT);
Widget* widget = new Widget(JI_VIEW_VIEWPORT);
jwidget_add_hook(widget, JI_VIEW_VIEWPORT, viewport_msg_proc, NULL);
jwidget_init_theme(widget);
@ -476,10 +476,10 @@ static void viewport_set_position(JWidget widget, JRect rect)
static JWidget scrollbar_new(int align)
{
JWidget widget = new jwidget(JI_VIEW_SCROLLBAR);
Widget* widget = new Widget(JI_VIEW_SCROLLBAR);
jwidget_add_hook(widget, JI_VIEW_SCROLLBAR, scrollbar_msg_proc, NULL);
jwidget_set_align(widget, align);
widget->setAlign(align);
jwidget_init_theme(widget);
return widget;
@ -503,8 +503,8 @@ static bool scrollbar_msg_proc(JWidget widget, JMessage msg)
jtheme_scrollbar_info(widget, &pos, &len);
view->wherepos = pos;
view->whereclick = widget->align() & JI_HORIZONTAL ? msg->mouse.x:
msg->mouse.y;
view->whereclick = widget->getAlign() & JI_HORIZONTAL ? msg->mouse.x:
msg->mouse.y;
x1 = widget->rc->x1;
y1 = widget->rc->y1;
@ -516,7 +516,7 @@ static bool scrollbar_msg_proc(JWidget widget, JMessage msg)
u2 = x2 - widget->border_width.r;
v2 = y2 - widget->border_width.b;
if (widget->align() & JI_HORIZONTAL) {
if (widget->getAlign() & JI_HORIZONTAL) {
/* in the bar */
if (MOUSE_IN(u1+pos, v1, u1+pos+len-1, v2)) {
/* capture mouse */
@ -577,7 +577,7 @@ static bool scrollbar_msg_proc(JWidget widget, JMessage msg)
old_pos = pos;
if (bar_size > len) {
if (widget->align() & JI_HORIZONTAL) {
if (widget->getAlign() & JI_HORIZONTAL) {
pos = (view->wherepos + msg->mouse.x - view->whereclick);
pos = MID(0, pos, bar_size - len);
@ -626,7 +626,7 @@ static void scrollbar_info(JWidget widget, int *_pos, int *_len,
int pos, len, max, scroll;
int border_width;
if (widget->align() & JI_HORIZONTAL) {
if (widget->getAlign() & JI_HORIZONTAL) {
max = view->max_w;
scroll = view->scroll_x;
bar_size = jrect_w(widget->rc)

View File

@ -57,7 +57,7 @@ int ji_register_widget_type()
return type++;
}
jwidget::jwidget(int type)
Widget::Widget(int type)
{
_ji_add_widget(this);
@ -104,7 +104,7 @@ void jwidget_free(JWidget widget)
delete widget;
}
jwidget::~jwidget()
Widget::~Widget()
{
JLink link, next;
JMessage msg;
@ -233,64 +233,53 @@ void *jwidget_get_data(JWidget widget, int type)
/**********************************************************************/
/* main properties */
int jwidget_get_type(JWidget widget)
int Widget::getType()
{
assert_valid_widget(widget);
return widget->type;
return this->type;
}
const char *jwidget_get_name(JWidget widget)
const char *Widget::getName()
{
assert_valid_widget(widget);
return widget->name;
return this->name;
}
const char *jwidget_get_text(JWidget widget)
int Widget::getAlign() const
{
assert_valid_widget(widget);
return widget->text();
return m_align;
}
void jwidget_set_name(JWidget widget, const char *name)
void Widget::setName(const char *name)
{
assert_valid_widget(widget);
if (this->name)
jfree(this->name);
if (widget->name)
jfree(widget->name);
widget->name = name ? jstrdup(name) : NULL;
this->name = name ? jstrdup(name) : NULL;
}
void jwidget_set_text(JWidget widget, const char *text)
void Widget::setAlign(int align)
{
assert_valid_widget(widget);
widget->set_text_quiet(text);
jwidget_emit_signal(widget, JI_SIGNAL_SET_TEXT);
jwidget_dirty(widget);
m_align = align;
}
void jwidget_set_align(JWidget widget, int align)
{
assert_valid_widget(widget);
widget->align(align);
}
int jwidget::text_int() const
int Widget::getTextInt() const
{
return ustrtol(m_text.c_str(), NULL, 10);
}
double jwidget::text_double() const
double Widget::getTextDouble() const
{
return ustrtod(m_text.c_str(), NULL);
}
void jwidget::textf(const char *format, ...)
void Widget::setText(const char *text)
{
this->setTextQuiet(text);
jwidget_emit_signal(this, JI_SIGNAL_SET_TEXT);
dirty();
}
void Widget::setTextf(const char *format, ...)
{
char buf[4096];
@ -306,10 +295,10 @@ void jwidget::textf(const char *format, ...)
ustrcpy(buf, empty_string);
}
text(buf);
setText(buf);
}
void jwidget::set_text_quiet(const char *text)
void Widget::setTextQuiet(const char *text)
{
if (text) {
m_text = text;
@ -321,17 +310,12 @@ void jwidget::set_text_quiet(const char *text)
}
}
void jwidget::align(int align)
{
m_align = align;
}
FONT *jwidget::font()
FONT *Widget::getFont()
{
return m_font;
}
void jwidget::font(FONT* f)
void Widget::setFont(FONT* f)
{
m_font = f;
@ -648,21 +632,30 @@ void jwidget_replace_child(JWidget widget, JWidget old_child, JWidget new_child)
/**********************************************************************/
/* parents and children */
/* gets the widget parent */
JWidget jwidget_get_parent(JWidget widget)
{
assert_valid_widget(widget);
{ return widget->getParent(); }
return widget->parent;
}
JWidget jwidget_get_manager(JWidget widget)
{ return widget->getManager(); }
/* get the parent window */
JWidget jwidget_get_window(JWidget widget)
JList jwidget_get_parents(JWidget widget, bool ascendant)
{ return widget->getParents(ascendant); }
JList jwidget_get_children(JWidget widget)
{ return widget->getChildren(); }
JWidget jwidget_pick(JWidget widget, int x, int y)
{ return widget->pick(x, y); }
bool jwidget_has_child(JWidget widget, JWidget child)
{ return widget->hasChild(child); }
Widget* Widget::getRoot()
{
assert_valid_widget(widget);
Widget* widget = this;
while (widget) {
if (widget->type == JI_WINDOW)
if (widget->type == JI_FRAME)
return widget;
widget = widget->parent;
@ -671,9 +664,14 @@ JWidget jwidget_get_window(JWidget widget)
return NULL;
}
JWidget jwidget_get_manager(JWidget widget)
Widget* Widget::getParent()
{
assert_valid_widget(widget);
return this->parent;
}
Widget* Widget::getManager()
{
Widget* widget = this;
while (widget) {
if (widget->type == JI_MANAGER)
@ -688,17 +686,15 @@ JWidget jwidget_get_manager(JWidget widget)
/* returns a list of parents (you must free the list), if "ascendant"
is true the list is build from child to parents, else the list is
from parent to children */
JList jwidget_get_parents(JWidget widget, bool ascendant)
JList Widget::getParents(bool ascendant)
{
JList list = jlist_new();
assert_valid_widget(widget);
for (; widget; widget=widget->parent) {
/* append parents in tail */
for (Widget* widget=this; widget; widget=widget->parent) {
// append parents in tail
if (ascendant)
jlist_append(list, widget);
/* append parents in head */
// append parents in head
else
jlist_prepend(list, widget);
}
@ -707,26 +703,22 @@ JList jwidget_get_parents(JWidget widget, bool ascendant)
}
/* returns a list of children (you must free the list) */
JList jwidget_get_children(JWidget widget)
JList Widget::getChildren()
{
assert_valid_widget(widget);
return jlist_copy(widget->children);
return jlist_copy(this->children);
}
JWidget jwidget_pick(JWidget widget, int x, int y)
Widget* Widget::pick(int x, int y)
{
JWidget inside, picked = NULL;
Widget* inside, *picked = NULL;
JLink link;
assert_valid_widget(widget);
if (!(this->flags & JI_HIDDEN) && /* is visible */
jrect_point_in(this->rc, x, y)) { /* the point is inside the bounds */
picked = this;
if (!(widget->flags & JI_HIDDEN) && /* is visible */
jrect_point_in(widget->rc, x, y)) { /* the point is inside the bounds */
picked = widget;
JI_LIST_FOR_EACH(widget->children, link) {
inside = jwidget_pick(reinterpret_cast<JWidget>(link->data), x, y);
JI_LIST_FOR_EACH(this->children, link) {
inside = jwidget_pick(reinterpret_cast<Widget*>(link->data), x, y);
if (inside) {
picked = inside;
break;
@ -737,17 +729,54 @@ JWidget jwidget_pick(JWidget widget, int x, int y)
return picked;
}
bool jwidget_has_child(JWidget widget, JWidget child)
bool Widget::hasChild(Widget* child)
{
assert_valid_widget(widget);
assert_valid_widget(child);
return jlist_find(widget->children, child) != widget->children->end ? true: false;
return jlist_find(this->children, child) != this->children->end ? true: false;
}
Widget* Widget::findChild(const char* name)
{
Widget* child;
JLink link;
JI_LIST_FOR_EACH(this->children, link) {
child = (Widget*)link->data;
if (child->name != NULL && strcmp(child->name, name) == 0)
return child;
}
JI_LIST_FOR_EACH(this->children, link) {
if ((child = ((Widget*)link->data)->findChild(name)))
return child;
}
return 0;
}
/**
* Returns a widget in the same window that is located "sibling".
*/
Widget* Widget::findSibling(const char* name)
{
return getRoot()->findChild(name);
}
/**********************************************************************/
/* position and geometry */
Rect Widget::getBounds() const
{
return Rect(rc->x1, rc->y1, jrect_w(rc), jrect_h(rc));
}
void Widget::setBounds(const Rect& rc)
{
jrect jrc = { rc.x, rc.y, rc.x+rc.w, rc.y+rc.h };
jwidget_set_rect(this, &jrc);
}
void jwidget_request_size(JWidget widget, int *w, int *h)
{
JMessage msg;
@ -792,7 +821,7 @@ JRegion jwidget_get_region(JWidget widget)
assert_valid_widget(widget);
if (widget->type == JI_WINDOW)
if (widget->type == JI_FRAME)
region = widget->theme->get_window_mask(widget);
else
region = jregion_new(widget->rc, 1);
@ -815,7 +844,7 @@ JRegion jwidget_get_drawable_region(JWidget widget, int flags)
/* cut the top windows areas */
if (flags & JI_GDR_CUTTOPWINDOWS) {
window = jwidget_get_window(widget);
window = widget->getRoot();
manager = window ? jwidget_get_manager(window): NULL;
while (manager) {
@ -833,8 +862,8 @@ JRegion jwidget_get_drawable_region(JWidget widget, int flags)
}
}
window = jwidget_get_window(manager);
manager = window ? jwidget_get_manager(window): NULL;
window = manager->getRoot();
manager = window ? window->getManager(): NULL;
}
}
@ -893,8 +922,8 @@ JRegion jwidget_get_drawable_region(JWidget widget, int flags)
}
/* limit to the manager area */
window = jwidget_get_window(widget);
manager = window ? jwidget_get_manager(window): NULL;
window = widget->getRoot();
manager = window ? window->getManager(): NULL;
while (manager) {
view = jwidget_get_view(manager);
@ -912,8 +941,8 @@ JRegion jwidget_get_drawable_region(JWidget widget, int flags)
jregion_free(reg1);
jrect_free(cpos);
window = jwidget_get_window(manager);
manager = window ? jwidget_get_manager(window): NULL;
window = manager->getRoot();
manager = window ? window->getManager(): NULL;
}
/* return the region */
@ -924,7 +953,7 @@ int jwidget_get_bg_color(JWidget widget)
{
assert_valid_widget(widget);
return widget->bg_color();
return widget->getBgColor();
}
JTheme jwidget_get_theme(JWidget widget)
@ -937,7 +966,7 @@ JTheme jwidget_get_theme(JWidget widget)
int jwidget_get_text_length(JWidget widget)
{
#if 1
return ji_font_text_len(widget->font(), widget->text());
return ji_font_text_len(widget->getFont(), widget->getText());
#else /* use cached text size */
return widget->text_size_pix;
#endif
@ -947,7 +976,7 @@ int jwidget_get_text_height(JWidget widget)
{
assert_valid_widget(widget);
return text_height(widget->font());
return text_height(widget->getFont());
}
void jwidget_get_texticon_info(JWidget widget,
@ -970,7 +999,7 @@ void jwidget_get_texticon_info(JWidget widget,
text_x = text_y = 0;
/* size of the text */
if (widget->has_text()) {
if (widget->hasText()) {
text_w = jwidget_get_text_length(widget);
text_h = jwidget_get_text_height(widget);
}
@ -987,32 +1016,32 @@ void jwidget_get_texticon_info(JWidget widget,
/* with the icon in the top or bottom */
else {
box_w = MAX(icon_w, text_w);
box_h = icon_h + (widget->has_text() ? widget->child_spacing: 0) + text_h;
box_h = icon_h + (widget->hasText() ? widget->child_spacing: 0) + text_h;
}
}
/* with the icon in left or right that doesn't care by now */
else {
box_w = icon_w + (widget->has_text() ? widget->child_spacing: 0) + text_w;
box_w = icon_w + (widget->hasText() ? widget->child_spacing: 0) + text_w;
box_h = MAX(icon_h, text_h);
}
/* box position */
if (widget->align() & JI_RIGHT)
if (widget->getAlign() & JI_RIGHT)
box_x = widget->rc->x2 - box_w - widget->border_width.r;
else if (widget->align() & JI_CENTER)
else if (widget->getAlign() & JI_CENTER)
box_x = (widget->rc->x1+widget->rc->x2)/2 - box_w/2;
else
box_x = widget->rc->x1 + widget->border_width.l;
if (widget->align() & JI_BOTTOM)
if (widget->getAlign() & JI_BOTTOM)
box_y = widget->rc->y2 - box_h - widget->border_width.b;
else if (widget->align() & JI_MIDDLE)
else if (widget->getAlign() & JI_MIDDLE)
box_y = (widget->rc->y1+widget->rc->y2)/2 - box_h/2;
else
box_y = widget->rc->y1 + widget->border_width.t;
/* with text */
if (widget->has_text()) {
if (widget->hasText()) {
/* text/icon X position */
if (icon_align & JI_RIGHT) {
text_x = box_x;
@ -1107,7 +1136,8 @@ void jwidget_set_max_size(JWidget widget, int w, int h)
void jwidget_set_bg_color(JWidget widget, int color)
{
assert_valid_widget(widget);
widget->bg_color(color);
widget->setBgColor(color);
}
void jwidget_set_theme(JWidget widget, JTheme theme)
@ -1116,7 +1146,7 @@ void jwidget_set_theme(JWidget widget, JTheme theme)
widget->theme = theme;
/* TODO mmhhh... maybe some JStyle in JWidget should be great */
widget->font(widget->theme ? widget->theme->default_font: NULL);
widget->setFont(widget->theme ? widget->theme->default_font: NULL);
}
/**********************************************************************/
@ -1277,10 +1307,10 @@ bool jwidget_emit_signal(JWidget widget, int signal_num)
ret = jwidget_send_message(widget, msg);
/* send the signal to the window too */
if (!ret && widget->type != JI_WINDOW) {
JWidget window = jwidget_get_window(widget);
if (!ret && widget->type != JI_FRAME) {
Widget* window = widget->getRoot();
if (window)
ret = jwidget_send_message(window, msg);
ret = window->sendMessage(msg);
}
jmessage_free(msg);
@ -1293,42 +1323,48 @@ bool jwidget_emit_signal(JWidget widget, int signal_num)
/**********************************************************************/
/* manager handler */
#define SENDMSG() \
if (hook->msg_proc) { \
done = (*hook->msg_proc)(widget, msg); \
if (done) \
break; \
}
bool jwidget_send_message(JWidget widget, JMessage msg)
{ return widget->sendMessage(msg); }
void jwidget_close_window(JWidget widget)
{ widget->closeWindow(); }
void jwidget_capture_mouse(JWidget widget)
{ widget->captureMouse(); }
void jwidget_hard_capture_mouse(JWidget widget)
{ widget->hardCaptureMouse(); }
void jwidget_release_mouse(JWidget widget)
{ widget->releaseMouse(); }
bool Widget::sendMessage(JMessage msg)
{
bool done = false;
JHook hook;
JLink link;
assert_valid_widget(widget);
assert(msg != NULL);
JI_LIST_FOR_EACH(widget->hooks, link) {
JI_LIST_FOR_EACH(this->hooks, link) {
hook = reinterpret_cast<JHook>(link->data);
SENDMSG();
if (hook->msg_proc) {
done = (*hook->msg_proc)(this, msg);
if (done)
break;
}
}
if (!done)
done = widget->msg_proc(msg);
done = this->msg_proc(msg);
return done;
}
void jwidget_close_window(JWidget widget)
void Widget::closeWindow()
{
JWidget window;
assert_valid_widget(widget);
window = jwidget_get_window(widget);
if (window)
jwindow_close(window, widget);
if (Frame* frame = static_cast<Frame*>(getRoot()))
frame->closeWindow(this);
}
/**
@ -1339,15 +1375,13 @@ void jwidget_close_window(JWidget widget)
*
* @see jwidget_hard_capture_mouse
*/
void jwidget_capture_mouse(JWidget widget)
void Widget::captureMouse()
{
assert_valid_widget(widget);
if (!jmanager_get_capture()) {
jmanager_set_capture(widget);
jmanager_set_capture(this);
if (jmanager_get_capture() == widget)
widget->flags &= ~JI_HARDCAPTURE;
if (jmanager_get_capture() == this)
this->flags &= ~JI_HARDCAPTURE;
}
}
@ -1357,35 +1391,31 @@ void jwidget_capture_mouse(JWidget widget)
*
* @see jwidget_capture_mouse
*/
void jwidget_hard_capture_mouse(JWidget widget)
void Widget::hardCaptureMouse()
{
assert_valid_widget(widget);
if (!jmanager_get_capture()) {
jmanager_set_capture(widget);
jmanager_set_capture(this);
#ifdef ALLEGRO_WINDOWS
SetCapture(win_get_window());
#endif
if (jmanager_get_capture() == widget)
widget->flags |= JI_HARDCAPTURE;
if (jmanager_get_capture() == this)
this->flags |= JI_HARDCAPTURE;
}
}
/**
* Releases the capture of the mouse events.
*/
void jwidget_release_mouse(JWidget widget)
void Widget::releaseMouse()
{
assert_valid_widget(widget);
if (jmanager_get_capture() == widget) {
if (jmanager_get_capture() == this) {
jmanager_free_capture();
#ifdef ALLEGRO_WINDOWS
ReleaseCapture();
::ReleaseCapture(); // Win32 API
#endif
widget->flags &= ~JI_HARDCAPTURE;
this->flags &= ~JI_HARDCAPTURE;
}
}
@ -1394,23 +1424,8 @@ void jwidget_release_mouse(JWidget widget)
JWidget jwidget_find_name(JWidget widget, const char *name)
{
JWidget child;
JLink link;
assert_valid_widget(widget);
JI_LIST_FOR_EACH(widget->children, link) {
child = (JWidget)link->data;
if (child->name != NULL && strcmp(child->name, name) == 0)
return child;
}
JI_LIST_FOR_EACH(widget->children, link) {
if ((child = jwidget_find_name((JWidget)link->data, name)))
return child;
}
return 0;
return widget->findChild(name);
}
bool jwidget_check_underscored(JWidget widget, int scancode)
@ -1427,8 +1442,8 @@ bool jwidget_check_underscored(JWidget widget, int scancode)
else
return false;
if (widget->has_text()) {
const char* text = widget->text();
if (widget->hasText()) {
const char* text = widget->getText();
for (c=0; text[c]; c++)
if ((text[c] == '&') && (text[c+1] != '&'))
@ -1442,7 +1457,7 @@ bool jwidget_check_underscored(JWidget widget, int scancode)
/**********************************************************************/
/* widget message procedure */
bool jwidget::msg_proc(JMessage msg)
bool Widget::msg_proc(JMessage msg)
{
JWidget widget = this;

View File

@ -33,6 +33,7 @@
#define JINETE_JWIDGET_H_INCLUDED
#include "jinete/jbase.h"
#include "jinete/jrect.h"
#include <string>
@ -60,16 +61,6 @@ void jwidget_add_hook(JWidget widget, int type,
JMessageFunc msg_proc, void *data);
JHook jwidget_get_hook(JWidget widget, int type);
void *jwidget_get_data(JWidget widget, int type);
/* main properties */
int jwidget_get_type(JWidget widget);
const char *jwidget_get_name(JWidget widget);
const char *jwidget_get_text(JWidget widget);
void jwidget_set_name(JWidget widget, const char *name);
void jwidget_set_text(JWidget widget, const char *text);
void jwidget_set_align(JWidget widget, int align);
/* behavior properties */
@ -118,8 +109,7 @@ void jwidget_replace_child(JWidget widget, JWidget old_child,
/* parents and children */
JWidget jwidget_get_parent(JWidget widget);
JWidget jwidget_get_window(JWidget widget);
JWidget jwidget_get_manager(JWidget window);
JWidget jwidget_get_manager(JWidget widget);
JList jwidget_get_parents(JWidget widget, bool ascendant);
JList jwidget_get_children(JWidget widget);
JWidget jwidget_pick(JWidget widget, int x, int y);
@ -179,7 +169,7 @@ bool jwidget_check_underscored(JWidget widget, int scancode);
//////////////////////////////////////////////////////////////////////
class jwidget
class Widget
{
public:
JID id; /* identify code */
@ -230,43 +220,57 @@ public:
//////////////////////////////////////////////////////////////////////
// Methods
jwidget(int type);
~jwidget();
Widget(int type);
virtual ~Widget();
bool has_text() { return flags & JI_NOTEXT ? false: true; }
// main properties
const char* text() const { return m_text.c_str(); }
int text_int() const;
double text_double() const;
void text(const char* text) { jwidget_set_text(this, text); }
size_t text_size() const { return m_text.size(); }
void textf(const char* text, ...);
void set_text_quiet(const char* text);
int getType();
const char* getName();
int getAlign() const;
bool enabled() { return jwidget_is_enabled(this); }
void enabled(bool state) {
void setName(const char* name);
void setAlign(int align);
// text property
bool hasText() { return flags & JI_NOTEXT ? false: true; }
const char* getText() const { return m_text.c_str(); }
int getTextInt() const;
double getTextDouble() const;
size_t getTextSize() const { return m_text.size(); }
void setText(const char* text);
void setTextf(const char* text, ...);
void setTextQuiet(const char* text);
// enable/disable
bool isEnabled() { return jwidget_is_enabled(this); }
void setEnabled(bool state) {
if (state)
jwidget_enable(this);
else
jwidget_disable(this);
}
bool selected() { return jwidget_is_selected(this); }
void selected(bool state) { jwidget_set_selected(this, state); }
// selected
int align() const { return m_align; }
void align(int align);
bool isSelected() { return jwidget_is_selected(this); }
void setSelected(bool state) { jwidget_set_selected(this, state); }
struct FONT* font();
void font(struct FONT* font);
// font
FONT* getFont();
void setFont(FONT* font);
/**
* Gets the background color of the widget.
*/
int bg_color()
int getBgColor()
{
if (m_bg_color < 0 && parent)
return parent->bg_color();
return parent->getBgColor();
else
return m_bg_color;
}
@ -274,21 +278,44 @@ public:
/**
* Sets the background color of the widget.
*/
void bg_color(int bg_color)
void setBgColor(int bg_color)
{
m_bg_color = bg_color;
}
/**
* Returns a widget in the same window that is located "sibling".
*/
inline JWidget find_sibling(const char* name)
{
return jwidget_find_name(jwidget_get_window(this), name);
//////////////////////////////////////////////////////////////////////
// parents and children
Widget* getRoot();
Widget* getParent();
Widget* getManager();
JList getParents(bool ascendant);
JList getChildren();
Widget* pick(int x, int y);
bool hasChild(Widget* child);
Widget* findChild(const char* name);
Widget* findSibling(const char* name);
void dirty() {
jwidget_dirty(this);
}
void dirty() { jwidget_dirty(this); }
//////////////////////////////////////////////////////////////////////
// position and geometry
Rect getBounds() const;
void setBounds(const Rect& rc);
//////////////////////////////////////////////////////////////////////
// manager handler
bool sendMessage(JMessage msg);
void closeWindow();
void captureMouse();
void hardCaptureMouse();
void releaseMouse();
protected:
virtual bool msg_proc(JMessage msg);
};

View File

@ -39,18 +39,6 @@
#include "jinete/jinete.h"
#include "jinete/jintern.h"
typedef struct Window
{
JWidget killer;
bool is_desktop : 1;
bool is_moveable : 1;
bool is_sizeable : 1;
bool is_ontop : 1;
bool is_wantfocus : 1;
bool is_foreground : 1;
bool is_autoremap : 1;
} Window;
enum {
WINDOW_NONE = 0,
WINDOW_MOVE = 1,
@ -64,14 +52,6 @@ static JRect click_pos = NULL;
static int press_x, press_y;
static int window_action = WINDOW_NONE;
static JWidget window_new(bool desktop, const char *text);
static bool window_msg_proc(JWidget widget, JMessage msg);
static void window_request_size(JWidget widget, int *w, int *h);
static void window_set_position(JWidget widget, JRect rect);
static int get_action(JWidget widget, int x, int y);
static void limit_size(JWidget widget, int *w, int *h);
static void move_window(JWidget widget, JRect rect, bool use_blit);
static void displace_widgets(JWidget widget, int x, int y);
bool _jwindow_is_moving()
@ -79,264 +59,227 @@ bool _jwindow_is_moving()
return (window_action == WINDOW_MOVE) ? true: false;
}
JWidget jwindow_new(const char *text)
Frame::Frame(bool desktop, const char* text)
: Widget(JI_FRAME)
{
return window_new(false, text);
m_killer = NULL;
m_is_desktop = desktop;
m_is_moveable = !desktop;
m_is_sizeable = !desktop;
m_is_ontop = false;
m_is_wantfocus = true;
m_is_foreground = false;
m_is_autoremap = true;
jwidget_hide(this);
this->setText(text);
this->setAlign(JI_LEFT | JI_MIDDLE);
jwidget_init_theme(this);
}
JWidget jwindow_new_desktop()
Widget* Frame::get_killer()
{
return window_new(true, NULL);
return m_killer;
}
JWidget jwindow_get_killer(JWidget widget)
void Frame::set_autoremap(bool state)
{
Window* window = reinterpret_cast<Window*>(jwidget_get_data(widget, JI_WINDOW));
return window->killer;
m_is_autoremap = state;
}
void jwindow_moveable(JWidget widget, bool state)
void Frame::set_moveable(bool state)
{
Window* window = reinterpret_cast<Window*>(jwidget_get_data(widget, JI_WINDOW));
window->is_moveable = state;
m_is_moveable = state;
}
void jwindow_sizeable(JWidget widget, bool state)
void Frame::set_sizeable(bool state)
{
Window* window = reinterpret_cast<Window*>(jwidget_get_data(widget, JI_WINDOW));
window->is_sizeable = state;
m_is_sizeable = state;
}
void jwindow_ontop(JWidget widget, bool state)
void Frame::set_ontop(bool state)
{
Window* window = reinterpret_cast<Window*>(jwidget_get_data(widget, JI_WINDOW));
window->is_ontop = state;
m_is_ontop = state;
}
void jwindow_wantfocus(JWidget widget, bool state)
void Frame::set_wantfocus(bool state)
{
Window* window = reinterpret_cast<Window*>(jwidget_get_data(widget, JI_WINDOW));
window->is_wantfocus = state;
m_is_wantfocus = state;
}
void jwindow_remap(JWidget widget)
void Frame::remap_window()
{
Window* window = reinterpret_cast<Window*>(jwidget_get_data(widget, JI_WINDOW));
int req_w, req_h;
JRect rect;
if (window->is_autoremap) {
window->is_autoremap = false;
jwidget_show(widget);
if (m_is_autoremap) {
m_is_autoremap = false;
jwidget_show(this);
}
jwidget_request_size(widget, &req_w, &req_h);
jwidget_request_size(this, &req_w, &req_h);
rect = jrect_new(widget->rc->x1, widget->rc->y1,
widget->rc->x1+req_w,
widget->rc->y1+req_h);
jwidget_set_rect(widget, rect);
rect = jrect_new(this->rc->x1, this->rc->y1,
this->rc->x1+req_w,
this->rc->y1+req_h);
jwidget_set_rect(this, rect);
jrect_free(rect);
jwidget_emit_signal(widget, JI_SIGNAL_WINDOW_RESIZE);
jwidget_dirty(widget);
jwidget_emit_signal(this, JI_SIGNAL_WINDOW_RESIZE);
jwidget_dirty(this);
}
void jwindow_center(JWidget widget)
void Frame::center_window()
{
Window* window = reinterpret_cast<Window*>(jwidget_get_data(widget, JI_WINDOW));
JWidget manager = jwidget_get_manager(widget);
JWidget manager = getManager();
if (window->is_autoremap)
jwindow_remap(widget);
if (m_is_autoremap)
this->remap_window();
jwindow_position(widget,
jrect_w(manager->rc)/2 - jrect_w(widget->rc)/2,
jrect_h(manager->rc)/2 - jrect_h(widget->rc)/2);
position_window(jrect_w(manager->rc)/2 - jrect_w(this->rc)/2,
jrect_h(manager->rc)/2 - jrect_h(this->rc)/2);
}
void jwindow_position(JWidget widget, int x, int y)
void Frame::position_window(int x, int y)
{
Window* window = reinterpret_cast<Window*>(jwidget_get_data(widget, JI_WINDOW));
int old_action = window_action;
JRect rect;
window_action = WINDOW_MOVE;
if (window->is_autoremap)
jwindow_remap(widget);
if (m_is_autoremap)
remap_window();
rect = jrect_new(x, y, x+jrect_w(widget->rc), y+jrect_h(widget->rc));
jwidget_set_rect(widget, rect);
rect = jrect_new(x, y, x+jrect_w(this->rc), y+jrect_h(this->rc));
jwidget_set_rect(this, rect);
jrect_free(rect);
window_action = old_action;
jwidget_dirty(widget);
dirty();
}
void jwindow_move(JWidget widget, JRect rect)
void Frame::move_window(JRect rect)
{
move_window(widget, rect, true);
move_window(rect, true);
}
void jwindow_open(JWidget widget)
void Frame::open_window()
{
if (!widget->parent) {
Window* window = reinterpret_cast<Window*>(jwidget_get_data(widget, JI_WINDOW));
if (!this->parent) {
if (m_is_autoremap)
center_window();
if (window->is_autoremap)
jwindow_center(widget);
_jmanager_open_window(ji_get_default_manager(), widget);
_jmanager_open_window(ji_get_default_manager(), this);
}
}
void jwindow_open_fg(JWidget widget)
void Frame::open_window_fg()
{
Window* window = reinterpret_cast<Window*>(jwidget_get_data(widget, JI_WINDOW));
JWidget manager;
open_window();
jwindow_open(widget);
manager = jwidget_get_manager(widget);
JWidget manager = getManager();
window->is_foreground = true;
m_is_foreground = true;
while (!(widget->flags & JI_HIDDEN)) {
while (!(this->flags & JI_HIDDEN)) {
if (jmanager_generate_messages(manager))
jmanager_dispatch_messages(manager);
}
window->is_foreground = false;
m_is_foreground = false;
}
void jwindow_open_bg(JWidget widget)
void Frame::open_window_bg()
{
jwindow_open(widget);
this->open_window();
}
void jwindow_close(JWidget widget, JWidget killer)
void Frame::closeWindow(Widget* killer)
{
Window* window = reinterpret_cast<Window*>(jwidget_get_data(widget, JI_WINDOW));
m_killer = killer;
window->killer = killer;
_jmanager_close_window(jwidget_get_manager(widget), widget, true);
_jmanager_close_window(getManager(), this, true);
}
bool jwindow_is_toplevel(JWidget widget)
bool Frame::is_toplevel()
{
JWidget manager = jwidget_get_manager(widget);
JWidget manager = getManager();
if (!jlist_empty(manager->children))
return (widget == jlist_first(manager->children)->data);
return (this == jlist_first(manager->children)->data);
else
return false;
}
bool jwindow_is_foreground(JWidget widget)
bool Frame::is_foreground() const
{
Window* window = reinterpret_cast<Window*>(jwidget_get_data(widget, JI_WINDOW));
return window->is_foreground;
return m_is_foreground;
}
bool jwindow_is_desktop(JWidget widget)
bool Frame::is_desktop() const
{
Window* window = reinterpret_cast<Window*>(jwidget_get_data(widget, JI_WINDOW));
return window->is_desktop;
return m_is_desktop;
}
bool jwindow_is_ontop(JWidget widget)
bool Frame::is_ontop() const
{
Window* window = reinterpret_cast<Window*>(jwidget_get_data(widget, JI_WINDOW));
return window->is_ontop;
return m_is_ontop;
}
bool jwindow_is_wantfocus(JWidget widget)
bool Frame::is_wantfocus() const
{
Window* window = reinterpret_cast<Window*>(jwidget_get_data(widget, JI_WINDOW));
return window->is_wantfocus;
return m_is_wantfocus;
}
static JWidget window_new(bool desktop, const char *text)
bool Frame::msg_proc(JMessage msg)
{
JWidget widget = new jwidget(JI_WINDOW);
Window *window = jnew(Window, 1);
window->killer = NULL;
window->is_desktop = desktop;
window->is_moveable = !desktop;
window->is_sizeable = !desktop;
window->is_ontop = false;
window->is_wantfocus = true;
window->is_foreground = false;
window->is_autoremap = true;
jwidget_hide(widget);
jwidget_add_hook(widget, JI_WINDOW, window_msg_proc, window);
jwidget_set_text(widget, text);
jwidget_set_align(widget, JI_LEFT | JI_MIDDLE);
jwidget_init_theme(widget);
return widget;
}
static bool window_msg_proc(JWidget widget, JMessage msg)
{
Window* window = reinterpret_cast<Window*>(jwidget_get_data(widget, JI_WINDOW));
switch (msg->type) {
case JM_DESTROY:
_jmanager_close_window(jwidget_get_manager(widget), widget, false);
jfree(window);
_jmanager_close_window(getManager(), this, false);
break;
case JM_REQSIZE:
window_request_size(widget, &msg->reqsize.w, &msg->reqsize.h);
this->window_request_size(&msg->reqsize.w, &msg->reqsize.h);
return true;
case JM_SETPOS:
window_set_position(widget, &msg->setpos.rect);
this->window_set_position(&msg->setpos.rect);
return true;
case JM_OPEN:
window->killer = NULL;
m_killer = NULL;
break;
case JM_CLOSE:
jwidget_emit_signal(widget, JI_SIGNAL_WINDOW_CLOSE);
// Fire Close signal
{
Vaca::CloseEvent ev;
Close(ev);
}
break;
case JM_SIGNAL:
if (msg->signal.num == JI_SIGNAL_SET_TEXT)
jwidget_init_theme(widget);
jwidget_init_theme(this);
break;
case JM_BUTTONPRESSED: {
if (!window->is_moveable)
if (!m_is_moveable)
break;
press_x = msg->mouse.x;
press_y = msg->mouse.y;
window_action = get_action(widget, press_x, press_y);
window_action = this->get_action(press_x, press_y);
if (window_action != WINDOW_NONE) {
if (click_pos == NULL)
click_pos = jrect_new_copy(widget->rc);
click_pos = jrect_new_copy(this->rc);
else
jrect_copy(click_pos, widget->rc);
jrect_copy(click_pos, this->rc);
jwidget_hard_capture_mouse(widget);
jwidget_hard_capture_mouse(this);
return true;
}
else
@ -344,8 +287,8 @@ static bool window_msg_proc(JWidget widget, JMessage msg)
}
case JM_BUTTONRELEASED:
if (jwidget_has_capture(widget)) {
jwidget_release_mouse(widget);
if (jwidget_has_capture(this)) {
jwidget_release_mouse(this);
jmouse_set_cursor(JI_CURSOR_NORMAL);
if (click_pos != NULL) {
@ -359,19 +302,19 @@ static bool window_msg_proc(JWidget widget, JMessage msg)
break;
case JM_MOTION:
if (!window->is_moveable)
if (!m_is_moveable)
break;
/* does it have the mouse captured? */
if (jwidget_has_capture(widget)) {
if (jwidget_has_capture(this)) {
/* reposition/resize */
if (window_action == WINDOW_MOVE) {
int x = click_pos->x1 + (msg->mouse.x - press_x);
int y = click_pos->y1 + (msg->mouse.y - press_y);
JRect rect = jrect_new(x, y,
x+jrect_w(widget->rc),
y+jrect_h(widget->rc));
move_window(widget, rect, true);
x+jrect_w(this->rc),
y+jrect_h(this->rc));
this->move_window(rect, true);
jrect_free(rect);
}
else {
@ -390,27 +333,27 @@ static bool window_msg_proc(JWidget widget, JMessage msg)
else if (window_action & WINDOW_RESIZE_BOTTOM)
h += (msg->mouse.y - press_y);
limit_size(widget, &w, &h);
this->limit_size(&w, &h);
if ((jrect_w(widget->rc) != w) ||
(jrect_h(widget->rc) != h)) {
if ((jrect_w(this->rc) != w) ||
(jrect_h(this->rc) != h)) {
if (window_action & WINDOW_RESIZE_LEFT)
x = click_pos->x1 - (w - jrect_w(click_pos));
else
x = widget->rc->x1;
x = this->rc->x1;
if (window_action & WINDOW_RESIZE_TOP)
y = click_pos->y1 - (h - jrect_h(click_pos));
else
y = widget->rc->y1;
y = this->rc->y1;
{
JRect rect = jrect_new(x, y, x+w, y+h);
move_window(widget, rect, false);
this->move_window(rect, false);
jrect_free(rect);
jwidget_emit_signal(widget, JI_SIGNAL_WINDOW_RESIZE);
jwidget_dirty(widget);
jwidget_emit_signal(this, JI_SIGNAL_WINDOW_RESIZE);
jwidget_dirty(this);
}
}
}
@ -418,7 +361,7 @@ static bool window_msg_proc(JWidget widget, JMessage msg)
/* TODO */
/* { */
/* JWidget manager = jwindow_get_manager(widget); */
/* JWidget manager = get_manager(); */
/* JWidget view = jwidget_get_view(manager); */
/* if (view) { */
/* jview_update(view); */
@ -427,10 +370,8 @@ static bool window_msg_proc(JWidget widget, JMessage msg)
break;
case JM_SETCURSOR:
if (window->is_moveable) {
int action = get_action(widget,
msg->mouse.x,
msg->mouse.y);
if (m_is_moveable) {
int action = this->get_action(msg->mouse.x, msg->mouse.y);
int cursor = JI_CURSOR_NORMAL;
if (action == WINDOW_MOVE)
@ -462,20 +403,19 @@ static bool window_msg_proc(JWidget widget, JMessage msg)
break;
case JM_DRAW:
widget->theme->draw_window(widget, &msg->draw.rect);
this->theme->draw_frame(this, &msg->draw.rect);
return true;
}
return false;
return Widget::msg_proc(msg);
}
static void window_request_size(JWidget widget, int *w, int *h)
void Frame::window_request_size(int *w, int *h)
{
Window* window = reinterpret_cast<Window*>(jwidget_get_data(widget, JI_WINDOW));
JWidget manager = jwidget_get_manager(widget);
JWidget manager = getManager();
if (window->is_desktop) {
if (m_is_desktop) {
JRect cpos = jwidget_get_child_rect(manager);
*w = jrect_w(cpos);
*h = jrect_h(cpos);
@ -488,7 +428,7 @@ static void window_request_size(JWidget widget, int *w, int *h)
JLink link;
max_w = max_h = 0;
JI_LIST_FOR_EACH(widget->children, link) {
JI_LIST_FOR_EACH(this->children, link) {
child = (JWidget)link->data;
if (!jwidget_is_decorative(child)) {
@ -499,26 +439,26 @@ static void window_request_size(JWidget widget, int *w, int *h)
}
}
if (widget->has_text())
max_w = MAX(max_w, jwidget_get_text_length(widget));
if (this->hasText())
max_w = MAX(max_w, jwidget_get_text_length(this));
*w = widget->border_width.l + max_w + widget->border_width.r;
*h = widget->border_width.t + max_h + widget->border_width.b;
*w = this->border_width.l + max_w + this->border_width.r;
*h = this->border_width.t + max_h + this->border_width.b;
}
}
static void window_set_position(JWidget widget, JRect rect)
void Frame::window_set_position(JRect rect)
{
JWidget child;
JRect cpos;
JLink link;
/* copy the new position rectangle */
jrect_copy(widget->rc, rect);
cpos = jwidget_get_child_rect(widget);
jrect_copy(this->rc, rect);
cpos = jwidget_get_child_rect(this);
/* set all the children to the same "child_pos" */
JI_LIST_FOR_EACH(widget->children, link) {
JI_LIST_FOR_EACH(this->children, link) {
child = (JWidget)link->data;
if (jwidget_is_decorative(child))
@ -530,30 +470,29 @@ static void window_set_position(JWidget widget, JRect rect)
jrect_free(cpos);
}
static int get_action(JWidget widget, int x, int y)
int Frame::get_action(int x, int y)
{
Window* window = reinterpret_cast<Window*>(jwidget_get_data(widget, JI_WINDOW));
int action = WINDOW_NONE;
JRect pos;
JRect cpos;
if (!window->is_moveable)
if (!m_is_moveable)
return action;
pos = jwidget_get_rect(widget);
cpos = jwidget_get_child_rect(widget);
pos = jwidget_get_rect(this);
cpos = jwidget_get_child_rect(this);
/* move */
if ((widget->has_text())
if ((this->hasText())
&& (((x >= cpos->x1) &&
(x < cpos->x2) &&
(y >= pos->y1+widget->border_width.b) &&
(y >= pos->y1+this->border_width.b) &&
(y < cpos->y1))
|| (key_shifts & KB_ALT_FLAG))) {
action = WINDOW_MOVE;
}
/* resize */
else if (window->is_sizeable) {
else if (m_is_sizeable) {
/* left *****************************************/
if ((x >= pos->x1) && (x < cpos->x1)) {
action |= WINDOW_RESIZE_LEFT;
@ -604,21 +543,21 @@ static int get_action(JWidget widget, int x, int y)
return action;
}
static void limit_size(JWidget widget, int *w, int *h)
void Frame::limit_size(int *w, int *h)
{
int req_w, req_h;
jwidget_request_size(widget, &req_w, &req_h);
jwidget_request_size(this, &req_w, &req_h);
*w = MAX(*w, widget->border_width.l+widget->border_width.r);
*h = MAX(*h, widget->border_width.t+widget->border_width.b);
*w = MAX(*w, this->border_width.l+this->border_width.r);
*h = MAX(*h, this->border_width.t+this->border_width.b);
}
static void move_window(JWidget widget, JRect rect, bool use_blit)
void Frame::move_window(JRect rect, bool use_blit)
{
#define FLAGS JI_GDR_CUTTOPWINDOWS | JI_GDR_USECHILDAREA
JWidget manager = jwidget_get_manager(widget);
JWidget manager = getManager();
JRegion old_drawable_region;
JRegion new_drawable_region;
JRegion manager_refresh_region;
@ -630,37 +569,37 @@ static void move_window(JWidget widget, JRect rect, bool use_blit)
jmanager_dispatch_messages(manager);
/* get the window's current position */
old_pos = jrect_new_copy(widget->rc);
old_pos = jrect_new_copy(this->rc);
/* get the manager's current position */
man_pos = jwidget_get_rect(manager);
/* sent a JM_WINMOVE message to the window */
msg = jmessage_new(JM_WINMOVE);
jmessage_add_dest(msg, widget);
jmessage_add_dest(msg, this);
jmanager_enqueue_message(msg);
/* get the region & the drawable region of the window */
old_drawable_region = jwidget_get_drawable_region(widget, FLAGS);
old_drawable_region = jwidget_get_drawable_region(this, FLAGS);
/* if the size of the window changes... */
if (jrect_w(old_pos) != jrect_w(rect) ||
jrect_h(old_pos) != jrect_h(rect)) {
/* we have to change the whole positions sending JM_SETPOS
messages... */
window_set_position(widget, rect);
window_set_position(rect);
}
else {
/* we can just displace all the widgets
by a delta (new_position - old_position)... */
displace_widgets(widget,
displace_widgets(this,
rect->x1 - old_pos->x1,
rect->y1 - old_pos->y1);
}
/* get the new drawable region of the window (it's new because we
moved the window to "rect") */
new_drawable_region = jwidget_get_drawable_region(widget, FLAGS);
new_drawable_region = jwidget_get_drawable_region(this, FLAGS);
/* create a new region to refresh the manager later */
manager_refresh_region = jregion_new(NULL, 0);
@ -693,14 +632,14 @@ static void move_window(JWidget widget, JRect rect, bool use_blit)
/* add a region to draw areas which were outside of the screen */
jregion_copy(reg1, new_drawable_region);
jregion_translate(reg1,
old_pos->x1 - widget->rc->x1,
old_pos->y1 - widget->rc->y1);
old_pos->x1 - this->rc->x1,
old_pos->y1 - this->rc->y1);
jregion_intersect(moveable_region, old_drawable_region, reg1);
jregion_subtract(reg1, reg1, moveable_region);
jregion_translate(reg1,
widget->rc->x1 - old_pos->x1,
widget->rc->y1 - old_pos->y1);
this->rc->x1 - old_pos->x1,
this->rc->y1 - old_pos->y1);
jregion_union(window_refresh_region, window_refresh_region, reg1);
/* move the window's graphics */
@ -709,8 +648,8 @@ static void move_window(JWidget widget, JRect rect, bool use_blit)
man_pos->x1, man_pos->y1, man_pos->x2-1, man_pos->y2-1);
ji_move_region(moveable_region,
widget->rc->x1 - old_pos->x1,
widget->rc->y1 - old_pos->y1);
this->rc->x1 - old_pos->x1,
this->rc->y1 - old_pos->y1);
set_clip(ji_screen, 0, 0, JI_SCREEN_W-1, JI_SCREEN_H-1);
jmouse_show();
@ -719,7 +658,7 @@ static void move_window(JWidget widget, JRect rect, bool use_blit)
}
jmanager_invalidate_region(manager, manager_refresh_region);
jwidget_invalidate_region(widget, window_refresh_region);
jwidget_invalidate_region(this, window_refresh_region);
jregion_free(old_drawable_region);
jregion_free(new_drawable_region);

View File

@ -32,32 +32,64 @@
#ifndef JINETE_JWINDOW_H_INCLUDED
#define JINETE_JWINDOW_H_INCLUDED
#include "jinete/jbase.h"
#include "jinete/jwidget.h"
#include "Vaca/Signal.h"
JWidget jwindow_new(const char *text);
JWidget jwindow_new_desktop();
namespace Vaca {
class CloseEvent { }; // TODO
}
JWidget jwindow_get_killer(JWidget window);
class Frame : public Widget
{
JWidget m_killer;
bool m_is_desktop : 1;
bool m_is_moveable : 1;
bool m_is_sizeable : 1;
bool m_is_ontop : 1;
bool m_is_wantfocus : 1;
bool m_is_foreground : 1;
bool m_is_autoremap : 1;
void jwindow_moveable(JWidget window, bool state);
void jwindow_sizeable(JWidget window, bool state);
void jwindow_ontop(JWidget window, bool state);
void jwindow_wantfocus(JWidget window, bool state);
public:
Frame(bool is_desktop, const char* text);
void jwindow_remap(JWidget window);
void jwindow_center(JWidget window);
void jwindow_position(JWidget window, int x, int y);
void jwindow_move(JWidget window, JRect rect);
Widget* get_killer();
void jwindow_open(JWidget window);
void jwindow_open_fg(JWidget window);
void jwindow_open_bg(JWidget window);
void jwindow_close(JWidget window, JWidget killer);
void set_autoremap(bool state);
void set_moveable(bool state);
void set_sizeable(bool state);
void set_ontop(bool state);
void set_wantfocus(bool state);
bool jwindow_is_toplevel(JWidget window);
bool jwindow_is_foreground(JWidget window);
bool jwindow_is_desktop(JWidget window);
bool jwindow_is_ontop(JWidget window);
bool jwindow_is_wantfocus(JWidget window);
void remap_window();
void center_window();
void position_window(int x, int y);
void move_window(JRect rect);
void open_window();
void open_window_fg();
void open_window_bg();
void closeWindow(Widget* killer);
bool is_toplevel();
bool is_foreground() const;
bool is_desktop() const;
bool is_ontop() const;
bool is_wantfocus() const;
// Signals
Vaca::Signal1<void, Vaca::CloseEvent&> Close;
protected:
bool msg_proc(JMessage msg);
private:
void window_request_size(int* w, int* h);
void window_set_position(JRect rect);
int get_action(int x, int y);
void limit_size(int* w, int* h);
void move_window(JRect rect, bool use_blit);
};
#endif

View File

@ -41,8 +41,6 @@
#define CHARACTER_LENGTH(f, c) ((f)->vtable->char_length((f), (c)))
#define BGCOLOR (get_bg_color(widget))
#define COLOR_FOREGROUND makecol(0, 0, 0)
#define COLOR_DISABLED makecol(128, 128, 128)
#define COLOR_FACE makecol(210, 200, 190)
@ -133,7 +131,7 @@ public:
void draw_view(JWidget widget, JRect clip);
void draw_view_scrollbar(JWidget widget, JRect clip);
void draw_view_viewport(JWidget widget, JRect clip);
void draw_window(JWidget widget, JRect clip);
void draw_frame(Frame* frame, JRect clip);
private:
@ -273,7 +271,7 @@ void jstandard_theme::init_widget(JWidget widget)
widget->border_width.b = B;
if ((widget->flags & JI_INITIALIZED) &&
(widget->type != JI_WINDOW) &&
(widget->type != JI_FRAME) &&
(widget->type != JI_SEPARATOR))
return;
@ -347,12 +345,12 @@ void jstandard_theme::init_widget(JWidget widget)
case JI_SEPARATOR:
/* frame */
if ((widget->align() & JI_HORIZONTAL) &&
(widget->align() & JI_VERTICAL)) {
if ((widget->getAlign() & JI_HORIZONTAL) &&
(widget->getAlign() & JI_VERTICAL)) {
BORDER(4);
}
/* horizontal bar */
else if (widget->align() & JI_HORIZONTAL) {
else if (widget->getAlign() & JI_HORIZONTAL) {
BORDER4(2, 4, 2, 0);
}
/* vertical bar */
@ -360,10 +358,10 @@ void jstandard_theme::init_widget(JWidget widget)
BORDER4(4, 2, 0, 2);
}
if (widget->has_text()) {
if (widget->align() & JI_TOP)
if (widget->hasText()) {
if (widget->getAlign() & JI_TOP)
widget->border_width.t = jwidget_get_text_height(widget);
else if (widget->align() & JI_BOTTOM)
else if (widget->getAlign() & JI_BOTTOM)
widget->border_width.b = jwidget_get_text_height(widget);
}
break;
@ -371,7 +369,7 @@ void jstandard_theme::init_widget(JWidget widget)
case JI_SLIDER:
BORDER(4);
widget->child_spacing = jwidget_get_text_height(widget);
widget->align(JI_CENTER | JI_MIDDLE);
widget->setAlign(JI_CENTER | JI_MIDDLE);
break;
case JI_TEXTBOX:
@ -394,9 +392,9 @@ void jstandard_theme::init_widget(JWidget widget)
widget->child_spacing = 0;
break;
case JI_WINDOW:
if (!jwindow_is_desktop(widget)) {
if (widget->has_text()) {
case JI_FRAME:
if (!static_cast<Frame*>(widget)->is_desktop()) {
if (widget->hasText()) {
BORDER4(6, 4+jwidget_get_text_height(widget)+6, 6, 6);
#if 1 /* add close button */
if (!(widget->flags & JI_INITIALIZED)) {
@ -406,7 +404,7 @@ void jstandard_theme::init_widget(JWidget widget)
theme_button_msg_proc, NULL);
jwidget_decorative(button, true);
jwidget_add_child(widget, button);
jwidget_set_name(button, "theme_close_button");
button->setName("theme_close_button");
}
#endif
}
@ -481,7 +479,7 @@ int jstandard_theme::color_background()
void jstandard_theme::draw_box(JWidget widget, JRect clip)
{
jdraw_rectfill(clip, BGCOLOR);
jdraw_rectfill(clip, get_bg_color(widget));
}
void jstandard_theme::draw_button(JWidget widget, JRect clip)
@ -529,7 +527,7 @@ void jstandard_theme::draw_button(JWidget widget, JRect clip)
y2 = widget->rc->y2-1;
/* extern background */
rectfill(ji_screen, x1, y1, x2, y2, BGCOLOR);
rectfill(ji_screen, x1, y1, x2, y2, get_bg_color(widget));
/* get bevel info */
jbutton_get_bevel(widget, bevel);
@ -608,7 +606,7 @@ void jstandard_theme::draw_check(JWidget widget, JRect clip)
widget->theme->check_icon_size);
/* background */
jdraw_rectfill(widget->rc, bg = BGCOLOR);
jdraw_rectfill(widget->rc, bg = get_bg_color(widget));
/* mouse */
if (jwidget_is_enabled(widget) && jwidget_has_mouse(widget))
@ -629,14 +627,14 @@ void jstandard_theme::draw_check(JWidget widget, JRect clip)
void jstandard_theme::draw_grid(JWidget widget, JRect clip)
{
jdraw_rectfill(clip, BGCOLOR);
jdraw_rectfill(clip, get_bg_color(widget));
}
void jstandard_theme::draw_entry(JWidget widget, JRect clip)
{
bool password = jentry_is_password(widget);
int scroll, cursor, state, selbeg, selend;
const char *text = widget->text();
const char *text = widget->getText();
int c, ch, x, y, w, fg, bg;
int x1, y1, x2, y2;
int cursor_x;
@ -660,7 +658,7 @@ void jstandard_theme::draw_entry(JWidget widget, JRect clip)
if (jwidget_has_focus (widget))
rect(ji_screen, x1, y1, x2, y2, COLOR_FOREGROUND);
else
rect(ji_screen, x1, y1, x2, y2, BGCOLOR);
rect(ji_screen, x1, y1, x2, y2, get_bg_color(widget));
/* background border */
x1++, y1++, x2--, y2--;
@ -692,14 +690,14 @@ void jstandard_theme::draw_entry(JWidget widget, JRect clip)
fg = COLOR_DISABLED;
}
w = CHARACTER_LENGTH(widget->font(), ch);
w = CHARACTER_LENGTH(widget->getFont(), ch);
if (x+w > widget->rc->x2-3)
return;
cursor_x = x;
ji_font_set_aa_mode(widget->font(), bg >= 0 ? bg: COLOR_BACKGROUND);
widget->font()->vtable->render_char(widget->font(),
ch, fg, bg, ji_screen, x, y);
ji_font_set_aa_mode(widget->getFont(), bg >= 0 ? bg: COLOR_BACKGROUND);
widget->getFont()->vtable->render_char(widget->getFont(),
ch, fg, bg, ji_screen, x, y);
x += w;
/* cursor */
@ -716,7 +714,7 @@ void jstandard_theme::draw_entry(JWidget widget, JRect clip)
void jstandard_theme::draw_label(JWidget widget, JRect clip)
{
int bg = BGCOLOR;
int bg = get_bg_color(widget);
jdraw_rectfill(widget->rc, bg);
@ -756,9 +754,9 @@ void jstandard_theme::draw_listitem(JWidget widget, JRect clip)
x = widget->rc->x1+widget->border_width.l;
y = widget->rc->y1+widget->border_width.t;
if (widget->has_text()) {
if (widget->hasText()) {
/* text */
jdraw_text(widget->font(), widget->text(), x, y, fg, bg, true);
jdraw_text(widget->getFont(), widget->getText(), x, y, fg, bg, true);
/* background */
jrectexclude
@ -777,7 +775,7 @@ void jstandard_theme::draw_listitem(JWidget widget, JRect clip)
void jstandard_theme::draw_menu(JWidget widget, JRect clip)
{
jdraw_rectfill(widget->rc, BGCOLOR);
jdraw_rectfill(widget->rc, get_bg_color(widget));
}
void jstandard_theme::draw_menuitem(JWidget widget, JRect clip)
@ -794,7 +792,7 @@ void jstandard_theme::draw_menuitem(JWidget widget, JRect clip)
/* colors */
if (jwidget_is_disabled(widget)) {
bg = BGCOLOR;
bg = get_bg_color(widget);
fg = -1;
}
else {
@ -807,7 +805,7 @@ void jstandard_theme::draw_menuitem(JWidget widget, JRect clip)
fg = COLOR_FOREGROUND;
}
else {
bg = BGCOLOR;
bg = get_bg_color(widget);
fg = COLOR_FOREGROUND;
}
}
@ -837,9 +835,9 @@ void jstandard_theme::draw_menuitem(JWidget widget, JRect clip)
/* text */
if (bar)
widget->align(JI_CENTER | JI_MIDDLE);
widget->setAlign(JI_CENTER | JI_MIDDLE);
else
widget->align(JI_LEFT | JI_MIDDLE);
widget->setAlign(JI_LEFT | JI_MIDDLE);
pos = jwidget_get_rect(widget);
if (!bar)
@ -875,7 +873,7 @@ void jstandard_theme::draw_menuitem(JWidget widget, JRect clip)
}
/* draw the keyboard shortcut */
else if (jmenuitem_get_accel(widget)) {
int old_align = widget->align();
int old_align = widget->getAlign();
char buf[256];
pos = jwidget_get_rect(widget);
@ -883,9 +881,9 @@ void jstandard_theme::draw_menuitem(JWidget widget, JRect clip)
jaccel_to_string(jmenuitem_get_accel(widget), buf);
widget->align(JI_RIGHT | JI_MIDDLE);
widget->setAlign(JI_RIGHT | JI_MIDDLE);
draw_textstring(buf, fg, bg, false, widget, pos, 0);
widget->align(old_align);
widget->setAlign(old_align);
jrect_free(pos);
}
@ -910,7 +908,7 @@ void jstandard_theme::draw_panel(JWidget widget, JRect clip)
c1 = (JWidget)link->data;
c2 = (JWidget)link->next->data;
if (widget->align() & JI_HORIZONTAL) {
if (widget->getAlign() & JI_HORIZONTAL) {
/* vline(ji_screen, */
/* (c1->pos->x+c1->pos->w+c2->pos->x-1)/2, */
/* widget->rect->y, */
@ -951,7 +949,7 @@ void jstandard_theme::draw_panel(JWidget widget, JRect clip)
void jstandard_theme::draw_radio(JWidget widget, JRect clip)
{
struct jrect box, text, icon;
int bg = BGCOLOR;
int bg = get_bg_color(widget);
jwidget_get_texticon_info(widget, &box, &text, &icon,
ji_generic_button_get_icon_align(widget),
@ -988,23 +986,23 @@ void jstandard_theme::draw_separator(JWidget widget, JRect clip)
y2 = widget->rc->y2 - 1 - widget->border_width.b/2;
/* background */
jdraw_rectfill(widget->rc, BGCOLOR);
jdraw_rectfill(widget->rc, get_bg_color(widget));
/* TOP line */
if (widget->align() & JI_HORIZONTAL) {
if (widget->getAlign() & JI_HORIZONTAL) {
hline(ji_screen, x1, y1-1, x2, COLOR_DISABLED);
hline(ji_screen, x1, y1, x2, COLOR_BACKGROUND);
}
/* LEFT line */
if (widget->align() & JI_VERTICAL) {
if (widget->getAlign() & JI_VERTICAL) {
vline(ji_screen, x1-1, y1, y2, COLOR_DISABLED);
vline(ji_screen, x1, y1, y2, COLOR_BACKGROUND);
}
/* frame */
if ((widget->align() & JI_HORIZONTAL) &&
(widget->align() & JI_VERTICAL)) {
if ((widget->getAlign() & JI_HORIZONTAL) &&
(widget->getAlign() & JI_VERTICAL)) {
/* union between the LEFT and TOP lines */
putpixel(ji_screen, x1-1, y1-1, COLOR_DISABLED);
@ -1021,10 +1019,10 @@ void jstandard_theme::draw_separator(JWidget widget, JRect clip)
}
/* text */
if (widget->has_text()) {
if (widget->hasText()) {
int h = jwidget_get_text_height(widget);
struct jrect r = { x1+h/2, y1-h/2, x2+1-h, y2+1+h };
draw_textstring(NULL, -1, BGCOLOR, false, widget, &r, 0);
draw_textstring(NULL, -1, get_bg_color(widget), false, widget, &r, 0);
}
}
@ -1114,13 +1112,13 @@ void jstandard_theme::draw_slider(JWidget widget, JRect clip)
/* text */
{
std::string old_text = widget->text();
std::string old_text = widget->getText();
int cx1, cy1, cx2, cy2;
JRect r;
usprintf(buf, "%d", value);
widget->set_text_quiet(buf);
widget->setTextQuiet(buf);
r = jrect_new(x1, y1, x2+1, y2+1);
@ -1145,7 +1143,7 @@ void jstandard_theme::draw_slider(JWidget widget, JRect clip)
set_clip(ji_screen, cx1, cy1, cx2, cy2);
widget->set_text_quiet(old_text.c_str());
widget->setTextQuiet(old_text.c_str());
jrect_free(r);
}
}
@ -1185,12 +1183,12 @@ void jstandard_theme::draw_view(JWidget widget, JRect clip)
/* 2nd border */
jrect_shrink(pos, 1);
jdraw_rect(pos, BGCOLOR);
jdraw_rect(pos, get_bg_color(widget));
}
/* background */
jrect_shrink(pos, 1);
jdraw_rectfill(pos, BGCOLOR);
jdraw_rectfill(pos, get_bg_color(widget));
jrect_free(pos);
}
@ -1209,13 +1207,13 @@ void jstandard_theme::draw_view_scrollbar(JWidget widget, JRect clip)
y2 = widget->rc->y2-1;
/* border */
rect(ji_screen, x1, y1, x2, y2, BGCOLOR);
rect(ji_screen, x1, y1, x2, y2, get_bg_color(widget));
/* draw the content */
x1++, y1++, x2--, y2--;
/* horizontal bar */
if (widget->align() & JI_HORIZONTAL) {
if (widget->getAlign() & JI_HORIZONTAL) {
u1 = x1+pos;
v1 = y1;
u2 = x1+pos+len-1;
@ -1232,7 +1230,7 @@ void jstandard_theme::draw_view_scrollbar(JWidget widget, JRect clip)
/* background */
jrectexclude(ji_screen,
x1, y1, x2, y2,
u1, v1, u2, v2, BGCOLOR);
u1, v1, u2, v2, get_bg_color(widget));
/* 1st border */
if (jwidget_is_selected(widget))
@ -1247,30 +1245,30 @@ void jstandard_theme::draw_view_scrollbar(JWidget widget, JRect clip)
if (jwidget_is_enabled(widget) && jwidget_has_mouse(widget))
rectfill(ji_screen, u1, v1, u2, v2, COLOR_HOTFACE);
else
rectfill(ji_screen, u1, v1, u2, v2, BGCOLOR);
rectfill(ji_screen, u1, v1, u2, v2, get_bg_color(widget));
}
void jstandard_theme::draw_view_viewport(JWidget widget, JRect clip)
{
jdraw_rectfill(widget->rc, BGCOLOR);
jdraw_rectfill(widget->rc, get_bg_color(widget));
}
void jstandard_theme::draw_window(JWidget widget, JRect clip)
void jstandard_theme::draw_frame(Frame* frame, JRect clip)
{
JRect pos = jwidget_get_rect(widget);
JRect cpos = jwidget_get_child_rect(widget);
JRect pos = jwidget_get_rect(frame);
JRect cpos = jwidget_get_child_rect(frame);
/* extra lines */
if (!jwindow_is_desktop(widget)) {
// draw window borders
if (!frame->is_desktop()) {
// draw frame borders
jdraw_rect(pos, COLOR_FOREGROUND);
jrect_shrink(pos, 1);
jdraw_rectedge(pos, COLOR_BACKGROUND, COLOR_DISABLED);
jrect_shrink(pos, 1);
jdraw_rectfill(pos, BGCOLOR);
jdraw_rectfill(pos, get_bg_color(frame));
// draw title bar
if (widget->has_text()) {
if (frame->hasText()) {
int bg = COLOR_SELECTED;
jrect_shrink(pos, 1);
@ -1281,15 +1279,15 @@ void jstandard_theme::draw_window(JWidget widget, JRect clip)
jrect_stretch(pos, 1);
jdraw_rectedge(cpos, COLOR_DISABLED, COLOR_BACKGROUND);
jdraw_text(widget->font(), widget->text(),
jdraw_text(frame->getFont(), frame->getText(),
cpos->x1,
pos->y1+jrect_h(pos)/2-text_height(widget->font())/2,
pos->y1+jrect_h(pos)/2-text_height(frame->getFont())/2,
COLOR_BACKGROUND, bg, false);
}
}
/* desktop */
else {
jdraw_rectfill(pos, widget->theme->desktop_color);
jdraw_rectfill(pos, frame->theme->desktop_color);
}
jrect_free(pos);
@ -1309,33 +1307,33 @@ void jstandard_theme::draw_textstring(const char *t, int fg_color, int bg_color,
bool fill_bg, JWidget widget, const JRect rect,
int selected_offset)
{
if (t || widget->has_text()) {
if (t || widget->hasText()) {
int x, y, w, h;
if (!t) {
t = widget->text();
t = widget->getText();
w = jwidget_get_text_length(widget);
h = jwidget_get_text_height(widget);
}
else {
w = ji_font_text_len(widget->font(), t);
h = text_height(widget->font());
w = ji_font_text_len(widget->getFont(), t);
h = text_height(widget->getFont());
}
/* horizontally text alignment */
if (widget->align() & JI_RIGHT)
if (widget->getAlign() & JI_RIGHT)
x = rect->x2 - w;
else if (widget->align() & JI_CENTER)
else if (widget->getAlign() & JI_CENTER)
x = (rect->x1+rect->x2)/2 - w/2;
else
x = rect->x1;
/* vertically text alignment */
if (widget->align() & JI_BOTTOM)
if (widget->getAlign() & JI_BOTTOM)
y = rect->y2 - h;
else if (widget->align() & JI_MIDDLE)
else if (widget->getAlign() & JI_MIDDLE)
y = (rect->y1+rect->y2)/2 - h/2;
else
y = rect->y1;
@ -1357,17 +1355,17 @@ void jstandard_theme::draw_textstring(const char *t, int fg_color, int bg_color,
if (jwidget_is_disabled (widget)) {
/* TODO avoid this */
if (fill_bg) /* only to draw the background */
jdraw_text(widget->font(), t, x, y, 0, bg_color, fill_bg);
jdraw_text(widget->getFont(), t, x, y, 0, bg_color, fill_bg);
/* draw white part */
jdraw_text(widget->font(), t, x+1, y+1,
jdraw_text(widget->getFont(), t, x+1, y+1,
COLOR_BACKGROUND, bg_color, fill_bg);
if (fill_bg)
fill_bg = false;
}
jdraw_text(widget->font(), t, x, y,
jdraw_text(widget->getFont(), t, x, y,
jwidget_is_disabled(widget) ?
COLOR_DISABLED: (fg_color >= 0 ? fg_color :
COLOR_FOREGROUND),

View File

@ -32,8 +32,8 @@
#include "widgets/editor.h"
#define FIXUP_TOP_WINDOW() \
jwindow_remap(app_get_top_window()); \
jwidget_dirty(app_get_top_window());
app_get_top_window()->remap_window(); \
app_get_top_window()->dirty();
JWidget current_editor = NULL;
JWidget box_editors = NULL;

View File

@ -479,7 +479,7 @@ void gui_feedback()
resize_screen();
gui_setup_screen(false);
jwindow_remap(app_get_top_window());
app_get_top_window()->remap_window();
jmanager_refresh_screen();
}
#endif
@ -1086,18 +1086,17 @@ static bool manager_msg_proc(JWidget widget, JMessage msg)
}
// all other keys are only available in the main-window
else {
JWidget child;
JLink link;
JI_LIST_FOR_EACH(widget->children, link) {
child = reinterpret_cast<JWidget>(link->data);
Frame* child = reinterpret_cast<Frame*>(link->data);
/* there are a foreground window executing? */
if (jwindow_is_foreground(child)) {
if (child->is_foreground()) {
break;
}
/* is it the desktop and the top-window= */
else if (jwindow_is_desktop(child) && child == app_get_top_window()) {
else if (child->is_desktop() && child == app_get_top_window()) {
/* ok, so we can execute the command represented by the
pressed-key in the message... */
UIContext::instance()->execute_command(command, shortcut->params);

View File

@ -77,27 +77,27 @@ void gui_setup_screen(bool reload_font);
void reload_default_font();
void load_window_pos(JWidget window, const char *section);
void save_window_pos(JWidget window, const char *section);
void load_window_pos(Widget* window, const char *section);
void save_window_pos(Widget* window, const char *section);
JWidget load_widget(const char *filename, const char *name);
JWidget find_widget(JWidget widget, const char *name);
Widget* load_widget(const char *filename, const char *name);
Widget* find_widget(Widget* widget, const char *name);
void schedule_rebuild_recent_list();
void hook_signal(JWidget widget,
void hook_signal(Widget* widget,
int signal_num,
bool (*signal_handler)(JWidget widget, void *data),
bool (*signal_handler)(Widget* widget, void *data),
void *data);
void get_widgets(JWidget window, ...);
void get_widgets(Widget* window, ...);
void add_gfxicon_to_button(JWidget button, int gfx_id, int icon_align);
void set_gfxicon_in_button(JWidget button, int gfx_id);
void add_gfxicon_to_button(Widget* button, int gfx_id, int icon_align);
void set_gfxicon_in_button(Widget* button, int gfx_id);
JWidget radio_button_new(int radio_group, int b1, int b2, int b3, int b4);
JWidget check_button_new(const char *text, int b1, int b2, int b3, int b4);
/* void change_to_button_style(JWidget widget, int b1, int b2, int b3, int b4); */
Widget* radio_button_new(int radio_group, int b1, int b2, int b3, int b4);
Widget* check_button_new(const char *text, int b1, int b2, int b3, int b4);
/* void change_to_button_style(Widget* widget, int b1, int b2, int b3, int b4); */
//////////////////////////////////////////////////////////////////////
// Keyboard shortcuts
@ -118,47 +118,56 @@ void remove_gui_monitor(Monitor* monitor);
void* get_monitor_data(Monitor* monitor);
//////////////////////////////////////////////////////////////////////
// Smart JWidget pointer
// Smart Widget* pointer
class JWidgetPtr
template<typename T>
class ScopedPtr
{
JWidget m_widget;
T* m_ptr;
// TODO make this class copyable and count references (so this is
// really "smart" pointer)...
JWidgetPtr(const JWidgetPtr&);
JWidgetPtr& operator=(const JWidgetPtr&);
ScopedPtr(const ScopedPtr&);
ScopedPtr& operator=(const ScopedPtr&);
public:
JWidgetPtr() {
m_widget = NULL;
ScopedPtr() {
m_ptr = NULL;
}
explicit JWidgetPtr(JWidget widget) {
m_widget = widget;
explicit ScopedPtr(T* widget) {
m_ptr = widget;
}
~JWidgetPtr() {
delete m_widget;
template<typename T2>
explicit ScopedPtr(T2* widget) {
m_ptr = static_cast<T*>(widget);
}
JWidgetPtr& operator=(JWidget widget) {
if (m_widget)
delete m_widget;
~ScopedPtr() {
delete m_ptr;
}
m_widget = widget;
ScopedPtr& operator=(T* widget) {
if (m_ptr)
delete m_ptr;
m_ptr = widget;
return *this;
}
operator JWidget() {
return m_widget;
operator T*() {
return m_ptr;
}
JWidget operator->() {
assert(m_widget != NULL);
return m_widget;
T* operator->() {
assert(m_ptr != NULL);
return m_ptr;
}
};
typedef ScopedPtr<Widget> WidgetPtr;
typedef ScopedPtr<Frame> FramePtr;
#endif

View File

@ -89,11 +89,10 @@ static int load_root_menu()
if (app_get_menubar())
jmenubar_set_menu(app_get_menubar(), NULL);
/* destroy `root-menu' if it exists */
if (root_menu)
jwidget_free(root_menu);
// destroy `root-menu'
delete root_menu; // widget
/* create a new empty-menu */
// create a new empty-menu
root_menu = NULL;
recent_list_menuitem = NULL;
layer_popup_menu = NULL;
@ -230,7 +229,7 @@ static int load_root_menu()
/* sets the "menu" of the "menu-bar" to the new "root-menu" */
if (app_get_menubar()) {
jmenubar_set_menu(app_get_menubar(), root_menu);
jwindow_remap(app_get_top_window());
app_get_top_window()->remap_window();
jwidget_dirty(app_get_top_window());
}
@ -345,7 +344,7 @@ static void apply_shortcut_to_menuitems_with_command(JWidget menu, Command *comm
JI_LIST_FOR_EACH(children, link) {
menuitem = (JWidget)link->data;
if (jwidget_get_type(menuitem) == JI_MENUITEM) {
if (menuitem->getType() == JI_MENUITEM) {
Command* mi_command = menuitem_get_command(menuitem);
Params* mi_params = menuitem_get_params(menuitem);

View File

@ -492,12 +492,12 @@ void SkinneableTheme::init_widget(JWidget widget)
case JI_SEPARATOR:
/* frame */
if ((widget->align() & JI_HORIZONTAL) &&
(widget->align() & JI_VERTICAL)) {
if ((widget->getAlign() & JI_HORIZONTAL) &&
(widget->getAlign() & JI_VERTICAL)) {
BORDER(4);
}
/* horizontal bar */
else if (widget->align() & JI_HORIZONTAL) {
else if (widget->getAlign() & JI_HORIZONTAL) {
BORDER4(2, 4, 2, 0);
}
/* vertical bar */
@ -505,10 +505,10 @@ void SkinneableTheme::init_widget(JWidget widget)
BORDER4(4, 2, 0, 2);
}
if (widget->has_text()) {
if (widget->align() & JI_TOP)
if (widget->hasText()) {
if (widget->getAlign() & JI_TOP)
widget->border_width.t = jwidget_get_text_height(widget);
else if (widget->align() & JI_BOTTOM)
else if (widget->getAlign() & JI_BOTTOM)
widget->border_width.b = jwidget_get_text_height(widget);
}
break;
@ -519,7 +519,7 @@ void SkinneableTheme::init_widget(JWidget widget)
widget->border_width.r = m_part[PART_SLIDER_EMPTY_E]->w-1;
widget->border_width.b = m_part[PART_SLIDER_EMPTY_S]->h-1;
widget->child_spacing = jwidget_get_text_height(widget);
widget->align(JI_CENTER | JI_MIDDLE);
widget->setAlign(JI_CENTER | JI_MIDDLE);
break;
case JI_TEXTBOX:
@ -545,19 +545,19 @@ void SkinneableTheme::init_widget(JWidget widget)
widget->child_spacing = 0;
break;
case JI_WINDOW:
if (!jwindow_is_desktop(widget)) {
if (widget->has_text()) {
case JI_FRAME:
if (!static_cast<Frame*>(widget)->is_desktop()) {
if (widget->hasText()) {
BORDER4(6, 4+jwidget_get_text_height(widget)+6, 6, 6);
#if 1 /* add close button */
if (!(widget->flags & JI_INITIALIZED)) {
JWidget button = jbutton_new("");
jbutton_set_bevel(button, 0, 0, 0, 0);
jwidget_add_hook(button, JI_WIDGET,
&SkinneableTheme::theme_window_button_msg_proc, NULL);
&SkinneableTheme::theme_frame_button_msg_proc, NULL);
jwidget_decorative(button, true);
jwidget_add_child(widget, button);
jwidget_set_name(button, "theme_close_button");
button->setName("theme_close_button");
}
#endif
}
@ -569,7 +569,7 @@ void SkinneableTheme::init_widget(JWidget widget)
BORDER(0);
}
widget->child_spacing = 4;
widget->bg_color(get_window_face_color());
widget->setBgColor(get_window_face_color());
break;
default:
@ -766,7 +766,7 @@ void SkinneableTheme::draw_entry(JWidget widget, JRect clip)
{
bool password = jentry_is_password(widget);
int scroll, cursor, state, selbeg, selend;
const char *text = widget->text();
const char *text = widget->getText();
int c, ch, x, y, w, fg, bg;
int x1, y1, x2, y2;
int cursor_x;
@ -811,14 +811,14 @@ void SkinneableTheme::draw_entry(JWidget widget, JRect clip)
fg = COLOR_DISABLED;
}
w = CHARACTER_LENGTH(widget->font(), ch);
w = CHARACTER_LENGTH(widget->getFont(), ch);
if (x+w > widget->rc->x2-3)
return;
cursor_x = x;
ji_font_set_aa_mode(widget->font(), bg >= 0 ? bg: COLOR_BACKGROUND);
widget->font()->vtable->render_char(widget->font(),
ch, fg, bg, ji_screen, x, y);
ji_font_set_aa_mode(widget->getFont(), bg >= 0 ? bg: COLOR_BACKGROUND);
widget->getFont()->vtable->render_char(widget->getFont(),
ch, fg, bg, ji_screen, x, y);
x += w;
/* cursor */
@ -868,9 +868,9 @@ void SkinneableTheme::draw_listitem(JWidget widget, JRect clip)
x = widget->rc->x1+widget->border_width.l;
y = widget->rc->y1+widget->border_width.t;
if (widget->has_text()) {
if (widget->hasText()) {
/* text */
jdraw_text(widget->font(), widget->text(), x, y, fg, bg, true);
jdraw_text(widget->getFont(), widget->getText(), x, y, fg, bg, true);
/* background */
jrectexclude
@ -946,9 +946,9 @@ void SkinneableTheme::draw_menuitem(JWidget widget, JRect clip)
/* text */
if (bar)
widget->align(JI_CENTER | JI_MIDDLE);
widget->setAlign(JI_CENTER | JI_MIDDLE);
else
widget->align(JI_LEFT | JI_MIDDLE);
widget->setAlign(JI_LEFT | JI_MIDDLE);
pos = jwidget_get_rect(widget);
if (!bar)
@ -984,7 +984,7 @@ void SkinneableTheme::draw_menuitem(JWidget widget, JRect clip)
}
/* draw the keyboard shortcut */
else if (jmenuitem_get_accel(widget)) {
int old_align = widget->align();
int old_align = widget->getAlign();
char buf[256];
pos = jwidget_get_rect(widget);
@ -992,9 +992,9 @@ void SkinneableTheme::draw_menuitem(JWidget widget, JRect clip)
jaccel_to_string(jmenuitem_get_accel(widget), buf);
widget->align(JI_RIGHT | JI_MIDDLE);
widget->setAlign(JI_RIGHT | JI_MIDDLE);
draw_textstring(buf, fg, bg, false, widget, pos, 0);
widget->align(old_align);
widget->setAlign(old_align);
jrect_free(pos);
}
@ -1058,7 +1058,7 @@ void SkinneableTheme::draw_separator(JWidget widget, JRect clip)
// background
jdraw_rectfill(widget->rc, BGCOLOR);
if (widget->align() & JI_HORIZONTAL) {
if (widget->getAlign() & JI_HORIZONTAL) {
draw_hline(widget->rc->x1,
widget->rc->y1,
widget->rc->x2-1,
@ -1066,7 +1066,7 @@ void SkinneableTheme::draw_separator(JWidget widget, JRect clip)
}
// text
if (widget->has_text()) {
if (widget->hasText()) {
int h = jwidget_get_text_height(widget);
struct jrect r = { x1+h/2, y1-h/2, x2+1-h, y2+1+h };
draw_textstring(NULL, -1, BGCOLOR, false, widget, &r, 0);
@ -1130,13 +1130,13 @@ void SkinneableTheme::draw_slider(JWidget widget, JRect clip)
/* text */
{
std::string old_text = widget->text();
std::string old_text = widget->getText();
int cx1, cy1, cx2, cy2;
JRect r;
usprintf(buf, "%d", value);
widget->set_text_quiet(buf);
widget->setTextQuiet(buf);
r = jrect_new(x1, y1, x2+1, y2+1);
@ -1163,7 +1163,7 @@ void SkinneableTheme::draw_slider(JWidget widget, JRect clip)
set_clip(ji_screen, cx1, cy1, cx2, cy2);
widget->set_text_quiet(old_text.c_str());
widget->setTextQuiet(old_text.c_str());
jrect_free(r);
}
}
@ -1172,7 +1172,7 @@ void SkinneableTheme::draw_combobox_entry(JWidget widget, JRect clip)
{
bool password = jentry_is_password(widget);
int scroll, cursor, state, selbeg, selend;
const char *text = widget->text();
const char *text = widget->getText();
int c, ch, x, y, w, fg, bg;
int x1, y1, x2, y2;
int cursor_x;
@ -1217,14 +1217,14 @@ void SkinneableTheme::draw_combobox_entry(JWidget widget, JRect clip)
fg = COLOR_DISABLED;
}
w = CHARACTER_LENGTH(widget->font(), ch);
w = CHARACTER_LENGTH(widget->getFont(), ch);
if (x+w > widget->rc->x2-3)
return;
cursor_x = x;
ji_font_set_aa_mode(widget->font(), bg >= 0 ? bg: COLOR_BACKGROUND);
widget->font()->vtable->render_char(widget->font(),
ch, fg, bg, ji_screen, x, y);
ji_font_set_aa_mode(widget->getFont(), bg >= 0 ? bg: COLOR_BACKGROUND);
widget->getFont()->vtable->render_char(widget->getFont(),
ch, fg, bg, ji_screen, x, y);
x += w;
/* cursor */
@ -1324,7 +1324,7 @@ void SkinneableTheme::draw_view_scrollbar(JWidget widget, JRect clip)
x1++, y1++, x2--, y2--;
/* horizontal bar */
if (widget->align() & JI_HORIZONTAL) {
if (widget->getAlign() & JI_HORIZONTAL) {
u1 = x1+pos;
v1 = y1;
u2 = x1+pos+len-1;
@ -1364,14 +1364,14 @@ void SkinneableTheme::draw_view_viewport(JWidget widget, JRect clip)
jdraw_rectfill(widget->rc, BGCOLOR);
}
void SkinneableTheme::draw_window(JWidget widget, JRect clip)
void SkinneableTheme::draw_frame(Frame* window, JRect clip)
{
JRect pos = jwidget_get_rect(widget);
JRect cpos = jwidget_get_child_rect(widget);
JRect pos = jwidget_get_rect(window);
JRect cpos = jwidget_get_child_rect(window);
if (!jwindow_is_desktop(widget)) {
if (!window->is_desktop()) {
// window frame
if (widget->has_text()) {
if (window->hasText()) {
draw_bounds(pos->x1,
pos->y1,
pos->x2-1,
@ -1381,9 +1381,9 @@ void SkinneableTheme::draw_window(JWidget widget, JRect clip)
pos->y2 = cpos->y1;
// titlebar
jdraw_text(widget->font(), widget->text(),
jdraw_text(window->getFont(), window->getText(),
cpos->x1,
pos->y1+jrect_h(pos)/2-text_height(widget->font())/2,
pos->y1+jrect_h(pos)/2-text_height(window->getFont())/2,
COLOR_BACKGROUND, -1, false);
}
// menubox
@ -1397,18 +1397,18 @@ void SkinneableTheme::draw_window(JWidget widget, JRect clip)
}
// desktop
else {
jdraw_rectfill(pos, widget->theme->desktop_color);
jdraw_rectfill(pos, window->theme->desktop_color);
}
jrect_free(pos);
jrect_free(cpos);
}
void SkinneableTheme::draw_window_button(JWidget widget, JRect clip)
void SkinneableTheme::draw_frame_button(JWidget widget, JRect clip)
{
int part;
if (widget->selected())
if (widget->isSelected())
part = PART_WINDOW_CLOSE_BUTTON_SELECTED;
else if (jwidget_has_mouse(widget))
part = PART_WINDOW_CLOSE_BUTTON_HOT;
@ -1431,33 +1431,33 @@ void SkinneableTheme::draw_textstring(const char *t, int fg_color, int bg_color,
bool fill_bg, JWidget widget, const JRect rect,
int selected_offset)
{
if (t || widget->has_text()) {
if (t || widget->hasText()) {
int x, y, w, h;
if (!t) {
t = widget->text();
t = widget->getText();
w = jwidget_get_text_length(widget);
h = jwidget_get_text_height(widget);
}
else {
w = ji_font_text_len(widget->font(), t);
h = text_height(widget->font());
w = ji_font_text_len(widget->getFont(), t);
h = text_height(widget->getFont());
}
/* horizontally text alignment */
if (widget->align() & JI_RIGHT)
if (widget->getAlign() & JI_RIGHT)
x = rect->x2 - w;
else if (widget->align() & JI_CENTER)
else if (widget->getAlign() & JI_CENTER)
x = (rect->x1+rect->x2)/2 - w/2;
else
x = rect->x1;
/* vertically text alignment */
if (widget->align() & JI_BOTTOM)
if (widget->getAlign() & JI_BOTTOM)
y = rect->y2 - h;
else if (widget->align() & JI_MIDDLE)
else if (widget->getAlign() & JI_MIDDLE)
y = (rect->y1+rect->y2)/2 - h/2;
else
y = rect->y1;
@ -1479,17 +1479,17 @@ void SkinneableTheme::draw_textstring(const char *t, int fg_color, int bg_color,
if (jwidget_is_disabled (widget)) {
/* TODO avoid this */
if (fill_bg) /* only to draw the background */
jdraw_text(widget->font(), t, x, y, 0, bg_color, fill_bg);
jdraw_text(widget->getFont(), t, x, y, 0, bg_color, fill_bg);
/* draw white part */
jdraw_text(widget->font(), t, x+1, y+1,
jdraw_text(widget->getFont(), t, x+1, y+1,
COLOR_BACKGROUND, bg_color, fill_bg);
if (fill_bg)
fill_bg = false;
}
jdraw_text(widget->font(), t, x, y,
jdraw_text(widget->getFont(), t, x, y,
jwidget_is_disabled(widget) ?
COLOR_DISABLED: (fg_color >= 0 ? fg_color :
COLOR_FOREGROUND),
@ -1622,7 +1622,7 @@ void SkinneableTheme::less_bevel(int *bevel)
}
/* controls the "X" button in a window to close it */
bool SkinneableTheme::theme_window_button_msg_proc(JWidget widget, JMessage msg)
bool SkinneableTheme::theme_frame_button_msg_proc(JWidget widget, JMessage msg)
{
switch (msg->type) {
@ -1631,7 +1631,7 @@ bool SkinneableTheme::theme_window_button_msg_proc(JWidget widget, JMessage msg)
return true;
case JM_DRAW:
((SkinneableTheme*)widget->theme)->draw_window_button(widget, &msg->draw.rect);
((SkinneableTheme*)widget->theme)->draw_frame_button(widget, &msg->draw.rect);
return true;
case JM_KEYPRESSED:

View File

@ -321,8 +321,8 @@ public:
void draw_view(JWidget widget, JRect clip);
void draw_view_scrollbar(JWidget widget, JRect clip);
void draw_view_viewport(JWidget widget, JRect clip);
void draw_window(JWidget widget, JRect clip);
void draw_window_button(JWidget widget, JRect clip);
void draw_frame(Frame* frame, JRect clip);
void draw_frame_button(JWidget widget, JRect clip);
int get_button_normal_text_color() const { return makecol(0, 0, 0); }
int get_button_normal_face_color() const { return makecol(198, 198, 198); }
@ -387,7 +387,7 @@ private:
void draw_bevel_box(int x1, int y1, int x2, int y2, int c1, int c2, int *bevel);
void less_bevel(int *bevel);
static bool theme_window_button_msg_proc(JWidget widget, JMessage msg);
static bool theme_frame_button_msg_proc(JWidget widget, JMessage msg);
static bool theme_combobox_button_msg_proc(JWidget widget, JMessage msg);
};

View File

@ -62,7 +62,7 @@ int main(int argc, char *argv[])
/* create a simple centered label with "Hello World!" text */
label = jlabel_new("Hello World!");
jwidget_set_align(label, JI_CENTER | JI_MIDDLE);
label->set_align(JI_CENTER | JI_MIDDLE);
/* create a button to close the window */
button = jbutton_new("&Close");
@ -77,7 +77,7 @@ int main(int argc, char *argv[])
/* show the window in the screen and leave it in the background (the
manager will free it) */
jwindow_open_bg(window);
window->open_window_bg();
/* run windows */
jmanager_run(manager);

View File

@ -61,7 +61,7 @@ int main (int argc, char *argv[])
button_ok = jbutton_new ("&OK");
button_cancel = jbutton_new ("&Cancel");
jwidget_set_align (label, JI_CENTER | JI_MIDDLE);
label->set_align(JI_CENTER | JI_MIDDLE);
jwidget_expansive (label, TRUE);
jwidget_add_child (window, box1);
@ -70,7 +70,7 @@ int main (int argc, char *argv[])
jwidget_add_child (box2, button_ok);
jwidget_add_child (box2, button_cancel);
jwindow_open_bg (window);
window->open_window_bg();
jmanager_run (manager);
jmanager_free (manager);

View File

@ -59,10 +59,10 @@ int main (int argc, char *argv[])
label3 = jlabel_new ("&Right Bottom");
label4 = jlabel_new ("&Disabled");
jwidget_set_align (label1, JI_LEFT | JI_TOP);
jwidget_set_align (label2, JI_CENTER | JI_MIDDLE);
jwidget_set_align (label3, JI_RIGHT | JI_BOTTOM);
jwidget_set_align (label4, JI_CENTER | JI_BOTTOM);
label1->set_align(JI_LEFT | JI_TOP);
label2->set_align(JI_CENTER | JI_MIDDLE);
label3->set_align(JI_RIGHT | JI_BOTTOM);
label4->set_align(JI_CENTER | JI_BOTTOM);
jwidget_disable (label4);
@ -72,7 +72,7 @@ int main (int argc, char *argv[])
jwidget_add_child (box, label3);
jwidget_add_child (box, label4);
jwindow_open_bg (window);
window->open_window_bg();
jmanager_run (manager);
jmanager_free (manager);

View File

@ -80,7 +80,7 @@ int main(int argc, char *argv[])
slider1, slider2, slider3,
slider4, slider5, button1, NULL);
jwindow_open_bg(window);
window->open_window_bg();
jmanager_run(manager);
jmanager_free(manager);

View File

@ -84,7 +84,7 @@ int main (int argc, char *argv[])
jwidget_add_child (box5, button1);
jwidget_add_child (box5, button2);
jwindow_open_bg (window1);
window1->open_window_bg();
jmanager_run (manager);
jmanager_free (manager);
return 0;

View File

@ -66,7 +66,7 @@ int main (int argc, char *argv[])
jwidget_add_children(box1, box2, button, NULL);
jwidget_add_children(box2, view1, view2, NULL);
jwindow_open_bg (window);
window->open_window_bg();
jmanager_run (manager);
jmanager_free (manager);

View File

@ -86,7 +86,7 @@ void do_text(const char *title, int align)
jwidget_add_child(box1, button);
jwidget_add_child(window, box1);
jwindow_open_bg(window);
window->open_window_bg();
}
int main(int argc, char *argv[])

View File

@ -93,10 +93,10 @@ JRect test1()
jwidget_add_child (box, listbox);
jwidget_add_child (box, button);
jwindow_center(window);
window->center_window();
pos = jwidget_get_rect(window);
jwindow_open_fg(window);
window->open_window_fg();
jwidget_free(window);
return pos;
@ -129,10 +129,10 @@ void test2(JRect pos)
jwidget_add_child (box, view);
jwidget_add_child (box, button);
jwindow_remap(window);
window->remap_window();
jwidget_set_rect(window, pos);
jwindow_open_fg(window);
window->open_window_fg();
jwidget_free(window);
}
@ -163,10 +163,10 @@ void test3(JRect pos)
jwidget_add_child (box, view);
jwidget_add_child (box, button);
jwindow_remap(window);
window->remap_window();
jwidget_set_rect(window, pos);
jwindow_open_fg(window);
window->open_window_fg();
jwidget_free(window);
}
@ -199,9 +199,9 @@ void test4(JRect pos)
jwidget_add_child (box, view);
jwidget_add_child (box, button);
jwindow_remap(window);
window->remap_window();
jwidget_set_rect(window, pos);
jwindow_open_fg(window);
window->open_window_fg();
jwidget_free(window);
}

View File

@ -108,7 +108,7 @@ int main (int argc, char *argv[])
jwidget_expansive (check, TRUE);
update_radios ();
jwindow_open_bg (window);
window->open_window_bg();
jmanager_run (manager);
jmanager_free (manager);
return 0;
@ -162,7 +162,7 @@ static bool hooked_check_msg_proc (JWidget widget, JMessage msg)
}
if (text_align != jwidget_get_align(check))
jwidget_set_align(check, text_align);
check->set_align(text_align);
if (icon_align != ji_generic_button_get_icon_align(check))
ji_generic_button_set_icon_align(check, icon_align);

View File

@ -59,7 +59,7 @@ int main (int argc, char *argv[])
if (window) {
JWidget button_poll = jwidget_find_name (window, "Poll");
jbutton_add_command (button_poll, poll_button);
jwindow_open_bg (window);
window->open_window_bg();
}
else
jalert ("Error loading main window||&OK");
@ -83,9 +83,9 @@ static void poll_button (JWidget widget)
if (window) {
JWidget button_select = jwidget_find_name (window, "Select");
jwindow_open_fg (window);
window->open_window_fg();
if (jwindow_get_killer (window) == button_select) {
if (window->get_killer() == button_select) {
JWidget option1 = jwidget_find_name (window, "Option1");
JWidget option2 = jwidget_find_name (window, "Option2");
JWidget option3 = jwidget_find_name (window, "Option3");

View File

@ -85,7 +85,7 @@ int main (int argc, char *argv[])
jwidget_add_child (box, menubar);
jwidget_add_child (box, button);
jwindow_open_bg (window);
window->open_window_bg();
jmanager_run (manager);
jmanager_free (manager);

View File

@ -132,7 +132,7 @@ int main(int argc, char *argv[])
jwidget_add_child(box1, button);
jwidget_add_child(window, box1);
jwindow_open_bg(window);
window->open_window_bg();
jmanager_run(manager);
jmanager_free(manager);

View File

@ -34,8 +34,9 @@
int main (int argc, char *argv[])
{
JWidget manager, desktop, box, view, sub_manager, button, window;
JWidget subwindows[256];
JWidget manager, desktop, box, view, sub_manager, button;
Window* subwindows[256];
Window* window;
char buf[256];
int c;
@ -69,7 +70,7 @@ int main (int argc, char *argv[])
jwidget_add_child(box, view);
jwidget_add_child(box, button);
jwindow_open_bg(desktop);
desktop->open_window_bg();
/* generate 128 windows in random positions */
for (c=0; c<128; c++) {
@ -80,7 +81,7 @@ int main (int argc, char *argv[])
jwidget_add_child(window, button);
jwindow_remap(window);
window->remap_window();
jwindow_position
(window,
sub_manager->rc->x1 + (rand () % (jrect_w(sub_manager->rc) - jrect_w(window->rc))),

View File

@ -85,7 +85,7 @@ int main (int argc, char *argv[])
jwidget_add_child (box1, button5);
jwidget_add_child (window1, box1);
jwindow_open_bg(window1);
window1->open_window_bg();
jmanager_run(manager);
jlist_free(windows);
@ -97,12 +97,12 @@ END_OF_MAIN();
static JWidget my_button_new(const char *text, int color)
{
JWidget widget = jbutton_new (text);
JWidget widget = jbutton_new(text);
widget->user_data[0] = (void *)color;
jwidget_add_hook (widget, JI_WIDGET, my_button_msg_proc, NULL);
jwidget_set_align (widget, JI_LEFT | JI_BOTTOM);
jwidget_add_hook(widget, JI_WIDGET, my_button_msg_proc, NULL);
widget->set_align(JI_LEFT | JI_BOTTOM);
return widget;
}
@ -174,7 +174,7 @@ static bool my_button_msg_proc(JWidget widget, JMessage msg)
jlist_append(windows, alert);
jwidget_add_hook(alert, JI_WIDGET, hooked_window_bg_msg_proc, NULL);
jwindow_open_bg(alert);
alert->open_window_bg();
/* return TRUE to avoid close the window */
return TRUE;
@ -199,7 +199,7 @@ static void new_palette_window(JWidget widget)
jlist_append(windows, window);
jwidget_add_hook(window, JI_WIDGET, hooked_window_bg_msg_proc, NULL);
jwindow_open_bg(window);
window->open_window_bg();
}
static bool hooked_window1_msg_proc(JWidget widget, JMessage msg)
@ -207,7 +207,7 @@ static bool hooked_window1_msg_proc(JWidget widget, JMessage msg)
if (msg->type == JM_CLOSE) {
JLink link, next;
JI_LIST_FOR_EACH_SAFE(windows, link, next) /* close all windows */
jwindow_close(reinterpret_cast<JWidget>(link->data), NULL);
reinterpret_cast<Window*>(link->data)->close_window(NULL);
}
return FALSE;
}

View File

@ -166,7 +166,7 @@ JTheme my_theme_new()
jtheme_set_method(theme, JI_BOX, theme_draw_box);
jtheme_set_method(theme, JI_BUTTON, theme_draw_button);
jtheme_set_method(theme, JI_LABEL, theme_draw_label);
jtheme_set_method(theme, JI_WINDOW, theme_draw_window);
jtheme_set_method(theme, JI_FRAME, theme_draw_frame);
return theme;
}
@ -207,7 +207,7 @@ static void theme_init_widget(JWidget widget)
widget->child_spacing = 0;
break;
case JI_WINDOW:
case JI_FRAME:
BORDER4(8, 12+jwidget_get_text_height(widget)+12, 8, 8);
widget->child_spacing = 1;
break;

View File

@ -106,9 +106,9 @@ int main(int argc, char *argv[])
jwindow_sizeable(window, FALSE);
again:;
jwindow_open_fg(window);
window->open_window_fg();
if (jwindow_get_killer(window) == button1) {
if (window->get_killer() == button1) {
if (*jwidget_get_text(entry_username) &&
*jwidget_get_text(entry_password))
jalert("Login Successful"
@ -202,7 +202,7 @@ JTheme my_theme_new()
jtheme_set_method(theme, JI_BUTTON, theme_draw_button);
jtheme_set_method(theme, JI_ENTRY, theme_draw_entry);
jtheme_set_method(theme, JI_LABEL, theme_draw_label);
jtheme_set_method(theme, JI_WINDOW, theme_draw_window);
jtheme_set_method(theme, JI_FRAME, theme_draw_frame);
return theme;
}
@ -248,7 +248,7 @@ static void theme_init_widget(JWidget widget)
widget->child_spacing = 0;
break;
case JI_WINDOW:
case JI_FRAME:
BORDER4(7, 7+jwidget_get_text_height(widget)+7, 7, 7);
widget->child_spacing = 1;
break;

View File

@ -70,7 +70,7 @@ int main (int argc, char *argv[])
jwidget_add_child(box, button1);
jwidget_add_child(box, button2);
jwindow_open_bg(window);
window->open_window_bg();
jmanager_run(manager);
jmanager_free(manager);
@ -143,7 +143,7 @@ static bool tip_hook(JWidget widget, JMessage msg)
JWidget window = tip_window_new(tip->text);
int w = jrect_w(window->rc);
int h = jrect_h(window->rc);
jwindow_remap(window);
window->remap_window();
jwindow_position(window,
MID(0, jmouse_x(0)-w/2, JI_SCREEN_W-w),
MID(0, jmouse_y(0)-h/2, JI_SCREEN_H-h));
@ -165,7 +165,7 @@ static JWidget tip_window_new(const char *text)
jwindow_sizeable(window, FALSE);
jwindow_moveable(window, FALSE);
jwidget_set_align(window, JI_CENTER | JI_MIDDLE);
window->set_align(JI_CENTER | JI_MIDDLE);
/* remove decorative widgets */
JI_LIST_FOR_EACH_SAFE(window->children, link, next) {
@ -194,7 +194,7 @@ static bool tip_window_hook(JWidget widget, JMessage msg)
case JM_MOUSELEAVE:
case JM_BUTTONPRESSED:
jwindow_close(widget, NULL);
widget->close_window(NULL);
break;
case JM_DRAW: {

View File

@ -87,7 +87,7 @@ int main (int argc, char *argv[])
jwidget_add_children(box1, label1, combobox1, label2, combobox2, box2, 0);
jwidget_add_children(box2, button_ok, button_cancel, 0);
jwindow_open_bg(window);
window->open_window_bg();
jmanager_run(manager);
jmanager_free(manager);

View File

@ -35,7 +35,8 @@
int main (int argc, char *argv[])
{
JWidget manager1, manager2, manager3, window1, window2, window3;
JWidget manager1, manager2, manager3;
Window* window1, *window2, *window3;
JWidget view2, view3;
JRect rect;
@ -69,9 +70,9 @@ int main (int argc, char *argv[])
jwidget_add_child(window1, view2);
jwidget_add_child(window2, view3);
jwindow_remap(window1);
jwindow_remap(window2);
jwindow_remap(window3);
window1->remap_window();
window2->remap_window();
window3->remap_window();
rect = jrect_new(JI_SCREEN_W/2-100, JI_SCREEN_H/2-70,
JI_SCREEN_W/2+100, JI_SCREEN_H/2+70);
@ -88,7 +89,7 @@ int main (int argc, char *argv[])
jwidget_set_rect(window3, rect);
jrect_free(rect);
jwindow_open_bg(window1);
window1->open_window_bg();
_jmanager_open_window(manager2, window2);
_jmanager_open_window(manager3, window3);

View File

@ -87,7 +87,7 @@ int main(int argc, char *argv[])
jwidget_add_child(vbox, button);
jwidget_add_child(window, vbox);
jwindow_open_bg(window);
window->open_window_bg();
jmanager_run(manager);
jmanager_free(manager);

View File

@ -79,7 +79,7 @@ int main(int argc, char *argv[])
jwidget_add_child(window, grid);
}
jwindow_open_bg(window);
window->open_window_bg();
jmanager_run(manager);
jmanager_free(manager);

View File

@ -56,10 +56,10 @@ typedef enum {
HOTCOLOR_GRADIENT = 0,
} hotcolor_t;
typedef struct ColorBar
struct ColorBar
{
JWidget widget;
JWidget tooltip_window;
Widget* widget;
Frame* tooltip_window;
int ncolor;
int refresh_timer_id;
color_t color[COLORBAR_MAX_COLORS];
@ -70,7 +70,7 @@ typedef struct ColorBar
/* drag & drop colors */
hotcolor_t hot_drag;
hotcolor_t hot_drop;
} ColorBar;
};
static ColorBar *colorbar_data(JWidget colorbar);
@ -89,7 +89,7 @@ static void get_info(JWidget widget, int *beg, int *end);
JWidget colorbar_new(int align)
{
JWidget widget = new jwidget(colorbar_type());
Widget* widget = new Widget(colorbar_type());
ColorBar *colorbar = jnew0(ColorBar, 1);
colorbar->widget = widget;
@ -104,8 +104,8 @@ JWidget colorbar_new(int align)
colorbar->hot_drop = HOTCOLOR_NONE;
jwidget_add_hook(widget, colorbar_type(), colorbar_msg_proc, colorbar);
jwidget_focusrest(widget, TRUE);
jwidget_set_align(widget, align);
jwidget_focusrest(widget, true);
widget->setAlign(align);
widget->border_width.l = 2;
widget->border_width.t = 2;
@ -320,7 +320,7 @@ static bool colorbar_msg_proc(JWidget widget, JMessage msg)
color_get_green(imgtype, colorbar->fgcolor),
color_get_blue(imgtype, colorbar->fgcolor));
textout_ex(doublebuffer, widget->font(), "FG",
textout_ex(doublebuffer, widget->getFont(), "FG",
x1+4, v1+2, neg, -1);
}
@ -329,8 +329,8 @@ static bool colorbar_msg_proc(JWidget widget, JMessage msg)
color_get_green(imgtype, colorbar->bgcolor),
color_get_blue(imgtype, colorbar->bgcolor));
textout_ex(doublebuffer, widget->font(), "BG",
x2-3-text_length(widget->font(), "BG"),
textout_ex(doublebuffer, widget->getFont(), "BG",
x2-3-text_length(widget->getFont(), "BG"),
v2-jwidget_get_text_height(widget), neg, -1);
}
}
@ -580,12 +580,12 @@ static void colorbar_open_tooltip(JWidget widget, int x1, int x2, int y1, int y2
color_t color, hotcolor_t hot)
{
ColorBar *colorbar = colorbar_data(widget);
JWidget window;
Frame* window;
char buf[1024]; /* TODO warning buffer overflow */
int x, y;
if (colorbar->tooltip_window == NULL) {
window = colorselector_new(TRUE);
window = colorselector_new(true);
window->user_data[0] = widget;
jwidget_add_hook(window, -1, tooltip_window_msg_proc, NULL);
@ -617,12 +617,12 @@ static void colorbar_open_tooltip(JWidget widget, int x1, int x2, int y1, int y2
usprintf(buf, _("Gradient Entry %d"), colorbar->hot);
break;
}
jwidget_set_text(window, buf);
window->setText(buf);
colorselector_set_color(window, color);
colorbar->hot_editing = hot;
jwindow_open(window);
window->open_window();
/* window position */
if (x2+jrect_w(window->rc) <= JI_SCREEN_W)
@ -634,7 +634,7 @@ static void colorbar_open_tooltip(JWidget widget, int x1, int x2, int y1, int y2
x = MID(0, x, JI_SCREEN_W-jrect_w(window->rc));
y = MID(widget->rc->y1, y, widget->rc->y2-jrect_h(window->rc));
jwindow_position(window, x, y);
window->position_window(x, y);
jmanager_dispatch_messages(jwidget_get_manager(window));
jwidget_relayout(window);
@ -656,7 +656,7 @@ static void colorbar_open_tooltip(JWidget widget, int x1, int x2, int y1, int y2
jrect_free(rc2);
jrect_free(rc);
jtooltip_window_set_hotregion(window, rgn);
static_cast<TipWindow*>(window)->set_hotregion(rgn);
}
}
@ -666,7 +666,7 @@ static void colorbar_close_tooltip(JWidget widget)
if (colorbar->tooltip_window != NULL) {
/* close the widget */
jwindow_close(colorbar->tooltip_window, NULL);
colorbar->tooltip_window->closeWindow(NULL);
/* dispatch the JM_CLOSE event to 'tooltip_window_msg_proc' */
jmanager_dispatch_messages(jwidget_get_manager(widget));

Some files were not shown because too many files have changed in this diff Show More