77//! receiver.
88//!
99//! To allow Python users to create a similar experience, we provide module-level
10- //! functions that forward to a singleton Graphics object bepub(crate) pub(crate) hind the scenes.
10+ //! functions that forward to a singleton Graphics object pub(crate) behind the scenes.
1111mod glfw;
1212mod graphics;
1313
@@ -16,23 +16,41 @@ use pyo3::{exceptions::PyRuntimeError, prelude::*};
1616
1717#[ pymodule]
1818fn processing ( m : & Bound < ' _ , PyModule > ) -> PyResult < ( ) > {
19- m. add_class :: < Graphics > ( ) ?;
20- m. add_function ( wrap_pyfunction ! ( size, m) ?) ?;
21- m. add_function ( wrap_pyfunction ! ( run, m) ?) ?;
22- m. add_function ( wrap_pyfunction ! ( background, m) ?) ?;
23- m. add_function ( wrap_pyfunction ! ( fill, m) ?) ?;
24- m. add_function ( wrap_pyfunction ! ( no_fill, m) ?) ?;
25- m. add_function ( wrap_pyfunction ! ( stroke, m) ?) ?;
26- m. add_function ( wrap_pyfunction ! ( no_stroke, m) ?) ?;
27- m. add_function ( wrap_pyfunction ! ( stroke_weight, m) ?) ?;
28- m. add_function ( wrap_pyfunction ! ( rect, m) ?) ?;
29- m. add_function ( wrap_pyfunction ! ( image, m) ?) ?;
30- Ok ( ( ) )
19+ Python :: attach ( |py| {
20+ let sys = PyModule :: import ( py, "sys" ) ?;
21+ let argv: Vec < String > = sys. getattr ( "argv" ) ?. extract ( ) ?;
22+ let os = PyModule :: import ( py, "os" ) ?;
23+ let path = os. getattr ( "path" ) ?;
24+ let dirname = path
25+ . getattr ( "dirname" ) ?
26+ . call1 ( pyo3:: types:: PyTuple :: new ( py, & [ & argv[ 0 ] ] ) ?) ?;
27+ let abspath = path
28+ . getattr ( "abspath" ) ?
29+ . call1 ( pyo3:: types:: PyTuple :: new ( py, & [ dirname] ) ?) ?;
30+
31+ println ! ( "DEBUG MOMENT OF SUCCESS: {}" , abspath) ;
32+ // TODO: Pass this into Graphics for App init
33+
34+ m. add_class :: < Graphics > ( ) ?;
35+ m. add_function ( wrap_pyfunction ! ( size, m) ?) ?;
36+ m. add_function ( wrap_pyfunction ! ( run, m) ?) ?;
37+ m. add_function ( wrap_pyfunction ! ( background, m) ?) ?;
38+ m. add_function ( wrap_pyfunction ! ( fill, m) ?) ?;
39+ m. add_function ( wrap_pyfunction ! ( no_fill, m) ?) ?;
40+ m. add_function ( wrap_pyfunction ! ( stroke, m) ?) ?;
41+ m. add_function ( wrap_pyfunction ! ( no_stroke, m) ?) ?;
42+ m. add_function ( wrap_pyfunction ! ( stroke_weight, m) ?) ?;
43+ m. add_function ( wrap_pyfunction ! ( rect, m) ?) ?;
44+ m. add_function ( wrap_pyfunction ! ( image, m) ?) ?;
45+ Ok ( ( ) )
46+ } )
3147}
3248
3349#[ pyfunction]
3450#[ pyo3( pass_module) ]
3551fn size ( module : & Bound < ' _ , PyModule > , width : u32 , height : u32 ) -> PyResult < ( ) > {
52+ // would we get a directory here?
53+
3654 let graphics = Graphics :: new ( width, height) ?;
3755 module. setattr ( "_graphics" , graphics) ?;
3856 Ok ( ( ) )
0 commit comments