LibreOffice 24.8 Βοήθεια
Η υπηρεσία Μενού μπορεί να χρησιμοποιηθεί για τη δημιουργία και την αφαίρεση μενού από τη γραμμή μενού ενός παραθύρου εγγράφου του LibreOffice. Κάθε καταχώρηση μενού μπορεί να συσχετιστεί με ένα σενάριο ή με μια εντολή UNO. Αυτή η υπηρεσία παρέχει τις ακόλουθες δυνατότητες:
Δημιουργία μενού με προσαρμοσμένες καταχωρήσεις, πλαίσια ελέγχου, κουμπιά επιλογής και διαχωριστικά.
Διακόσμηση στοιχείων μενού με εικονίδια και συμβουλές οθόνης.
Τα μενού που δημιουργούνται με αυτήν την υπηρεσία είναι διαθέσιμα μόνο για ένα καθορισμένο παράθυρο εγγράφου. Δεν αποθηκεύονται στο έγγραφο ή ως ρυθμίσεις εφαρμογής. Το κλείσιμο και το άνοιγμα του εγγράφου θα επαναφέρει τις προεπιλεγμένες ρυθμίσεις της γραμμής μενού.
Όταν τα αντικείμενα OLE, όπως μαθηματικοί τύποι ή γραφήματα Calc επεξεργάζονται μέσα από ένα έγγραφο, το LibreOffice διαμορφώνει εκ νέου τη γραμμή μενού σύμφωνα με το αντικείμενο. Όταν συμβεί αυτό, τα μενού που δημιουργούνται με την υπηρεσία Menu καταργούνται και δεν επαναφέρονται μετά την επεξεργασία του αντικειμένου OLE.
Πριν χρησιμοποιήσετε την υπηρεσία Menu, πρέπει να φορτωθεί ή να εισαχθεί η βιβλιοθήκη ScriptForge:
Η υπηρεσία Μενού δημιουργείται με την κλήση της μεθόδου CreateMenu από την υπηρεσία Document. Το παρακάτω απόσπασμα κώδικα δημιουργεί ένα μενού με το όνομα My Menu στο τρέχον παράθυρο του εγγράφου με δύο καταχωρήσεις Item A (Στοιχείο A) και Item B (Στοιχείο Β) .
    Sub CreateMenu()
        GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
        Dim oDoc as Object, oMenu as Object
        Set oDoc = CreateScriptService("Document")
        Set oMenu = oDoc.CreateMenu("My Menu")
        With oMenu
            .AddItem("Item A", Command := "About")
            .AddItem("Item B", Script := "vnd.sun.star.script:Standard.Module1.ItemB_Listener?language=Basic&location=application")
            .Dispose()
        End With
    End Sub
  Μετά τη δημιουργία του μενού, συνιστάται να καλέσετε τη μέθοδο Dispose (Απόρριψη) για να ελευθερώσετε τους πόρους που χρησιμοποιούνται από την παρουσία της υπηρεσίας Menu.
Στο παραπάνω παράδειγμα, το Item A (Στοιχείο A) σχετίζεται με την εντολή UNO .uno:About, ενώ το Item B (Στοιχείο B) σχετίζεται με το σενάριο ItemB_Listener που ορίστηκε στο Module1 της βιβλιοθήκης Standard του περιέκτη My Macros (Οι μακροεντολές μου).
Το παρακάτω παράδειγμα ορίζει το ItemB_Listener που θα καλείται όταν πατάτε στο Item B. Αυτός ο ακροατής απλώς χωρίζει τη συμβολοσειρά ορισμάτων που μεταβιβάστηκε στο Sub και τα εμφανίζει σε ένα πλαίσιο μηνύματος.
    Sub ItemB_Listener(args As String)
        ' Επεξεργασία της συμβολοσειράς ορισμάτων που μεταβιβάστηκε στον ακροατή
        Dim sArgs as Object
        sArgs = Split(args, ",")
        MsgBox "Όνομα μενού: "   & sArgs(0) & Chr(13) & _
               "Στοιχείο μενού: "   & sArgs(1) & Chr(13) & _
               "Αναγνωριστικό στοιχείου: "     & sArgs(2) & Chr(13) & _
               "Κατάσταση στοιχείου: " & sArgs(3)
    End Sub
  Όπως φαίνεται στο παραπάνω παράδειγμα, οι καταχωρήσεις μενού που σχετίζονται με ένα σενάριο λαμβάνουν ένα όρισμα συμβολοσειράς διαχωρισμένο με κόμμα με τις ακόλουθες τιμές:
