Σάββατο 9 Μαρτίου 2019

Αναθεώρηση 8 έκδοση 9.8

Προσθήκη 2-12-2021
Στην Έκδοση 10, υπάρχει στο info αρχείο το τμήμα ΓΛΩΣΣΑ με πιο προχωρημένο κώδικα, με διάφανο τίτλο και μενού (combobox), με χρωματισμό της γραμμής που έχει το δρομέα, με χρώμα επιλεγμένο για την κάθετη μπάρα ολίσθησης (η οποία κρύβεται αυτόματα). Επίσης με μενού αναδυόμενο (popup) στη θέση του δρομέα με δυνατότητα να γράψουμε τον αριθμό γραμμής και να μεταφέρουμε το δρομέα εκεί! Επίσης υπάρχει και ένα Button που λειτουργεί μόνο ως ένδειξη μηνυμάτων δεξιά από το μενού, και δείχνει τη γραμμή και θέση του δρομέα με αριθμούς. Στο μενού επεξεργασία υπάρχει και το άνοιγμα στον διερμηνευτή της γλώσσας (αν είναι εγκατεστημένος, ανοίγει το πρόγραμμα εκεί για εκτέλεση). Στη βοήθεια αλλάζουμε τη προβολή, Μεγάλα ή Μικρά. Επίσης στο παράδειγμα αυτό δείχνω πως αλλάζουμε το μέγεθος γραμμάτων και γραμματοσειρά στον τίτλο της φόρμας! Δείτε επίσης πάνω αριστερά πως έχει μπει εικονίδιο και ότι υπάρχει ένα κουμπί με τρεις γραμμές από όπου δίνουμε εντολές για απόκρυψη (ελαχιστοποίηση) επέκταση (μεγιστοποίηση) και μετακίνηση και αλλαγή μεγέθους με τα πλήκτρα. Το έχω αφήσει επίτηδες έτσι ώστε βλέποντας άλλα προγράμματα μέσα στο Info να μπορεί κανείς να το βελτιώσει, όπως να δει πώς βάζουμε λειτουργία Hover στο μενού, όπου όταν πάμε το δείκτη του ποντικιού πάνω από τα μενού και τα ενεργοποιήσουμε μια φορά, τότε τα μενού ανοίγουν καθώς περνάμε το δείκτη πάνω τους, υπάρχει στο cs τον csharp editor. Επίσης δείτε πώς γίνεται να ορίσουμε Accelerator Keys, υπάρχουν στο mEditor (το οποίο έχει όλα εκτός από το πώς αλλάζουμε τα χρώματα στο EditBox, το οποίο το έχει το cs). Στο info υπάρχουν τέσσερις εκδοχές του NotePad, mEditor (έχει και δεύτερο EditBox για βοήθεια της M2000, κρυφό αρχικά), cs, htmleditor, ΓΛΩΣΣΑ. Το καθένα έχει κάτι διαφορετικό από τα άλλα!





Παλιό Κείμενο (Έκδοση 8, τρέχει και στην 10 - γενικά οι νέες εκδόσεις είναι συμβατές με τις παλιές):
Βελτίωσα τον χρωματιστή κώδικα στο EditBox,
Εδώ είναι το notepad με τις αλλαγές για να χρωματίζει κώδικα σε ΓΛΩΣΣΑ του λυκείου για το μάθημα ΑΕΠΠ.

Σε linux μπορεί κανείς να χρησιμοποιήσει  "DejaVu Sans Mono", 14
Η τελευταία παράμετρος της "FontAttr" είναι τα bold, με true έχουμε bold γράμματα.

