Font-Liste beschränken

Startseite Foren Deutsches LiveCode-Forum Font-Liste beschränken

Ansicht von 14 Antwort-Themen
  • Autor
    Beiträge
    • #15021
      pderks
      Teilnehmer

        Liebe Leute, lieber Klaus,

        in einem Feld per Menu ‘Text’ einzelnen Wörtern oder Wörterfolgen eine jeweils andere Schrift zuzuweisen, ist – im Gegensatz zur Auszeichnung mit Merkmalen wie Stil oder Farbe – eine recht knifflige Übung: zählt die Font-Liste doch 553 Zeilen.

        Kennt jemand eine Methode, einen Eingriff, mittels deren | dessen ich die Auswahl der von LiveCode im Menu ‘Text’ angebotenen Schriften beschränken kann ?

        Gruß & Dank

        Peter

      • #15023
        Torsten
        Teilnehmer

          Hallo Peter,
          kannst Du genau beschreiben, was Du vorhast?

          Ich kann mir verschiedene Möglichkeiten vorstellen, aber welche am besten ist, hängt z.B. davon ab, wie oft du die Fonts wechseln willst.

          Besten Gruß
          Torsten

        • #15025
          Klaus Major
          Administrator

            Genau, WORAUF möchtest Du diese Liste beschränken?

          • #15027
            pderks
            Teilnehmer

              Hallo Torsten,
              Hallo Klaus,

              danke für Eure Anteilnahme.

              von den 553 Fonts, die ich im LiveCode-Menu ‘Text’ auswählen kann, möchte ich nur diese zur Auswahl angezeigt bekommen:
              Andale Mono
              Ardagh
              Arial Unicode MS
              Chalkboard
              Charcoal
              Copperplate
              Courier
              Courier Bold
              Courier Bold Oblique
              Courier Oblique
              Helvetica
              Helvetica Bold
              Helvetica Neue Bold
              Helvetica Neue Italic
              Helvetica Oblique
              Herculanum
              Lucida Grande
              Lucida Grande Bold
              Menlo Bold
              Menlo Bold Italic
              Menlo Italic
              Menlo Regular
              Monaco
              Palatino
              Palatino Bold
              Palatino Bold Italic
              Palatino Italic
              Skia Black
              Skia Black Condensed
              Skia Black Extended
              Skia Bold
              Skia Condensed
              Skia Extended
              Skia Light
              Skia Light Condensed
              Skia Light Extended
              Skia Regular
              Times Bold
              Times Bold Italic
              Times Italic
              Times Roman.

              Ich durchsuche gerade alle Skripte des Mac LiveCode Bundles nach der Stelle, wo ‘the fontnames’ aufgerufen, sortiert und im Menu ‘Text’ gelistet werden.

              Gruß

              Peter

            • #15029
              Klaus Major
              Administrator

                Hi Peter,

                nun, da hier keine Gesetzmäßigkeit erkennbar ist, möchtest Du wohl eher das LC Fontmenu durch Deine Liste ersetzen, sehe ich das richtig?

                Gruß

                Klaus

              • #15031
                pderks
                Teilnehmer

                  Hi Klaus,

                  genau das (glaubte ich auch geschildert zu haben) …

                  Peter

                • #15035
                  Klaus Major
                  Administrator

                    Hm, arbeitest Du am Mac oder Windows?
                    Auf jeden Fall im Skript-Only stack -> revmenubar.livecodescript
                    Darin wird das Menü aufgebaut und Du könntest dort ansetzen.

                    Wie, weiß ich leider auch nicht genau, ich überlege mal…

                  • #15037
                    pderks
                    Teilnehmer

                      Ich arbeite mit Mac(intosh) … und untersuche gerade die “.livecodescript”-Dateien.

                    • #15039
                      Klaus Major
                      Administrator

                        Du kannst auch Folgendes machen in der Messagebox:
                        set the clipboarddata[“text”] to the text of btn “Text” of grp “revmenubar” of stack “revmenubar”

                        Dann in einen Texteditor Deiner Wahl den Text einfügen und die Fontliste nach Deinen Wünschen modifizieren.

                        Dann diese Liste kopieren und den umgekehrten Weg gehen:
                        set the text of btn “Text” of grp “revmenubar” of stack “revmenubar” to the clipboarddata[“text”]

                        Falls Du “verkackst”, schnell LC beenden ohne speichern! 🙂
                        Da alles beim nächsten Start von LC wieder weg ist, würde ich mir einen kleinen Stack erstellen, mit einem Feld, wo Deine Liste reinkommt und einem button, der obiges mit Deiner Liste macht.

                        Den dann immer klicken, nachdem du LC gestartet hast.

                      • #15041
                        Klaus Major
                        Administrator

                          Am Mac findest Du den Stack hier per Rechtsklick auf die App -> Paketinhalt zeigen:
                          Livecode xxx.app/Contents/Tools/Toolset/palettes/menubar/revmenubar.livecodescript

                        • #15044
                          pderks
                          Teilnehmer

                            Hallo Klaus,

                            Deine Konstruktion von 15:52h gefällt mir sehr: ich arbeite auch gern “handwerklich”.

                            Bis später

                            Peter

                          • #15046
                            Torsten
                            Teilnehmer

                              Falls Du eine etwas ungefährlichere Methode ausprobieren willst:

                              Erstell Option Menü-Button in einem Stack und kopiere als “Menu Items” deine angepasste Fontliste hinein.

                              Dann kopiere folgendes Script in den Script des Buttons:

                              on mouseUp 
                                 
                                 set the textFont of the selectedChunk to the label of me
                                 
                              end mouseUp 

                              Wenn Du jetzt einen Text markierst und dann im Menü den gewünschten Font anwählst, wird der Textteil in diesem Font dargestellt.

                              Den Option Menü-Button kannst Du dann einfach kopieren, wenn Du in einem anderen Stack die Fonts in einem Feld verändern willst. Auf diese Weise kannst Du auch Apps mit entsprechender Funktionalität erstellen und als Standalone weitergeben.

                              So funktioniert meine Version: https://youtu.be/nPEys4oFAlU

                              Beste Grüße
                              Torsten

                            • #15048
                              Klaus Major
                              Administrator

                                Oder so! 😀

                              • #15053
                                pderks
                                Teilnehmer

                                  Guten Morgen,

                                  auf Klaus’ Vorschlag von 15:54h habe ich mal hier
                                  Livecode xxx.app/Contents/Tools/Toolset/palettes/menubar/revmenubar.livecodescript
                                  gestöbert.

                                  Jetzt habe ich einen Stapel mit 2 Zeichensatzlisten:
                                  • alle Computer-Zeichensätze,
                                  • durch Zeilenklick ausgewählte Zeichensätzew.

                                  Die Taste [pd] soll nur ‘meine’ Fonts (‘UserFontList’),
                                  die Taste [LC] soll alle Zeichensätze in LiveCodes Text-Menu anbieten.

                                  [LC] hat dieses Script:

                                  on MouseUp
                                    SetUpTextMenu "LC"
                                  end MouseUp

                                  [pd] hat dieses Script:

                                  on MouseUp
                                    SetUpTextMenu "pd"
                                  end MouseUp

                                  Das Stapel-Skript sieht so aus:

                                  private on setupTextMenu ModeX
                                    put fld "UserFontList" into UserFontList
                                    if UserFontList = "" then
                                      beep 3
                                      answer "User Font List is empty ..."
                                      exit to Top
                                    end if
                                    local tText
                                    put toggleMenuItem("Plain/;", false) & return after tText
                                    put toggleMenuItem("&Bold/B", false) & return after tText
                                    put toggleMenuItem("&Italic/I", false) & return after tText
                                    put toggleMenuItem("&Underline/U", false) & return after tText
                                    put toggleMenuItem("Strikeout", false) & return after tText
                                    put toggleMenuItem("Box", false) & return after tText
                                    put toggleMenuItem("3D Box", false) & return after tText
                                    put "-" & return after tText
                                    put toggleMenuItem("Link", false) & return after tText
                                    put "-" & return after tText
                                    put toggleMenuItem("Subscript", false) & return after tText
                                    put toggleMenuItem("Superscript", false) & return after tText
                                    put "-" & return after tText
                                    put "Font" & return after tText
                                    
                                    local tFontNames
                                    if ModeX = "LC"
                                    then put the FontNames into tFontNames
                                    else put UserFontList into tFontNames
                                    replace "/" with "\" in tFontNames
                                    sort lines of tFontNames
                                    
                                    beep
                                    put ModeX & cr & tFontNames
                                    
                                    /* Fake fonts begin with "(", but the menu code interprets a "(" at
                                    the beginning of the item to mean the item is disabled.
                                    So, to show a "(" instead of disabling, we need to double it */
                                    repeat with tLine = 1 to the Number of lines of tFontNames
                                      if line tLine of tFontNames begins with "(" then
                                        put "(" before line tLine of tFontNames
                                      end if
                                    end repeat
                                    
                                    put "Use Owner's Font" & return & "-" & return before tFontNames
                                    
                                    local fontnum
                                    put 1 into fontnum
                                    repeat for each line tFontName in tFontNames
                                      if tFontName is "-" then
                                        put tab & tFontName & return after tText
                                      else
                                        put "!u" & tab & tFontName & return after tText
                                      end if
                                    end repeat
                                    
                                    put "Size" & return after tText
                                    
                                    local tFontSizes
                                    put Format("Use Owner's Size\n-\n8\n9\n10\n12\n14\n18\n24\n36\n48\n-\nOther...") into tFontSizes
                                    repeat for each line l in tFontSizes
                                      if l is "-" then put tab & l & cr after tText
                                      else put "!u" & tab & l & cr after tText
                                    end repeat
                                    put "Color" & cr after tText
                                    
                                    local tColors
                                    put Format("Use Owner's Color\n-\nBlack\nWhite\nRed\nGreen\nBlue\nYellow\n-\nPen Color") into tColors
                                    repeat for each line tColor in tColors
                                      if tColor is "-" then
                                        put tab & tColor & return after tText
                                      else
                                        put "!u" & tab & tColor & return after tText
                                      end if
                                    end repeat
                                    put  "-" & return & "&Align" & return & "!u"  & tab & "Left" & return & "!u" & tab & "Center" & return & "!u" & tab & "Right" after tText
                                    
                                    # Cache the text menu text in non-disabled state
                                    put tText into sTextMenuText
                                    repeat for each line tLine in tText
                                      if the Platform is "MacOS" and tab is in tLine then
                                        replace tab with empty in tLine
                                        local tDisabledText
                                        put tab & "(" & tLine & return after tDisabledText
                                      else
                                        put "(" & tLine & return after tDisabledText
                                      end if
                                    end repeat
                                    delete last char of tDisabledText
                                    # Cache the disabled text menu text
                                    put tDisabledText into sTextMenuDisabledText
                                    
                                    beep
                                    put tDisabledText
                                    
                                  end setupTextMenu
                                  ---
                                  function toggleMenuItem pItem, pHilited
                                    if pHilited then
                                      return "!c" & pItem
                                    end if
                                    return "!n" & pItem
                                  end toggleMenuItem

                                  Noch läuft es nicht wie gewünscht; so zeigt das Text-Menu unverändert die (volle) Computer-Font-Liste.

                                  Bis später

                                  Peter

                                • #15058
                                  Klaus Major
                                  Administrator

                                    Lass das PRIVATE mal weg -> command setupTextMenu ModeX

                                    Soweit ich mich erinnere, muss das PRIVATE Command oder Funktion im SELBEN Skript wie der Aufruf derselben liegen, damit das funktioniert.

                                Ansicht von 14 Antwort-Themen
                                • Du musst angemeldet sein, um auf dieses Thema antworten zu können.