Commit Graph

749 Commits

Author SHA1 Message Date
Kartik K. Agaram fdb35ce12b bugfix: save modified files in save directory
scenario: open app from .love file, press ctrl+e

Before this change the source file showed up empty.
2022-09-05 12:39:28 -07:00
Kartik K. Agaram 5ab541f160 . 2022-09-05 12:38:11 -07:00
Kartik K. Agaram 528c64d690 support drawings in the source editor 2022-09-05 11:29:39 -07:00
Kartik K. Agaram 9f94470f9d include some missing source files 2022-09-05 08:41:26 -07:00
Kartik K. Agaram 7d5dae9e39 bugfix: cold start 2022-09-03 21:08:30 -07:00
Kartik K. Agaram 1a6f533e2c dedup points while loading drawing from disk 2022-09-03 19:24:40 -07:00
Kartik K. Agaram c6f88dccfa set window title within each app
The main app shows the file being edited, but the programming environment does not.
2022-09-03 17:20:11 -07:00
Kartik K. Agaram 5cada8cc9e remember window positions across restart/ctrl+e 2022-09-03 17:00:58 -07:00
Kartik K. Agaram 9a1e297ee3 duplicate 2022-09-03 14:59:57 -07:00
Kartik K. Agaram 17fa0ec9e7 bugfix: window title 2022-09-03 14:51:52 -07:00
Kartik K. Agaram e1c5a42f31 editing source code from within the app
integrated from pong.love via text.love:
  https://merveilles.town/@akkartik/108933336531898243
2022-09-03 14:13:22 -07:00
Kartik K. Agaram 9c72ff1bb4 bugfix: propagate mouse press if any button would
Before this commit I was propagating press events only if _all_ buttons
would.
2022-08-24 13:40:36 -07:00
Kartik K. Agaram ce31b74b10 infrastructure for caching LÖVE text objects 2022-08-24 13:27:04 -07:00
Kartik K. Agaram 89222f86a0 set color for each fragment
In general it seems like good practice to minimize assumptions about
the current color.
2022-08-23 15:09:14 -07:00
Kartik K. Agaram 43dfa184d6 helper: trimming whitespace from strings 2022-08-23 15:06:18 -07:00
Kartik K. Agaram aeaa7d150c helper: file_exists 2022-08-23 15:04:30 -07:00
Kartik K. Agaram 019a829279 make App.open_for_* look more like io.open
Now missing files will result in similar behavior: nil file handles.
2022-08-23 13:12:24 -07:00
Kartik K. Agaram b6f42ebf01 pass all button params to the icon 2022-08-23 12:13:22 -07:00
Kartik K. Agaram 8747415461 allow buttons to nest as well 2022-08-23 11:48:52 -07:00
Kartik K. Agaram 468b791050 flip return value of button handlers
This is compatible with Javascript, and it also seems like a better
default; when people forget to think about return values in click
handlers, they should be consumed.
2022-08-23 11:43:10 -07:00
Kartik K. Agaram 8057f3e8fe stop putting button state in a global
Symptom: a test (test_click_to_create_drawing) started randomly failing
after I inserted a `return` 2 commits ago.

Cause: my tests call edit.draw, but button handlers only get cleared in
app.draw. So my tests weren't clearing button handlers, and every call
to edit.draw was accumulating states. Still unclear why those were going
to different state objects after the `return`, but anyway. I'm not going
to understand every last thing that happens when things go wrong, just
guarantee they can't go wrong. And the way to do that is to decentralize
button handlers to each state that receives them.

