Table of Contents
Date Released #
Final: Jun 7, 2019
Release Candidate 4: May 30, 2019 Web Only
Release Candidate 3: May 28, 2019
Release Candidate 2: May 17, 2019
Release Candidate 1: May 13, 2019
Beta 3: May 7, 2019 Desktop Only
Beta 2: May 5, 2019 Desktop Only
Beta 1: May 4, 2019
Alpha 4: April 29, 2019
Alpha 3: April 19, 2019
Alpha 2: March 21, 2019
Alpha 1: March 8, 2019
Desktop #
Type | Change |
---|---|
ADD |
GraffitiSignature |
ADD |
GraffitiAccordion now has a “System” style that is dark mode adaptive. |
ADD |
GraffitiAccordion now has a TextShadow as Boolean = True property. |
ADD |
GraffitiColorPicker now better supports dark mode. |
ADD |
GraffitiDateTimePicker now supports dark mode. |
ADD |
GraffitiDesktopControl subclasses (Calendar, HTMLEditor, SyntaxEditor) now have LoaderShow and LoaderHide methods for displaying a spinner on load and during long operations. |
ADD |
GraffitiDesktopControl subclasses (Calendar, HTMLEditor, SyntaxEditor) now have a ShowLoaderOnEvents as Boolean = False property which will automatically show and hide the loader on long event operations. |
ADD |
GraffitiDateTimePicker now supports date range selection using GraffitiDateTimePicker.SelectionTypes.Range |
ADD |
GraffitiFontPicker now supports dark mode. |
ADD |
GraffitiGrid now relies on GraffitiGridRows for data. |
ADD |
GraffitiGrid now supports variable row height. |
ADD |
GraffitiGrid now has a SystemColors property which will attempt to automatically use the system color scheme for drawing, and will draw the appropriate progressbar style for the OS. |
ADD |
GraffitiGrid now supports embedding RectControls and ContainerControls in rows. These controls should NOT have the Grid’s parent as their parent for proper drawing on Windows. |
ADD |
GraffitiGrid now supports DarkMode colors when using SystemColors = True. |
ADD |
GraffitiGridColumn has a new property ControlSizing as GraffitiGridColumn.Sizings for positioning and dimensions of contained controls, and should not be modified after the control has been embedded. |
ADD |
GraffitiGridColumn has a new enumeration Sizings as Integer for use with GraffitiGridColumn.ControlSizing. |
ADD |
GraffitiHTMLEditor now has a CurrentLine method to determine the current line that SelStart occupies in PlainText. |
ADD |
GraffitiHTMLEditor now has a SelFont as String property for getting/setting the font of the currently selected text. |
ADD |
GraffitiHTMLEditor now has an EnforceHTTPS as Boolean = True property for forcing users to use HTTPS URLs for Audio/Image/Video tags. |
ADD |
GraffitiHTMLEditor now supports inline hashtags(#graffitisuite) and mentions(@graffitisuite). |
ADD |
GraffitiHTMLEditor has a new HashtagAdded( tagID as Integer, tagValue as String ) event for when a user adds a pre-defined hashtag to the text. |
ADD |
GraffitiHTMLEditor has a new MentionAdded( mentionID as Integer, mentionValue as String ) event for when a user adds a pre-defined mention to the text. |
ADD |
GraffitiHTMLEditor has a new AddHashTag( HashValue as String ) method. |
ADD |
GraffitiHTMLEditor has a new AddHashTags( Values() as String ) method. |
ADD |
GraffitiHTMLEditor has a new AddMention( MentionValue as String ) method. |
ADD |
GraffitiHTMLEditor has a new AddMentions( Values() as String ) method. |
ADD |
GraffitiHTMLEditor has a new HashTag( tagID as Integer ) as String method for retrieving the value of tagID. |
ADD |
GraffitiHTMLEditor has a new HashTagCount() as Integer method for retrieving the number of hashtags currently used. |
ADD |
GraffitiHTMLEditor has a new Mention( mentionID as Integer ) as String method for retrieving the value of mentionID. |
ADD |
GraffitiHTMLEditor has a new MentionCount() as Integer method for retrieving the number of mentions currently used. |
ADD |
GraffitiHTMLEditor has a new RemoveAllHashTags() method. |
ADD |
GraffitiHTMLEditor has a new RemoveAllMentions() method. |
ADD |
GraffitiHTMLEditor has a new RemoveHashTag( tagID as Integer ) method. |
ADD |
GraffitiHTMLEditor has a new RemoveMention( mentionID as Integer ) method. |
ADD |
GraffitiHTMLExporter now has a HTMLEntityEncodeSkipTags( theHTML as String ) as String method for encoding text in HTML but not the tags. |
ADD |
GraffitiHTMLExporter now has a HTMLEntityDecodeSkipTags( theHTML as String ) as String method for decoding text in HTML but not the tags. |
ADD |
GraffitiNote now has a MaxHeight property that is applied when using dynamic height. This is used to alleviate a hard crash on Windows when the height gets above 10000. Valid values are between 10 and 10000. |
ADD |
GraffitiPropertyList now has a Password child type which will display the password value during editing, but an obscured string during display. |
ADD |
GraffitiPropertyList now supports Dark Mode. |
ADD |
GraffitiPropertyList now has a new Event: CustomCellClick( Node as PropertyListChild, X as Integer, Y as Integer ) |
ADD |
GraffitiPropertyList now has a new Event: CustomIconPaint( Node as PropertyListChild, X as Integer, Y as Integer ) |
ADD |
GraffitiPropertyListChild now a new kChildCustom constant for Type. |
ADD |
GraffitiPropertyListChild now has an EditorFormat property for use with kChildSingleLine. |
ADD |
GraffitiPropertyListChild now has an EditorMask property for use with kChildSingleLine. |
ADD |
GraffitiRibbonButton has a new IconShift as Boolean as Boolean property for overriding the global Ribbon setting. |
ADD |
GraffitiRibbonRectControls can now have a width of “Flex” to fill their parent group. |
ADD |
GraffitiSyntaxEditor now has Menu Handlers defined for the following Edit operations: EditUndo, EditRedo, EditCopy, EditPaste, EditCut, EditDelete, EditSelectAll. |
ADD |
GraffitiSyntaxEditor now has a Copy() method. |
ADD |
GraffitiSyntaxEditor now has a Paste() method. |
ADD |
GraffitiSyntaxEditor now has a Delete() method for clearing the currently selected text. |
ADD |
GraffitiSyntaxEditor now has a PrintDocument( Title as String, Theme as Themes, WordWrap as Boolean = True ) as FolderItem method for generating a printable version of syntax highlighted content. |
ADD |
GraffitiSyntaxEditor now has a CenterSelection() method. |
ADD |
GraffitiSyntaxEditor now has a Fold() method. |
ADD |
GraffitiSyntaxEditor now has an Unfold() method. |
ADD |
GraffitiSyntaxEditor now has a ShowFind() method. |
ADD |
GraffitiSyntaxEditor now has a ShowReplace() method. |
ADD |
GraffitiSyntaxEditor now has a ShowGotoLine( PrompText as String = “Enter line number:” ) method. |
ADD |
GraffitiSyntaxEditor now has a ShowSettingsMenu() method for displaying an editable menu of settings. Changes made here are not reflected in the class’s properties. |
ADD |
GraffitiSyntaxEditor now has a ShowShortcutsMenu() method for displaying the default editor keyboard shortcuts. |
ADD |
GraffitiSyntaxEditor now has a FoldAll() method. |
ADD |
GraffitiSyntaxEditor now has an UnfoldAll() method. |
ADD |
GraffitiSyntaxEditor now has a SelectToStart() method for selecting all text between document start and current selection. |
ADD |
GraffitiSyntaxEditor now has a SelectToEnd() method for selecting all text between current selection and document end. |
ADD |
GraffitiSyntaxEditor now has a SelectUp() method for moving selection up one line. |
ADD |
GraffitiSyntaxEditor now has a SelectDown() method for moving selection down one line. |
ADD |
GraffitiSyntaxEditor now has a SelectPageUp() method for selecting the previous page. |
ADD |
GraffitiSyntaxEditor now has a SelectPageDown() method for selecting the next page. |
ADD |
GraffitiSyntaxEditor now has a MatchingExpandTo() method for expanding the current selection within matching brackets/parentheses. |
ADD |
GraffitiSyntaxEditor now has a MatchingJumpTo() method for moving to the matching bracket/parenthesis for the current block. |
ADD |
GraffitiSyntaxEditor now has a SelectionDuplicate() method for duplicating the currently selected text/block. |
ADD |
GraffitiSyntaxEditor now has a CommentBlockToggle() for toggling block comments of selected text in supported languages. |
ADD |
GraffitiSyntaxEditor now has a CommentToggle() for toggling single line comments. |
ADD |
GraffitiSyntaxEditor now has a SelectionCopyLinesDown() method for copying the currently selected lines below the selection end. |
ADD |
GraffitiSyntaxEditor now has a SelectionCopyLineUp() method for copying the currently selected line above the selection start. |
ADD |
GraffitiSyntaxEditor now has a SelectionMoveLinesDown() method for moving the currently selected lines down one line. |
ADD |
GraffitiSyntaxEditor now has a SelectionMoveLinesUp() method for moving the currently selected lines up one line. |
ADD |
GraffitiSyntaxEditor now has a SelectionSplitLine() method for splitting the current line at the selection start. |
ADD |
GraffitiSyntaxEditor now has a SelectionTranspose() method for transposing the current selection. |
ADD |
GraffitiSyntaxEditor now has a SelectionTransposeLetters() method for transposing the currently selected letters. |
ADD |
GraffitiSyntaxEditor now has a SelectionToUppercase() method for changing the currently selected text to uppercase. |
ADD |
GraffitiSyntaxEditor now has a SelectionToLowercase() method for changing the currently selected text to lowercase. |
ADD |
GraffitiSyntaxEditor now has a SelectionModifyNumber() method for incrementing or decrementing the currently selected integer value within the text. |
ADD |
GraffitiSyntaxEditor now has a PrintMarginColumn as Integer property for setting the position of the print margin. |
ADD |
GraffitiSyntaxEditor now has a FadeFoldWidgets as Boolean property, which will fade out the disclosure triangle of fold points unless the mouse is over the gutter. |
ADD |
GraffitiSyntaxEditor now has a ShowFoldWidget as Boolean property which determines whether fold disclosure triangles are drawn. |
ADD |
GraffitiSyntaxEditor now has a ShowInvisible as Boolean property for displaying representations of characters that would otherwise be invisible, such as tabs and new lines. |
ADD |
GraffitiSyntaxEditor now has a ShowPrintMargin as Boolean property for displaying the print margin within the editor. |
ADD |
GraffitiSyntaxEditor now has a FontSize as Integer property. |
ADD |
GraffitiTagField now supports dark mode. |
ADD |
GraffitiTextField |
ADD |
GraffitiTreeView now has a ShowBorder as Boolean = True property. |
ADD |
KillerToolBar has a new Dark Style included. |
FIX |
GraffitiAccordion once again properly sets the width of child containers to that of the accordion’s child area. |
FIX |
GraffitiAccordion once again sizes containers properly on resize. |
FIX |
GraffitiAccordion now uses an alpha color for drawing shadows instead of inverting the text color. |
FIX |
GraffitiColorPicker once again properly saves recent colors with Alpha channels. |
FIX |
GraffitiDesktopControl subclasses no longer double up EndOfLine on Windows. |
FIX |
GraffitiGrid now properly positions long strings passed via FormatCellValue. |
FIX |
GraffitiGrid now resets the cursor when moving from the column header. |
FIX |
GraffitiGrid’s CellClick event now returns a boolean value for skipping selection changes. Useful for clickable value cells like Boolean/Checkbox. |
FIX |
GraffitiHTMLEditor’s font loading method optimized significantly. |
FIX |
GraffitiHTMLEditor no longer fails to load on MacOS Mojave (Issue introduced in R29B2). |
FIX |
GraffitiHTMLExporter’s HTML entity encoding/decoding methods now support the ü entity/character. |
FIX |
GraffitiHTMLExporter.HTMLEntityEncode and GraffitiHTMLExporter.HTMLEntityDecode should now behave better on a wider range of mixed strings. |
FIX |
GraffitiNote now fires HeightChanged during the close animation. |
FIX |
GraffitiPropertyList will no longer encounter a NilObjectException if a cell is being edited when the window is closed. |
FIX |
GraffitiRibbonButton items inside GraffitiRibbonColumns should no longer become cut-off when using auto-sizing on HiDPI screens. |
FIX |
GraffitiRibbonButtonSmall now properly sets the text color of the button. |
FIX |
GraffitiRibbonButtonLarge now properly draws Icons along the X axis when not using menus. |
FIX |
GraffitiRibbonRectControls should now draw at the appropriate X and Y coordinates when the parent GraffitiRibbon is not set to (0,0). |
FIX |
GraffitiSearchCanvas now properly supports Mojave. |
FIX |
GraffitiSearchCanvas has improved support for Dark Mode. |
FIX |
GraffitiSyntaxEditor should now more reliably set all properties on load. |
FIX |
GraffitiTagField horizontal scrolling once again works as expected. |
FIX |
GraffitiTagField now better supports HiDPI. |
FIX |
GraffitiTaskList now supports dark mode. |
FIX |
GraffitiTreeView should no longer intermittently ignore the CustomPictures property. |
FIX |
GraffitiTreeView should no longer exhibit strange spacing around the icons on Windows. |
NOTE |
Due to changes for MacOS, inserting Audio/Image/Video elements that use a non-HTTPS URL may fail. You should use an info.plist for modifying NSAppTransportSecurity or enforce only HTTPS URLs. |
NOTE |
GraffitiSyntaxEditor example now includes file drop loading example. |
NOTE |
Fixed analysis warnings. |
Web #
Type | Change |
---|---|
ADD |
Experimental combined resource loading. See https://graffitisuite.com/wiki/doku.php?id=web:combined |
ADD |
GraffitiHTMLExporter, which is now a dependency of GraffitiWebHTMLEditor. |
ADD |
GraffitiWebImagePicker |
ADD |
GraffitiWebCalendar now supports adding titles to days with the new DayTitle method. |
ADD |
GraffitiWebFile’s SaveTo method now has an Overwrite as Boolean = False parameter. When False the class will append the nearest unused number to the file name and use that. |
ADD |
GraffitiWebFile’s SaveTo method now returns a FolderItem pointing to the saved file location in case of numbering. |
ADD |
GraffitiFontAwesome now has a Scale value for the IconSizes enumeration which sizes the icon to the current control height. |
ADD |
GraffitiWebGrid now breaks on events where one or more necessary paremeters are Nil to highlight errors in implementation. |
ADD |
GraffitiWebHTMLEditor now has a CurrentLine method to determine the current line that SelStart occupies in PlainText. |
ADD |
GraffitiWebPopupMenu now has a new SearchTypes as Integer enumeration. |
ADD |
GraffitiWebPopupMenu now has a new SearchType as SearchTypes property for controlling how data searches are performed. |
ADD |
GraffitiWebPopupMenu now has a PlaceholderSearchText as String property for setting the search field’s placeholder on instances where MultiSelect = False. |
ADD |
GraffitiWebTabPanel has a new LockUpdate property for disallowing updates during long operations. |
ADD |
GraffitiWebTextField now has a “Search” FieldType. |
ADD |
GraffitiWebTextField now has new properties for setting images as the icons: IconObject as Picture, IconWidth as Integer, IconHeight as Integer. |
ADD |
GraffitiWebTextField now supports icon parsing similar to GraffitiWebButton where <icon> is used for IconObject and <fa fa-icon-name> is used for FontAwesome. |
ADD |
GraffitiWebTextField now has a Required as Boolean property for denoting within the display that the field is required to have a value. |
ADD |
GraffitiWebUploader now has a FileClicked event. |
ADD |
GraffitiWebUploader now has an AddFile method, but does not display previews. |
ADD |
GraffitiWebUploader now has a Remove( File as GraffitiWebFile ) method. |
ADD |
GraffitiWebUploader now has a UpdateName( File as GraffitiWebFile ) method to make the in-display name match the GraffitiWebFile.Name property for that file. |
FIX |
All classes now have more realistic default dimensions. |
FIX |
GraffitiWebAccordion.FindItem( ItemText as String ) as Integer renamed to FindItemIndex. |
FIX |
GraffitiWebButton captions are no longer placed 0.5px too far to the bottom of the control. |
FIX |
GraffitiWebDatePicker (All Variants) now properly shows and hides the “clear” button based on the value of the ClearButton property. |
FIX |
GraffitiWebDatePickerRange no longer exposes a Style property to the inspector. It has three specific Style* properties. |
FIX |
GraffitiWebGrid now respects rows with Expanded = True when added. |
FIX |
GraffitiWebGrid once again shows an appropriate spacer for tree children. |
FIX |
GraffitiWebGrid now properly updates selection info when a row is removed. |
FIX |
GraffitiWebGrid once again properly updates row order when user drags a row. |
FIX |
GraffitiWebGridRow.Selected is now properly set when changing selection during runtime. |
FIX |
GraffitiWebHTMLEditor’s SelText property now uses correct indices for updates to the browser. |
FIX |
GraffitiWebHTMLEditor should no longer throw Javascript errors when performing multiple operations that alter the SelStart/SelLength. |
FIX |
GraffitiWebHTMLEditor now properly handles most non-English characters by converting them to HTML entities, thanks to GraffitiHTMLExporter. |
FIX |
GraffitiWebHTMLEditor no longer collapses long strings of spaces to a single space. |
FIX |
GraffitiHTMLExporter now respects tags. |
FIX |
GraffitiHTMLExporter.HTMLEntityEncode and GraffitiHTMLExporter.HTMLEntityDecode should now behave better on a wider range of mixed strings. |
FIX |
GraffitiWebPDF now supports calling Download after using FromHTML to create a PDF. |
FIX |
GraffitiWebPDF now better handles multiple pages when using FromHTML. |
FIX |
GraffitiWebPDF once again honors HorizontalAlign and VerticalAlign properties of GraffitiWebPDFCellStyle objects. |
FIX |
GraffitiWebPDF once again properly applies table header styles. |
FIX |
GraffitiWebPDF now uses arrays for generating table JavaScript instead of concatenation for speed. |
FIX |
GraffitiWebPDF no longer throws deprecation warnings to the browser’s JavaScript Console. |
FIX |
GraffitiWebPDFCellStyle.HorizontalAlign is now spelled correctly. |
FIX |
GraffitiWebPopupMenu’s SetItemSelect should now be more dependable. |
FIX |
GraffitiWebPopupMenu no longer uses a shadow property for Enabled. |
FIX |
GraffitiWebPopupMenuItem now uses UUID strings rather than integers for ID. |
FIX |
GraffitiWebSlider no longer expects height of 210px for vertical, or width of 210px for horizontal. |
FIX |
GraffitiWebTabPanel no longer changes the HashTag when clicking on a tab. |
FIX |
GraffitiWebTabPanel now pushes containers to the page when hidden, and reloads them on Shown. This addresses an issue where Xojo will set height of child controls to 0px is the Display style of the parent container is ‘none’ upon showing a page. |
FIX |
GraffitiWebTabPanel no longer references GraffitiWebAccordion items. |
FIX |
GraffitiWebTabPanel pages now properly size to fill the control. |
FIX |
GraffitiWebTextField labels should no longer be taller than the input element. |
FIX |
GraffitiWebTimePicker now only sends those events to the server that are necessary or have event handlers implemented. |
FIX |
GraffitiWebToggle no longer resets True and False value text when disabled/enabled. |
FIX |
GraffitiWebToggle no longer ignore the Visible property if set in the Open event. |
FIX |
GraffitiWebUploader now only sends those events to the server that are necessary or have event handlers implemented. |
FIX |
GraffitiWebUploader no longer improperly reports that files cannot be uploaded in the UI after programmatically adding a file. |
FIX |
GraffitiWebWall now only sends those events to the server that are necessary or have event handlers implemented. |
FIX |
GraffitiWebWall now exposes the UpdateDisplay() method for forcing GraffitiWebWall to refresh when GraffitiWebWallPanel containers change dimensions. |
REM |
GraffitiWebUploader’s RemoveFile(theFile as String) has been removed. |
NOTE |
GraffitiWebCalendar events are no longer required to have titles. But they should have titles. Seriously. |
NOTE |
GraffitiWebPDF’s .Save method has been deprecated. Use .Download |
NOTE |
GraffitiWebUploader updated to rely on objecs rather than filenames to avoid collisions when multiple files are uploaded with the same name. |
NOTE |
Resolved analysis warnings. |