mirror of
https://github.com/aseprite/aseprite.git
synced 2024-10-03 05:22:23 +00:00
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:
parent
13c87691b9
commit
77c009de55
56
src/app.cpp
56
src/app.cpp
@ -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;
|
||||
|
12
src/app.h
12
src/app.h
@ -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();
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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));
|
||||
|
@ -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
|
||||
|
@ -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? */
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
@ -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"
|
||||
|
@ -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));
|
||||
|
@ -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);
|
||||
|
@ -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");
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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) {
|
||||
|
@ -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;
|
||||
|
@ -65,6 +65,7 @@ CommandsModule::~CommandsModule()
|
||||
|
||||
CommandsModule* CommandsModule::instance()
|
||||
{
|
||||
assert(m_instance != NULL);
|
||||
return m_instance;
|
||||
}
|
||||
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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) {
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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));
|
||||
}
|
||||
|
@ -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());
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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 {
|
||||
|
@ -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));
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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));
|
||||
|
@ -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"
|
||||
|
@ -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 */
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
};
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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);
|
||||
|
||||
};
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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),
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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:
|
||||
|
@ -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);
|
||||
|
||||
};
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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[])
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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");
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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))),
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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: {
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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
Loading…
Reference in New Issue
Block a user