From 6300058a6d2a2a913d409e60daa71f8854fa18d0 Mon Sep 17 00:00:00 2001 From: Chrapati <35665560+chrapati24@users.noreply.github.com> Date: Fri, 1 Jul 2022 15:38:00 +0200 Subject: [PATCH 01/14] Add files via upload --- conept2.cpc.bas | 158 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100644 conept2.cpc.bas diff --git a/conept2.cpc.bas b/conept2.cpc.bas new file mode 100644 index 0000000..a0e3133 --- /dev/null +++ b/conept2.cpc.bas @@ -0,0 +1,158 @@ +' keyword/ [/optn] [args...] +' les mots clef peuvent prendre des "flags" et des arguments +' un peu à la maniere de programme POSIX (les flags obligatoirements +' avant les arguments) +txt/ /#R "Hello " +txt/ "World" + +' ${} aurait la meme comportement que les {} dans les f-strings en python +txt/ "il est ${SYS.TIME}" + +' pour definir une fonction +' def/ name (args) +' body +' end/ + +def/ hello (name) + txt/ "hello ${name}" +end/ + +' Comme en python lambda: +goodby = lambda/ (name) text/ "Goodbye ${name}" + +' et on les appeleraient comme ceci: +call/ hello "test de julien a nouveau" +' l'idée serait de séparer mot clef (finissant par / et reserver) et l'espace de nom utilisateur + +' on pourrait inclure des dépendances externes avec par ex "include/" +include/ "cpcgui" +' ce qui permettrait d'importer 2 types de librairies +' - code cc+ +' - libnative (et ces dernieres pourrait ajouter de nouveaux keywords) + +let/ user_name = "admin" +' cpc.src.x serait une variable exporté par cpcgui (on pourrait imaginer +' un keyword 'export/' pour exporter des variables et des fonctions +let/ center_point_x = cpc.src.x / 2 +let/ center_point_y = cpc.src.y / 2 + +let/ logon_siz_x = cpc.src.x +let/ logon_siz_y = cpc.src.y + +let/ logon_pos_x = 0 +let/ logon_pos_y = 0 + +' window/ serait un keyword definis dans 'cpcgui' +' les lignes commençant par . indique un paramètre nommé +let/ logon_win_handle = window/ + .title = "Logon window" + .px = logon_pos_x + .py = logon_pos_y + .sx = logon_siz_x + .sy = logon_siz_y + .opacity = 100 + .parameters = "TYPE:4 ALPHAMODE:0 BLURRY:6 CTX:1" + .windowcolor = (50, 50, 100) + .titlecolor = (255, 255, 255) + .backcolor = (150, 0, 220) + .icon = "" +end/ + +' on aurait pu faire +login_win_handle = window/ "Logon window" logon_pos_x .... +' tout comme on peut faire +txt/ +.txt = "Hello World" ' ouai c'est naze mais c'est pour explicité l'idée +end/ + + +' ==== User image ==== + + +PictureBox/ +.parent = logon_win_handle + .parameters = "IMGAUTO:2" + .px = 0 + .py = 0 + .opacity = 255 + .sx = logon_siz_x + .sy = logon_siz_y + .image = "${Media_OS}/bckgnd/LOG_TRSP.png" +end/ + +image_SX = 99 +image_SY = 99 + +image_PX = center_point_x - (image_SX / 2) +image_PY = center_point_y - ((image_SY / 2) - 99) + +user_path = "%USER_OS%/%user_name%" + +PictureBox/ + .handle = logon_window_handle + .parameters = "IMGAUTO:2" + .px = image_PX + .py = image_PY + .opacity = 255 + .sx = image_SX + .sy = image_SY + .image = "%user_path%/image.png" + .event = "%_EXE_PATH_DIR%/logon_ev.cpc" ' TODO: trouver un truc cohérent pour ce genre de variable +end/ + +' ==== User image name ==== +name_SX = 99 +name_SY = 39 + +name_PX = center_point_x - (name_SX / 2) +name_PY = center_point_y - (name_SY / 2) + +PictureBox/ + .handle = logon_window_handle + .parameters = "IMGAUTO:2" + .px = name_PX + .py = name_PY + .opacity = 255 + .sx = name_SX + .sy = name_SY + .image = "%user_path%/name.png" +end/ + +' (Ici Chrapati. Après avoir légèrement modifier quelques trucs qui ont été mis en place par les autres, voici ce que je propose) : + +' Pour les variables modifiables par l'utilisateur : + +let/ /input: "Entrez une valeur : ", x + +txt/ "${x}" + +' Pour les conditions + +let/ y = 5 + +if/ + x == y then: + txt/ "x est egal a y" + or x < y then: + txt/ "x est inferieur a y" + else: + txt/ "x est superieur a y" +end/ + +' Pour les boucles type "tant que" + +while/ + x < y then: + let/ x + 1 +end/ + +' Pour les boucles type 'pour' + +let/ tab = [3, 5, 4, 9, 14, 15, 21, 38] + +for/ + y in tab: + if tab[0] == y then: + txt/ "y = ${tab[0]}" +end/ + From d84a1887c81fd9556cf5ede90eb294217769f725 Mon Sep 17 00:00:00 2001 From: Chrapati <35665560+chrapati24@users.noreply.github.com> Date: Fri, 1 Jul 2022 15:38:32 +0200 Subject: [PATCH 02/14] Rename conept2.cpc.bas to concept2.cpc.bas --- conept2.cpc.bas => concept2.cpc.bas | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename conept2.cpc.bas => concept2.cpc.bas (100%) diff --git a/conept2.cpc.bas b/concept2.cpc.bas similarity index 100% rename from conept2.cpc.bas rename to concept2.cpc.bas From a004997305147fea277aa929adcf566864319c41 Mon Sep 17 00:00:00 2001 From: Chrapati <35665560+chrapati24@users.noreply.github.com> Date: Sun, 3 Jul 2022 19:42:36 +0200 Subject: [PATCH 03/14] Add potential new features and some edit about previous purposals --- concept1.cpc | 52 ++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 44 insertions(+), 8 deletions(-) diff --git a/concept1.cpc b/concept1.cpc index 6aca3fd..59e3b84 100644 --- a/concept1.cpc +++ b/concept1.cpc @@ -2,12 +2,11 @@ ' les mots clef peuvent prendre des "flags" et des arguments ' un peu à la maniere de programme POSIX (les flags obligatoirements ' avant les arguments) - txt/ /#R "Hello " txt/ "World" ' ${} aurait la meme comportement que les {} dans les f-strings en python -txt/ "il est ${sys/ /time}" +txt/ "il est ${SYS.TIME}" ' pour definir une fonction ' def/ name (args) @@ -18,17 +17,15 @@ def/ hello (name) txt/ "hello ${name}" end/ -' Une petite lambda: -goodby = lambda/ (name) - text/ "Goodbye ${name}" -end/ +' Comme en python lambda: +goodby = lambda/ (name) text/ "Goodbye ${name}" ' et on les appeleraient comme ceci: call/ hello "test de julien a nouveau" ' l'idée serait de séparer mot clef (finissant par / et reserver) et l'espace de nom utilisateur -' on pourrait inclure des dépendances externes avec par ex "use/" -use/ "cpcgui" +' on pourrait inclure des dépendances externes avec par ex "include/" +include/ "cpcgui" ' ce qui permettrait d'importer 2 types de librairies ' - code cc+ ' - libnative (et ces dernieres pourrait ajouter de nouveaux keywords) @@ -121,3 +118,42 @@ PictureBox/ .image = "%user_path%/name.png" end/ +' (Ici Chrapati. Après avoir légèrement modifier quelques trucs qui ont été mis en place par les autres, voici ce que je propose) : + +' Pour les variables modifiables par l'utilisateur : + +let/ /input: "Entrez une valeur : ", x + +txt/ "${x}" + +' Pour les conditions + +let/ y = 5 + +if/ + x == y then: + txt/ "x est egal a y" + or x < y then: + txt/ "x est inferieur a y" + else: + txt/ "x est superieur a y" +end/ + +' Pour les boucles type "tant que" + +while/ + x < y then: + let/ x + 1 +end/ + +' Pour les boucles type 'pour' + +let/ tab = [3, 5, 4, 9, 14, 15, 21, 38] + +for/ + y in tab: + if tab[0] == y then: + txt/ "y = ${tab[0]}" +end/ + + From 4a24529d6d56372cf45a7cc55224ee63793dd9c4 Mon Sep 17 00:00:00 2001 From: Chrapati <35665560+chrapati24@users.noreply.github.com> Date: Sun, 3 Jul 2022 19:43:05 +0200 Subject: [PATCH 04/14] Delete concept2.cpc.bas --- concept2.cpc.bas | 158 ----------------------------------------------- 1 file changed, 158 deletions(-) delete mode 100644 concept2.cpc.bas diff --git a/concept2.cpc.bas b/concept2.cpc.bas deleted file mode 100644 index a0e3133..0000000 --- a/concept2.cpc.bas +++ /dev/null @@ -1,158 +0,0 @@ -' keyword/ [/optn] [args...] -' les mots clef peuvent prendre des "flags" et des arguments -' un peu à la maniere de programme POSIX (les flags obligatoirements -' avant les arguments) -txt/ /#R "Hello " -txt/ "World" - -' ${} aurait la meme comportement que les {} dans les f-strings en python -txt/ "il est ${SYS.TIME}" - -' pour definir une fonction -' def/ name (args) -' body -' end/ - -def/ hello (name) - txt/ "hello ${name}" -end/ - -' Comme en python lambda: -goodby = lambda/ (name) text/ "Goodbye ${name}" - -' et on les appeleraient comme ceci: -call/ hello "test de julien a nouveau" -' l'idée serait de séparer mot clef (finissant par / et reserver) et l'espace de nom utilisateur - -' on pourrait inclure des dépendances externes avec par ex "include/" -include/ "cpcgui" -' ce qui permettrait d'importer 2 types de librairies -' - code cc+ -' - libnative (et ces dernieres pourrait ajouter de nouveaux keywords) - -let/ user_name = "admin" -' cpc.src.x serait une variable exporté par cpcgui (on pourrait imaginer -' un keyword 'export/' pour exporter des variables et des fonctions -let/ center_point_x = cpc.src.x / 2 -let/ center_point_y = cpc.src.y / 2 - -let/ logon_siz_x = cpc.src.x -let/ logon_siz_y = cpc.src.y - -let/ logon_pos_x = 0 -let/ logon_pos_y = 0 - -' window/ serait un keyword definis dans 'cpcgui' -' les lignes commençant par . indique un paramètre nommé -let/ logon_win_handle = window/ - .title = "Logon window" - .px = logon_pos_x - .py = logon_pos_y - .sx = logon_siz_x - .sy = logon_siz_y - .opacity = 100 - .parameters = "TYPE:4 ALPHAMODE:0 BLURRY:6 CTX:1" - .windowcolor = (50, 50, 100) - .titlecolor = (255, 255, 255) - .backcolor = (150, 0, 220) - .icon = "" -end/ - -' on aurait pu faire -login_win_handle = window/ "Logon window" logon_pos_x .... -' tout comme on peut faire -txt/ -.txt = "Hello World" ' ouai c'est naze mais c'est pour explicité l'idée -end/ - - -' ==== User image ==== - - -PictureBox/ -.parent = logon_win_handle - .parameters = "IMGAUTO:2" - .px = 0 - .py = 0 - .opacity = 255 - .sx = logon_siz_x - .sy = logon_siz_y - .image = "${Media_OS}/bckgnd/LOG_TRSP.png" -end/ - -image_SX = 99 -image_SY = 99 - -image_PX = center_point_x - (image_SX / 2) -image_PY = center_point_y - ((image_SY / 2) - 99) - -user_path = "%USER_OS%/%user_name%" - -PictureBox/ - .handle = logon_window_handle - .parameters = "IMGAUTO:2" - .px = image_PX - .py = image_PY - .opacity = 255 - .sx = image_SX - .sy = image_SY - .image = "%user_path%/image.png" - .event = "%_EXE_PATH_DIR%/logon_ev.cpc" ' TODO: trouver un truc cohérent pour ce genre de variable -end/ - -' ==== User image name ==== -name_SX = 99 -name_SY = 39 - -name_PX = center_point_x - (name_SX / 2) -name_PY = center_point_y - (name_SY / 2) - -PictureBox/ - .handle = logon_window_handle - .parameters = "IMGAUTO:2" - .px = name_PX - .py = name_PY - .opacity = 255 - .sx = name_SX - .sy = name_SY - .image = "%user_path%/name.png" -end/ - -' (Ici Chrapati. Après avoir légèrement modifier quelques trucs qui ont été mis en place par les autres, voici ce que je propose) : - -' Pour les variables modifiables par l'utilisateur : - -let/ /input: "Entrez une valeur : ", x - -txt/ "${x}" - -' Pour les conditions - -let/ y = 5 - -if/ - x == y then: - txt/ "x est egal a y" - or x < y then: - txt/ "x est inferieur a y" - else: - txt/ "x est superieur a y" -end/ - -' Pour les boucles type "tant que" - -while/ - x < y then: - let/ x + 1 -end/ - -' Pour les boucles type 'pour' - -let/ tab = [3, 5, 4, 9, 14, 15, 21, 38] - -for/ - y in tab: - if tab[0] == y then: - txt/ "y = ${tab[0]}" -end/ - From a16a72d5beda9f3328e841a58c819279b14b3666 Mon Sep 17 00:00:00 2001 From: Chrapati <35665560+chrapati24@users.noreply.github.com> Date: Mon, 4 Jul 2022 15:26:17 +0200 Subject: [PATCH 05/14] Some fixes --- concept1.cpc | 28 ++++++++++------------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/concept1.cpc b/concept1.cpc index 59e3b84..879f7bc 100644 --- a/concept1.cpc +++ b/concept1.cpc @@ -17,15 +17,12 @@ def/ hello (name) txt/ "hello ${name}" end/ -' Comme en python lambda: -goodby = lambda/ (name) text/ "Goodbye ${name}" - ' et on les appeleraient comme ceci: call/ hello "test de julien a nouveau" ' l'idée serait de séparer mot clef (finissant par / et reserver) et l'espace de nom utilisateur -' on pourrait inclure des dépendances externes avec par ex "include/" -include/ "cpcgui" +' on pourrait inclure des dépendances externes avec par ex "import/" +import/ "cpcgui" ' ce qui permettrait d'importer 2 types de librairies ' - code cc+ ' - libnative (et ces dernieres pourrait ajouter de nouveaux keywords) @@ -118,8 +115,6 @@ PictureBox/ .image = "%user_path%/name.png" end/ -' (Ici Chrapati. Après avoir légèrement modifier quelques trucs qui ont été mis en place par les autres, voici ce que je propose) : - ' Pour les variables modifiables par l'utilisateur : let/ /input: "Entrez une valeur : ", x @@ -130,19 +125,17 @@ txt/ "${x}" let/ y = 5 -if/ - x == y then: - txt/ "x est egal a y" - or x < y then: +if/ x == y then: + txt/ "x est egal a y" +or x < y then: txt/ "x est inferieur a y" - else: +else: txt/ "x est superieur a y" end/ ' Pour les boucles type "tant que" -while/ - x < y then: +while/ x < y then: let/ x + 1 end/ @@ -150,10 +143,9 @@ end/ let/ tab = [3, 5, 4, 9, 14, 15, 21, 38] -for/ - y in tab: - if tab[0] == y then: - txt/ "y = ${tab[0]}" +for/ y in tab: + if/ tab[0] == y then: + txt/ "y = ${tab[0]}" end/ From 3c0c13c534bec01a0c92da0b1113885dcba1a94d Mon Sep 17 00:00:00 2001 From: Chrapati <35665560+chrapati24@users.noreply.github.com> Date: Tue, 19 Jul 2022 17:46:32 +0200 Subject: [PATCH 06/14] Modifications de certains trucs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit J'ai viré les `then:` pour voir ce que ça donne. --- concept1.cpc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/concept1.cpc b/concept1.cpc index 879f7bc..66a83d9 100644 --- a/concept1.cpc +++ b/concept1.cpc @@ -125,9 +125,9 @@ txt/ "${x}" let/ y = 5 -if/ x == y then: +if/ x == y : txt/ "x est egal a y" -or x < y then: +or x < y : txt/ "x est inferieur a y" else: txt/ "x est superieur a y" @@ -135,7 +135,7 @@ end/ ' Pour les boucles type "tant que" -while/ x < y then: +while/ x < y : let/ x + 1 end/ @@ -144,7 +144,7 @@ end/ let/ tab = [3, 5, 4, 9, 14, 15, 21, 38] for/ y in tab: - if/ tab[0] == y then: + if/ tab[0] == y : txt/ "y = ${tab[0]}" end/ From bb854748f184a98277f93c2435b0c28fec5ea4dd Mon Sep 17 00:00:00 2001 From: Chrapati <35665560+chrapati24@users.noreply.github.com> Date: Wed, 20 Jul 2022 22:34:32 +0200 Subject: [PATCH 07/14] Update concept1.cpc --- concept1.cpc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/concept1.cpc b/concept1.cpc index 66a83d9..6a6db2a 100644 --- a/concept1.cpc +++ b/concept1.cpc @@ -127,9 +127,9 @@ let/ y = 5 if/ x == y : txt/ "x est egal a y" -or x < y : +if/ x < y : txt/ "x est inferieur a y" -else: +else/ txt/ "x est superieur a y" end/ From d26506098e009a5f363ba24cd885a1f9ac322489 Mon Sep 17 00:00:00 2001 From: Chrapati <35665560+chrapati24@users.noreply.github.com> Date: Thu, 21 Jul 2022 11:42:16 +0200 Subject: [PATCH 08/14] Modifications avec une proposition de keyboard-slayer --- concept1.cpc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/concept1.cpc b/concept1.cpc index 6a6db2a..ccac262 100644 --- a/concept1.cpc +++ b/concept1.cpc @@ -127,7 +127,7 @@ let/ y = 5 if/ x == y : txt/ "x est egal a y" -if/ x < y : +elif/ x < y : txt/ "x est inferieur a y" else/ txt/ "x est superieur a y" From 6d6c96f147b3f10a678fd1e8fa1677d2f47d637e Mon Sep 17 00:00:00 2001 From: Chrapati <35665560+chrapati24@users.noreply.github.com> Date: Thu, 21 Jul 2022 11:46:23 +0200 Subject: [PATCH 09/14] =?UTF-8?q?Quelques=20changements.=20TW=20:=20peut?= =?UTF-8?q?=20y=20avoir=20des=20trucs=20un=20peu=20weird=20l=C3=A0-dedans?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- concept1.cpc | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/concept1.cpc b/concept1.cpc index ccac262..18671bc 100644 --- a/concept1.cpc +++ b/concept1.cpc @@ -11,18 +11,18 @@ txt/ "il est ${SYS.TIME}" ' pour definir une fonction ' def/ name (args) ' body -' end/ +' end/ def def/ hello (name) txt/ "hello ${name}" -end/ +end/ def ' et on les appeleraient comme ceci: call/ hello "test de julien a nouveau" ' l'idée serait de séparer mot clef (finissant par / et reserver) et l'espace de nom utilisateur -' on pourrait inclure des dépendances externes avec par ex "import/" -import/ "cpcgui" +' on pourrait inclure des dépendances externes avec par ex "use/" +use/ "cpcgui" ' ce qui permettrait d'importer 2 types de librairies ' - code cc+ ' - libnative (et ces dernieres pourrait ajouter de nouveaux keywords) @@ -53,7 +53,7 @@ let/ logon_win_handle = window/ .titlecolor = (255, 255, 255) .backcolor = (150, 0, 220) .icon = "" -end/ +end/ window ' on aurait pu faire login_win_handle = window/ "Logon window" logon_pos_x .... @@ -75,7 +75,7 @@ PictureBox/ .sx = logon_siz_x .sy = logon_siz_y .image = "${Media_OS}/bckgnd/LOG_TRSP.png" -end/ +end/ PictureBox image_SX = 99 image_SY = 99 @@ -95,7 +95,7 @@ PictureBox/ .sy = image_SY .image = "%user_path%/image.png" .event = "%_EXE_PATH_DIR%/logon_ev.cpc" ' TODO: trouver un truc cohérent pour ce genre de variable -end/ +end/ PictureBox ' ==== User image name ==== name_SX = 99 @@ -113,7 +113,7 @@ PictureBox/ .sx = name_SX .sy = name_SY .image = "%user_path%/name.png" -end/ +end/ PictureBox ' Pour les variables modifiables par l'utilisateur : @@ -131,13 +131,13 @@ elif/ x < y : txt/ "x est inferieur a y" else/ txt/ "x est superieur a y" -end/ +end/ if ' Pour les boucles type "tant que" while/ x < y : let/ x + 1 -end/ +end/ while ' Pour les boucles type 'pour' @@ -146,6 +146,6 @@ let/ tab = [3, 5, 4, 9, 14, 15, 21, 38] for/ y in tab: if/ tab[0] == y : txt/ "y = ${tab[0]}" -end/ +end/ for From c3456c3a68bed6bfd139679c3de23e57e8ece93c Mon Sep 17 00:00:00 2001 From: Chrapati <35665560+chrapati24@users.noreply.github.com> Date: Sun, 7 Aug 2022 00:20:55 +0200 Subject: [PATCH 10/14] Update concept1.cpc --- concept1.cpc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/concept1.cpc b/concept1.cpc index 18671bc..cf79df5 100644 --- a/concept1.cpc +++ b/concept1.cpc @@ -148,4 +148,12 @@ for/ y in tab: txt/ "y = ${tab[0]}" end/ for +' Pour les conditions types "switch" (comme en C++). Attention, ça peut piquer des yeux. + +switch/ x : + case/ 1 : "Yes" + case/ 2 : "No" + case/ default : "None" +end/ switch + From 824ee17d83ad29d9a38cacd17e8e71b466ed4708 Mon Sep 17 00:00:00 2001 From: Chrapati <35665560+chrapati24@users.noreply.github.com> Date: Tue, 23 Aug 2022 13:11:52 +0200 Subject: [PATCH 11/14] Update concept1.cpc --- concept1.cpc | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/concept1.cpc b/concept1.cpc index cf79df5..8379911 100644 --- a/concept1.cpc +++ b/concept1.cpc @@ -131,12 +131,12 @@ elif/ x < y : txt/ "x est inferieur a y" else/ txt/ "x est superieur a y" -end/ if +end/ ' Pour les boucles type "tant que" while/ x < y : - let/ x + 1 + let/ x = x + 1 end/ while ' Pour les boucles type 'pour' @@ -146,7 +146,8 @@ let/ tab = [3, 5, 4, 9, 14, 15, 21, 38] for/ y in tab: if/ tab[0] == y : txt/ "y = ${tab[0]}" -end/ for + end/ +end/ ' Pour les conditions types "switch" (comme en C++). Attention, ça peut piquer des yeux. @@ -154,6 +155,6 @@ switch/ x : case/ 1 : "Yes" case/ 2 : "No" case/ default : "None" -end/ switch +end/ From f9629ba1e70ac55cb0988540882f0a562f9d772e Mon Sep 17 00:00:00 2001 From: Chrapati <35665560+chrapati24@users.noreply.github.com> Date: Fri, 26 Aug 2022 23:49:09 +0200 Subject: [PATCH 12/14] =?UTF-8?q?On=20garde=20donc=20uniquement=20`end/`.?= =?UTF-8?q?=20Voil=C3=A0=20qui=20est=20fait=20^^?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- concept1.cpc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/concept1.cpc b/concept1.cpc index 8379911..3fca71c 100644 --- a/concept1.cpc +++ b/concept1.cpc @@ -11,11 +11,11 @@ txt/ "il est ${SYS.TIME}" ' pour definir une fonction ' def/ name (args) ' body -' end/ def +' end/ def/ hello (name) txt/ "hello ${name}" -end/ def +end/ ' et on les appeleraient comme ceci: call/ hello "test de julien a nouveau" @@ -53,7 +53,7 @@ let/ logon_win_handle = window/ .titlecolor = (255, 255, 255) .backcolor = (150, 0, 220) .icon = "" -end/ window +end/ ' on aurait pu faire login_win_handle = window/ "Logon window" logon_pos_x .... @@ -75,7 +75,7 @@ PictureBox/ .sx = logon_siz_x .sy = logon_siz_y .image = "${Media_OS}/bckgnd/LOG_TRSP.png" -end/ PictureBox +end/ image_SX = 99 image_SY = 99 @@ -95,7 +95,7 @@ PictureBox/ .sy = image_SY .image = "%user_path%/image.png" .event = "%_EXE_PATH_DIR%/logon_ev.cpc" ' TODO: trouver un truc cohérent pour ce genre de variable -end/ PictureBox +end/ ' ==== User image name ==== name_SX = 99 @@ -113,7 +113,7 @@ PictureBox/ .sx = name_SX .sy = name_SY .image = "%user_path%/name.png" -end/ PictureBox +end/ ' Pour les variables modifiables par l'utilisateur : From af03aaa5dbde4d1ccc2ecaea371c2ae036869b3d Mon Sep 17 00:00:00 2001 From: Chrapati <35665560+chrapati24@users.noreply.github.com> Date: Wed, 16 Nov 2022 09:51:03 +0100 Subject: [PATCH 13/14] Create concept_ui.cpc --- concept_ui.cpc | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 concept_ui.cpc diff --git a/concept_ui.cpc b/concept_ui.cpc new file mode 100644 index 0000000..900248a --- /dev/null +++ b/concept_ui.cpc @@ -0,0 +1,49 @@ +// Ce fichier, que j'ai fait à part du premier fichier, permet de conceptualiser une syntaxe pour la lib GUI de Cpcdos OS3.0 + +use/ "cpcgui" // D'après ce qui avait été défini, on importe la lib native pour ajouter les keywords spécifiques à l'interface graphique + +// On conceptualisera les éléments graphiques comme suit : + +let/ my_window = window/ ... end/ + +// (Je n'ai pas complété le code de la fenêtre) +// L'élément est déclaré dans une variable. Cela permettra de créer un parent pour les éléments enfants que nous allons intégrer plus tard + +// Auparavant, une fenêtre se créait ainsi : + +window/ my_old_window + ... + ... + @#my_old_window_handle create/ +end/ window + +// La ligne qui précède `end/ window` créait un handle permettant d'associer un parent lors de la création d'un élément enfant. +// Aujourd'hui, on passe par une simple déclaration de variable. Ce qui formalise également une seule façon de déclarer des variables. +// Code complet d'une fenêtre en CC+ 3.0 : + +let/ my_window = window/ + .title = "My window" + .px = 100 + .py = 100 + .sx = 300 + .sy = 200 + .opacity = 255 // L'oppacité est une valeur qui va de 0 à 255 + .parameters = "TYPE:0" // Je définirais les paramètres ultérieurement dans ce document + .barcolor = (50,50,100) + .titlecolor = (255,255,255) + .windowcolor = (198,198,198) + .icon = "" +end/ + +// J'ai fait le choix délibéré de remplacer "windowcolor" qui change la couleur de la bar-titre par "barcolor" par question de logique. +// "windowcolor" va remplacer "backcolor". +// "titlecolor" reste inchangé. + + + + + + + + + From 9bfc52019584d582625f56855a445a27458887c7 Mon Sep 17 00:00:00 2001 From: Chrapati <35665560+chrapati24@users.noreply.github.com> Date: Wed, 16 Nov 2022 11:44:50 +0100 Subject: [PATCH 14/14] Update concept_ui.cpc --- concept_ui.cpc | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/concept_ui.cpc b/concept_ui.cpc index 900248a..43ab2af 100644 --- a/concept_ui.cpc +++ b/concept_ui.cpc @@ -39,6 +39,70 @@ end/ // "windowcolor" va remplacer "backcolor". // "titlecolor" reste inchangé. +// La création d'élément enfant se fait comme suit (ici, un bouton) : + +let/ my_window_btn = button/ + .parent = my_window + .px = 100 + .py = 100 + .sx = 30 + .sy = 15 + .opacity = 255 + .parameters = "CLICKABLE:1 IMGAUTO:0" + .text = "Click me !" + .backcolor = (50,50,100) + .textcolor = (255,255,255) + .image = "" + .events = my_window_btn_events +end/ + +// Remplacement de l'attribut "handle" par "parent" (c'est un choix personnel. On débattera des keywords de toute façon). +// Création d'un nouveau paramètre : CLICKABLE (0 : le bouton n'est pas cliquable - 1 : le bouton est cliquable). +// Dans .events, on indique la fonction qui définira les événements provoqués par le bouton lors de son actionnement. Les fonctions sont stockées dans des variables. + +// D'autres éléments enfants : + +let/ my_picturebox = picturebox/ + .parent = my_window + .px = 10 + .py = 10 + .sx = 16 + .sy = 16 + .opacity = 125 + .parameters = "IMGAUTO:0 + .image = "" +end/ + +let/ my_textblock = textblock/ + .parent = my_window + .px = 200 + .py = 200 + .sx = 100 + .sy = 15 + .font-size = 13 + .font-family = "sans-serif" + .parameters = "BOLD:1 ITALIC:1 UNDERLINE:1 ALIGN:0" + .textcolor = (255,255,255) + .backcolor = (0,0,0) +end/ + +// Ajout de deux nouveaux attributs inspirés du CSS : font-size et font-family +// Trois paramètres spécifiques : BOLD, ITALIC, UNDERLINE et ALIGN : 0 à gauche, 1 au centre, 2 à droite et 3 justifié + +let/ my_textbox = textbox/ + .parent = my_window + .px = 0 + .py = 150 + .sx = 100 + .sy = 15 + .font-size = 13 + .font-family = "sans-serif" + .parameters = "BOLD:1 ITALIC:0 UNDERLINE:0 ALIGN:0" + .textcolor = (0,0,0) + .backcolor = (255,255,255) +end/ + +// Les mêmes paramètres que pour le textblock. Je rajouterais d'autres éléments plus tard. En attendant, on a déjà de quoi faire une très bonne base.