Gambas France BETA


Pas de compte ? Incription

GB3_EditorBash

À propos de ce code

Bonjour @ Toutes & Tous.

Voici le nouvel EditeurBash.
D'abords, je tiens à remercier les Contributeurs,
du Forum, pour m'avoir aidé, avec leurs différents messages.
Je ne cite pas de Nom, ils se reconnaîtrons.
Car, Je veux surtout pas en oublier.

Cet éditeur, est parfaitement Fonctionnel, et sobre.
Avec les numéros de lignes, entrée de données,
signal sonore et infos sur retour d'Erreur.

Je vous laisse le découvrir.
Merci de laisser, vos commentaires, remarques et améliorations,
sur le Forum ICI
que je puisse avoir les notification par Imail, et répondre plus vite.

Pour l'utiliser comme en Console, il suffit de taper bash dans l'éditeur,
puis Cliquer sur Start et de rentrer les commandes dans < Line For Input >.

Pour les Scripts, entrer les lignes de commandes,
(sans taper bash) puis Cliquer sur Start.

(Dans un fichier vide, le Shebang est mis automatiquement,
en cliquant sur Start).

Reivillo.

Mis à jour le 30 octobre 2013


Code source

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
' Gambas class file

' Vérifier la cible du lien < /bin/sh > avec la commande < readlink /bin/sh >
' Chez nous, il pointait sur < /bin/dash >
' Donc, on a recréé un lien symbolique pointant vers < /bin/bash >
' Avec la commande en root < sudo ln -b /bin/bash /bin/sh >

PUBLIC sPathScript AS STRING = application.Path & "/.pathscript"
PUBLIC sPathProjets AS STRING = Application.path & "/projets/"
PUBLIC hScriptBash AS Process
PUBLIC sShebang AS STRING = "#!/bin/bash\n"
PUBLIC sPathFile AS STRING
PUBLIC sScript AS STRING

PUBLIC SUB Form_Open()

ME.w = 600
ME.h = ME.w
ME.Center
ME.y = 0
form_Resize
Editor1.Flags[Editor1.ShowLineNumbers] = TRUE
Editor1.LineNumberOffset = -1
Editor1.Highlight = 8
LoadFile
Panel2.Enabled = FALSE
TextArea1.Text = ""
LineForInput.Text = ""

END

PUBLIC SUB LoadFile()

SHELL "cat " & sPathScript TO sScript
Label2.text = " PathFile > " & sScript
SHELL "cat " & sScript TO Editor1.Text

END

PUBLIC SUB form_Resize()

DIM iSize AS INTEGER = 350

IF (ME.w < iSize) OR (ME.h < iSize) THEN
ME.w = iSize
ME.h = ME.w
ENDIF
Editor1.h = ME.h * 0.5

END

PUBLIC SUB form_Close()

IF hScriptBash <> NULL THEN hScriptBash.Kill

END

PUBLIC SUB Start()

IF Left$(Editor1.Text, 12) <> sShebang THEN Editor1.Text = sShebang & Editor1.Text
Editor1.Text = RTrim$(Editor1.Text)
Editor1.Text &= "\n"
File.Save(sScript, Editor1.text)
Editor1.ReadOnly = TRUE
TextArea1.Clear
LineForInput.SetFocus
TBtnStart.Enabled = FALSE
TBtnStop.Enabled = TRUE
Panel2.Enabled = TRUE
LineForInput.SetFocus
hScriptBash = SHELL Editor1.text FOR READ WRITE AS "hScriptBash"

END

PUBLIC SUB LineForInput_KeyPress()

IF Key.Code = Key["Return"] THEN
TextArea1.Text &= " > " & LineForInput.Text & "\n"
PRINT #hScriptBash, LineForInput.Text
LineForInput.Text = ""
ENDIF

END

PUBLIC SUB hScriptBash_Read()

DIM sLigne AS STRING

READ #LAST, sLigne, -256
TextArea1.Text &= sLigne

END

PUBLIC SUB hScriptBash_Error(sError AS STRING)

IF sError <> "" THEN
SHELL "aplay " & Application.Path & "/error.wav "
TextArea1.Text &= " Tested with ERRORs !\n" & sError
ENDIF

END

PUBLIC SUB hScriptBash_Kill()

TextArea1.Text &= " \n<< Test " & file.Name(sScript) & " Terminé >>\n"
TBtnStart.Enabled = TRUE
TBtnStop.Enabled = FALSE
Panel2.Enabled = FALSE
Editor1.SetFocus
Editor1.ReadOnly = FALSE

END

PUBLIC SUB PanelCmd_MouseUp()

WITH Editor1
SELECT CASE LAST.Tooltip
CASE "OpenFile"
Dialog.Path = sPathProjets
Dialog.Filter = ["*.sh"]
IF Dialog.OpenFile(TRUE) THEN RETURN
FOR EACH sScript IN Dialog.Paths
file.Save(sPathScript, sScript)
LoadFile
NEXT
CASE "Start"
start
CASE "Stop"
hScriptBash.Kill
CASE "Copy"
IF .HasFocus THEN
.Copy
ELSE
IF TextArea1.HasFocus THEN
TextArea1.Copy
ENDIF
ENDIF
CASE "SelectAll"
.SelectAll
CASE "Paste"
IF .HasFocus THEN
.Paste
ELSE
IF TextArea1.HasFocus THEN
TextArea1.Paste
ENDIF
ENDIF
CASE "Undo"
.Undo
CASE "Redo"
.Redo
CASE "Book"
Dialog.Filter = ["*.pdf"]
dialog.Path = Application.path & "/book/"
IF Dialog.OpenFile(TRUE) THEN RETURN
FOR EACH sPathFile IN Dialog.Paths
SHELL "atril " & sPathFile
NEXT
CASE "SaveAs"
Dialog.Filter = ["*.sh"]
dialog.Path = sPathProjets
IF Dialog.SaveFile() THEN RETURN
File.Save(Dialog.Path, Editor1.Text)
END SELECT
END WITH
CATCH
Message.Info(Error.Text)

END

Commentaires

Commentaire de Jappy49, Le 2/1/2013 à 16:26:35
Bonne année aux Gambasiens!
Intéressant utilitaire que je teste sur OpenSuse 11.4 et Gambas 3.3.90
Premier problème : gb.gui: unable to load 'gb.gtk' component
Je vais voir ce qui cloche.

Jappy49