Skip to content

Commit 2985a36

Browse files
committed
Use more robust method of checking for headless
1 parent d6f9533 commit 2985a36

File tree

3 files changed

+36
-31
lines changed

3 files changed

+36
-31
lines changed

build.sbt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ scalacOptions ++= Seq(
1919
)
2020

2121
netLogoClassManager := "org.nlogo.extensions.vid.VidExtension"
22-
netLogoVersion := "7.0.0-beta2-7e8f7a4"
22+
netLogoVersion := "7.0.0-424b50b"
2323
netLogoZipExtras ++= Seq(baseDirectory.value / "README.md")
2424

2525
// settings for the `sbt-javacpp` sbt plugin

src/main/scala/VidExtension.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@ package org.nlogo.extensions.vid
33
import org.nlogo.api.{ DefaultClassManager, ExtensionManager, PrimitiveManager }
44

55
object VidExtension {
6+
private var isHeadless = true
67

78
// we use two headless variables. The java one forces headless, the other one says NetLogo would like it if you ran headlessly
89
def guiOrHeadless[A](gui: => A, headless: => A): A = {
9-
if (System.getProperty("java.awt.headless") == "true" || System.getProperty("org.nlogo.preferHeadless") == "true") {
10+
if (isHeadless) {
1011
headless
1112
} else {
1213
try {
@@ -31,6 +32,7 @@ class VidExtension(movies: MovieFactory, cameras: CameraFactory, player: Player,
3132
this(VidExtension.movie, VidExtension.camera, VidExtension.player, VidExtension.selector, new MP4Recorder())
3233

3334
override def runOnce(em: ExtensionManager): Unit = {
35+
VidExtension.isHeadless = !em.workspaceContext.workspaceGUI
3436
}
3537

3638
override def load(manager: PrimitiveManager) = {

src/test/scala/NetLogoDummies.scala

Lines changed: 32 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -4,65 +4,68 @@ import java.awt.image.BufferedImage
44
import java.io.File
55
import javax.imageio.ImageIO
66

7-
import org.nlogo.api._
7+
import org.nlogo.api.{ Activation, Agent, CommandRunnable, Context, ExtensionManager, ExternalResourceManager,
8+
ImportErrorHandler, JobOwner, LabProtocol, LibraryManager, LogoException, MersenneTwisterFast,
9+
OutputDestination, Perspective, PlotInterface, PlotManagerInterface, PreviewCommands,
10+
RendererInterface, ReporterRunnable, Workspace, WorkspaceContext, World }
811

912
class FakeContext extends Context {
1013
def attachCurrentDirectory(path: String): String =
1114
s"/currentdir/$path"
1215
def attachModelDir(filePath: String): String = ???
13-
def getAgent: org.nlogo.api.Agent = ???
16+
def getAgent: Agent = ???
1417
def getDrawing: java.awt.image.BufferedImage = ???
15-
def getRNG: org.nlogo.api.MersenneTwisterFast = ???
18+
def getRNG: MersenneTwisterFast = ???
1619
def importPcolors(image: java.awt.image.BufferedImage,asNetLogoColors: Boolean): Unit = ???
1720
def logCustomGlobals(nameValuePairs: Seq[(String, String)]): Unit = ???
1821
def logCustomMessage(msg: String): Unit = ???
19-
def activation: org.nlogo.api.Activation = ???
20-
def world: org.nlogo.api.World = ???
22+
def activation: Activation = ???
23+
def world: World = ???
2124
val workspace = new FakeWorkspace()
2225
}
2326

24-
class FakeWorkspace extends org.nlogo.api.Workspace {
27+
class FakeWorkspace extends Workspace {
2528
override def exportView: BufferedImage = {
2629
new BufferedImage(480, 480, BufferedImage.TYPE_INT_ARGB)
2730
}
2831

2932
def getResourceManager: ExternalResourceManager = ???
3033

31-
// Members declared in org.nlogo.api.Controllable
34+
// Members declared in Controllable
3235
def command(source: String): Unit = ???
33-
def evaluateCommands(owner: org.nlogo.api.JobOwner,source: String,waitForCompletion: Boolean): Unit = ???
34-
def evaluateCommands(owner: org.nlogo.api.JobOwner,source: String): Unit = ???
35-
def evaluateReporter(owner: org.nlogo.api.JobOwner,source: String): AnyRef = ???
36+
def evaluateCommands(owner: JobOwner,source: String,waitForCompletion: Boolean): Unit = ???
37+
def evaluateCommands(owner: JobOwner,source: String): Unit = ???
38+
def evaluateReporter(owner: JobOwner,source: String): AnyRef = ???
3639
def report(source: String): AnyRef = ???
3740

38-
// Members declared in org.nlogo.api.ImporterUser
41+
// Members declared in ImporterUser
3942
def currentPlot(plot: String): Unit = ???
4043
def maybeGetPlot(plot: String): Option[PlotInterface] = ???
41-
def importExtensionData(name: String,data: java.util.List[Array[String]],handler: org.nlogo.api.ImportErrorHandler): Unit = ???
44+
def importExtensionData(name: String,data: java.util.List[Array[String]],handler: ImportErrorHandler): Unit = ???
4245
def isExtensionName(name: String): Boolean = ???
4346
def setOutputAreaContents(text: String): Unit = ???
4447

4548
// Members declared in org.nlogo.core.LiteralParser
4649
def readFromString(s: String): AnyRef = ???
4750
def readNumberFromString(source: String): AnyRef = ???
4851

49-
// Members declared in org.nlogo.api.RandomServices
50-
def auxRNG: org.nlogo.api.MersenneTwisterFast = ???
51-
def mainRNG: org.nlogo.api.MersenneTwisterFast = ???
52+
// Members declared in RandomServices
53+
def auxRNG: MersenneTwisterFast = ???
54+
def mainRNG: MersenneTwisterFast = ???
5255
def seedRNGs(seed: Int): Unit = ???
5356

54-
// Members declared in org.nlogo.api.ViewSettings
57+
// Members declared in ViewSettings
5558
def drawSpotlight: Boolean = ???
5659
def fontSize: Int = ???
57-
def isHeadless: Boolean = ???
58-
def perspective: org.nlogo.api.Perspective = ???
60+
def workspaceContext: WorkspaceContext = ???
61+
def perspective: Perspective = ???
5962
def renderPerspective: Boolean = ???
6063
def viewHeight: Double = ???
6164
def viewOffsetX: Double = ???
6265
def viewOffsetY: Double = ???
6366
def viewWidth: Double = ???
6467

65-
// Members declared in org.nlogo.api.Workspace
68+
// Members declared in Workspace
6669
def behaviorSpaceRunNumber(n: Int): Unit = ???
6770
def behaviorSpaceRunNumber: Int = ???
6871
def getBehaviorSpaceExperiments: List[LabProtocol] = ???
@@ -88,33 +91,33 @@ class FakeWorkspace extends org.nlogo.api.Workspace {
8891
def exportWorld(writer: java.io.PrintWriter): Unit = ???
8992
def exportWorld(path: String): Unit = ???
9093
def getAndCreateDrawing(): java.awt.image.BufferedImage = ???
91-
def getExtensionManager: org.nlogo.api.ExtensionManager = ???
92-
def getLibraryManager: org.nlogo.api.LibraryManager = ???
94+
def getExtensionManager: ExtensionManager = ???
95+
def getLibraryManager: LibraryManager = ???
9396
def getModelDir: String = ???
9497
def getModelFileName: String = ???
9598
def getModelPath: String = ???
9699
def graphicsChecksum: String = ???
97100
def importDrawing(path: String): Unit = ???
98101
def importWorld(path: String): Unit = ???
99102
def importWorld(reader: java.io.Reader): Unit = ???
100-
def lastLogoException: org.nlogo.api.LogoException = ???
103+
def lastLogoException: LogoException = ???
101104
def open(modelPath: String, shouldAutoInstallLibs: Boolean = false): Unit = ???
102105
def openModel(model: org.nlogo.core.Model, shouldAutoInstallLibs: Boolean = false): Unit = ???
103-
def outputObject(obj: AnyRef,owner: AnyRef,addNewline: Boolean,readable: Boolean,destination: org.nlogo.api.OutputDestination): Unit = ???
106+
def outputObject(obj: AnyRef,owner: AnyRef,addNewline: Boolean,readable: Boolean,destination: OutputDestination): Unit = ???
104107
def patchSize: Double = ???
105108
def plotManager: AnyRef = ???
106109
def realPlotManager: PlotManagerInterface = ???
107-
def previewCommands: org.nlogo.api.PreviewCommands = ???
110+
def previewCommands: PreviewCommands = ???
108111
def profilingEnabled: Boolean = ???
109-
def renderer: org.nlogo.api.RendererInterface = ???
112+
def renderer: RendererInterface = ???
110113
def setModelPath(path: String): Unit = ???
111-
def waitFor(runnable: org.nlogo.api.CommandRunnable): Unit = ???
114+
def waitFor(runnable: CommandRunnable): Unit = ???
112115
def waitForQueuedEvents(): Unit = ???
113-
def waitForResult[T](runnable: org.nlogo.api.ReporterRunnable[T]): T = ???
116+
def waitForResult[T](runnable: ReporterRunnable[T]): T = ???
114117
def warningMessage(message: String): Boolean = ???
115-
def world: org.nlogo.api.World = ???
118+
def world: World = ???
116119
def worldChecksum: String = ???
117-
// Members declared in org.nlogo.api.WorldResizer
120+
// Members declared in WorldResizer
118121
def patchSize(patchSize: Double): Unit = ???
119122
def resizeView(): Unit = ???
120123
def setDimensions(dim: org.nlogo.core.WorldDimensions,patchSize: Double): Unit = ???

0 commit comments

Comments
 (0)