summaryrefslogtreecommitdiff
path: root/hello.hy
diff options
context:
space:
mode:
authorJakob L. Kreuze <zerodaysfordays@sdf.lonestar.org>2019-05-19 20:31:50 -0400
committerJakob L. Kreuze <zerodaysfordays@sdf.lonestar.org>2019-05-19 20:31:50 -0400
commitea613257da74430b18ce95e2cab99fbb3737c91c (patch)
treed74469c56d97480952ba5add83d7d256a01ab75c /hello.hy
parent42b31e7bf70f2cdb13cec3312d1cc262cd3ced6b (diff)
Add LICENSE
Diffstat (limited to 'hello.hy')
-rw-r--r--hello.hy64
1 files changed, 64 insertions, 0 deletions
diff --git a/hello.hy b/hello.hy
index 25e3b2d..e525a8f 100644
--- a/hello.hy
+++ b/hello.hy
@@ -1,3 +1,67 @@
+;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.lonestar.org>
+;;;
+;;; This program is free software; you can redistribute it and/or
+;;; modify it under the terms of the GNU General Public License as
+;;; published by the Free Software Foundation; either version 3 of the
+;;; License, or (at your option) any later version.
+;;;
+;;; This program is distributed in the hope that it will be useful,
+;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+;;; General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with this program. If not, see
+;;; <http://www.gnu.org/licenses/>.
+
+;; Hello Example
+;; =============
+;;
+;; This is a simple "Hello world!" example, written in Hy.
+;;
+;; We begin by declaring a unique namespace for the package we are creating.
+;; This is typically based on the reversed form of a domain name and should be
+;; unique to this package.
+
+(setv __package__ "com.example.hellohy")
+
+;; We also import the classes that will be needed by the application. Since this
+;; is a simple example, we only need three of them.
+
+(import [android.app [Activity]])
+(import [android.os [Bundle]])
+(import [android.widget [TextView]])
+
+;; We define a class based on the standard Activity class. This represents the
+;; application, and will be used to present a graphical interface to the user.
+;;
+;; The initialisation method simply calls the corresponding method in the base
+;; class. This must be done even if no other code is included in the method.
+
+(defclass HelloActivity [Activity]
+ (defn __init__ [self]
+ (.__init__ Activity self))
+
+ ;; The onCreate method is called when the activity is created by Android. The
+ ;; return type and parameter types expected by the method are declared using
+ ;; the following decorator. Since the parameter types for the onCreate method
+ ;; are defined in the Activity base class, this decorator is not strictly
+ ;; necessary.
+ (with-decorator (args void [Bundle])
+ (defn onCreate [self bundle]
+ (.onCreate Activity self bundle)
+ (setv view (TextView self))
+ (.setText view "Hello world!")
+ (.setContentView self view)
+ (return None))))
+
+;; As with the `__init__` method, we must call the corresponding method in the
+;; base class.
+;;
+;; The user interface for the application is simply a TextView widget that
+;; displays a string of text. The final call ensures that the widget is used as
+;; the main view for the application.
+
;; Hello Example
;; =============
;;