Υπηρεσία SFWidgets.Menu

Η υπηρεσία Μενού μπορεί να χρησιμοποιηθεί για τη δημιουργία και την αφαίρεση μενού από τη γραμμή μενού ενός παραθύρου εγγράφου του LibreOffice. Κάθε καταχώρηση μενού μπορεί να συσχετιστεί με ένα σενάριο ή με μια εντολή UNO. Αυτή η υπηρεσία παρέχει τις ακόλουθες δυνατότητες:

note

Τα μενού που δημιουργούνται με αυτήν την υπηρεσία είναι διαθέσιμα μόνο για ένα καθορισμένο παράθυρο εγγράφου. Δεν αποθηκεύονται στο έγγραφο ή ως ρυθμίσεις εφαρμογής. Το κλείσιμο και το άνοιγμα του εγγράφου θα επαναφέρει τις προεπιλεγμένες ρυθμίσεις της γραμμής μενού.


warning

Όταν τα αντικείμενα OLE, όπως μαθηματικοί τύποι ή γραφήματα Calc επεξεργάζονται μέσα από ένα έγγραφο, το LibreOffice διαμορφώνει εκ νέου τη γραμμή μενού σύμφωνα με το αντικείμενο. Όταν συμβεί αυτό, τα μενού που δημιουργούνται με την υπηρεσία Menu καταργούνται και δεν επαναφέρονται μετά την επεξεργασία του αντικειμένου OLE.


Κλήση υπηρεσίας

Πριν χρησιμοποιήσετε την υπηρεσία Menu, πρέπει να φορτωθεί ή να εισαχθεί η βιβλιοθήκη ScriptForge:

note

• Οι μακροεντολές Basic απαιτούν τη φόρτωση της βιβλιοθήκης ScriptForge χρησιμοποιώντας την ακόλουθη πρόταση:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

• Τα σενάρια Python απαιτούν εισαγωγή από την ενότητα scriptforge:
από το scriptforge import CreateScriptService


Σε Basic

Η υπηρεσία Μενού δημιουργείται με την κλήση της μεθόδου 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
  
note

Μετά τη δημιουργία του μενού, συνιστάται να καλέσετε τη μέθοδο 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
  

Όπως φαίνεται στο παραπάνω παράδειγμα, οι καταχωρήσεις μενού που σχετίζονται με ένα σενάριο λαμβάνουν ένα όρισμα συμβολοσειράς διαχωρισμένο με κόμμα με τις ακόλουθες τιμές:

Σε Python

Τα παραπάνω παραδείγματα μπορούν να γραφτούν στην 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")
  
note

Η συμβολοσειρά --- χρησιμοποιείται για τον ορισμό διαχωριστικών γραμμών σε μενού ή υπομενού.


Χρήση εικονιδίων

Τα στοιχεία στο μενού μπορούν να έχουν εικονίδια, τα οποία καθορίζονται ως ορίσματα στις μεθόδους AddCheckBox, AddItem και AddRadioButton.

Όλα τα εικονίδια που είναι διαθέσιμα στο LibreOffice μπορούν να χρησιμοποιηθούν καθορίζοντας τη διαδρομή τους σε σχέση με το φάκελο όπου βρίσκονται τα αρχεία εικονιδίων στο φάκελο εγκατάστασης. Τα εικονίδια βρίσκονται στον ακόλουθο φάκελο:

INSTALLDIR/share/config

tip

Χρησιμοποιήστε την ιδιότητα InstallFolder της υπηρεσίας FileSystem για να προσδιορίσετε πού είναι εγκατεστημένο το LibreOffice στο σύστημά σας.


Αυτός ο φάκελος περιέχει μια σειρά από αρχεία ZIP που περιέχουν τα αρχεία εικόνας κάθε διαθέσιμου συνόλου εικονιδίων. Οι εικόνες μέσα σε αυτά τα αρχεία ZIP είναι οργανωμένες σε φακέλους. Για να χρησιμοποιήσετε ένα εικονίδιο, καθορίστε το αρχείο εικονιδίου με τη διαδρομή προς τη θέση του μέσα στο αρχείο ZIP.

