diff --git a/app/src/main/resources/about-processing.svg b/app/src/main/resources/about-processing.svg new file mode 100644 index 000000000..11abb1078 --- /dev/null +++ b/app/src/main/resources/about-processing.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/processing/app/syntax/JEditTextArea.java b/app/src/processing/app/syntax/JEditTextArea.java index 566119e3d..b3c4d18a8 100644 --- a/app/src/processing/app/syntax/JEditTextArea.java +++ b/app/src/processing/app/syntax/JEditTextArea.java @@ -399,6 +399,7 @@ public final void setElectricScroll(int electricScroll) { public void updateScrollBars() { if (vertical != null && visibleLines != 0) { vertical.setValues(firstLine,visibleLines,0,getLineCount()); + vertical.setVisible(visibleLines < getLineCount()); vertical.setUnitIncrement(2); vertical.setBlockIncrement(visibleLines); } @@ -424,6 +425,7 @@ public void updateScrollBars() { // https://github.com/processing/processing/issues/319 // https://github.com/processing/processing/issues/355 //setValues(int newValue, int newExtent, int newMin, int newMax) + horizontal.setVisible(painterWidth < width); if (horizontalOffset < 0) { horizontal.setValues(-horizontalOffset, painterWidth, -leftHandGutter, width); } else { diff --git a/app/src/processing/app/ui/Editor.java b/app/src/processing/app/ui/Editor.java index c3dd0202f..fc7fbb0b3 100644 --- a/app/src/processing/app/ui/Editor.java +++ b/app/src/processing/app/ui/Editor.java @@ -2255,7 +2255,7 @@ protected void handleOpenInternal(String path) throws EditorException { * something like "sketch_070752a - Processing 0126" */ public void updateTitle() { - setTitle(sketch.getName() + " | Processing " + Base.getVersionName()); + setTitle(sketch.getName()); if (!sketch.isUntitled()) { // Set current file for macOS so that cmd-click in title bar works. diff --git a/app/src/processing/app/ui/EditorFooter.java b/app/src/processing/app/ui/EditorFooter.java index 855e97d38..276b78364 100644 --- a/app/src/processing/app/ui/EditorFooter.java +++ b/app/src/processing/app/ui/EditorFooter.java @@ -30,6 +30,8 @@ import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; +import java.awt.datatransfer.Clipboard; +import java.awt.datatransfer.StringSelection; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.font.FontRenderContext; @@ -39,6 +41,7 @@ import javax.swing.*; +import processing.app.Base; import processing.app.Mode; import processing.app.Sketch; import processing.app.contrib.ContributionManager; @@ -83,10 +86,14 @@ public class EditorFooter extends Box { Image gradient; Color bgColor; + Box tabBar; + JPanel cardPanel; CardLayout cardLayout; Controller controller; + JLabel version; + int updateCount; @@ -98,8 +105,33 @@ public EditorFooter(Editor eddie) { cardPanel = new JPanel(cardLayout); add(cardPanel); + tabBar = new Box(BoxLayout.X_AXIS); + controller = new Controller(); - add(controller); + tabBar.add(controller); + + version = new JLabel(Base.getVersionName()); + version.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, Editor.RIGHT_GUTTER)); + version.addMouseListener(new MouseAdapter() { + public void mousePressed(MouseEvent e) { + if(e.getClickCount() == 5){ + Base.DEBUG = !Base.DEBUG; + } + var debugInformation = String.join("\n", + "Version: " + Base.getVersionName(), + "Revision: " + Base.getRevision(), + "OS: " + System.getProperty("os.name") + " " + System.getProperty("os.version") + " " + System.getProperty("os.arch"), + "Java: " + System.getProperty("java.version") + " " + System.getProperty("java.vendor") + ); + var stringSelection = new StringSelection(debugInformation); + var clipboard = java.awt.Toolkit.getDefaultToolkit().getSystemClipboard(); + clipboard.setContents(stringSelection, null); + } + }); + + tabBar.add(version); + + add(tabBar); updateTheme(); } @@ -175,6 +207,15 @@ public void updateTheme() { // replace colors for the "updates" indicator controller.updateTheme(); + + tabBar.setOpaque(true); + tabBar.setBackground(bgColor); + + var updatesTextColor = Theme.getColor("footer.updates.text.color"); + var withAlpha = new Color(updatesTextColor.getRed(), updatesTextColor.getGreen(), updatesTextColor.getBlue(), 128); + + version.setForeground(withAlpha); + version.setFont(font); } diff --git a/app/src/processing/app/ui/Start.kt b/app/src/processing/app/ui/Start.kt index 4fd9fb4c9..7de371eec 100644 --- a/app/src/processing/app/ui/Start.kt +++ b/app/src/processing/app/ui/Start.kt @@ -12,15 +12,12 @@ import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip -import androidx.compose.ui.graphics.toComposeImageBitmap -import androidx.compose.ui.unit.DpSize +import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp import androidx.compose.ui.window.* import kotlinx.coroutines.delay import kotlinx.coroutines.launch import processing.app.Base -import processing.app.Platform -import javax.imageio.ImageIO /** * Show a splash screen window. A rewrite of Splash.java @@ -29,8 +26,6 @@ class Start { companion object { @JvmStatic fun main(args: Array) { - val splash = Platform.getContentFile("lib/about-processing.png") - val image = ImageIO.read(splash).toComposeImageBitmap() val duration = 200 val timeMargin = 50 @@ -44,7 +39,8 @@ class Start { resizable = false, state = rememberWindowState( position = WindowPosition(Alignment.Center), - size = DpSize(image.width.dp / 2 , image.height.dp / 2) + width = 578.dp, + height = 665.dp ) ) { var visible by remember { mutableStateOf(false) } @@ -81,7 +77,7 @@ class Start { ) ) { Image( - bitmap = image, + painter = painterResource("about-processing.svg"), contentDescription = "About", modifier = Modifier .fillMaxSize() diff --git a/build/shared/lib/about-processing.png b/build/shared/lib/about-processing.png deleted file mode 100644 index 056354154..000000000 Binary files a/build/shared/lib/about-processing.png and /dev/null differ