Είδα λοιπόν λίγο τα περιβάλλοντα εργασίας του Linux για προγραμματισμό μιας και δεν τα έχω ακουμπήσει καιρό κάποια από αυτά ... αναφέρομαι στα Kdevelop, Monodevelop και Gambas.
Εφτιαξα μια μικρή παραλαγή της εφαρμογή εορτολογίου που είχα κατεβάσει και εγκαταστήσει λίγο παλαιότερα (το εορτολόγιo screenlet που έφτιαξε ο Μισδανίτης Δημήτρης από το http://code.google.com/p/eortologio/) ύστερα από την εμφάνιση του στο linux format.
Διάβασα τον κώδικα και εφόσον δεν κάνει τίποτα τρομερό είπα να το κάνω μια παραλλαγή της εφαρμογής δοκιμάζοντας τις λειτουργίες του Gambas.
Αναπωλήσα ! Αχ αυτή η Βasic ... . πολυ όμορφο πράγμα οι αναμνήσεις ... μονο REM δεν έγραψα! To gambas θα σας θυμίσει πάντως την M$ Visual Basic απο 3 εως 6 ....
Αντε να δούμε τώρα πως θα είναι η υπερπίδηση στο MonoDevelop και το εντυπωσιακότατο QT creator της Nokia λέει.
Για όσους ενδιαφέρονται να δούν πως παίζει στο gambas ακολουθεί ο κώδικας. Απλά φτιάξτε τα παρακάτω τρία controls (ένα calendar-DateChooser1 , ένα listbox-lstGiortes και ένα κουμπί-btnPasxa) το ένα κάτω απο το άλλο σε μια φόρμα.
http://rapidshare.com/files/259130716/eortologioGAMBAS.tar.gz
' Gambas class file
STATIC PUBLIC kinites AS String[] = ["-70", "Τελώνου και Φαρισαίου - Αρχή Τριωδίου", "-63", "Του Ασώτου", "-59", "Τσικνοπέμπτη", "-56", "Της Απόκρεω", "-49", "Τυροφάγου", "-48", "Καθαρά Δευτέρα", "-43", "Αγίου Θεοδώρου (Θεόδωρος, Θεοδώρα, Δώρα, Ντόρα, Θόδωρος, Θοδώρα, Θοδωρής, Θοδωράκης, Θώδης, Θώδος, Δώρης)", "-42", "Κυριακή της Ορθοδοξίας (Ορθοδοξία, Λωξάνδρα, Λωξάντρα, Ρωξάνη)", "-35", "Γρηγορίου του Παλαμά (Γρηγόριος, Γρηγόρης, Γρηγορία, Γόλης) (σημείωση: εορτάζεται και στις 14 Νοε)", "-8", "Σάββατο του Λαζάρου (Λάζαρος, Λάζος)", "-7", "Κυριακή των Βαίων (Βάϊος, Βάϊα, Βάγια, Βαία, Δάφνη)", "-6", "Μεγάλη Δευτέρα (Πάγκαλος)", "-5", "Μεγάλη Τρίτη", "-4", "Μεγάλη Τετάρτη", "-3", "Μεγάλη Πέμπτη", "-2", "Μεγάλη Παρασκευή", "-1", "Μεγάλο Σάββατο", "0", "ΤΟ ΑΓΙΟ ΠΑΣΧΑ (Αναστάσιος, Αναστασία, Τάσος, Αναστάσης, Ανέστης, Λάμπρος, Λαμπρινή, Λαμπρίνα, Πασχάλης, Πασχαλίνα, Λίνα, Στασινός)", "+1", "2α Διακαινησίμου - Δευτέρα", "+2", "3η Διακαινησίμου - Τρίτη (Λαμπροτρίτη) - (Ραφαήλ, Νικόλαος και Ειρήνη Αγιοι Μυτιλήνης)", "+3", "4η Διακαινησίμου - Τετάρτη (Θεοχάρης)", "+4", "5η Διακαινησίμου - Πέμπτη", "+5", "Ζωοδόχου Πηγής Πηγή, Κρήνη, Κρηνιώ, Ζήσης, Ζησούλα, Ζήσιμος, Ζωή, Ζώης, Ζωϊτσα, Ζωζώ, Παναγιώτης, Πάνος, Πανούσος, Παναγής, Πανάγος, Γιώτης, Παναγιώτα, Γιώτα, Παναγιούλα, Γιούλα, Παναγούλα", "+6", "7η Διακαινησίμου - Σαββάτο", "+7", "Του Θωμά (Θωμάς, Θωμαή, Τόμας)", "+14", "Των Μυροφόρων (Μυροφόρα)", "+39", "Ανάληψη του Χριστού (Νεφέλη)", "+49", "Πεντηκοστή", "+50", "Αργία: Αγ. Πνεύματος (Τριάδα, Τριάς, Κόρη, Κορίνα, Κορίνος)", "+56", "Αγίων Πάντων"]
PUBLIC pathOfData AS String = "/home/agelos/Development/Gambas/testOfGambas/eortes.dat"
PUBLIC SelectedDate AS Date
PUBLIC SUB _new()
END
PUBLIC SUB Form_Open()
DateChooser1.Value = Now
LoadGiortes
END
PUBLIC SUB Form_Resize()
ME.Text = "Εορτολόγιο"
DateChooser1.Left = 5
DateChooser1.Width = DateChooser1.Parent.Width - 10
DateChooser1.Top = 5
DateChooser1.Height = DateChooser1.Parent.Height / 2 - 100 - 10
lstGiortes.Left = 5
lstGiortes.Width = DateChooser1.Parent.width - 10
lstGiortes.Top = DateChooser1.Top + DateChooser1.Height + 5
lstGiortes.Height = DateChooser1.Parent.Height / 2 + 100 - btnPasxa.Height - 10
btnPasxa.Left = 5
btnPasxa.Width = btnPasxa.Parent.width - 10
btnPasxa.Top = lstGiortes.Top + lstGiortes.Height + 5
'btnPasxa.Height = 100
END
PUBLIC SUB btnPasxa_Click()
DIM PasxaDate AS Date
DIM day1 AS Integer
DIM month1 AS Integer
DIM year1 AS Integer
DIM diafora AS String
DIM thisDate AS Date = DateChooser1.Value
SelectedDate = DateChooser1.Value
PasxaDate = CalculatePasxaDate(Year(SelectedDate))
day1 = Day(PasxaDate)
month1 = Month(PasxaDate)
year1 = Year(PasxaDate)
diafora = posoApexoumeApoPasxa(day1, month1, year1, thisDate)
lstGiortes.Clear()
lstGiortes.Add("Ημερομηνία Πάσχα: " & PasxaDate)
lstGiortes.Add("Απέχουμε απο το Πάσχα: " & diafora & " ημέρες")
lstGiortes.Add("Το πάσχα το " & year1 & " πέφτει στις " & Day(PasxaDate) & "/" & Month(PasxaDate))
END
PUBLIC SUB DateChooser1_Change()
LoadGiortes
END
PUBLIC SUB LoadGiortes()
DIM strStatic AS String[]
DIM StrGiorth AS String
DIM KinitesGiortes AS String[]
lstGiortes.Clear()
lstGiortes.Add("Ημερομηνία : " & DateChooser1.Value)
strStatic = StaticGiortesonDate(DateChooser1.Value)
KinitesGiortes = KinitesGiortesonDate(DateChooser1.Value)
IF strStatic.Count > 0 OR KinitesGiortes.count > 0 THEN
lstGiortes.Add("Σήμερα Γιορτάζουν :")
ELSE
lstGiortes.Add("Σήμερα δεν γιορτάζει κανείς")
END IF
IF strStatic.Count = 0 THEN
'lstGiortes.Add("-------- Δεν υπάρχουν Σταθερές Εορτές--------")
ELSE
'lstGiortes.Add("-------- Σταθερές --------")
FOR EACH StrGiorth IN strStatic
lstGiortes.Add(StrGiorth)
NEXT
END IF
IF KinitesGiortes.Count = 0 THEN
'lstGiortes.Add("-------- Δεν υπάρχουν Κινητές Εορτές--------")
ELSE
'lstGiortes.Add("-------- Κινητές --------")
FOR EACH StrGiorth IN KinitesGiortes
lstGiortes.Add(StrGiorth)
NEXT
END IF
END
PUBLIC FUNCTION KinitesGiortesonDate(DateSelected AS Date) AS String[]
DIM res AS NEW String[]
DIM kinith AS String
DIM iKinithDiaforaGiorths AS Integer
DIM iKinith AS Integer
DIM day1 AS Integer
DIM month1 AS Integer
DIM year1 AS Integer
DIM diaforaHmerwnApoPasxa AS Integer
day1 = Day(DateSelected)
month1 = Month(DateSelected)
year1 = Year(DateSelected)
diaforaHmerwnApoPasxa = posoApexoumeApoPasxa(day1, month1, year1, DateSelected)
'res.Add("Διαφορά ημερών απο το πάσχα :" & diaforaHmerwnApoPasxa)
FOR iKinith = 0 TO kinites.Count - 1 STEP 2 'πάρε ανα δυο τα νούμερα
iKinithDiaforaGiorths = kinites[iKinith]
'res.Add(iKinithDiaforaGiorths & " " & diaforaHmerwnApoPasxa)
IF diaforaHmerwnApoPasxa = iKinithDiaforaGiorths THEN
res.Add(kinites[iKinith + 1])
END IF
NEXT
RETURN res
END
PUBLIC FUNCTION StaticGiortesonDate(DateSelected AS Date) AS String[]
DIM res AS NEW String[]
DIM MyDay AS Integer
DIM myMonth AS Integer
DIM myYear AS Integer
DIM arr_strings AS String[]
DIM LineCheckisANewDate AS Boolean = FALSE
DIM strToCheck AS String
DIM numOfLines AS Integer
DIM iLineCounter AS Integer
DIM foundIandAfter AS Integer
DIM thisSTR AS String
DIM foundSTR AS String
DIM found AS Boolean = FALSE
MyDay = Day(DateSelected)
myMonth = Month(DateSelected)
myYear = Year(DateSelected)
'lstGiortes.Clear()
'res.Add("Ημέρα: " & MyDay)
'res.Add("Μήνας: " & myMonth)
'res.Add("Χρονιά: " & myYear)
arr_strings = Split(File.LOAD(pathOfData), "\n")
numOfLines = arr_strings.Count
strToCheck = MyDay & "/" & myMonth & " : "
'res.Add(strToCheck)
FOR iLineCounter = 0 TO numOfLines - 1
thisSTR = arr_strings[iLineCounter]
IF Comp(strToCheck, thisSTR) = 0 THEN
'lstGiortes.Add(strToCheck & " -- >" & thisSTR)
FOR foundIandAfter = iLineCounter + 1 TO numOfLines - 1
foundSTR = arr_strings[foundIandAfter]
IF Comp(Right$(foundSTR, 2), ": ") = 0 THEN
EXIT
ELSE
'foundSTR = Replace(foundSTR, " ", "")
foundSTR = Trim(foundSTR)
res.Add(foundSTR)
found = TRUE
END IF
NEXT
END IF
IF found THEN
'res.Add("Found and quiting")
EXIT
END IF
NEXT
RETURN res
END
'epistrefei 1 an einai disekto etos k 0 an den einai
PUBLIC FUNCTION IsLeapYear(aYear AS Integer) AS Boolean
IF (((aYear MOD 4 == 0) AND (aYear MOD 100 <> 0)) OR (aYear MOD 400 == 0)) THEN
RETURN TRUE
END IF
RETURN FALSE
END
'H sinartisi epistrefei ton arithmo ton imeron tou mina
PUBLIC FUNCTION howManyDays(aMonth AS Integer, aYear AS Integer) AS Integer
IF aMonth == 2 THEN
IF IsleapYear(aYear) == 1 THEN
RETURN 29
END IF
RETURN 28
END IF
IF (aMonth == 4) OR (aMonth == 6) OR (aMonth == 9) OR (aMonth == 11) THEN
RETURN 30
END IF
RETURN 31
END
'#epistrefei pote einai TO pasxa
PUBLIC FUNCTION CalculatePasxaDate(aYear AS Integer) AS Date
DIM pasxa_month AS Integer = 4
DIM pasxa_day AS Integer
DIM mndays AS Integer
DIM returnPasxaDate AS Date
pasxa_day = ((19 * (aYear MOD 19) + 16) MOD 30) + ((2 * (ayear MOD 4)) + (4 * (ayear MOD 7)) + (6 * ((19 * (ayear MOD 19) + 16) MOD 30))) MOD 7 + 3
mndays = howManyDays(pasxa_month, aYear)
IF pasxa_day > mndays THEN
pasxa_day -= mndays
pasxa_month = pasxa_month + 1
END IF
returnPasxaDate = Date(ayear, pasxa_month, pasxa_day, 0, 0, 0)
RETURN returnPasxaDate
END FUNCTION
'#poso apexei h dothisa Date apo TO pasxa
PUBLIC FUNCTION posoApexoumeApoPasxa(day1 AS Integer, month1 AS Integer, year1 AS Integer, thisDate AS Date) AS Integer
DIM dateOfPasxa AS Date = CalculatePasxaDate(Year(thisDate))
DIM diafora AS Integer
' DIM pasxa_month AS Integer = Year(dateOfPasxa)
' DIM pasxa_day AS Integer = Day(dateOfPasxa)
' DIM dm AS Integer
' DIM metr AS Integer
' IF month1 < diafora =" howManyDays(month1," dm =" pasxa_month" metr =" dm"> 0
' diafora = diafora + howManyDays(pasxa_month - metr, year1)
' metr = metr - 1
' WEND
' diafora = (diafora + pasxa_day) * (-1)
' ELSE
' IF month1 > pasxa_month THEN
' diafora = day1
' dm = Int(month1) - Int(pasxa_month)
' metr = dm - 1
' WHILE metr > 0
' diafora = Int(diafora) + Int(howManyDays(pasxa_month + metr, year1))
' metr = metr - 1
' WEND
' diafora = diafora + (howManyDays(pasxa_month, year1) - pasxa_day)
' ELSE IF month1 == pasxa_month THEN
' diafora = day1 - pasxa_day
' END IF
' END IF
diafora = DateDiff(thisDate, dateOfPasxa, gb.day)
'PRINT thisDate
'PRINT dateOfPasxa
'PRINT DateDiff(thisDate, dateOfPasxa, gb.Day)
RETURN diafora
END FUNCTION
6 σχόλια:
Το αρχείο έχει εξαφανιστεί στο rapidshare.
Ακολούθησα τις οδηγίες & έφτιαξα το form σε gambas.
Το eortes.dat πού μπορώ να το βρώ?
Ευγε τέκνον!
θα το βρείς στον πηγαίο του http://code.google.com/p/eortologio/
Ξαναχάθηκε το αρχείο. Συγγνώμη αλλά έπαθε άσχημο crash το μηχανημά μου...
Μπορείς να μου πείς, πού θα το βρώ;
ηταν παλιο το repository
θα το μεταφέρω εκεί
https://github.com/agelospanagiotakis/eortologio/
Άκυρο, τα κατάφερα τελικά.
Καλησπέρα, Μήπως το έβαλες το αρχείο εκεί;
Δημοσίευση σχολίου