Το παρακάτω παράδειγμα χρησιμοποιεί το εικονίδιο "sc_newdoc.svg" που βρίσκεται μέσα στο φάκελο "cmd". Ο χαρακτήρας "/" χρησιμοποιείται ως διαχωριστικό διαδρομής ανεξάρτητα από το λειτουργικό σύστημα.

Σε Basic

      myMenu.AddItem("Item A", Icon := "cmd/sc_newdoc.svg")
    
Σε Python

      myMenu.AddItem("Item A", icon="cmd/sc_newdoc.svg")
    
note

Όλα τα σύνολα εικονιδίων έχουν την ίδια εσωτερική δομή. Το ενεργό εικονίδιο που εμφανίζεται εξαρτάται από το σύνολο εικονιδίων που χρησιμοποιείται.


Μέθοδοι

Κατάλογος μεθόδων στην υπηρεσία μενού

AddCheckBox

AddItem

AddRadioButton


AddCheckBox

Εισάγει ένα πλαίσιο ελέγχου στο μενού. Επιστρέφει μια ακέραιη τιμή που προσδιορίζει το στοιχείο που έχει εισαχθεί.

Σύνταξη:

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 που θα εκτελεστεί όταν πατηθεί το στοιχείο.

note

Τα ορίσματα command και script είναι αμοιβαία αποκλειόμενα, επομένως μόνο ένα από αυτά μπορεί να οριστεί για κάθε στοιχείο μενού.


tip

Διαβάστε τις Προδιαγραφές URI πλαισίου σεναρίου για να μάθετε περισσότερα σχετικά με τη σύνταξη URI που χρησιμοποιείται στο script.


Παράδειγμα:

Σε Basic

      ' Καταχώρηση μενού που σχετίζεται με την εντολή .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")
    
Σε Python

      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")
    

AddItem

Εισάγει μια καταχώρηση ετικέτας στο μενού. Επιστρέφει μια ακέραια τιμή που προσδιορίζει το εισαγόμενο στοιχείο.

Σύνταξη:

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 που θα εκτελεστεί όταν πατηθεί το στοιχείο.

note

Τα ορίσματα command και script είναι αμοιβαία αποκλειόμενα, επομένως μόνο ένα από αυτά μπορεί να οριστεί για κάθε στοιχείο μενού.


tip

Διαβάστε τις Προδιαγραφές URI πλαισίου σεναρίου για να μάθετε περισσότερα σχετικά με τη σύνταξη URI που χρησιμοποιείται στο script.


Παράδειγμα:

Σε Basic

      oMenu.AddItem("Στοιχείο A", Tooltip := "Ένα περιγραφικό μήνυμα")
    
Σε Python

      oMenu.AddItem ("Στοιχείο Α", tooltip = "Περιγραφικό μήνυμα")
    

AddRadioButton

Εισάγει μια καταχώρηση κουμπιού επιλογής στο μενού. Επιστρέφει μια ακέραια τιμή που προσδιορίζει το στοιχείο που έχει εισαχθεί.

Σύνταξη:

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 που θα εκτελεστεί όταν πατηθεί το στοιχείο.

note

Τα ορίσματα command και script είναι αμοιβαία αποκλειόμενα, επομένως μόνο ένα από αυτά μπορεί να οριστεί για κάθε στοιχείο μενού.


tip

Διαβάστε τις Προδιαγραφές URI πλαισίου σεναρίου για να μάθετε περισσότερα σχετικά με τη σύνταξη URI που χρησιμοποιείται στο script.


Παράδειγμα:

Σε Basic

      oMenu.AddRadioButton("Item A", Name := "A", Status := True)
    
Σε Python

      oMenu.AddRadioButton("Item A", name="A", status=True)
    
warning

Όλες οι ρουτίνες ή αναγνωριστικά του ScriptForge στη Basic που έχουν το πρόθεμα χαρακτήρα υπογράμμισης "_" δεσμεύονται για εσωτερική χρήση. Δεν προορίζονται να χρησιμοποιηθούν σε μακροεντολές Basic ή σενάρια Python.


Παρακαλούμε, υποστηρίξτε μας!