Το όνομα ανωτάτου επιπέδου του μενού.
Το αναγνωριστικό συμβολοσειράς της επιλεγμένης καταχώρισης μενού.
Το αριθμητικό αναγνωριστικό της επιλεγμένης καταχώρισης μενού.
Η τρέχουσα κατάσταση του στοιχείου μενού. Αυτό είναι χρήσιμο για πλαίσια ελέγχου και κουμπιά επιλογής. Εάν το στοιχείο είναι επιλεγμένο, επιστρέφεται η τιμή "1", διαφορετικά επιστρέφεται το "0".
Τα παραπάνω παραδείγματα μπορούν να γραφτούν στην Python ως εξής:
    from scriptforge import CreateScriptService
    
    def create_menu(args=None):
        oDoc = CreateScriptService("Document")
        oMenu = oDoc.CreateMenu("My Menu")
        oMenu.AddItem("Item A", command="About")
        oMenu.AddItem("Item B", script="vnd.sun.star.script:my_macros.py$item_b_listener?language=Python&location=user")
        oMenu.Dispose()
  
    def item_b_listener(args):
        bas = CreateScriptService("Basic")
        s_args = args.split(",")
        msg = f"Όνομα του μενού: {s_args[0]}\n"
        msg += f"Στοιχείο του μενού: {s_args[1]}\n"
        msg += f"Αναγνωριστικό του μενού: {s_args[2]}\n"
        msg += f"Κατάσταση του στοιχείου: {s_args[3]}"
        bas.MsgBox(msg)
  | Όνομα | Μόνο για ανάγνωση | Τύπος | Περιγραφή | 
|---|---|---|---|
| ShortcutCharacter | Όχι | String | Ο χαρακτήρας που χρησιμοποιείται για τον καθορισμό του κλειδιού πρόσβασης ενός στοιχείου μενού. Ο προεπιλεγμένος χαρακτήρας είναι "~". | 
| SubmenuCharacter | Όχι | String | Ο χαρακτήρας ή η συμβολοσειρά που καθορίζει τον τρόπο ένθεσης των στοιχείων μενού. Ο προεπιλεγμένος χαρακτήρας είναι ">". | 
Για να δημιουργήσετε ένα μενού με υπομενού, χρησιμοποιήστε τον χαρακτήρα που ορίστηκε στην ιδιότητα SubmenuCharacter, ενώ δημιουργείτε την καταχώρηση μενού για να ορίσετε πού θα τοποθετηθεί. Για παράδειγμα, εξετάστε την ακόλουθη ιεραρχία μενού/υπομενού.
    ' Item A
    ' Item B > Item B.1
    '          Item B.2
    ' ------ (line separator)
    ' Item C > Item C.1 > Item C.1.1
    '                     Item C.1.2
    ' Item C > Item C.2 > Item C.2.1
    '                     Item C.2.2
    '                     ------ (line separator)
    '                     Item C.2.3
    '                     Item C.2.4
  Ο παρακάτω κώδικας χρησιμοποιεί τον προεπιλεγμένο χαρακτήρα υπομενού ">" για να δημιουργήσει την ιεραρχία μενού/υπομενού που ορίζεται παραπάνω:
    oMenu.AddItem("Item A")
    oMenu.AddItem("Item B>Item B.1")
    oMenu.AddItem("Item B>Item B.2")
    oMenu.AddItem("---")
    oMenu.AddItem("Item C>Item C.1>Item C.1.1")
    oMenu.AddItem("Item C>Item C.1>Item C.1.2")
    oMenu.AddItem("Item C>Item C.2>Item C.2.1")
    oMenu.AddItem("Item C>Item C.2>Item C.2.2")
    oMenu.AddItem("Item C>Item C.2>---")
    oMenu.AddItem("Item C>Item C.2>Item C.2.3")
    oMenu.AddItem("Item C>Item C.2>Item C.2.4")
  Η συμβολοσειρά --- χρησιμοποιείται για τον ορισμό διαχωριστικών γραμμών σε μενού ή υπομενού.