\\ notepad
Show
Clear
Flush
Title$="Πρόχειρο Γλώσσας"
Dir User
Title Title$, 0
Declare NotePad Form
Declare Pad EditBox Form NotePad
Declare File1 Combobox Form NotePad
Declare Edit1 Combobox Form NotePad
Declare Help1 Combobox Form NotePad
Method Pad, "FontAttr", "COURIER NEW", 12, false
With Pad, "NoWrap", True, "ColorCollection1", "|ΠΡΟΓΡΑΜΜΑ|ΜΕΤΑΒΛΗΤΕΣ|ΠΡΑΓΜΑΤΙΚΕΣ|ΑΚΕΡΑΙΕΣ|ΛΟΓΙΚΕΣ|ΧΑΡΑΚΤΗΡΕΣ|ΣΤΑΘΕΡΕΣ|ΑΡΧΗ|ΓΡΑΨΕ|ΔΙΑΒΑΣΕ|ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ|DIV|MOD|ΑΝ|ΤΟΤΕ|ΑΛΛΙΩΣ|ΑΛΛΙΩΣ_ΑΝ|ΤΕΛΟΣ_ΑΝ|ΓΙΑ|ΑΠΟ|ΜΕΧΡΙ|ΜΕ_ΒΗΜΑ|ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ|ΕΠΙΛΕΞΕ|ΠΕΡΙΠΤΩΣΗ|ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ|ΟΣΟ|ΕΠΑΝΑΛΑΒΕ|ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ|ΜΕΧΡΙΣ_ΟΤΟΥ|ΚΑΙ|Η|ΟΧΙ|ΑΛΗΘΗΣ|ΨΕΥΔΗΣ|ΚΑΛΕΣΕ|ΔΙΑΔΙΚΑΣΙΑ|ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ|Α_Μ(|Α_Τ(|Ε|ΕΦ(|ΗΜ(|ΛΟΓ(|ΣΥΝ(|Τ_Ρ(|ΣΥΝΑΡΤΗΣΗ|ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ|", "LineComment1", "!!", "OtherSymbols",",≤≥≠", "CommentSymbols", "!", "ComSymbolsWidth", 1, "WordCharRight", " ,[]+-*/)}≤≥≠"+chr$(9), "WordCharleft", " ,[]+*/({≤≥≠"+chr$(9),  "LineComment2",CHR$(0), "StringSep2","'", "AssignSym","<-"
With File1,"label","Αρχείο", "listtext" As list$, "list" As list$() '
With Edit1,"label","Επεξεργασία",  "Mark", Color(255,100,0)
With Help1,"label","Βοήθεια",  "Mark", Color(255,100,0)
With NotePad, "Title" As Caption$, "Visible" As Visible, "TitleHeight" As tHeight, "Sizable", True
With Pad, "Text" As Pad.Text$, "NoColor", False, "ShowAlways", True, "tabwidth",2
Def TitleStr$(a$)=ucase$(left$(a$,1))+mid$(a$,2)
Filename$=Dir$+"νεο.glo"
Caption$=TitleStr$(File.Name$(Filename$)) +" - ΓΛΩΣΣΑ"
Method NotePad,"move", 2000, 4000, 8000, 4000
Layer NotePad {Cls #FFA000}
With File1,"MenuStyle", True, "MenuWidth", 3000 
With Edit1,"MenuStyle", True, "MenuWidth", 3000 
With Help1,"MenuStyle", True, "MenuWidth", 3000 
With File1, "MenuEnabled" As mEnable()
For This {
 mi$="MenuItem"  \\ is a temporary variable only for For This Block
 Method File1, mi$,"Φόρτωσε",True
 Method File1, mi$,"Σώσε",True
 Method File1, mi$,""    \\  only  a line here
 Method File1, mi$,"Κλείσε",True
 Method File1, mi$,"Έξοδος",True
 
 Method Edit1, mi$,"Αποκοπή",True
 Method Edit1, mi$,"Αντιγραφή",True
 Method Edit1, mi$,"Επικόληση",True
 
 Method Help1, mi$,"Περί",True
}
Document BackUp$=""
Pad.Text$=BackUp$
Function Notepad.Unload {
      Keyboard "!"
}
Function Notepad.Resize {
      Layer NotePad { Cls Color(255, 160, 0) ,0}
      With NotePad, "Width" As NP.Width, "Height" As NP.Height, "TitleHeight" As tHeight
      tHeight1=theight*2
      Method File1,"move", twipsX*2, tHeight,  twipsX*100, tHeight
      Method Edit1,"move", twipsX*2+twipsX*100, tHeight,  twipsX*160, tHeight
      Method Help1,"move", twipsX*2+twipsX*260, tHeight,  twipsX*120, tHeight
      If NP.height>2000 Then {
            Method Pad,"move", twipsX*2, tHeight1,  NP.Width-twipsX*5, NP.Height-tHeight1-twipsx*3
            With Pad, "NoWrap" As NoWrap
            If Not NoWrap Then Method Pad,"Resize"
      }
}
Function Edit1.DblClick {
      Read Local Edit1index
      Select Case Edit1index
      Case 0
            {
            Method Pad,"mn1sub"
            Method Pad,"Resize"
            }
      Case 1
            Method Pad,"mn2sub"
      Case 2
            {
                 Method Pad, "mn3sub"
                 Method Pad,"GetFocus"
                 Method Pad,"Resize"
           }
      End Select
}
Function Pad.PopUp {
      Read Local X, Y
      Method Pad,"PopUpMenu", "",X , Y
}
Function File1.DblClick {
      Read New File1index
      Local cont, cont2, f$, NL$={
      }
      File1index++
      {
      On File1index Goto Open1, Save1, ExitNow, Save2, Unload
      Exitnow:
      Exit
Open1:
      If Pad.Text$<>BackUp$ Then {
            If ask("Save Changes first?",Title$)=1 Then Goto Save1
      }
     Layer NotePad {
           Open.file filename$,"c:\","Φόρτωσε Αρχείο","glo"
     }
     Method Pad,"GetFocus"
     Read f$
     If f$<>"" Then {
           Filename$=f$
           If exist(F$) then {
           Clear BackUp$
           Load.Doc BackUp$, f$
           Caption$=TitleStr$(File.Name$(Filename$)) +" - ΓΛΩΣΣΑ"
           Pad.Text$=BackUp$
           } else Pad.text$="": Clear BackUp$
           Method Pad, "Resize"
      }
      Exit
Save1:
      Layer NotePad {
            Save.As Filename$,"c:\","Σώσε αρχείο","glo"
      }
      if not cont2 then Method Pad,"GetFocus"
      Read f$
      If f$="" Then Exit 
      If lcase$(file.type$(f$))<>"glo" then f$=f$+".glo"
      If Exist(f$) Then  If Ask(NL$+"Overwrite"+NL$+f$,Title$)<>1 Then Exit
      Try ok {
        Clear BackUp$
        BackUp$=Pad.Text$
        Save.Doc BackUp$, f$
        filename$=f$
        Caption$=TitleStr$(File.Name$(Filename$)) +" - M2000 Pad"
      }
     If ok else beep
     If not cont then Exit
Save2:
      cont=True
      If Pad.Text$<>BackUp$ Then {
            If ask("Να σωθούν οι αλλαγές;",Title$)=1 Then Goto Save1
      }
      Clear BackUp$
      Pad.Text$=""
      If Cont2 then {
           Method NotePad, "CloseNow"
           Keyboard "!"  \\ to end the loop
      } Else {
            FileName$=Dir$+"νεο.glo"
            Caption$=TitleStr$(File.Name$(Filename$)) +" - ΓΛΩΣΣΑ"
            Method Pad, "Resize"
      }
      Exit
Unload:
      Cont2=True : Goto Save2
      }
}
Function Help1.DblClick {
      Local A, info$
      Info$={
            Πρόχειρο για συγγραφή προγραμμάτων σε ΓΛΩΣΣΑ για το μάθημα της ΑΕΠΠ
            }
      A=Ask(info$,Title$,"","")


}
Call Local Notepad.Resize()


Method NotePad,"Show" ', 1
Every 1000 {
If inkey$<>"" then exit
}
Declare Pad Nothing
Declare NotePad Nothing 
Print "Τέλος"



Εδώ η εικόνα από τη φόρμα:




Ο κώδικας μπορεί να εξαχθεί με αντιγραφή στο πρόχειρο με το χρώμα:

ΠΡΟΓΡΑΜΜΑ ΑΛΦΑ
ΣΤΑΘΕΡΕΣ
  ΜΕΓΙΣΤΟ_ΠΛΗΘΟΣ_ΚΕΛΙΩΝ = 100
  ΜΕΓΙΣΤΟ_ΠΛΗΘΟΣ_ΜΠΛΟΚ = 50
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: ΠΙΝ[ΜΕΓΙΣΤΟ_ΠΛΗΘΟΣ_ΚΕΛΙΩΝ], ΜΠΛΟΚ[ΜΕΓΙΣΤΟ_ΠΛΗΘΟΣ_ΜΠΛΟΚ], Ν, Μ
  ΑΚΕΡΑΙΕΣ: Ι, Π, Κ, Λ, Π1
  ΑΚΕΡΑΙΕΣ: ΣΠ[ΜΕΓΙΣΤΟ_ΠΛΗΘΟΣ_ΜΠΛΟΚ*2], ΣΚ[ΜΕΓΙΣΤΟ_ΠΛΗΘΟΣ_ΜΠΛΟΚ*2], ΣΤΟΙΒΑ
  ΑΚΕΡΑΙΕΣ: ΜΗΚΟΣ[ΜΕΓΙΣΤΟ_ΠΛΗΘΟΣ_ΜΠΛΟΚ]
  ΛΟΓΙΚΕΣ: ΣΗΜΑΙΑ
ΑΡΧΗ
  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
    ΓΡΑΨΕ "ΔΩΣΕ ΑΡΙΘΜΟ ΚΕΛΙΩΝ:"
    ΔΙΑΒΑΣΕ Ν
  ΜΕΧΡΙΣ_ΟΤΟΥ Ν > 0 ΚΑΙ Ν <= ΜΕΓΙΣΤΟ_ΠΛΗΘΟΣ_ΚΕΛΙΩΝ
  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
    ΓΡΑΨΕ "ΔΩΣΕ ΑΡΙΘΜΟ ΜΠΛΟΚ"
    ΔΙΑΒΑΣΕ Μ
  ΜΕΧΡΙΣ_ΟΤΟΥ Μ >= 0 ΚΑΙ Μ <= ΜΕΓΙΣΤΟ_ΠΛΗΘΟΣ_ΜΠΛΟΚ
  ΜΗΚΟΣ[1] <- 0
  ΑΝ Μ > 0 ΤΟΤΕ
    ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Μ
      ΓΡΑΨΕ "ΜΕΓΕΘΟΣ ΜΠΛΟΚ:", Ι
      ΔΙΑΒΑΣΕ ΜΠΛΟΚ[Ι]
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
    ΜΗΚΟΣ[Μ] <- ΜΠΛΟΚ[Μ]
    ΑΝ Μ > 1 ΤΟΤΕ
      ΓΙΑ Ι ΑΠΟ Μ - 1 ΜΕΧΡΙ 1 ΜΕ_ΒΗΜΑ -1
        ΜΗΚΟΣ[Ι] <- ΜΠΛΟΚ[Ι] + ΜΗΚΟΣ[Ι + 1] + 1
      ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΑΝ
  ΑΝ ΜΗΚΟΣ[1] > Ν ΤΟΤΕ
    ΓΡΑΨΕ "ΑΔΥΝΑΤΟΝ"
  ΑΛΛΙΩΣ_ΑΝ Μ = 0 ΤΟΤΕ
    ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν
      ΓΡΑΨΕ 0, "  "
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
    ΓΡΑΨΕ
  ΑΛΛΙΩΣ
    ΣΤΟΙΒΑ <- 0
    Π1 <- 0
    Λ <- 0
    ΟΣΟ Π1 <= (Ν - ΜΗΚΟΣ[1]) ΕΠΑΝΑΛΑΒΕ
      Κ <- 0
      Π <- Π1 + 1
      ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν
        ΠΙΝ[Ι] <- 0
      ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
   
      ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
        ΟΣΟ Κ < Μ ΕΠΑΝΑΛΑΒΕ
          Κ <- Κ + 1
          Λ <- 0
          ΟΣΟ Λ < ΜΠΛΟΚ[Κ] ΚΑΙ Π <= Ν ΕΠΑΝΑΛΑΒΕ
            Λ <- Λ + 1
            ΠΙΝ[Π] <- 1
            Π <- Π + 1
          ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
          ΑΝ Π < Ν ΤΟΤΕ
            ΠΙΝ[Π] <- 0
            Π <- Π + 1
            ΑΝ Κ < Μ ΤΟΤΕ
              ΑΝ (Π + ΜΗΚΟΣ[Κ + 1]) <= Ν ΤΟΤΕ
                ΣΤΟΙΒΑ <- ΣΤΟΙΒΑ + 1
                ΣΠ[ΣΤΟΙΒΑ] <- Π
                ΣΚ[ΣΤΟΙΒΑ] <- Κ
              ΤΕΛΟΣ_ΑΝ
            ΤΕΛΟΣ_ΑΝ
          ΤΕΛΟΣ_ΑΝ
        ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
     
        ΣΗΜΑΙΑ <- ΑΛΗΘΗΣ
        ΑΝ Λ = ΜΠΛΟΚ[Κ] ΤΟΤΕ
          ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν
            ΓΡΑΨΕ ΠΙΝ[Ι], "  "
          ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
          ΓΡΑΨΕ
          ΑΝ ΣΤΟΙΒΑ > 0 ΤΟΤΕ
            Π <- ΣΠ[ΣΤΟΙΒΑ]
            Κ <- ΣΚ[ΣΤΟΙΒΑ]
            ΣΤΟΙΒΑ <- ΣΤΟΙΒΑ - 1
            ΓΙΑ Ι ΑΠΟ Π ΜΕΧΡΙ Ν
              ΠΙΝ[Ι] <- 0
            ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
            Π <- Π + 1
            ΑΝ Κ < Μ ΤΟΤΕ
              ΑΝ (Π + ΜΗΚΟΣ[Κ + 1]) <= Ν ΤΟΤΕ
                ΣΤΟΙΒΑ <- ΣΤΟΙΒΑ + 1
                ΣΠ[ΣΤΟΙΒΑ] <- Π
                   ! το ΣΚ[ΣΤΟΙΒΑ]<-Κ δεν το βάζουμε είναι ήδη Κ
              ΤΕΛΟΣ_ΑΝ
            ΤΕΛΟΣ_ΑΝ
            ΣΗΜΑΙΑ <- ΨΕΥΔΗΣ
          ΤΕΛΟΣ_ΑΝ
        ΤΕΛΟΣ_ΑΝ
      ΜΕΧΡΙΣ_ΟΤΟΥ ΣΗΜΑΙΑ = ΑΛΗΘΗΣ
      Π1 <- Π1 + 1
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ




Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου

You can feel free to write any suggestion, or idea on the subject.