The State object in buttons.lua doesn't have to be Editor_state. It just
has to be some table that provides a Schelling Point for shared state.
2022-08-23 10:59:58 -07:00
Kartik K. Agaram ce79623231 improve explanation for buttons 2022-08-23 09:44:16 -07:00
Kartik K. Agaram aadc50f3b6 allow buttons to interrupt events
Most button onpress1 handlers will want to return true.
2022-08-23 09:40:48 -07:00
Kartik K. Agaram 490f10c6f8 indent 2022-08-23 09:37:38 -07:00
Kartik K. Agaram cfdac28e18 distinguish consistently between mouse buttons and other buttons 2022-08-23 09:36:08 -07:00
Kartik K. Agaram 418ce8480a include pensieve.love even though it's in development 2022-08-22 20:26:44 -07:00
Kartik K. Agaram 038f054ede include a fork 2022-08-21 14:29:05 -07:00
Kartik K. Agaram 61eb87b03c correct a comment
We no longer have undo history directly in globals.
2022-08-21 14:26:50 -07:00
Kartik K. Agaram 13f67fa851 regression: dropping files on the window
Also improve the test to catch this next time.
2022-08-19 17:05:41 -07:00
Kartik K. Agaram cbd8f678d2 fix a name 2022-08-19 16:27:38 -07:00
Kartik K. Agaram fc9490c964 reclaim a couple more functions after tests 2022-08-19 10:29:48 -07:00
Kartik K. Agaram dd15f15640 couple of accidental globals
Luckily they didn't bite me yet.
2022-08-18 13:37:14 -07:00
Kartik K. Agaram 72866ec0ad get rid of some ridiculous code
I guess I wrote it before I settled into the idiom of:
* first change cursor
* then scroll if necessary
2022-08-18 13:04:04 -07:00
Kartik K. Agaram 0bf34a9ce0 spurious args 2022-08-18 12:09:50 -07:00
Kartik K. Agaram edcd3d7a9a dead code 2022-08-18 12:07:50 -07:00
Kartik K. Agaram 1d3c9f4708 generalize a function 2022-08-18 10:32:03 -07:00
Kartik K. Agaram cf8d9774ea drop some obsolete args 2022-08-18 10:29:50 -07:00
Kartik K. Agaram 3c04310503 subsection headings in a long switch 2022-08-18 10:09:20 -07:00
Kartik K. Agaram a14f1096b6 extract a variable 2022-08-18 09:51:43 -07:00
Kartik K. Agaram f79dd4824c simplify 2022-08-18 00:19:07 -07:00
Kartik K. Agaram 2381f7b43f simpler location comparison 2022-08-17 21:23:24 -07:00
Kartik K. Agaram 1221fde164 move caching behavior inside compute_fragments 2022-08-17 16:15:35 -07:00
Kartik K. Agaram 3a74e4bb6c remove some unnecessary work 2022-08-17 16:13:46 -07:00
Kartik K. Agaram dd899d2096 standardize scroll check in a few places
I'm taking some lessons from pensieve.love here. It seem like specific
pixel thresholds don't matter too much for plain lines.love.

I'd probably feel safer if I just used Text.cursor_out_of_screen in
these places, but it means we draw the screen twice for most events[1].
Let's see if we can get by with the current approach.

[1] Or we have to start scheduling things for the next draw, which is
more complex to orchestrate.
2022-08-17 09:40:44 -07:00
Kartik K. Agaram f029c710b5 simplify cursor-on-screen check 2022-08-17 09:36:17 -07:00
Kartik K. Agaram 1d710912cc swap return values 2022-08-17 09:10:52 -07:00
Kartik K. Agaram 4f128f39f3 obsolete comment 2022-08-16 13:38:10 -07:00
Kartik K. Agaram eba973369e move 2022-08-15 16:07:32 -07:00
Kartik K. Agaram 333a0318d9 drop some unnecessary calls 2022-08-15 15:48:44 -07:00
Kartik K. Agaram 9e0cd4ad4c stop confusingly reading a global
The way Text.draw is called by edit.draw, we know it'll never be called
for lines above screen_top1.line. Comparing every line on screen with
screen_top1 makes no sense. The intent is really just to compare with
screen_top1 only for the first line, and otherwise to ignore this check.
2022-08-15 15:45:02 -07:00