| Κατάλογος μεθόδων στην υπηρεσία μενού | ||
|---|---|---|
Εισάγει ένα πλαίσιο ελέγχου στο μενού. Επιστρέφει μια ακέραιη τιμή που προσδιορίζει το στοιχείο που έχει εισαχθεί.
svc.AddCheckBox(menuitem: str, opt name: str, opt status: bool, opt icon: str, opt tooltip: str, opt command: str, opt script: str): int
menuitem: (στοιχείο μενού:) Καθορίζει το κείμενο που θα εμφανίζεται στο μενού. Αυτό το όρισμα ορίζει επίσης την ιεραρχία του στοιχείου μέσα στο μενού χρησιμοποιώντας τον χαρακτήρα του υπομενού.
name: (όνομα:) Η τιμή της συμβολοσειράς που χρησιμοποιείται για τον προσδιορισμό του στοιχείου μενού. Από προεπιλογή, χρησιμοποιείται το τελευταίο στοιχείο της ιεραρχίας του μενού.
status: (κατάσταση:) Καθορίζει εάν το στοιχείο επιλέγεται κατά τη δημιουργία του μενού (Προεπιλογή = False).
icon: (εικονίδιο:) Η διαδρομή και το όνομα του εικονιδίου που θα εμφανιστεί χωρίς το αρχικό διαχωριστικό της διαδρομής. Το πραγματικό εικονίδιο που εμφανίζεται εξαρτάται από το χρησιμοποιούμενο σύνολο των εικονιδίων.
tooltip: Το κείμενο που θα εμφανίζεται ως επεξήγηση εργαλείου.
command: (εντολή:) Το όνομα μιας εντολής UNO χωρίς το πρόθεμα .uno:. Εάν το όνομα της εντολής δεν υπάρχει, δεν συμβαίνει τίποτα.
script: Το URI για ένα σενάριο Basic ή Python που θα εκτελεστεί όταν πατηθεί το στοιχείο.
Τα ορίσματα command και script είναι αμοιβαία αποκλειόμενα, επομένως μόνο ένα από αυτά μπορεί να οριστεί για κάθε στοιχείο μενού.
Διαβάστε τις Προδιαγραφές URI πλαισίου σεναρίου για να μάθετε περισσότερα σχετικά με τη σύνταξη URI που χρησιμοποιείται στο script.
      ' Καταχώρηση μενού που σχετίζεται με την εντολή .uno:Paste
      oMenu.AddCheckBox("Item A", Status := True, ToolTip := "Paste values", Command := "Paste")
      Εκτελεί το σενάριο της Basic Standard.Module1.MyListener που είναι αποθηκευμένο στο έγγραφο
      oMenu.AddCheckBox("Item B", Status := False, Script := "vnd.sun.star.script:Standard.Module1.MyListener?language=Basic&location=document")
      ' Εκτελεί το σενάριο της Python MyListener που βρίσκεται στο αρχείο myScripts.py στον φάκελο scripts του χρήστη
      oMenu.AddCheckBox("Item C", Status := True, Script := "vnd.sun.star.script:myScripts.py$MyListener?language=Python&location=user")
    
      oMenu.AddCheckBox("Item A", status=True, tooltip="Paste values", command="Paste")
      oMenu.AddCheckBox("Item B", status=False, script="vnd.sun.star.script:Standard.Module1.MyListener?language=Basic&location=document")
      oMenu.AddCheckBox("Item C", Status=True, Script="vnd.sun.star.script:myScripts.py$MyListener?language=Python&location=user")
    Εισάγει μια καταχώρηση ετικέτας στο μενού. Επιστρέφει μια ακέραια τιμή που προσδιορίζει το εισαγόμενο στοιχείο.
