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
      Verwalter

      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
      Verwalter

      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
      Verwalter

      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
      Verwalter

      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
      Verwalter

      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
      Verwalter

      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
      Verwalter

      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.