Class: Wads::SingleSelectTable
- Defined in:
- lib/wads/widgets.rb
Overview
A table where the user can select one row at a time. The selected row has a background color specified by the selection color of the current theme.
Instance Attribute Summary collapse
-
#selected_row ⇒ Object
Returns the value of attribute selected_row.
Attributes inherited from Table
#can_delete_rows, #current_row, #data_rows, #headers, #max_visible_rows, #row_colors
Attributes inherited from Widget
#base_z, #children, #gui_theme, #height, #is_selected, #layout, #overlay_widget, #override_color, #text_input_fields, #visible, #width, #x, #y
Instance Method Summary collapse
- #handle_mouse_down(mouse_x, mouse_y) ⇒ Object
-
#initialize(x, y, width, height, headers, max_visible_rows = 10, args = {}) ⇒ SingleSelectTable
constructor
A new instance of SingleSelectTable.
- #is_row_selected(mouse_y) ⇒ Object
- #render ⇒ Object
- #set_selected_row(mouse_y, column_number) ⇒ Object
- #unset_selected_row(mouse_y, column_number) ⇒ Object
- #widget_z ⇒ Object
Methods inherited from Table
#add_row, #add_table_delete_button, #clear_rows, #determine_row_number, #handle_update, #number_of_rows, #remove_table_delete_button, #scroll_down, #scroll_up, #uses_layout
Methods inherited from Widget
#add, #add_axis_lines, #add_button, #add_child, #add_delete_button, #add_document, #add_graph_display, #add_image, #add_multi_select_table, #add_overlay, #add_panel, #add_plot, #add_single_select_table, #add_table, #add_text, #border_color, #bottom_edge, #button_down, #button_up, #center_children, #center_x, #center_y, #clear_children, #contains_click, #debug, #disable_background, #disable_border, #draw, #draw_background, #draw_border, #enable_background, #enable_border, #error, #get_layout, #get_theme, #graphics_color, #handle_key_held_down, #handle_key_press, #handle_key_up, #handle_mouse_up, #handle_right_mouse, #handle_update, #info, #intercept_widget_event, #left_edge, #move_recursive_absolute, #move_recursive_delta, #overlaps_with, #pad, #relative_x, #relative_y, #relative_z_order, #remove_child, #remove_children, #remove_children_by_type, #right_edge, #selection_color, #set_absolute_position, #set_dimensions, #set_layout, #set_selected, #set_theme, #text_color, #top_edge, #unset_selected, #update, #uses_layout, #warn, #x_pixel_to_screen, #y_pixel_to_screen, #z_order
Constructor Details
#initialize(x, y, width, height, headers, max_visible_rows = 10, args = {}) ⇒ SingleSelectTable
Returns a new instance of SingleSelectTable.
2440 2441 2442 |
# File 'lib/wads/widgets.rb', line 2440 def initialize(x, y, width, height, headers, max_visible_rows = 10, args = {}) super(x, y, width, height, headers, max_visible_rows, args) end |
Instance Attribute Details
#selected_row ⇒ Object
Returns the value of attribute selected_row.
2438 2439 2440 |
# File 'lib/wads/widgets.rb', line 2438 def selected_row @selected_row end |
Instance Method Details
#handle_mouse_down(mouse_x, mouse_y) ⇒ Object
2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 |
# File 'lib/wads/widgets.rb', line 2491 def handle_mouse_down mouse_x, mouse_y if contains_click(mouse_x, mouse_y) row_number = determine_row_number(mouse_y) if row_number.nil? return WidgetResult.new(false) end # First check if its the delete button that got this delete_this_row = false @delete_buttons.each do |db| if db.contains_click(mouse_x, mouse_y) delete_this_row = true end end if delete_this_row if not row_number.nil? data_set_row_to_delete = @current_row + row_number data_set_name_to_delete = @data_rows[data_set_row_to_delete][1] @data_rows.delete_at(data_set_row_to_delete) return WidgetResult.new(false, EVENT_TABLE_ROW_DELETE, [data_set_name_to_delete]) end else if is_row_selected(mouse_y) unset_selected_row(mouse_y, 0) return WidgetResult.new(false, EVENT_TABLE_UNSELECT, @data_rows[row_number]) else set_selected_row(mouse_y, 0) return WidgetResult.new(false, EVENT_TABLE_SELECT, @data_rows[row_number]) end end end end |
#is_row_selected(mouse_y) ⇒ Object
2444 2445 2446 2447 2448 2449 2450 2451 |
# File 'lib/wads/widgets.rb', line 2444 def is_row_selected(mouse_y) row_number = determine_row_number(mouse_y) if row_number.nil? return false end selected_row = @current_row + row_number @selected_row == selected_row end |
#render ⇒ Object
2477 2478 2479 2480 2481 2482 2483 2484 2485 |
# File 'lib/wads/widgets.rb', line 2477 def render super if @selected_row if @selected_row >= @current_row and @selected_row < @current_row + @max_visible_rows y = @y + 30 + ((@selected_row - @current_row) * 30) Gosu::draw_rect(@x + 20, y, @width - 30, 28, @gui_theme.selection_color, relative_z_order(Z_ORDER_SELECTION_BACKGROUND)) end end end |
#set_selected_row(mouse_y, column_number) ⇒ Object
2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 |
# File 'lib/wads/widgets.rb', line 2453 def set_selected_row(mouse_y, column_number) row_number = determine_row_number(mouse_y) if not row_number.nil? new_selected_row = @current_row + row_number if @selected_row if @selected_row == new_selected_row return nil # You can't select the same row already selected end end @selected_row = new_selected_row @data_rows[@selected_row][column_number] end end |
#unset_selected_row(mouse_y, column_number) ⇒ Object
2467 2468 2469 2470 2471 2472 2473 2474 2475 |
# File 'lib/wads/widgets.rb', line 2467 def unset_selected_row(mouse_y, column_number) row_number = determine_row_number(mouse_y) if not row_number.nil? this_selected_row = @current_row + row_number @selected_row = this_selected_row return @data_rows[this_selected_row][column_number] end nil end |
#widget_z ⇒ Object
2487 2488 2489 |
# File 'lib/wads/widgets.rb', line 2487 def Z_ORDER_TEXT end |