svc.AddItem(menuitem: str, opt name: str, opt icon: str, opt tooltip: str, opt command: str, opt script: str): int
menuitem: (στοιχείο μενού:) Καθορίζει το κείμενο που θα εμφανίζεται στο μενού. Αυτό το όρισμα ορίζει επίσης την ιεραρχία του στοιχείου μέσα στο μενού χρησιμοποιώντας τον χαρακτήρα του υπομενού.
name: (όνομα:) Τιμή συμβολοσειράς που θα επιστραφεί όταν πατηθεί το στοιχείο. Από προεπιλογή, χρησιμοποιείται το τελευταίο στοιχείο της ιεραρχίας του μενού.
icon: (εικονίδιο:) Η διαδρομή και το όνομα του εικονιδίου που θα εμφανιστεί χωρίς το αρχικό διαχωριστικό της διαδρομής. Το πραγματικό εικονίδιο που εμφανίζεται εξαρτάται από το χρησιμοποιούμενο σύνολο των εικονιδίων.
tooltip: Το κείμενο που θα εμφανίζεται ως επεξήγηση εργαλείου.
command: (εντολή:) Το όνομα μιας εντολής UNO χωρίς το πρόθεμα .uno:. Εάν το όνομα της εντολής δεν υπάρχει, δεν συμβαίνει τίποτα.
script: Το URI για ένα σενάριο Basic ή Python που θα εκτελεστεί όταν πατηθεί το στοιχείο.
      oMenu.AddItem("Στοιχείο A", Tooltip := "Ένα περιγραφικό μήνυμα")
    
      oMenu.AddItem ("Στοιχείο Α", tooltip = "Περιγραφικό μήνυμα")
    Εισάγει μια καταχώρηση κουμπιού επιλογής στο μενού. Επιστρέφει μια ακέραια τιμή που προσδιορίζει το στοιχείο που έχει εισαχθεί.
svc.AddRadioButton(menuitem: str, opt name: str, opt status: str, opt icon: str, opt tooltip: str, opt command: str, opt script: str): int
menuitem: (στοιχείο μενού:) Καθορίζει το κείμενο που θα εμφανίζεται στο μενού. Αυτό το όρισμα ορίζει επίσης την ιεραρχία του στοιχείου μέσα στο μενού χρησιμοποιώντας τον χαρακτήρα του υπομενού.
name: (όνομα:) Τιμή συμβολοσειράς που θα επιστραφεί όταν πατηθεί το στοιχείο. Από προεπιλογή, χρησιμοποιείται το τελευταίο στοιχείο της ιεραρχίας του μενού.
status: (κατάσταση:) Καθορίζει εάν το στοιχείο επιλέγεται κατά τη δημιουργία του μενού (Προεπιλογή = False).
icon: (εικονίδιο:) Η διαδρομή και το όνομα του εικονιδίου που θα εμφανιστεί χωρίς το αρχικό διαχωριστικό της διαδρομής. Το πραγματικό εικονίδιο που εμφανίζεται εξαρτάται από το χρησιμοποιούμενο σύνολο των εικονιδίων.
tooltip: Το κείμενο που θα εμφανίζεται ως επεξήγηση εργαλείου.
command: (εντολή:) Το όνομα μιας εντολής UNO χωρίς το πρόθεμα .uno:. Εάν το όνομα της εντολής δεν υπάρχει, δεν συμβαίνει τίποτα.
script: Το URI για ένα σενάριο Basic ή Python που θα εκτελεστεί όταν πατηθεί το στοιχείο.
      oMenu.AddRadioButton("Item A", Name := "A", Status := True)
    
      oMenu.AddRadioButton("Item A", name="A", status=True)