myk002
593b80cfa0
make scrollbars more responsive when dragging
2022-10-21 12:22:57 -07:00
myk002
1e21e6546e
fix materials selection dialog
...
where the filter was swallowing the sublist hotkeys
2022-10-19 17:31:28 -07:00
myk002
142b45ef49
move list item hotkey hint left by one tile
...
so it doesn't get covered by the scrollbar
2022-10-19 17:30:51 -07:00
myk002
d650ba2377
ensure scrollbar can never get ahead of the cursor
2022-10-10 16:42:32 -07:00
myk002
ba36e72b33
support click and drag for scrollbars
2022-10-07 16:27:19 -07:00
myk002
35eb4e08dd
hold down the mouse button to continue scrolling
2022-10-07 15:40:05 -07:00
myk002
2bff70a290
add unit tests for widgets.Scrollbar
2022-10-07 13:14:52 -07:00
myk002
5722d6914b
transition Label to use the new generic Scrollbar
2022-10-07 12:45:43 -07:00
myk002
24232e894a
create Scrollbar widget and integrate with List
2022-10-06 11:13:16 -07:00
Myk Taylor
3b650c8d0b
don't let changes to the lua cursor bleed through
...
before, we could end up changing the state of whoever last called
guidm.setCursorPos()
2022-09-18 08:20:33 -07:00
myk002
6fff83de5a
fix EditField rendering with TWBT
2022-09-16 15:24:33 -07:00
myk002
b88d343ddd
fix off-by-one error on scrollbar click detection
2022-09-14 09:25:43 -07:00
myk002
d4914e7511
implement mouse click reactions for scrollbar
2022-09-11 19:33:01 -07:00
myk002
e2fbade219
fix scrollbar display when all text is visible
...
also align behavior with documentation when 'left' or 'right' is
explicitly specified (i.e. always show the scrollbar)
2022-09-11 18:56:43 -07:00
myk002
f71f034d1d
show full scrollbars instead of just scroll icons
2022-09-11 17:58:10 -07:00
myk002
074a6ec5cd
allow EditFields to ignore specified keys
...
like "+" and "-", so you can use them as hotkeys in the parent view
2022-08-31 10:22:41 -07:00
myk002
27e189fef2
no cursor position reset when updating list filter
2022-08-29 15:17:17 -07:00
myk002
8acda4d6c8
Interpret '4' & '6' as strings, not movement keys
2022-08-19 22:40:53 -07:00
myk002
7f0791f6c3
use setText() accessor method instead of direct access
2022-08-15 16:24:34 -07:00
myk002
22f9f3b042
add unit tests for new widget functionality
2022-08-15 16:24:34 -07:00
myk002
0ae4fed3cf
add mouse support for CycleHotkeyLabel widgets
2022-08-15 16:24:34 -07:00
myk002
79b6cd13e9
support scrolling by half pages in Label
2022-08-15 16:24:34 -07:00
myk002
a5af5a1373
don't bork on no frame, set cursor to end of text
2022-08-15 16:24:34 -07:00
myk002
4e382c7b3b
make HotkeyLabels react to clicking
...
also be better about initializing EditField frame height
2022-08-15 16:24:34 -07:00
myk002
8de8b22566
click to correct cursor position on long strings
...
where the left side of the string has been trimmed
2022-08-15 16:24:34 -07:00
myk002
b7f74fe2ce
allow mouse lclick to select a List item
2022-08-15 16:24:34 -07:00
myk002
1dd3d6656b
move the cursor in an EditField on mouse lclick
2022-08-15 16:24:34 -07:00
myk002
0aa9a187cf
support cursor movement in EditFields
2022-08-15 16:24:34 -07:00
myk002
43b1abcdcf
support submit2 for EditFields
2022-08-15 16:24:34 -07:00
myk002
214dd3c579
reset scroll position when the text is changed
2022-08-15 16:24:34 -07:00
myk002
64b793b409
support EditField:setText() so scripts can use it
...
and be compatible with both the develop and docs branch
2022-07-20 15:40:49 -07:00
Timur Kelman
9788a8a22a
Add default selection handler to `materials.ItemTraitsDialog` ( #2211 )
...
* add forward compatibility for future `job_item_flags`
* add default selection handler to `materials.ItemTraitsDialog`
* add a call to `error()` in 'unknown'-branch inside `setTrait`
* add `ItemTraitsDialog` improvement description to changelog.txt
2022-06-28 16:27:18 -07:00
Timur Kelman
1a629a26bf
add `ItemTraitsDialog` to materials.lua ( #2199 )
...
* add `ItemTraitDialog` to materials.lua
* rename `ItemTraitDialog` to `ItemTraitsDialog` (plural)
* Update changelog.txt
2022-06-12 07:03:04 -07:00
Myk
89d3d45e87
Allow EditField widgets to manage their own activation and keyboard focus ( #2147 )
...
* use new focus subsystem in widgets.EditField
* always eat the enter key if we have an on_submit
* add modal attribute
* give EditFields a default height of 1
so they can be autoarranged
2022-06-01 21:48:21 -07:00
myk002
ea7fe2b926
account for scroll bars when sizing message boxes
2022-05-27 15:38:13 -07:00
Timur Kelman
07f54deb0b
fix wrong `Label.frame_body.x2` value ( #2134 )
...
* fix wrong `Label.frame_body.x2` value
`update_scroll_inset` might change `frame_inset`, i.e. we need to `computeFrame` with the new values.
* add tests for Label
* add missing `local`, remove code in comments
* move `TestFramedScreen` outside test functions
2022-05-27 15:25:17 -07:00
myk002
18628ff5b8
make key_sep more configurable
...
and add more configuration to HotkeyLabel and EditField to take
advantage of it
2022-05-18 16:46:33 -07:00
myk002
53609db1f9
let CycleHotkeyLabels take numeric initial_options
...
even if all of the option values are non-numeric
2022-05-18 15:39:52 -07:00
Myk
e2fb15a3a5
add dwarfmode.MenuOverlay:renderMapOverlay() ( #2119 )
...
* add dwarfmode.MenuOverlay:renderMapOverlay()
* ensure we move with the viewport when bounds_rect is nil
2022-04-29 20:32:22 -07:00
myk002
e603fee3ce
move sidebar mode management code to init
...
from onAboutToShow(). this allows the frames to be calculated correctly
during widget instantiation. otherwise widgets can end up with -1 width
2022-04-29 12:10:05 -07:00
myk002
af47434f52
protect against 0 width in string:wrap()
2022-04-29 11:29:19 -07:00
Timur Kelman
f08a268e8a
add scroll icons to Label widget ( #2101 )
...
* WIP: add scroll icons to Label widget
It's an opt-out. The icons are rendered in the right-most column of the 1st and last row. They are only rendered when text can actually be scrolled in the corresponding direction.
WIP: Currently, the icons might overlay text characters, there is no mechanism preventing it
* gui.lua: expose the `parse_inset()` function
* refactor Label's scroll icon code
* since `render_scroll_icons` only works with a label, it's now a class function
* `update_scroll_inset` ensures `frame_inset.r` or `.l` is at least 1, according to `show_scroll_icons`
* `show_scroll_icons` has 4 possible values: `false` for no icons, `left` for icons on the first column on the left (also ensuring `frame_inset.l >= 1`), `right` - last column on the right, `DEFAULT_NIL` - same as `right` if text height greater than `frame_body.height`, else same as `false`.
* make `render_scroll_icons` always draw icons
The check now happens in `onRenderFrame`
* draw frame's background
calling `Label.super.onRenderFrame(self, dc, rect)` makes frame's background invisible for some reason
* remove trailing spaces
* fix scroll icons placed far above/below text
With `Label.frame_inset = 1` the text could be vertically centered with plenty of space below and above,
but not all rendered. Before this change, the scroll icons would be at the very top and bottom of the frame
instead of near the first and last rendered text line.
* always `update_scroll_inset` to react to resized window
* draw scroll icons next to text
* update `Lua API.rst` with new `Label` parameters
* move comment separator up
This way every scroll related parameter is in one group
* list default values for new parameters in docs
* add missing description of `Label.scroll_keys`
2022-04-29 06:55:08 -07:00
myk002
6ad362d698
return a reference to the created dialogs
2022-04-27 11:51:46 -07:00
myk002
ed5523152c
factor text wrapping out of TooltipLabel into WrappedLabel
2022-04-22 09:53:10 -07:00
myk002
809f9316fd
make frame inset configurable for ListBox list
2022-04-22 08:30:53 -07:00
myk002
07761e1d5d
add some more handy widgets to the library
...
TooltipLabel
HotkeyLabel
CycleHotkeyLabel
ToggleHotkeyLabel
2022-04-18 17:37:11 -07:00
Myk
fd1ee233a2
automatically manage sidebar modes in MenuOverlay ( #2083 )
2022-04-11 20:58:54 -07:00
Myk
10f22ecc27
add ResizingPanel class and autolayout for Panels ( #2086 )
...
* add autolayout for Panels and new ResizingPanel
2022-04-11 18:25:00 -07:00
Myk
e6299700bf
Handle punctuation in FilteredList filter matching ( #2085 )
...
* allow punctuation to be typed into a filter
and allow the filter to match keys with punctuation
2022-04-11 18:22:31 -07:00
Myk
9a8fd12785
ensure ListBoxes always have enough height ( #2084 )
...
so they can always display an error message if the filter doesn't match anything
2022-04-11 16:15:50 -07:00
myk002
db5e7d55c1
fix guidm.enterSidebarMode(DesignateMine)
...
it would end up in DesignateChopTrees if you happened to be looking at
the surface z-level.
2022-03-28 16:57:24 -07:00
Tachytaenius
19c0a4fe06
Added (chain) for [CHAIN_METAL_TEXT] armours in library/gui/materials.lua used by the gui/create-item script ( #2037 )
2022-03-19 15:32:16 -07:00
myk002
42ae45dd5f
support designate for enterSidebarMode
2021-10-02 09:26:32 -07:00
Timur Kelman
15d8a0bea2
rename `dismiss_on_submit|2` to `dismiss_on_select|2`
...
to avoid confusion
2021-07-30 17:25:01 +02:00
Timur Kelman
ffecdf3b53
ListBox attributes controlling self:dismiss()
...
`dismiss_on_submit = false` makes it easier to implement toggleable options, where we don't want the list to disappear on selection. Like work order conditions' trait selection.
2021-07-29 19:00:19 +02:00
lethosor
898d4621da
Merge remote-tracking branch 'myk002/myk_view_unit' into develop
2021-07-05 20:42:49 -04:00
myk002
87c7d02e09
support view unit mode for guidm.enterSidebarMode
2021-07-05 16:02:19 -07:00
myk002
f62ff3ecc0
migrate existing lua code to use new library fns
2021-07-05 15:48:51 -07:00
lethosor
2f36404da7
Merge remote-tracking branch 'origin/lua_label_input_fix' into develop
2021-07-05 15:42:06 -04:00
lethosor
fb7560d8bf
Merge remote-tracking branch 'wolfboyft/patch-2' into develop
2021-07-05 11:41:37 -04:00
myk002
000b589e3a
add dwarfmode library function: enterSidebarMode()
...
refactored from quickfort. this common implementation will replace the
now redundant functions in quickfort, gui/mass-remove, and gui/blueprint
2021-06-23 12:29:37 -07:00
Warmist
b7069a5ebd
Fix label early key detection in scrolling logic
...
Current logic is because @myk002 fixed it so label would allow other widgets control when label(s) are present. However that breaks label key detection for default scroll keys. This can be worked around by setting scrollkeys to empty.
TBH: label is quite complicated and used everwhere so i'm reluctant to touch it and would love for someone to look over if i'm correct.
2021-06-22 11:31:00 +03:00
Tachytaenius
990c153a9a
Show adjective in item prompt
...
Useful for high boot/low boot etc.
2021-06-19 13:59:38 +01:00
lethosor
7e12f3fd3d
Fix off-by-one, adjust changelog, move scroll keys to consistent place
...
Ref #1748
2021-01-30 19:40:15 -05:00
myk002
5a2181d55e
don't render overflow text
2021-01-13 22:02:22 -08:00
myk002
d4fbf4261f
address review comments
2021-01-12 23:27:14 -08:00
myk002
dac9538fd9
let navigation keys propagate
...
so other components can use them for simultaneous control
2021-01-11 15:02:12 -08:00
Myk Taylor
2797061b04
scroll Label text when height exceeds viewrect
2021-01-11 14:47:05 -08:00
lethosor
3b5a82cc05
Change color of ListBox.select2_hint to grey to indicate enabled
...
Ref dfhack/scripts#185
2020-08-27 00:08:28 -04:00
lethosor
c034276af5
Merge remote-tracking branch 'myk002/quickfort_filter' into develop
2020-08-21 00:34:34 -04:00
Myk Taylor
9a3e9d5b12
listbox filter can match strings after punctuation
2020-08-17 21:15:33 -07:00
Myk Taylor
8a438c2a55
allow row_height to be set from the ListBox class
2020-08-17 21:14:05 -07:00
nicolasayala
141928ead0
Fix gui.FilteredList widget search on plain string choices
2020-02-27 07:56:30 +01:00
lethosor
49563b4618
Merge remote-tracking branch 'warmist/FilteredListFix' into develop
2019-11-02 16:28:06 -04:00
Warmist
a2b5c1ddd9
lua/widgets filtered list input fix
...
FilteredList was not consuming input events.
2019-09-30 22:00:06 +03:00
lethosor
e5eade1ad7
Make gui.dwarfmode.{get_movement_delta,get_hotkey_target} public
2019-04-30 16:53:09 -04:00
Pauli
98b25e3462
Allow calling List:setChoices() to clear choices
2018-06-20 17:46:24 +03:00
Pauli
ed23d2c4e2
Change gui.widgets.List:setChoices to keep state in internal table
...
Fixes #1171
2018-06-20 17:23:57 +03:00
grubsteak
7e3c8c9965
added fast keys for workshop gui overlay
2018-05-19 20:25:24 -05:00
Quietust
88c7e493b8
Merge ui_area_map_width into ui_menu_width, now a 2-byte array
2017-12-03 20:34:59 -06:00
lethosor
cc0220f030
Add a "key" option to EditField and FilteredList
2017-06-27 21:10:14 -04:00
lethosor
db375ae83b
Add a Pages:getSelectedPage() helper
...
Equivalent to select(2, pages:getSelected()), but more readable.
2017-06-23 12:46:46 -04:00
lethosor
ae809afde7
Add Gui::refreshSidebar()
...
This handles feeding CURSOR_DOWN_Z and CURSOR_UP_Z properly, avoiding issues
when on the lowest z-level.
2017-06-23 00:02:21 -04:00
lethosor
346e8b91a9
Use getDwarfmodeViewDims() in getPanelLayout()
...
Allows C++ hooks to affect Lua scripts as well
2017-06-01 23:36:02 -04:00
lethosor
e51c5fc2cc
Allow key_pen option in some widget text
2017-05-28 23:11:37 -04:00
lethosor
c1e44c178f
Add on_click/on_rclick handlers to widgets.Label
...
Closes #919
2016-05-09 21:30:34 -04:00
Warmist
7c91b8f755
Add more informative focus_path
...
This with conjunction of changes in eventful will make the sidebar overlay more bug-free :)
2016-04-10 16:53:18 +03:00
Warmist
8b8ce4eff9
Spelling mistake
2016-04-10 15:45:43 +03:00
Warmist
d1c45d00d2
Fix some bugs in workshopOverlay
...
Fix bugs relating to "remove building"/"suspend remove" part of overlay.
2016-04-10 14:44:09 +03:00
Warmist
80521d1bb1
add onGetSelectedBuilding to workshop overlay
...
This will make other stuff that depends on dfhack.gui.getSelectedBuilding work with workshop overlay
2016-04-10 12:28:15 +03:00
lethosor
7da3c65079
Fix display of arrows in lua filtered list widgets
...
Fixes #718
2015-10-30 19:16:29 -04:00
lethosor
10cfef0553
Fix whitespace issues
2015-02-14 22:53:06 -05:00
Warmist
f04b93210a
Bug fixing.
...
Fixes for "tab" in hacked buildings.
2014-08-16 16:58:09 +03:00
Warmist
6868cab1fe
Exposed dfhack.jobs.linkIntoWorld. Simplified eventful and gui.dwarfmode for sidebar use/creation.
2014-08-16 16:58:01 +03:00
Putnam3145
4a32aff6a3
Update script.lua
2013-10-20 13:58:15 -07:00
Warmist
6c4f163a5e
Merge branch 'master' of https://github.com/angavrilov/dfhack
...
Conflicts:
NEWS
2012-12-09 14:25:31 +02:00
Warmist
3bce3838af
Advfort now supports workshops and siege weapons >:)
2012-12-03 21:49:17 +02:00
Alexander Gavrilov
58239e97ed
Implement the history graph in the workflow status screen.
2012-12-01 16:50:03 +04:00
Alexander Gavrilov
0bfe006016
Try to reimplement the inventory monitor by falconne in lua.
...
For no other reason than to provide a complete example of lua
interface for a native plugin :)
TODO: paint the graph in the right pane.
2012-11-30 19:10:17 +04:00
Warmist
471d15ba4c
New building selection dialog.
2012-11-29 20:49:16 +02:00
Alexander Gavrilov
5ea26d9cae
Only show the advanced new constraint dialog on Shift-Enter.
...
Upon reflection it is a bit too scary to be always shown.
2012-11-29 16:27:51 +04:00
Alexander Gavrilov
2953e4c386
Implement a dialog to specify a workflow constraint with all features.
2012-11-17 20:32:39 +04:00
Alexander Gavrilov
bd8c59462c
Add documentation for the core lua gui library stuff.
2012-11-04 17:06:32 +04:00
Alexander Gavrilov
9598316855
Add a native pen object for lua with a more checked behavior.
2012-11-03 20:06:33 +04:00
Alexander Gavrilov
e353f5f03e
Add a script to complement the weapon rack binary patch.
2012-10-27 20:16:27 +04:00
Alexander Gavrilov
1f994295b8
Consider assigned vehicles in use, and tweak text color rendering.
2012-10-25 13:20:41 +04:00
Alexander Gavrilov
a1dd31aab3
Tweak the mechanics for showing and rendering lua screens.
...
- Place new screens below any dismissed ones on top.
- When asked to render a dismissed lua screen, call render() on its
parent to avoid producing a black screen frame when unlucky.
2012-10-25 12:09:39 +04:00
Alexander Gavrilov
616c57257d
Support changing the constraint ranges from the workflow gui script.
...
TODO: implement creating completely new constraints.
2012-10-24 19:25:06 +04:00
Alexander Gavrilov
46938625fd
Pass the hotkey keys to dwarfmode from overlays, and fix gui/workshop-job.
2012-10-21 21:45:51 +04:00
Alexander Gavrilov
dee0c97584
Add a gui script for viewing and changing job_item properties.
2012-10-20 21:57:36 +04:00
Alexander Gavrilov
1e2570f4cb
Add an extremely simple item selection dialog by wrapping ListBox.
2012-10-17 21:42:06 +04:00
Alexander Gavrilov
4f7895f571
Support restricting the set of materials presented in the dialog.
2012-10-17 18:29:15 +04:00
Alexander Gavrilov
0046b093f7
Link visibility and event handling order.
...
- Hidden widgets don't receive events.
- Children handle events in top to bottom order.
2012-10-17 11:49:11 +04:00
Alexander Gavrilov
ad4f9908fb
Extract a generic filtered list widget from the materials dialog.
2012-10-17 10:41:50 +04:00
Alexander Gavrilov
b14e4e97f5
Natively support entry icons in the List widget.
2012-10-17 09:41:48 +04:00
Alexander Gavrilov
023dc82564
Implement a material selection dialog.
2012-10-16 18:33:00 +04:00
Alexander Gavrilov
d336abfd97
Add label and list widgets, and switch stock dialogs to them.
2012-10-16 14:18:35 +04:00
Alexander Gavrilov
abfe2754fb
Start implementing common widgets for lua screens.
2012-10-15 20:03:18 +04:00
Alexander Gavrilov
33bd8103de
Extract an abstract View superclass from Screen to handle widget trees.
2012-10-15 15:30:00 +04:00
Alexander Gavrilov
bd3d3061ae
Add a module that wraps the dialogs as "blocking" coroutine functions.
2012-10-02 18:01:28 +04:00
Alexander Gavrilov
abf503fcdc
Fix the ListBox dialog to behave in a more consistent way.
2012-10-02 16:45:17 +04:00
Alexander Gavrilov
9d5adf1b2f
Update the lua screens to use the new key display string API function.
2012-10-02 15:25:59 +04:00
Alexander Gavrilov
57b72831ca
Overhaul the concept of lua 'class' initialization yet again.
2012-09-18 20:30:25 +04:00
Alexander Gavrilov
94b729579e
Reindent to remove tabs.
2012-09-09 10:53:08 +04:00
warmist
8e0f3e3bce
Added ListBox to gui.dialogs
...
A listbox class. Can be either filled with table of strings, or string+callback tables. Needs some code revision :)
2012-09-09 02:28:07 +03:00
Alexander Gavrilov
bfa6ed3e08
Support setting the target area for the siege engine.
2012-09-08 13:46:02 +04:00
Alexander Gavrilov
325e294af2
Start the siege engine plugin with code to highlight obstacles on screen.
2012-09-07 19:54:32 +04:00
Alexander Gavrilov
d5ea05ebb8
Implement a pressure plate sensitive to machine power.
...
When built next to a gearbox, it will monitor its powered state.
2012-09-06 12:37:29 +04:00
Alexander Gavrilov
8d876cc7d9
Support renaming some buildings, and arbitrary units, via gui script.
2012-09-05 21:27:42 +04:00
Alexander Gavrilov
57086ac56e
Add stock MessageBox and InputBox dialog screens for lua scripts.
2012-09-05 19:45:45 +04:00
Alexander Gavrilov
41ad42d0fd
Expose the liquids plugin engine to lua, and make a wrapper gui script.
2012-08-25 10:37:03 +04:00
Alexander Gavrilov
d52c54cc76
Pull some minor stuff from mechanisms into main libs.
2012-08-24 13:49:22 +04:00
Alexander Gavrilov
296f82b02f
Try using the Objective-C 'alloc + init' idiom for lua screen objects.
2012-08-24 13:28:34 +04:00
Alexander Gavrilov
cf4b8a0196
Improve viewport manipulation utilities and support scroll in mechanisms.
...
I.e. allow the user to scroll around with cursor keys,
provided that keeps the cursor still visible.
2012-08-22 22:29:01 +04:00
Alexander Gavrilov
7987ea9a98
Put some compatibility features into the base dfhack viewscreen.
2012-08-22 18:18:19 +04:00
Alexander Gavrilov
2b79582e99
Implement a policy of marking DFHack-owned screens with a signature.
2012-08-22 12:28:01 +04:00
Alexander Gavrilov
15235cc938
More work on utilities for making lua viewscreens.
2012-08-21 19:40:37 +04:00
Alexander Gavrilov
451e965936
Add a Painter class for lua viewscreens, and extract other utilities.
...
Painter clips to an arbitrary rectangle window, and
tracks current cursor and color state.
2012-08-21 11:35:39 +04:00
Alexander Gavrilov
601a3a7927
Add a script that implements a linked mechanism browser.
2012-08-20 23:04:01 +04:00