Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
flow3r firmware
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
flow3r
flow3r firmware
Merge requests
!168
Construct gr33nhouse
Code
Review changes
Check out branch
Download
Patches
Plain diff
Merged
Construct gr33nhouse
anon/appstore
into
main
Overview
1
Commits
16
Pipelines
4
Changes
22
Merged
Anon
requested to merge
anon/appstore
into
main
1 year ago
Overview
1
Commits
16
Pipelines
4
Changes
8
Expand
0
0
Merge request reports
Compare
version 2
version 3
b5628ee8
1 year ago
version 2
b5ce666f
1 year ago
version 1
272315f7
1 year ago
main (base)
and
version 3
latest version
0076f23c
16 commits,
1 year ago
version 3
b5628ee8
16 commits,
1 year ago
version 2
b5ce666f
14 commits,
1 year ago
version 1
272315f7
14 commits,
1 year ago
Show latest version
8 files
+
87
−
25
Inline
Compare changes
Side-by-side
Inline
Show whitespace changes
Show one file at a time
Files
8
Search (e.g. *.vue) (Ctrl+P)
python_payload/apps/gr33nhouse/__init__.py
0 → 100644
+
128
−
0
Options
from
st3m.goose
import
Enum
from
st3m.application
import
Application
,
ApplicationContext
from
st3m.input
import
InputController
,
InputState
from
st3m.ui.interactions
import
ScrollController
from
st3m.ui
import
colours
from
st3m.ui.view
import
ViewManager
from
ctx
import
Context
import
network
from
.applist
import
AppList
from
.background
import
Flow3rView
from
.record
import
RecordView
from
.manual
import
ManualInputView
class
ViewState
(
Enum
):
CONTENT
=
1
NO_INTERNET
=
2
class
Gr33nhouseApp
(
Application
):
items
=
[
"
Browse apps
"
,
"
Record flow3r seed
"
,
"
Enter flow3r seed
"
]
input
:
InputController
background
:
Flow3rView
state
:
ViewState
def
__init__
(
self
,
app_ctx
:
ApplicationContext
)
->
None
:
super
().
__init__
(
app_ctx
=
app_ctx
)
self
.
input
=
InputController
()
self
.
background
=
Flow3rView
()
self
.
_sc
=
ScrollController
()
self
.
_sc
.
set_item_count
(
3
)
self
.
state
=
ViewState
.
CONTENT
def
on_enter
(
self
,
vm
:
ViewManager
|
None
)
->
None
:
super
().
on_enter
(
vm
)
if
self
.
vm
is
None
:
raise
RuntimeError
(
"
vm is None
"
)
def
draw
(
self
,
ctx
:
Context
)
->
None
:
if
self
.
state
==
ViewState
.
NO_INTERNET
:
ctx
.
move_to
(
0
,
0
)
ctx
.
rgb
(
*
colours
.
BLACK
)
ctx
.
rectangle
(
-
120.0
,
-
120.0
,
240.0
,
240.0
,
).
fill
()
ctx
.
save
()
ctx
.
rgb
(
*
colours
.
WHITE
)
ctx
.
font
=
"
Camp Font 3
"
ctx
.
font_size
=
24
ctx
.
text_align
=
ctx
.
CENTER
ctx
.
text_baseline
=
ctx
.
MIDDLE
ctx
.
move_to
(
0
,
-
15
)
ctx
.
text
(
"
No internet
"
)
ctx
.
move_to
(
0
,
15
)
ctx
.
text
(
"
Check settings
"
)
ctx
.
restore
()
return
self
.
background
.
draw
(
ctx
)
ctx
.
save
()
ctx
.
gray
(
1.0
)
ctx
.
rectangle
(
-
120.0
,
-
15.0
,
240.0
,
30.0
,
).
fill
()
ctx
.
translate
(
0
,
-
30
*
self
.
_sc
.
current_position
())
offset
=
0
ctx
.
font
=
"
Camp Font 3
"
ctx
.
font_size
=
24
ctx
.
text_align
=
ctx
.
CENTER
ctx
.
text_baseline
=
ctx
.
MIDDLE
for
idx
,
item
in
enumerate
(
self
.
items
):
if
idx
==
self
.
_sc
.
target_position
():
ctx
.
gray
(
0.0
)
else
:
ctx
.
gray
(
1.0
)
ctx
.
move_to
(
0
,
offset
)
ctx
.
text
(
item
)
offset
+=
30
ctx
.
restore
()
def
think
(
self
,
ins
:
InputState
,
delta_ms
:
int
)
->
None
:
self
.
input
.
think
(
ins
,
delta_ms
)
self
.
_sc
.
think
(
ins
,
delta_ms
)
if
self
.
vm
is
None
:
raise
RuntimeError
(
"
vm is None
"
)
if
not
network
.
WLAN
(
network
.
STA_IF
).
isconnected
():
self
.
state
=
ViewState
.
NO_INTERNET
return
else
:
self
.
state
=
ViewState
.
CONTENT
self
.
background
.
think
(
ins
,
delta_ms
)
if
self
.
input
.
buttons
.
app
.
left
.
pressed
:
self
.
_sc
.
scroll_left
()
elif
self
.
input
.
buttons
.
app
.
right
.
pressed
:
self
.
_sc
.
scroll_right
()
elif
self
.
input
.
buttons
.
app
.
middle
.
pressed
:
pos
=
self
.
_sc
.
target_position
()
if
pos
==
0
:
self
.
vm
.
push
(
AppList
())
elif
pos
==
1
:
self
.
vm
.
push
(
RecordView
())
elif
pos
==
2
:
self
.
vm
.
push
(
ManualInputView
())
Loading