| 1 | /* =========================================================== | |
| 2 | * JFreeChart : a free chart library for the Java(tm) platform | |
| 3 | * =========================================================== | |
| 4 | * | |
| 5 | * (C) Copyright 2000-2008, by Object Refinery Limited and Contributors. | |
| 6 | * | |
| 7 | * Project Info: http://www.jfree.org/jfreechart/index.html | |
| 8 | * | |
| 9 | * This library is free software; you can redistribute it and/or modify it | |
| 10 | * under the terms of the GNU Lesser General Public License as published by | |
| 11 | * the Free Software Foundation; either version 2.1 of the License, or | |
| 12 | * (at your option) any later version. | |
| 13 | * | |
| 14 | * This library is distributed in the hope that it will be useful, but | |
| 15 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY | |
| 16 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public | |
| 17 | * License for more details. | |
| 18 | * | |
| 19 | * You should have received a copy of the GNU Lesser General Public | |
| 20 | * License along with this library; if not, write to the Free Software | |
| 21 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, | |
| 22 | * USA. | |
| 23 | * | |
| 24 | * [Java is a trademark or registered trademark of Sun Microsystems, Inc. | |
| 25 | * in the United States and other countries.] | |
| 26 | * | |
| 27 | * --------------------- | |
| 28 | * ServletUtilities.java | |
| 29 | * --------------------- | |
| 30 | * (C) Copyright 2002-2008, by Richard Atkinson and Contributors. | |
| 31 | * | |
| 32 | * Original Author: Richard Atkinson; | |
| 33 | * Contributor(s): J?rgen Hoffman; | |
| 34 | * David Gilbert (for Object Refinery Limited); | |
| 35 | * Douglas Clayton; | |
| 36 | * | |
| 37 | * Changes | |
| 38 | * ------- | |
| 39 | * 19-Aug-2002 : Version 1; | |
| 40 | * 20-Apr-2003 : Added additional sendTempFile method to allow MIME type | |
| 41 | * specification and modified original sendTempFile method to | |
| 42 | * automatically set MIME type for JPEG and PNG files | |
| 43 | * 23-Jun-2003 : Added additional sendTempFile method at the request of | |
| 44 | * J?rgen Hoffman; | |
| 45 | * 07-Jul-2003 : Added more header information to streamed images; | |
| 46 | * 19-Aug-2003 : Forced images to be stored in the temporary directory defined | |
| 47 | * by System property java.io.tmpdir, rather than default (RA); | |
| 48 | * 24-Mar-2004 : Added temp filename prefix attribute (DG); | |
| 49 | * 09-Mar-2005 : Added "one time" file option (DG); | |
| 50 | * ------------- JFREECHART 1.0.0 RELEASED ------------------------------------ | |
| 51 | * 10-Jan-2006 : Updated API docs and reformatted (DG); | |
| 52 | * 13-Sep-2006 : Format date in response header in English, not locale default | |
| 53 | * (see bug 1557141) (DG); | |
| 54 | * | |
| 55 | */ | |
| 56 | ||
| 57 | package org.jfree.chart.servlet; | |
| 58 | ||
| 59 | import java.io.BufferedInputStream; | |
| 60 | import java.io.BufferedOutputStream; | |
| 61 | import java.io.File; | |
| 62 | import java.io.FileInputStream; | |
| 63 | import java.io.FileNotFoundException; | |
| 64 | import java.io.IOException; | |
| 65 | import java.text.SimpleDateFormat; | |
| 66 | import java.util.Date; | |
| 67 | import java.util.Locale; | |
| 68 | import java.util.TimeZone; | |
| 69 | ||
| 70 | import javax.servlet.http.HttpServletResponse; | |
| 71 | import javax.servlet.http.HttpSession; | |
| 72 | ||
| 73 | import org.jfree.chart.ChartRenderingInfo; | |
| 74 | import org.jfree.chart.ChartUtilities; | |
| 75 | import org.jfree.chart.JFreeChart; | |
| 76 | ||
| 77 | /** | |
| 78 | * Utility class used for servlet related JFreeChart operations. | |
| 79 | */ | |
| 80 | public class ServletUtilities { | |
| 81 | ||
| 82 | /** The filename prefix. */ | |
| 83 | private static String tempFilePrefix = "jfreechart-"; | |
| 84 | ||
| 85 | /** A prefix for "one time" charts. */ | |
| 86 | private static String tempOneTimeFilePrefix = "jfreechart-onetime-"; | |
| 87 | ||
| 88 | /** | |
| 89 | * Returns the prefix for the temporary file names generated by this class. | |
| 90 | * | |
| 91 | * @return The prefix (never null). | |
| 92 | */ | |
| 93 | public static String getTempFilePrefix() { | |
| 94 |
1
1. getTempFilePrefix : mutated return of Object value for org/jfree/chart/servlet/ServletUtilities::getTempFilePrefix to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return ServletUtilities.tempFilePrefix; |
| 95 | } | |
| 96 | ||
| 97 | /** | |
| 98 | * Sets the prefix for the temporary file names generated by this class. | |
| 99 | * | |
| 100 | * @param prefix the prefix (null not permitted). | |
| 101 | */ | |
| 102 | public static void setTempFilePrefix(String prefix) { | |
| 103 |
1
1. setTempFilePrefix : negated conditional → NO_COVERAGE |
if (prefix == null) { |
| 104 | throw new IllegalArgumentException("Null 'prefix' argument."); | |
| 105 | } | |
| 106 | ServletUtilities.tempFilePrefix = prefix; | |
| 107 | } | |
| 108 | ||
| 109 | /** | |
| 110 | * Returns the prefix for "one time" temporary file names generated by | |
| 111 | * this class. | |
| 112 | * | |
| 113 | * @return The prefix. | |
| 114 | */ | |
| 115 | public static String getTempOneTimeFilePrefix() { | |
| 116 |
1
1. getTempOneTimeFilePrefix : mutated return of Object value for org/jfree/chart/servlet/ServletUtilities::getTempOneTimeFilePrefix to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return ServletUtilities.tempOneTimeFilePrefix; |
| 117 | } | |
| 118 | ||
| 119 | /** | |
| 120 | * Sets the prefix for the "one time" temporary file names generated by | |
| 121 | * this class. | |
| 122 | * | |
| 123 | * @param prefix the prefix (null not permitted). | |
| 124 | */ | |
| 125 | public static void setTempOneTimeFilePrefix(String prefix) { | |
| 126 |
1
1. setTempOneTimeFilePrefix : negated conditional → NO_COVERAGE |
if (prefix == null) { |
| 127 | throw new IllegalArgumentException("Null 'prefix' argument."); | |
| 128 | } | |
| 129 | ServletUtilities.tempOneTimeFilePrefix = prefix; | |
| 130 | } | |
| 131 | ||
| 132 | /** | |
| 133 | * Saves the chart as a PNG format file in the temporary directory. | |
| 134 | * | |
| 135 | * @param chart the JFreeChart to be saved. | |
| 136 | * @param width the width of the chart. | |
| 137 | * @param height the height of the chart. | |
| 138 | * @param session the HttpSession of the client (if null, the | |
| 139 | * temporary file is marked as "one-time" and deleted by | |
| 140 | * the {@link DisplayChart} servlet right after it is | |
| 141 | * streamed to the client). | |
| 142 | * | |
| 143 | * @return The filename of the chart saved in the temporary directory. | |
| 144 | * | |
| 145 | * @throws IOException if there is a problem saving the file. | |
| 146 | */ | |
| 147 | public static String saveChartAsPNG(JFreeChart chart, int width, int height, | |
| 148 | HttpSession session) throws IOException { | |
| 149 | ||
| 150 |
1
1. saveChartAsPNG : mutated return of Object value for org/jfree/chart/servlet/ServletUtilities::saveChartAsPNG to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return ServletUtilities.saveChartAsPNG(chart, width, height, null, |
| 151 | session); | |
| 152 | ||
| 153 | } | |
| 154 | ||
| 155 | /** | |
| 156 | * Saves the chart as a PNG format file in the temporary directory and | |
| 157 | * populates the {@link ChartRenderingInfo} object which can be used to | |
| 158 | * generate an HTML image map. | |
| 159 | * | |
| 160 | * @param chart the chart to be saved (null not permitted). | |
| 161 | * @param width the width of the chart. | |
| 162 | * @param height the height of the chart. | |
| 163 | * @param info the ChartRenderingInfo object to be populated | |
| 164 | * (null permitted). | |
| 165 | * @param session the HttpSession of the client (if null, the | |
| 166 | * temporary file is marked as "one-time" and deleted by | |
| 167 | * the {@link DisplayChart} servlet right after it is | |
| 168 | * streamed to the client). | |
| 169 | * | |
| 170 | * @return The filename of the chart saved in the temporary directory. | |
| 171 | * | |
| 172 | * @throws IOException if there is a problem saving the file. | |
| 173 | */ | |
| 174 | public static String saveChartAsPNG(JFreeChart chart, int width, int height, | |
| 175 | ChartRenderingInfo info, HttpSession session) throws IOException { | |
| 176 | ||
| 177 |
1
1. saveChartAsPNG : negated conditional → NO_COVERAGE |
if (chart == null) { |
| 178 | throw new IllegalArgumentException("Null 'chart' argument."); | |
| 179 | } | |
| 180 |
1
1. saveChartAsPNG : removed call to org/jfree/chart/servlet/ServletUtilities::createTempDir → NO_COVERAGE |
ServletUtilities.createTempDir(); |
| 181 | String prefix = ServletUtilities.tempFilePrefix; | |
| 182 |
1
1. saveChartAsPNG : negated conditional → NO_COVERAGE |
if (session == null) { |
| 183 | prefix = ServletUtilities.tempOneTimeFilePrefix; | |
| 184 | } | |
| 185 | File tempFile = File.createTempFile(prefix, ".png", | |
| 186 | new File(System.getProperty("java.io.tmpdir"))); | |
| 187 |
1
1. saveChartAsPNG : removed call to org/jfree/chart/ChartUtilities::saveChartAsPNG → NO_COVERAGE |
ChartUtilities.saveChartAsPNG(tempFile, chart, width, height, info); |
| 188 |
1
1. saveChartAsPNG : negated conditional → NO_COVERAGE |
if (session != null) { |
| 189 |
1
1. saveChartAsPNG : removed call to org/jfree/chart/servlet/ServletUtilities::registerChartForDeletion → NO_COVERAGE |
ServletUtilities.registerChartForDeletion(tempFile, session); |
| 190 | } | |
| 191 |
1
1. saveChartAsPNG : mutated return of Object value for org/jfree/chart/servlet/ServletUtilities::saveChartAsPNG to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return tempFile.getName(); |
| 192 | ||
| 193 | } | |
| 194 | ||
| 195 | /** | |
| 196 | * Saves the chart as a JPEG format file in the temporary directory. | |
| 197 | *
 | |
| 198 | * SPECIAL NOTE: Please avoid using JPEG as an image format for charts, | |
| 199 | * it is a "lossy" format that introduces visible distortions in the | |
| 200 | * resulting image - use PNG instead. In addition, note that JPEG output | |
| 201 | * is supported by JFreeChart only for JRE 1.4.2 or later. | |
| 202 | * | |
| 203 | * @param chart the JFreeChart to be saved. | |
| 204 | * @param width the width of the chart. | |
| 205 | * @param height the height of the chart. | |
| 206 | * @param session the HttpSession of the client (if null, the | |
| 207 | * temporary file is marked as "one-time" and deleted by | |
| 208 | * the {@link DisplayChart} servlet right after it is | |
| 209 | * streamed to the client). | |
| 210 | * | |
| 211 | * @return The filename of the chart saved in the temporary directory. | |
| 212 | * | |
| 213 | * @throws IOException if there is a problem saving the file. | |
| 214 | */ | |
| 215 | public static String saveChartAsJPEG(JFreeChart chart, int width, | |
| 216 | int height, HttpSession session) | |
| 217 | throws IOException { | |
| 218 | ||
| 219 |
1
1. saveChartAsJPEG : mutated return of Object value for org/jfree/chart/servlet/ServletUtilities::saveChartAsJPEG to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return ServletUtilities.saveChartAsJPEG(chart, width, height, null, |
| 220 | session); | |
| 221 | ||
| 222 | } | |
| 223 | ||
| 224 | /** | |
| 225 | * Saves the chart as a JPEG format file in the temporary directory and | |
| 226 | * populates the ChartRenderingInfo object which can be used | |
| 227 | * to generate an HTML image map. | |
| 228 | *
 | |
| 229 | * SPECIAL NOTE: Please avoid using JPEG as an image format for charts, | |
| 230 | * it is a "lossy" format that introduces visible distortions in the | |
| 231 | * resulting image - use PNG instead. In addition, note that JPEG output | |
| 232 | * is supported by JFreeChart only for JRE 1.4.2 or later. | |
| 233 | * | |
| 234 | * @param chart the chart to be saved (null not permitted). | |
| 235 | * @param width the width of the chart | |
| 236 | * @param height the height of the chart | |
| 237 | * @param info the ChartRenderingInfo object to be populated | |
| 238 | * @param session the HttpSession of the client (if null, the | |
| 239 | * temporary file is marked as "one-time" and deleted by | |
| 240 | * the {@link DisplayChart} servlet right after it is | |
| 241 | * streamed to the client). | |
| 242 | * | |
| 243 | * @return The filename of the chart saved in the temporary directory | |
| 244 | * | |
| 245 | * @throws IOException if there is a problem saving the file. | |
| 246 | */ | |
| 247 | public static String saveChartAsJPEG(JFreeChart chart, int width, | |
| 248 | int height, ChartRenderingInfo info, HttpSession session) | |
| 249 | throws IOException { | |
| 250 | ||
| 251 |
1
1. saveChartAsJPEG : negated conditional → NO_COVERAGE |
if (chart == null) { |
| 252 | throw new IllegalArgumentException("Null 'chart' argument."); | |
| 253 | } | |
| 254 | ||
| 255 |
1
1. saveChartAsJPEG : removed call to org/jfree/chart/servlet/ServletUtilities::createTempDir → NO_COVERAGE |
ServletUtilities.createTempDir(); |
| 256 | String prefix = ServletUtilities.tempFilePrefix; | |
| 257 |
1
1. saveChartAsJPEG : negated conditional → NO_COVERAGE |
if (session == null) { |
| 258 | prefix = ServletUtilities.tempOneTimeFilePrefix; | |
| 259 | } | |
| 260 | File tempFile = File.createTempFile(prefix, ".jpeg", | |
| 261 | new File(System.getProperty("java.io.tmpdir"))); | |
| 262 |
1
1. saveChartAsJPEG : removed call to org/jfree/chart/ChartUtilities::saveChartAsJPEG → NO_COVERAGE |
ChartUtilities.saveChartAsJPEG(tempFile, chart, width, height, info); |
| 263 |
1
1. saveChartAsJPEG : negated conditional → NO_COVERAGE |
if (session != null) { |
| 264 |
1
1. saveChartAsJPEG : removed call to org/jfree/chart/servlet/ServletUtilities::registerChartForDeletion → NO_COVERAGE |
ServletUtilities.registerChartForDeletion(tempFile, session); |
| 265 | } | |
| 266 |
1
1. saveChartAsJPEG : mutated return of Object value for org/jfree/chart/servlet/ServletUtilities::saveChartAsJPEG to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return tempFile.getName(); |
| 267 | ||
| 268 | } | |
| 269 | ||
| 270 | /** | |
| 271 | * Creates the temporary directory if it does not exist. Throws a | |
| 272 | * RuntimeException if the temporary directory is | |
| 273 | * null. Uses the system property java.io.tmpdir | |
| 274 | * as the temporary directory. This sounds like a strange thing to do but | |
| 275 | * my temporary directory was not created on my default Tomcat 4.0.3 | |
| 276 | * installation. Could save some questions on the forum if it is created | |
| 277 | * when not present. | |
| 278 | */ | |
| 279 | protected static void createTempDir() { | |
| 280 | String tempDirName = System.getProperty("java.io.tmpdir"); | |
| 281 |
1
1. createTempDir : negated conditional → NO_COVERAGE |
if (tempDirName == null) { |
| 282 | throw new RuntimeException("Temporary directory system property " | |
| 283 | + "(java.io.tmpdir) is null."); | |
| 284 | } | |
| 285 | ||
| 286 | // create the temporary directory if it doesn't exist | |
| 287 | File tempDir = new File(tempDirName); | |
| 288 |
1
1. createTempDir : negated conditional → NO_COVERAGE |
if (!tempDir.exists()) { |
| 289 | tempDir.mkdirs(); | |
| 290 | } | |
| 291 | } | |
| 292 | ||
| 293 | /** | |
| 294 | * Adds a {@link ChartDeleter} object to the session object with the name | |
| 295 | * JFreeChart_Deleter if there is not already one bound to the | |
| 296 | * session and adds the filename to the list of charts to be deleted. | |
| 297 | * | |
| 298 | * @param tempFile the file to be deleted. | |
| 299 | * @param session the HTTP session of the client. | |
| 300 | */ | |
| 301 | protected static void registerChartForDeletion(File tempFile, | |
| 302 | HttpSession session) { | |
| 303 | ||
| 304 | // Add chart to deletion list in session | |
| 305 |
1
1. registerChartForDeletion : negated conditional → NO_COVERAGE |
if (session != null) { |
| 306 | ChartDeleter chartDeleter | |
| 307 | = (ChartDeleter) session.getAttribute("JFreeChart_Deleter"); | |
| 308 |
1
1. registerChartForDeletion : negated conditional → NO_COVERAGE |
if (chartDeleter == null) { |
| 309 | chartDeleter = new ChartDeleter(); | |
| 310 |
1
1. registerChartForDeletion : removed call to javax/servlet/http/HttpSession::setAttribute → NO_COVERAGE |
session.setAttribute("JFreeChart_Deleter", chartDeleter); |
| 311 | } | |
| 312 |
1
1. registerChartForDeletion : removed call to org/jfree/chart/servlet/ChartDeleter::addChart → NO_COVERAGE |
chartDeleter.addChart(tempFile.getName()); |
| 313 | } | |
| 314 | else { | |
| 315 |
1
1. registerChartForDeletion : removed call to java/io/PrintStream::println → NO_COVERAGE |
System.out.println("Session is null - chart will not be deleted"); |
| 316 | } | |
| 317 | } | |
| 318 | ||
| 319 | /** | |
| 320 | * Binary streams the specified file in the temporary directory to the | |
| 321 | * HTTP response in 1KB chunks. | |
| 322 | * | |
| 323 | * @param filename the name of the file in the temporary directory. | |
| 324 | * @param response the HTTP response object. | |
| 325 | * | |
| 326 | * @throws IOException if there is an I/O problem. | |
| 327 | */ | |
| 328 | public static void sendTempFile(String filename, | |
| 329 | HttpServletResponse response) throws IOException { | |
| 330 | ||
| 331 | File file = new File(System.getProperty("java.io.tmpdir"), filename); | |
| 332 |
1
1. sendTempFile : removed call to org/jfree/chart/servlet/ServletUtilities::sendTempFile → NO_COVERAGE |
ServletUtilities.sendTempFile(file, response); |
| 333 | } | |
| 334 | ||
| 335 | /** | |
| 336 | * Binary streams the specified file to the HTTP response in 1KB chunks. | |
| 337 | * | |
| 338 | * @param file the file to be streamed. | |
| 339 | * @param response the HTTP response object. | |
| 340 | * | |
| 341 | * @throws IOException if there is an I/O problem. | |
| 342 | */ | |
| 343 | public static void sendTempFile(File file, HttpServletResponse response) | |
| 344 | throws IOException { | |
| 345 | ||
| 346 | String mimeType = null; | |
| 347 | String filename = file.getName(); | |
| 348 |
2
1. sendTempFile : changed conditional boundary → NO_COVERAGE 2. sendTempFile : negated conditional → NO_COVERAGE |
if (filename.length() > 5) { |
| 349 |
2
1. sendTempFile : Replaced integer subtraction with addition → NO_COVERAGE 2. sendTempFile : negated conditional → NO_COVERAGE |
if (filename.substring(filename.length() - 5, |
| 350 | filename.length()).equals(".jpeg")) { | |
| 351 | mimeType = "image/jpeg"; | |
| 352 | } | |
| 353 |
2
1. sendTempFile : Replaced integer subtraction with addition → NO_COVERAGE 2. sendTempFile : negated conditional → NO_COVERAGE |
else if (filename.substring(filename.length() - 4, |
| 354 | filename.length()).equals(".png")) { | |
| 355 | mimeType = "image/png"; | |
| 356 | } | |
| 357 | } | |
| 358 |
1
1. sendTempFile : removed call to org/jfree/chart/servlet/ServletUtilities::sendTempFile → NO_COVERAGE |
ServletUtilities.sendTempFile(file, response, mimeType); |
| 359 | } | |
| 360 | ||
| 361 | /** | |
| 362 | * Binary streams the specified file to the HTTP response in 1KB chunks. | |
| 363 | * | |
| 364 | * @param file the file to be streamed. | |
| 365 | * @param response the HTTP response object. | |
| 366 | * @param mimeType the mime type of the file, null allowed. | |
| 367 | * | |
| 368 | * @throws IOException if there is an I/O problem. | |
| 369 | */ | |
| 370 | public static void sendTempFile(File file, HttpServletResponse response, | |
| 371 | String mimeType) throws IOException { | |
| 372 | ||
| 373 |
1
1. sendTempFile : negated conditional → NO_COVERAGE |
if (file.exists()) { |
| 374 | BufferedInputStream bis = new BufferedInputStream( | |
| 375 | new FileInputStream(file)); | |
| 376 | ||
| 377 | // Set HTTP headers | |
| 378 |
1
1. sendTempFile : negated conditional → NO_COVERAGE |
if (mimeType != null) { |
| 379 |
1
1. sendTempFile : removed call to javax/servlet/http/HttpServletResponse::setHeader → NO_COVERAGE |
response.setHeader("Content-Type", mimeType); |
| 380 | } | |
| 381 |
1
1. sendTempFile : removed call to javax/servlet/http/HttpServletResponse::setHeader → NO_COVERAGE |
response.setHeader("Content-Length", String.valueOf(file.length())); |
| 382 | SimpleDateFormat sdf = new SimpleDateFormat( | |
| 383 | "EEE, dd MMM yyyy HH:mm:ss z", Locale.ENGLISH); | |
| 384 |
1
1. sendTempFile : removed call to java/text/SimpleDateFormat::setTimeZone → NO_COVERAGE |
sdf.setTimeZone(TimeZone.getTimeZone("GMT")); |
| 385 |
1
1. sendTempFile : removed call to javax/servlet/http/HttpServletResponse::setHeader → NO_COVERAGE |
response.setHeader("Last-Modified", |
| 386 | sdf.format(new Date(file.lastModified()))); | |
| 387 | ||
| 388 | BufferedOutputStream bos = new BufferedOutputStream( | |
| 389 | response.getOutputStream()); | |
| 390 | byte[] input = new byte[1024]; | |
| 391 | boolean eof = false; | |
| 392 |
1
1. sendTempFile : negated conditional → NO_COVERAGE |
while (!eof) { |
| 393 | int length = bis.read(input); | |
| 394 |
1
1. sendTempFile : negated conditional → NO_COVERAGE |
if (length == -1) { |
| 395 | eof = true; | |
| 396 | } | |
| 397 | else { | |
| 398 |
1
1. sendTempFile : removed call to java/io/BufferedOutputStream::write → NO_COVERAGE |
bos.write(input, 0, length); |
| 399 | } | |
| 400 | } | |
| 401 |
1
1. sendTempFile : removed call to java/io/BufferedOutputStream::flush → NO_COVERAGE |
bos.flush(); |
| 402 |
1
1. sendTempFile : removed call to java/io/BufferedInputStream::close → NO_COVERAGE |
bis.close(); |
| 403 |
1
1. sendTempFile : removed call to java/io/BufferedOutputStream::close → NO_COVERAGE |
bos.close(); |
| 404 | } | |
| 405 | else { | |
| 406 | throw new FileNotFoundException(file.getAbsolutePath()); | |
| 407 | } | |
| 408 | return; | |
| 409 | } | |
| 410 | ||
| 411 | /** | |
| 412 | * Perform a search/replace operation on a String | |
| 413 | * There are String methods to do this since (JDK 1.4) | |
| 414 | * | |
| 415 | * @param inputString the String to have the search/replace operation. | |
| 416 | * @param searchString the search String. | |
| 417 | * @param replaceString the replace String. | |
| 418 | * | |
| 419 | * @return The String with the replacements made. | |
| 420 | */ | |
| 421 | public static String searchReplace(String inputString, | |
| 422 | String searchString, | |
| 423 | String replaceString) { | |
| 424 | ||
| 425 | int i = inputString.indexOf(searchString); | |
| 426 |
1
1. searchReplace : negated conditional → NO_COVERAGE |
if (i == -1) { |
| 427 |
1
1. searchReplace : mutated return of Object value for org/jfree/chart/servlet/ServletUtilities::searchReplace to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return inputString; |
| 428 | } | |
| 429 | ||
| 430 | String r = ""; | |
| 431 | r += inputString.substring(0, i) + replaceString; | |
| 432 |
3
1. searchReplace : changed conditional boundary → NO_COVERAGE 2. searchReplace : Replaced integer addition with subtraction → NO_COVERAGE 3. searchReplace : negated conditional → NO_COVERAGE |
if (i + searchString.length() < inputString.length()) { |
| 433 |
1
1. searchReplace : Replaced integer addition with subtraction → NO_COVERAGE |
r += searchReplace(inputString.substring(i + searchString.length()), |
| 434 | searchString, replaceString); | |
| 435 | } | |
| 436 | ||
| 437 |
1
1. searchReplace : mutated return of Object value for org/jfree/chart/servlet/ServletUtilities::searchReplace to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return r; |
| 438 | } | |
| 439 | ||
| 440 | } | |
Mutations | ||
| 94 |
1.1 |
|
| 103 |
1.1 |
|
| 116 |
1.1 |
|
| 126 |
1.1 |
|
| 150 |
1.1 |
|
| 177 |
1.1 |
|
| 180 |
1.1 |
|
| 182 |
1.1 |
|
| 187 |
1.1 |
|
| 188 |
1.1 |
|
| 189 |
1.1 |
|
| 191 |
1.1 |
|
| 219 |
1.1 |
|
| 251 |
1.1 |
|
| 255 |
1.1 |
|
| 257 |
1.1 |
|
| 262 |
1.1 |
|
| 263 |
1.1 |
|
| 264 |
1.1 |
|
| 266 |
1.1 |
|
| 281 |
1.1 |
|
| 288 |
1.1 |
|
| 305 |
1.1 |
|
| 308 |
1.1 |
|
| 310 |
1.1 |
|
| 312 |
1.1 |
|
| 315 |
1.1 |
|
| 332 |
1.1 |
|
| 348 |
1.1 2.2 |
|
| 349 |
1.1 2.2 |
|
| 353 |
1.1 2.2 |
|
| 358 |
1.1 |
|
| 373 |
1.1 |
|
| 378 |
1.1 |
|
| 379 |
1.1 |
|
| 381 |
1.1 |
|
| 384 |
1.1 |
|
| 385 |
1.1 |
|
| 392 |
1.1 |
|
| 394 |
1.1 |
|
| 398 |
1.1 |
|
| 401 |
1.1 |
|
| 402 |
1.1 |
|
| 403 |
1.1 |
|
| 426 |
1.1 |
|
| 427 |
1.1 |
|
| 432 |
1.1 2.2 3.3 |
|
| 433 |
1.1 |
|
| 437 |
1.1 |


--- layout: post title: Murmurs date: 2010-03-30 20:34:31.000000000 -07:00 type: post published: true status: publish categories: - reviews tags: [] meta: _publicize_pending: '1' _edit_last: '6192' aktt_tweeted: '1' original_post_id: '408' _wp_old_slug: '408' author: login: falsefridays email<EMAIL_ADDRESS>display_name: Jim Withington first_name: '' last_name: '' ---
I searched for years for a vinyl copy of the first R.E.M. LP, Murmur, on vinyl. My requirements were: I wanted it to be cheap, and I wanted the original release (partly because of my Hi-Fidelity-style collector's mentality). Or at least not a remastered or fancy resissued version (though, y'know, the recent fancy reissue was something that I put on my Amazon Wish List. I don't mind if other people spend that kinda money for me!), because I'd read so many reviews to know that part of the early-R.E.M. charm was that the vocals were buried/oddly mixed, and I wanted the Authentic Experience.
So after two years of striking out and a few months of eyeing that there fancy re-issue, I finally just hit up ebay, bid on the thing, and got it for about $15.
And it's great.
And no only is it great, I am finding myself absolutely unable to get Catapult out of my head. And I'm thinking that "Shaking Through" might shoot to my top ten all-time R.E.M. songs, just on the basis of the catchy, goose-bump-inducing, absolutely-built-for-singing-along chorus.
And I love this. I love that this album is from 1983, and it's from a band that I love, but about 10 years prior to the R.E.M. period that I know. I love discovering this stuff. I love hearing "Talk About the Passion" and "Radio Free Europe" in their original context.
It's just really great. I don't know what took me so long.
*I am probably at least a 65% proponent of the "hey, the internet is great and all, but it kinda ruined the hunt for things, especially music" theory. I can remember trying for years to find a copy of the ska version of "The Freshman," but once I was able to start downloading music, I nearly instantly looked for, and found it. It's still good, but I still look for the 7" now and again. I suppose I could find it on eBay.


Load multiple images and add then behind each other to create a simple animation or even a movie. More...
#include <AnimatedPicture.hpp>
Public Types | |
| enum | AnimatedPictureCallbacks { AnimationFinished = ClickableWidgetCallbacksCount * 1, AllAnimatedPictureCallbacks = ClickableWidgetCallbacksCount * 2 - 1 } |
| Defines specific triggers to AnimatedPicture. More... | |
| Public Types inherited from tgui::ClickableWidget | |
| enum | ClickableWidgetCallbacks { LeftMousePressed = WidgetCallbacksCount * 1, LeftMouseReleased = WidgetCallbacksCount * 2, LeftMouseClicked = WidgetCallbacksCount * 4, AllClickableWidgetCallbacks = WidgetCallbacksCount * 8 - 1 } |
| Defines specific triggers to ClickableWidget. More... | |
| Public Types inherited from tgui::Widget | |
| enum | WidgetCallbacks { None = 0, Focused = 1, Unfocused = 2, MouseEntered = 4, MouseLeft = 8 } |
| Defines specific triggers to Widget. More... | |
Public Member Functions | |
| AnimatedPicture () | |
| Default constructor. More... | |
| AnimatedPicture (const AnimatedPicture ©) | |
| Copy constructor. More... | |
| virtual | ~AnimatedPicture () |
| Destructor. More... | |
| AnimatedPicture & | operator= (const AnimatedPicture &right) |
| Overload of assignment operator. More... | |
| bool | addFrame (const std::string &filename, sf::Time frameDuration=sf::Time()) |
| Load another image/frame from a file. More... | |
| void | setSize (float width, float height) |
| Changes the size of the displayed image. More... | |
| virtual sf::Vector2f | getSize () const |
| Returns the size of the the displayed image. More... | |
| void | play () |
| Starts or resumes playing the animation. More... | |
| void | pause () |
| Pauses the animation. More... | |
| void | stop () |
| Stops the animation. More... | |
| bool | setFrame (unsigned int frame) |
| Sets the animation at a specific frame. More... | |
| int | getCurrentFrame () const |
| Returns the current displayed frame. More... | |
| sf::Time | getCurrentFrameDuration () const |
| Returns the duration of the currently displayed frame. More... | |
| unsigned int | getFrames () const |
| Returns the amount of frames in the animation. More... | |
| bool | removeFrame (unsigned int frame) |
| Removes a frame from the animation. More... | |
| void | removeAllFrames () |
| Remove all frames from the animation. More... | |
| void | setLooping (bool loop=true) |
| Turn the looping of the animation on or off. More... | |
| bool | getLooping () const |
| Returns whether the looping of the animation is on or off. More... | |
| bool | isPlaying () const |
| Returns whether the animation is still playing. More... | |
| virtual void | setTransparency (unsigned char transparency) |
| Changes the transparency of the widget. More... | |
| Public Member Functions inherited from tgui::ClickableWidget | |
| ClickableWidget () | |
| Default constructor. More... | |
| ClickableWidget (const ClickableWidget ©) | |
| Copy constructor. More... | |
| virtual | ~ClickableWidget () |
| Destructor. More... | |
| ClickableWidget & | operator= (const ClickableWidget &right) |
| Overload of assignment operator. More... | |
| Public Member Functions inherited from tgui::Widget | |
| Widget () | |
| Default constructor. More... | |
| Widget (const Widget ©) | |
| Copy constructor. More... | |
| virtual | ~Widget () |
| Destructor. More... | |
| Widget & | operator= (const Widget &right) |
| Overload of assignment operator. More... | |
| virtual sf::Vector2f | getAbsolutePosition () const |
| Get the absolute position of the widget on the screen. More... | |
| virtual void | show () |
| Shows the widget. More... | |
| virtual void | hide () |
| Hides the widget. More... | |
| bool | isVisible () const |
| Returns true when the widget is visible. More... | |
| virtual void | enable () |
| Enables the widget. More... | |
| virtual void | disable () |
| Disables the widget. More... | |
| bool | isEnabled () const |
| Returns true when the widget is enabled. More... | |
| bool | isDisabled () const |
| Returns true when the widget is disabled. More... | |
| bool | isLoaded () const |
| Returns true when the widget is loaded successfully. More... | |
| virtual void | focus () |
| Focus the widget. More... | |
| virtual void | unfocus () |
| Unfocus the widget. More... | |
| bool | isFocused () const |
| Returns true when the widget is focused and false otherwise. More... | |
| WidgetTypes | getWidgetType () const |
| Returns the type of the widget. More... | |
| Container * | getParent () const |
| Returns a pointer to the parent widget. More... | |
| unsigned char | getTransparency () const |
| Returns the transparency of the widget. More... | |
| virtual void | moveToFront () |
| Places the widget before all other widgets. More... | |
| virtual void | moveToBack () |
| Places the widget behind all other widgets. More... | |
| void | setCallbackId (unsigned int callbackId) |
| Changes the callback id of the widget. More... | |
| unsigned int | getCallbackId () |
| Returns the callback id of the widget. More... | |
| Public Member Functions inherited from tgui::Transformable | |
| Transformable () | |
| Default constructor. More... | |
| virtual | ~Transformable () |
| Destructor. More... | |
| virtual void | setPosition (float x, float y) |
| Set the position of the widget. More... | |
| void | setPosition (const sf::Vector2f &position) |
| set the position of the widget More... | |
| const sf::Vector2f & | getPosition () const |
| get the position of the widget More... | |
| void | move (float offsetX, float offsetY) |
| Move the widget by a given offset. More... | |
| void | move (const sf::Vector2f &offset) |
| Move the widget by a given offset. More... | |
| virtual sf::Vector2f | getFullSize () const |
| Returns the entire size that the widget is using. More... | |
| void | scale (float factorX, float factorY) |
| Scale the widget. More... | |
| void | scale (const sf::Vector2f &factors) |
| Scale the widget. More... | |
| Public Member Functions inherited from tgui::CallbackManager | |
| void | bindCallback (std::function< void()> func, unsigned int trigger) |
| Bind a function to one or more specific callback trigger(s). More... | |
| template<typename T > | |
| void | bindCallback (void(T::*func)(), T *const classPtr, unsigned int trigger) |
| Bind a function to one or more specific callback trigger(s). More... | |
| void | bindCallbackEx (std::function< void(const Callback &)> func, unsigned int trigger) |
| Bind a function to one or more specific callback trigger(s). More... | |
| template<typename T > | |
| void | bindCallbackEx (void(T::*func)(const Callback &), T *const classPtr, unsigned int trigger) |
| Bind a function to one or more specific callback trigger(s). More... | |
| void | bindCallback (unsigned int trigger) |
| Bind one or more specific callback trigger(s) to the parent widget. More... | |
| void | unbindCallback (unsigned int trigger) |
| Unbind all callback function bound to the given trigger. More... | |
| void | unbindAllCallback () |
| Unbind all callback functions bound to any callback. More... | |
Load multiple images and add then behind each other to create a simple animation or even a movie.
Defines specific triggers to AnimatedPicture.
| Enumerator | |
|---|---|
| AnimationFinished |
Animation ended. |
| AllAnimatedPictureCallbacks |
All triggers defined in AnimatedPicture and its base classes. |
| tgui::AnimatedPicture::AnimatedPicture | ( | ) |
Default constructor.
| tgui::AnimatedPicture::AnimatedPicture | ( | const AnimatedPicture & | copy | ) |
Copy constructor.
| copy | Instance to copy |
|
virtual |
Destructor.
| bool tgui::AnimatedPicture::addFrame | ( | const std::string & | filename, |
| sf::Time | frameDuration = sf::Time() |
||
| ) |
Load another image/frame from a file.
| filename | The filename of the image that you want to use as next frame. |
| frameDuration | The amount of time that the frame will be displayed on the screen. When the duration is 0 (default) then the animation will be blocked at that frame. |
| int tgui::AnimatedPicture::getCurrentFrame | ( | ) | const |
Returns the current displayed frame.
The number is the index of the frame, so the first frame is number 0. If no frames were loaded then this function will return -1.
| sf::Time tgui::AnimatedPicture::getCurrentFrameDuration | ( | ) | const |
Returns the duration of the currently displayed frame.
| unsigned int tgui::AnimatedPicture::getFrames | ( | ) | const |
Returns the amount of frames in the animation.
| bool tgui::AnimatedPicture::getLooping | ( | ) | const |
Returns whether the looping of the animation is on or off.
By default, the animation will not loop.
|
virtual |
Returns the size of the the displayed image.
Reimplemented from tgui::ClickableWidget.
| bool tgui::AnimatedPicture::isPlaying | ( | ) | const |
Returns whether the animation is still playing.
| AnimatedPicture& tgui::AnimatedPicture::operator= | ( | const AnimatedPicture & | right | ) |
Overload of assignment operator.
| right | Instance to assign |
| void tgui::AnimatedPicture::pause | ( | ) |
| void tgui::AnimatedPicture::removeAllFrames | ( | ) |
Remove all frames from the animation.
| bool tgui::AnimatedPicture::removeFrame | ( | unsigned int | frame | ) |
Removes a frame from the animation.
| frame | The number of the frame to remove |
The number is the index of the frame, so the first frame is number 0.
| bool tgui::AnimatedPicture::setFrame | ( | unsigned int | frame | ) |
Sets the animation at a specific frame.
| frame | The frame that should be displayed |
The number is the index of the frame, so the first frame is number 0.
| void tgui::AnimatedPicture::setLooping | ( | bool | loop = true | ) |
Turn the looping of the animation on or off.
By default, when this function isn't called, the animation will not loop.
| loop | Should the animation start over from the beginning when it finishes? |
|
virtual |
Changes the size of the displayed image.
| width | The new width of the picture |
| height | The new height of the picture |
Reimplemented from tgui::ClickableWidget.
|
virtual |
Changes the transparency of the widget.
| transparency | The transparency of the widget. 0 is completely transparent, while 255 (default) means fully opaque. |
Note that this will only change the transparency of the images. The parts of the widgets that use a color will not be changed. You must change them yourself by setting the alpha channel of the color.
Reimplemented from tgui::Widget.
| void tgui::AnimatedPicture::stop | ( | ) |


labeled
by Kevin Reiss at 2023-03-24 21:17:24.unsubscribed
by Peter Green at 2023-03-24 16:02:41.labeled
by Christina Chortaria at 2023-03-24 12:18:14.labeled
by Christina Chortaria at 2023-03-24 12:18:42.assigned
by Christina Chortaria at 2023-03-24 12:19:49.unassigned
by Christina Chortaria at 2023-03-24 12:19:57.mentioned
by Christina Chortaria at 2023-03-24 18:22:24.subscribed
by Christina Chortaria at 2023-03-24 18:22:24.assigned
by Christina Chortaria at 2023-03-24 18:23:20.unassigned
by None at 2023-03-24 18:25:53.assigned
by None at 2023-03-24 18:26:15.assigned
by Christina Chortaria at 2023-03-24 18:26:15.assigned
by None at 2023-03-24 18:26:16.assigned
by Max Kadel at 2023-03-24 18:26:16.Francis asked to work with folks on this the week of 4/3.
assigned
by Max Kadel at 2023-03-24 20:45:16.unassigned
by Max Kadel at 2023-03-24 20:45:29.assigned
by Max Kadel at 2023-03-24 20:45:32.labeled
by Christina Chortaria at 2023-03-24 21:48:06.deployed to production
closed
by Kevin Reiss at 2023-03-24 14:24:05.referenced
by Kevin Reiss at 2023-03-24 14:47:52.merged
by Kevin Reiss at 2023-03-24 14:47:53.closed
by Kevin Reiss at 2023-03-24 14:47:53.head_ref_deleted
by Kevin Reiss at 2023-03-24 14:47:54.closing in favor of OL #3458
closed
by Kevin Reiss at 2023-03-24 20:32:39.Ran GenerateChecksumJob
and then PreserveResourceJob
on all FGDC FileSets. This did not fix the issue, but I was able to list of FGDC FileSets that are generating these errors.
failedchecksumfilesets.csv
I'm going to put this back in Ready and lower the priority.
assigned
by Eliot Jordan at 2023-03-24 18:14:25.referenced
by Eliot Jordan at 2023-03-24 19:25:11.merged
by Eliot Jordan at 2023-03-24 19:25:11.closed
by Eliot Jordan at 2023-03-24 19:25:12.head_ref_deleted
by Eliot Jordan at 2023-03-24 19:25:13.closed
by Eliot Jordan at 2023-03-24 19:26:17.referenced
by Eliot Jordan at 2023-03-24 19:26:15.merged
by Eliot Jordan at 2023-03-24 19:26:15.closed
by Eliot Jordan at 2023-03-24 19:26:15.head_ref_deleted
by Eliot Jordan at 2023-03-24 19:26:18.ready_for_review
by Taylor Yamashita at 2023-03-24 16:18:27.referenced
by Eliot Jordan at 2023-03-24 19:30:21.merged
by Eliot Jordan at 2023-03-24 19:30:21.closed
by Eliot Jordan at 2023-03-24 19:30:22.head_ref_deleted
by Eliot Jordan at 2023-03-24 19:30:23.closed
by Eliot Jordan at 2023-03-24 19:30:23.labeled
by Kevin Reiss at 2023-03-24 15:52:39.labeled
by Kevin Reiss at 2023-03-24 15:55:15.closed
by None at 2023-03-24 13:26:32.head_ref_deleted
by None at 2023-03-24 13:26:53.ready_for_review
by None at 2023-03-24 13:33:34.referenced
by Max Kadel at 2023-03-24 16:05:39.merged
by Max Kadel at 2023-03-24 16:05:39.closed
by Max Kadel at 2023-03-24 16:05:40.head_ref_deleted
by Max Kadel at 2023-03-24 16:05:41.closed
by Max Kadel at 2023-03-24 16:05:42.I've implemented this with https://github.com/pulibrary/lockers_and_study_spaces/pull/223 but the flash messages only last 2 seconds and are difficult to navigate to before they close with a screen reader.
Lux does not allow you to set the length of time before auto-clearing the alert and a PR would be needed to allow more time to navigate to them.
Since the current implementation just embeds the text on the page, a dismissible alert could be an interim solution that would still be a significant improvement to the ux.
labeled
by Kevin Reiss at 2023-03-24 02:56:24.assigned
by Max Kadel at 2023-03-24 16:19:39.unassigned
by Max Kadel at 2023-03-24 16:52:45.deployed
by None at 2023-03-24 14:41:18.referenced
by Kevin Reiss at 2023-03-24 17:52:51.merged
by Kevin Reiss at 2023-03-24 17:52:51.closed
by Kevin Reiss at 2023-03-24 17:52:51.head_ref_deleted
by Kevin Reiss at 2023-03-24 17:52:52.closed
by Kevin Reiss at 2023-03-24 17:52:52.assigned
by Max Kadel at 2023-03-24 18:21:25.referenced
by Christina Chortaria at 2023-03-24 19:11:36.merged
by Christina Chortaria at 2023-03-24 19:11:36.closed
by Christina Chortaria at 2023-03-24 19:11:36.head_ref_deleted
by Christina Chortaria at 2023-03-24 19:11:37.assigned
by Max Kadel at 2023-03-24 16:53:34.referenced
by Max Kadel at 2023-03-24 18:10:56.closed
by Christina Chortaria at 2023-03-24 19:11:38.deployed
by None at 2023-03-24 19:46:53.The E-resource group says the clean-up is moving more rapidly than expected. Will check back in on this on 3/29 and e-resource check-in.
The browser-tools
Orb is failing with the following error:
GECKODRIVER_VERSION_NUM="$(echo "$GECKODRIVER_VERSION" | sed -E 's/v//')"
if geckodriver --version | grep "$GECKODRIVER_VERSION_NUM" >/dev/null 2>&1; then
echo "$(geckodriver --version) has been installed to $(command -v geckodriver)"
else
echo "Something went wrong; the specified version of Geckodriver could not be installed"
exit 1
fi
Selected version of Geckodriver is: v0.32.2
Geckodriver is not currently installed; installing it
curl: (60) SSL certificate problem: certificate has expired
More details here: https://curl.haxx.se/docs/sslcerts.html
head_ref_force_pushed
by James R. Griffin III at 2023-03-24 20:46:48.renamed
by James R. Griffin III at 2023-03-24 20:53:07.ready_for_review
by James R. Griffin III at 2023-03-24 20:56:05.head_ref_force_pushed
by Francis Kayiwa at 2023-03-24 13:44:18.head_ref_force_pushed
by Francis Kayiwa at 2023-03-24 13:47:19.closed
by Kevin Reiss at 2023-03-24 02:55:45.assigned
by Kevin Reiss at 2023-03-24 15:37:59.assigned
by Kevin Reiss at 2023-03-24 15:38:00.assigned
by Kevin Reiss at 2023-03-24 15:37:59.transferred
by Christina Chortaria at 2023-03-24 15:40:31.assigned
by Kevin Reiss at 2023-03-24 17:01:44.labeled
by Kevin Reiss at 2023-03-24 18:16:33.assigned
by Kevin Reiss at 2023-03-24 18:17:04.assigned
by Kevin Reiss at 2023-03-24 18:19:25.labeled
by Kevin Reiss at 2023-03-24 18:19:42.unlabeled
by Kevin Reiss at 2023-03-24 18:19:53.deployed to prod
closed
by Kevin Reiss at 2023-03-24 19:57:49.assigned
by Taylor Yamashita at 2023-03-24 16:19:05.referenced
by None at 2023-03-24 18:18:29.merged
by None at 2023-03-24 18:18:29.closed
by None at 2023-03-24 18:18:29.head_ref_deleted
by None at 2023-03-24 18:18:30.mentioned
by James R. Griffin III at 2023-03-24 19:53:33.subscribed
by James R. Griffin III at 2023-03-24 19:53:33.head_ref_force_pushed
by None at 2023-03-25 01:23:15.referenced
by None at 2023-03-24 12:33:57.merged
by None at 2023-03-24 12:33:57.closed
by None at 2023-03-24 12:33:57.head_ref_deleted
by None at 2023-03-24 12:33:59.referenced
by None at 2023-03-24 12:36:21.merged
by None at 2023-03-24 12:36:21.closed
by None at 2023-03-24 12:36:21.head_ref_deleted
by None at 2023-03-24 12:36:23.


Element index for package Gliffy
[ a ]
[ b ]
[ c ]
[ d ]
[ e ]
[ f ]
[ g ]
[ h ]
[ i ]
[ k ]
[ l ]
[ m ]
[ n ]
[ o ]
[ p ]
[ r ]
[ s ]
[ t ]
[ u ]
[ v ]
[ w ]
[ _ ]
_
- $_rest
- in file Gliffy.php, variable Gliffy::$_rest
GliffyREST instance
- __construct
- in file OAuth.php, method OAuthServer::__construct()
- __construct
- in file OAuth.php, method SimpleOAuthDataStore::__construct()
- __construct
- in file OAuth.php, method OAuthToken::__construct()
key = the token
- __construct
- in file OAuth.php, method OAuthRequest::__construct()
- __construct
- in file OAuth.php, method OAuthConsumer::__construct()
- __construct
- in file GliffyException.php, method GliffyException::__construct()
Create a GliffyException with the given message
- __destruct
- in file OAuth.php, method SimpleOAuthDataStore::__destruct()
- __destruct
- in file Gliffy.php, method Gliffy::__destruct()
No-op destructor
- __toString
- in file OAuth.php, method OAuthToken::__toString()
- __toString
- in file OAuth.php, method OAuthConsumer::__toString()
- __toString
- in file OAuth.php, method OAuthRequest::__toString()
- $_GLIFFY_accountID
- in file config_example.php, global variable $_GLIFFY_accountID
The id of your account, as provided by Gliffy.
- $_GLIFFY_appDescription
- in file config_example.php, global variable $_GLIFFY_appDescription
This is a String description of the application you are building.
- $_GLIFFY_logLevel
- in file config_example.php, global variable $_GLIFFY_logLevel
The level of logging the Gliffy classes shoudl perform.
- $_GLIFFY_logTo_error_log
- in file config_example.php, global variable $_GLIFFY_logTo_error_log
This is for debugging and testing. If false, logging output will be sent using 'echo' instead of sent to the error_log.
- $_GLIFFY_oauth_consumer_key
- in file config_example.php, global variable $_GLIFFY_oauth_consumer_key
The oauth consumer key assigned to your account by Gliffy.
- $_GLIFFY_oauth_consumer_secret
- in file config_example.php, global variable $_GLIFFY_oauth_consumer_secret
The oauth consumer secret assiged to your account by Gliffy.
- $_GLIFFY_restRoot
- in file config_example.php, global variable $_GLIFFY_restRoot
This is the root of the Gliffy REST API. The value included in this distribution
- $_GLIFFY_restRootPassword
- in file config_example.php, global variable $_GLIFFY_restRootPassword
This is a password to access the REST Root via HTTP Basic Auth. This is
- $_GLIFFY_restRootUsername
- in file config_example.php, global variable $_GLIFFY_restRootUsername
This is a username to access the REST Root via HTTP Basic Auth. This is
- $_GLIFFY_root
- in file config_example.php, global variable $_GLIFFY_root
This is the root of the Gliffy web app. The value included in this distribution is probably correct, however check the Gliffy Developer Site for more details.
- $_GLIFFY_strictREST
- in file config_example.php, global variable $_GLIFFY_strictREST
Setting this to true instructs Gliffy to operate in a strict HTTP/REST mode, where errors that occur result in HTTP status codes and not <go-error> XML responses. You probably want to keep this false.
- $_GLIFFY_verifySSLCert
- in file config_example.php, global variable $_GLIFFY_verifySSLCert
If using SSL, this instructs the underlying HTTP code to accept Untrusted SSL certificates.
- __construct
- in file GliffyAccount.php, method GliffyAccount::__construct()
- __construct
- in file GliffyTestAccount.php, method GliffyTestAccount::__construct()
- __toString
- in file GliffyError.php, method GliffyError::__toString()
Formats the http status and message in a suitable way for log messages
top
top
top
top
d
- $data_store
- in file OAuth.php, variable OAuthServer::$data_store
- debug
- in file GliffyLog.php, method GliffyLog::debug()
Print a debug message.
- deleteDiagram
- in file Gliffy.php, method Gliffy::deleteDiagram()
Deletes the diagram.
- deleteFolder
- in file Gliffy.php, method Gliffy::deleteFolder()
Deletes the folder with the given path. All diagrams in this folder will move to the default folder (which, incidentially, cannot be deleted).
- deleteToken
- in file Gliffy.php, method Gliffy::deleteToken()
Delete the OAuth token for this user, effectively logging the user out.
- deleteUser
- in file Gliffy.php, method Gliffy::deleteUser()
Deletes the given user (from this acount), which may not be the user whose session owns this object.
- diagrams_xml_name
- in file GliffyResponseParser.php, class constant GliffyResponseParser::diagrams_xml_name
- diagram_xml_name
- in file GliffyResponseParser.php, class constant GliffyResponseParser::diagram_xml_name
- $default
- in file GliffyFolder.php, variable GliffyFolder::$default
If true, this is the default folder for the account it is in
- $diagrams
- in file GliffyResponse.php, variable GliffyResponse::$diagrams
Array of GliffyDiagram objects
top
e
- error
- in file GliffyLog.php, method GliffyLog::error()
Print an error message.
- error_message
- in file GliffyResponseParser.php, method GliffyResponseParser::error_message()
If response() returns null, this provides a probably explanation as to the problem.
- error_xml_name
- in file GliffyResponseParser.php, class constant GliffyResponseParser::error_xml_name
- EXPIRE_TOLERANCE
- in file Gliffy.php, class constant Gliffy::EXPIRE_TOLERANCE
- $email
- in file GliffyUser.php, variable GliffyUser::$email
The user's email; this can be used to log them into the website outside of the API, but isn't
- $error
- in file GliffyResponse.php, variable GliffyResponse::$error
A GliffyError object
- $expiration_date
- in file GliffyUserToken.php, variable GliffyUserToken::$expiration_date
The unix timestamp when the token expires
- $expiration_date
- in file GliffyTestAccount.php, variable GliffyTestAccount::$expiration_date
Expiration date of the account, as a UNIX timestamp
- $expiration_date
- in file GliffyAccount.php, variable GliffyAccount::$expiration_date
Expiration date of the account, as a UNIX timestamp
top
f
- fetch_access_token
- in file OAuth.php, method OAuthServer::fetch_access_token()
process an access_token request
- fetch_private_cert
- in file OAuth.php, method OAuthSignatureMethod_RSA_SHA1::fetch_private_cert()
- fetch_public_cert
- in file OAuth.php, method OAuthSignatureMethod_RSA_SHA1::fetch_public_cert()
- fetch_request_token
- in file OAuth.php, method OAuthServer::fetch_request_token()
process a request_token request
- folders_xml_name
- in file GliffyResponseParser.php, class constant GliffyResponseParser::folders_xml_name
- folder_xml_name
- in file GliffyResponseParser.php, class constant GliffyResponseParser::folder_xml_name
- from_consumer_and_token
- in file OAuth.php, method OAuthRequest::from_consumer_and_token()
pretty much a helper function to set up the request
- from_request
- in file OAuth.php, method OAuthRequest::from_request()
attempt to build up a request from what was passed to the server
- $folders
- in file GliffyResponse.php, variable GliffyResponse::$folders
Array of GliffyFolder objects
- from_folder_xml
- in file GliffyFolder.php, method GliffyFolder::from_folder_xml()
- from_response_xml
- in file GliffyTestAccount.php, method GliffyTestAccount::from_response_xml()
- from_response_xml
- in file GliffyUser.php, method GliffyUser::from_response_xml()
- from_response_xml
- in file GliffyFolder.php, method GliffyFolder::from_response_xml()
- from_response_xml
- in file GliffyDiagram.php, method GliffyDiagram::from_response_xml()
- from_response_xml
- in file GliffyAccount.php, method GliffyAccount::from_response_xml()
top
g
- get
- in file GliffyREST.php, method GliffyREST::get()
Send a GET request to the given URL
- getAccountInfo
- in file Gliffy.php, method Gliffy::getAccountInfo()
- getAdmins
- in file Gliffy.php, method Gliffy::getAdmins()
Returns the list of "admins" for the account. Admins can mean whatever you want them to mean, however for Gliffy, an admin is simply someone who has access to all Folders of an account.
- getDiagramAsImage
- in file Gliffy.php, method Gliffy::getDiagramAsImage()
Gets the diagram as an image, possibly saving it to a file.
- getDiagramAsURL
- in file Gliffy.php, method Gliffy::getDiagramAsURL()
Returns a URL to the diagram that can be used in an HTML IMG tag.
- getDiagramAsXML
- in file Gliffy.php, method Gliffy::getDiagramAsXML()
- getDiagramMetaData
- in file Gliffy.php, method Gliffy::getDiagramMetaData()
Returns meta-data about a particular diagram.
- getDiagrams
- in file Gliffy.php, method Gliffy::getDiagrams()
Gets a list of diagrams, either for the entire account, or for the given folder.
- getEditDiagramLink
- in file Gliffy.php, method Gliffy::getEditDiagramLink()
Builds a returns a Gliffy editor launch link for the given diagram id
- getFolders
- in file Gliffy.php, method Gliffy::getFolders()
Returns all folders in this account.
- getUserDiagrams
- in file Gliffy.php, method Gliffy::getUserDiagrams()
Gets all diagrams that the user can access
- getUserFolders
- in file Gliffy.php, method Gliffy::getUserFolders()
Returns the folders the given user has access to.
- getUsers
- in file Gliffy.php, method Gliffy::getUsers()
Returns all users in the account, or in the folder specified.
- get_name
- in file OAuth.php, method OAuthSignatureMethod_HMAC_SHA1::get_name()
- get_name
- in file OAuth.php, method OAuthSignatureMethod_RSA_SHA1::get_name()
- get_name
- in file OAuth.php, method OAuthSignatureMethod_PLAINTEXT::get_name()
- get_normalized_http_method
- in file OAuth.php, method OAuthRequest::get_normalized_http_method()
just uppercases the http method
- get_normalized_http_url
- in file OAuth.php, method OAuthRequest::get_normalized_http_url()
parses the url and rebuilds it to be
- get_parameter
- in file OAuth.php, method OAuthRequest::get_parameter()
- get_parameters
- in file OAuth.php, method OAuthRequest::get_parameters()
- get_signable_parameters
- in file OAuth.php, method OAuthRequest::get_signable_parameters()
Returns the normalized parameters of the request
- get_signature_base_string
- in file OAuth.php, method OAuthRequest::get_signature_base_string()
Returns the base string of this request
- get_simple
- in file GliffyREST.php, method GliffyREST::get_simple()
Performs a get request 'text/xml' with no parameters.
- Gliffy
- in file Gliffy.php, method Gliffy::Gliffy()
Create a new connection to Gliffy.
- Gliffy
- in file Gliffy.php, class Gliffy
Primary method of interacting with Gliffy.
- Gliffy.php
- procedural page Gliffy.php
- GliffyException
- in file GliffyException.php, class GliffyException
An exception from Gliffy that you might be able to handle.
- GliffyException.php
- procedural page GliffyException.php
- GliffyLog
- in file GliffyLog.php, class GliffyLog
Class used for logging to the PHP error log console.
- GliffyLog
- in file GliffyLog.php, method GliffyLog::GliffyLog()
Create a GliffyLog
- GliffyLog.php
- procedural page GliffyLog.php
- GliffyResponseParser
- in file GliffyResponseParser.php, class GliffyResponseParser
Parses a Gliffy response.
- GliffyResponseParser
- in file GliffyResponseParser.php, method GliffyResponseParser::GliffyResponseParser()
Create a GliffyResponseParser for some received XML.
- GliffyResponseParser.php
- procedural page GliffyResponseParser.php
- GliffyREST
- in file GliffyREST.php, method GliffyREST::GliffyREST()
Create a GliffyREST object to make REST calls to Gliffy. The recommended usage of this is to ensure proper values for globals (see config_example.php) and to create this as needed using the user's login token.
- GliffyREST
- in file GliffyREST.php, class GliffyREST
Interacts with Gliffy REST protocol.
- GliffyREST.php
- procedural page GliffyREST.php
- GliffyAccount
- in file GliffyAccount.php, class GliffyAccount
Represents information about a Gliffy accont.
- GliffyAccount.php
- procedural page GliffyAccount.php
- GliffyDiagram
- in file GliffyDiagram.php, class GliffyDiagram
Information about a diagram in Gliffy
- GliffyDiagram
- in file GliffyDiagram.php, method GliffyDiagram::GliffyDiagram()
- GliffyDiagram.php
- procedural page GliffyDiagram.php
- GliffyError
- in file GliffyError.php, method GliffyError::GliffyError()
- GliffyError
- in file GliffyError.php, class GliffyError
An error message from Gliffy
- GliffyError.php
- procedural page GliffyError.php
- GliffyFolder
- in file GliffyFolder.php, class GliffyFolder
Represents information about a folder in Gliffy
- GliffyFolder
- in file GliffyFolder.php, method GliffyFolder::GliffyFolder()
- GliffyFolder.php
- procedural page GliffyFolder.php
- GliffyResponse
- in file GliffyResponse.php, class GliffyResponse
A response from Gliffy.
- GliffyResponse.php
- procedural page GliffyResponse.php
- GliffyTestAccount
- in file GliffyTestAccount.php, class GliffyTestAccount
Represents information about a Gliffy accont.
- GliffyTestAccount.php
- procedural page GliffyTestAccount.php
- GliffyUser
- in file GliffyUser.php, class GliffyUser
A user of Gliffy in an account
- GliffyUser
- in file GliffyUser.php, method GliffyUser::GliffyUser()
- GliffyUser.php
- procedural page GliffyUser.php
- GliffyUserToken
- in file GliffyUserToken.php, method GliffyUserToken::GliffyUserToken()
- GliffyUserToken
- in file GliffyUserToken.php, class GliffyUserToken
The token a user gets for using Gliffy
- GliffyUserToken.php
- procedural page GliffyUserToken.php
top
h
- hasToken
- in file Gliffy.php, method Gliffy::hasToken()
Returns true if this object has a token for the user. This makes no call to the server and will not try to update the user's token.
- $http_status
- in file GliffyError.php, variable GliffyError::$http_status
The HTTP status code that would've been used if HTTP was supported by your client.
top
i
- IMAGE_ERROR
- in file Gliffy.php, class constant Gliffy::IMAGE_ERROR
A static image you can use to indicate there is an error when viewing an image of a diagram
- IMAGE_NO_PERMISSION
- in file Gliffy.php, class constant Gliffy::IMAGE_NO_PERMISSION
A static image you can use to indicate there is a permission problem for viewing an image of a diagram
- index.php
- procedural page index.php
- info
- in file GliffyLog.php, method GliffyLog::info()
Print an informational message.
- $id
- in file GliffyTestAccount.php, variable GliffyTestAccount::$id
The id of the account, not guaranteed to be stable
- $id
- in file GliffyUser.php, variable GliffyUser::$id
User's id; not guaranteed to be stable
- $id
- in file GliffyDiagram.php, variable GliffyDiagram::$id
The id of the diagram. This is stable and can be used to reference a diagram
- $id
- in file GliffyAccount.php, variable GliffyAccount::$id
The id of the account, not guaranteed to be stable
- $image_data
- in file GliffyResponse.php, variable GliffyResponse::$image_data
If the request was for an image, this contains the image's bytes. Note that the format of this depends on the requested mime type. Gliffy should not send you back a mime type different than what you requested, so you can reliably assume that if this is set, it will be the type requested.
- $is_admin
- in file GliffyUser.php, variable GliffyUser::$is_admin
True if the user is an admin of the account from which this record was retrieved
- $is_private
- in file GliffyDiagram.php, variable GliffyDiagram::$is_private
True if diagram is private; viewable/editable only by its owner
- $is_public
- in file GliffyDiagram.php, variable GliffyDiagram::$is_public
True if diagram is public; viewable to the world
- isGliffyAssignedEmail
- in file GliffyUser.php, method GliffyUser::isGliffyAssignedEmail()
Returns true if the email address looks like one assigned by Gliffy.
top
top
l
- launch_link_xml_name
- in file GliffyResponseParser.php, class constant GliffyResponseParser::launch_link_xml_name
- level
- in file GliffyLog.php, method GliffyLog::level()
Gets this log's level.
- log
- in file GliffyLog.php, method GliffyLog::log()
Generic log function
- LOG_LEVEL_DEBUG
- in file GliffyLog.php, class constant GliffyLog::LOG_LEVEL_DEBUG
Logging level of debug, info, warnings, and errors
- LOG_LEVEL_ERROR
- in file GliffyLog.php, class constant GliffyLog::LOG_LEVEL_ERROR
Logging level of errors only
- LOG_LEVEL_INFO
- in file GliffyLog.php, class constant GliffyLog::LOG_LEVEL_INFO
Logging level of info, warnings, and errors
- LOG_LEVEL_WARN
- in file GliffyLog.php, class constant GliffyLog::LOG_LEVEL_WARN
Logging level of warnings and errors
- lookup_consumer
- in file OAuth.php, method SimpleOAuthDataStore::lookup_consumer()
- lookup_consumer
- in file OAuth.php, method OAuthDataStore::lookup_consumer()
- lookup_nonce
- in file OAuth.php, method SimpleOAuthDataStore::lookup_nonce()
- lookup_nonce
- in file OAuth.php, method OAuthDataStore::lookup_nonce()
- lookup_token
- in file OAuth.php, method SimpleOAuthDataStore::lookup_token()
- lookup_token
- in file OAuth.php, method OAuthDataStore::lookup_token()
- $launch_link
- in file GliffyResponse.php, variable GliffyResponse::$launch_link
A GliffyLaunchLink object
top
top
n
- new_access_token
- in file OAuth.php, method OAuthDataStore::new_access_token()
- new_access_token
- in file OAuth.php, method SimpleOAuthDataStore::new_access_token()
- new_request_token
- in file OAuth.php, method OAuthDataStore::new_request_token()
- new_request_token
- in file OAuth.php, method SimpleOAuthDataStore::new_request_token()
- new_token
- in file OAuth.php, method SimpleOAuthDataStore::new_token()
- $name
- in file GliffyFolder.php, variable GliffyFolder::$name
Name of the folder, used to refer to the folder
- $name
- in file GliffyTestAccount.php, variable GliffyTestAccount::$name
The name of the account
- $name
- in file GliffyAccount.php, variable GliffyAccount::$name
The name of the account
- $name
- in file GliffyDiagram.php, variable GliffyDiagram::$name
The name of this diagram
- $not_modified
- in file GliffyResponse.php, variable GliffyResponse::$not_modified
True if the call was a conditional get and the resource was not modified. This is not set in strict REST mode.
- $num_versions
- in file GliffyDiagram.php, variable GliffyDiagram::$num_versions
The number of versions of this diagram
top
o
- OAuth.php
- procedural page OAuth.php
- OAuthConsumer
- in file OAuth.php, class OAuthConsumer
- OAuthDataStore
- in file OAuth.php, class OAuthDataStore
- OAuthException
- in file OAuth.php, class OAuthException
- OAuthRequest
- in file OAuth.php, class OAuthRequest
- OAuthServer
- in file OAuth.php, class OAuthServer
- OAuthSignatureMethod
- in file OAuth.php, class OAuthSignatureMethod
- OAuthSignatureMethod_HMAC_SHA1
- in file OAuth.php, class OAuthSignatureMethod_HMAC_SHA1
- OAuthSignatureMethod_PLAINTEXT
- in file OAuth.php, class OAuthSignatureMethod_PLAINTEXT
- OAuthSignatureMethod_RSA_SHA1
- in file OAuth.php, class OAuthSignatureMethod_RSA_SHA1
- OAuthToken
- in file OAuth.php, class OAuthToken
- OAuthUtil
- in file OAuth.php, class OAuthUtil
- oauth_token_xml_name
- in file GliffyResponseParser.php, class constant GliffyResponseParser::oauth_token_xml_name
- $oAuthConsumerKey
- in file GliffyTestAccount.php, variable GliffyTestAccount::$oAuthConsumerKey
An OAuthConsumerKey to be used for testing purposes
- $oAuthConsumerSecret
- in file GliffyTestAccount.php, variable GliffyTestAccount::$oAuthConsumerSecret
An OAuthConsumerSecret to be used for testing purposes
- $oauth_token
- in file GliffyResponse.php, variable GliffyResponse::$oauth_token
top
p
- post
- in file GliffyREST.php, method GliffyREST::post()
Send a POST request to the given URL
- $path
- in file GliffyFolder.php, variable GliffyFolder::$path
Path of this folder that can be used in URLs
top
top
top
top
u
- updateDiagramContent
- in file Gliffy.php, method Gliffy::updateDiagramContent()
- updateToken
- in file GliffyREST.php, method GliffyREST::updateToken()
Update the token to use for requests.
- updateToken
- in file Gliffy.php, method Gliffy::updateToken()
Update the user's token, if it needs it. This gets the user token from Gliffy, which can have one of three effects:
- updateUser
- in file Gliffy.php, method Gliffy::updateUser()
Updates the user's information.
- urldecode_rfc3986
- in file OAuth.php, method OAuthUtil::urldecode_rfc3986()
- urlencode_rfc3986
- in file OAuth.php, method OAuthUtil::urlencode_rfc3986()
- users_xml_name
- in file GliffyResponseParser.php, class constant GliffyResponseParser::users_xml_name
- user_token_xml_name
- in file GliffyResponseParser.php, class constant GliffyResponseParser::user_token_xml_name
- user_xml_name
- in file GliffyResponseParser.php, class constant GliffyResponseParser::user_xml_name
- $username
- in file GliffyUser.php, variable GliffyUser::$username
The user's username, used to refer to them
- $users
- in file GliffyTestAccount.php, variable GliffyTestAccount::$users
The list of users in the account as @link GliffyUser objects (this may be null if the request didn't ask for them)
- $users
- in file GliffyResponse.php, variable GliffyResponse::$users
Array of GliffyUser objects in response to a request for users or admins.
- $users
- in file GliffyAccount.php, variable GliffyAccount::$users
The list of users in the account as @link GliffyUser objects (this may be null if the request didn't ask for them)
- $user_token
- in file GliffyResponse.php, variable GliffyResponse::$user_token
A GliffyUserToken object
top
top
top
|
|


A type alias for a general area config.
A type alias for the supported insertion modes.
An insert mode is used to specify how a widget should be added to the dock layout relative to a reference widget.
Construct a new dock layout.
The options for initializing the layout.
The renderer used by the dock layout.
Get the fit policy for the layout.
The fit policy controls the computed size constraints which are applied to the parent widget by the layout.
Some layout implementations may ignore the fit policy.
Set the fit policy for the layout.
The fit policy controls the computed size constraints which are applied to the parent widget by the layout.
Some layout implementations may ignore the fit policy.
Changing the fit policy will clear the current size constraint for the parent widget and then re-fit the parent.
Test whether the layout is disposed.
Whether the dock layout is empty.
Get the parent widget of the layout.
This is set automatically when installing the layout on the parent widget. The parent widget should not be set directly by user code.
Set the parent widget of the layout.
This is set automatically when installing the layout on the parent widget. The parent widget should not be set directly by user code.
Get the inter-element spacing for the dock layout.
Set the inter-element spacing for the dock layout.
Create a new handle for the dock layout.
The handle will be attached to the parent if it exists.
Fit the layout to the total size required by the widgets.
Remove the specified widget from the layout structure.
This is a no-op if the widget is not in the layout tree.
This does not detach the widget from the parent node.
Ensure the root is a split node with the given orientation.
Update the layout position and size of the widgets.
The parent offset dimensions should be -1
if unknown.
Add a widget to the dock layout.
The widget to add to the dock layout.
The additional options for adding the widget.
The widget will be moved if it is already contained in the layout.
An error will be thrown if the reference widget is invalid.
Attach the widget to the layout parent widget.
The widget to attach to the parent.
This is a no-op if the widget is already attached.
Detach the widget from the layout parent widget.
The widget to detach from the parent.
This is a no-op if the widget is not attached.
Dispose of the resources held by the layout.
This will clear and dispose all widgets in the layout.
Create an iterator over the handles in the layout.
A new iterator over the handles in the layout.
Find the tab area which contains the given client position.
The client X position of interest.
The client Y position of interest.
The geometry of the tab area at the given position, or
null
if there is no tab area at the given position.
Perform layout initialization which requires the parent widget.
Create an iterator over all widgets in the layout.
A new iterator over the widgets in the layout.
This iterator includes the generated tab bars.
Move a handle to the given offset position.
The handle to move.
The desired offset X position of the handle.
The desired offset Y position of the handle.
If the given handle is not contained in the layout, this is no-op.
The handle will be moved as close as possible to the desired position without violating any of the layout constraints.
Only one of the coordinates is used depending on the orientation of the handle. This method accepts both coordinates to make it easy to invoke from a mouse move event without needing to know the handle orientation.
A message handler invoked on an 'after-attach'
message.
The default implementation of this method forwards the message to all widgets. It assumes all widget nodes are attached to the parent widget node.
This may be reimplemented by subclasses as needed.
A message handler invoked on an 'after-detach'
message.
The default implementation of this method forwards the message to all widgets. It assumes all widget nodes are attached to the parent widget node.
This may be reimplemented by subclasses as needed.
A message handler invoked on an 'after-hide'
message.
The default implementation of this method forwards the message to all non-hidden widgets. It assumes all widget nodes are attached to the parent widget node.
This may be reimplemented by subclasses as needed.
A message handler invoked on an 'after-show'
message.
The default implementation of this method forwards the message to all non-hidden widgets. It assumes all widget nodes are attached to the parent widget node.
This may be reimplemented by subclasses as needed.
A message handler invoked on a 'before-attach'
message.
A message handler invoked on a 'before-detach'
message.
The default implementation of this method forwards the message to all widgets. It assumes all widget nodes are attached to the parent widget node.
This may be reimplemented by subclasses as needed.
A message handler invoked on a 'before-hide'
message.
The default implementation of this method forwards the message to all non-hidden widgets. It assumes all widget nodes are attached to the parent widget node.
This may be reimplemented by subclasses as needed.
A message handler invoked on a 'before-show'
message.
A message handler invoked on a 'child-hidden'
message.
A message handler invoked on a 'child-removed'
message.
This will remove the child widget from the layout.
Subclasses should not typically reimplement this method.
A message handler invoked on a 'child-shown'
message.
A message handler invoked on a 'fit-request'
message.
A message handler invoked on a 'resize'
message.
A message handler invoked on an 'update-request'
message.
Process a message sent to the parent widget.
The message sent to the parent widget.
This method is called by the parent widget to process a message.
Subclasses may reimplement this method as needed.
Remove a widget from the layout.
The widget to remove from the layout.
A widget is automatically removed from the layout when its parent
is set to null
. This method should only be invoked directly when
removing a widget from a layout which has yet to be installed on a
parent widget.
This method does not modify the widget's parent
.
Restore the layout to a previously saved configuration.
The layout configuration to restore.
Widgets which currently belong to the layout but which are not contained in the config will be unparented.
Save the current configuration of the dock layout.
A new config object for the current layout state.
The return value can be provided to the restoreLayout
method
in order to restore the layout to its current configuration.
Create an iterator over the selected widgets in the layout.
A new iterator over the selected user widgets.
This iterator yields the widgets corresponding to the current tab of each tab bar in the layout.
Create an iterator over the user widgets in the layout.
A new iterator over the user widgets in the layout.
This iterator does not include the generated tab bars.
Generated using TypeDoc
A layout which provides a flexible docking arrangement. The namespace for the
DockLayout
class statics.Notes
The consumer of this layout is repsonsible for handling all signals from the generated tab bars and managing the visibility of widgets and tab bars as needed.


The priceline making different harmonics with strong up-trend.
Now the price action has almost entered in potential reversal zone of cypher pattern and ready to hit the sell targets soon insha Allah.
The targets are:
Buy between: 0.0002369 to 0.0002075
Sell between: 0.0002601...


Constructs a NIP13 token standard object.
Verifies allowance of operator
to execute command
with tokenId
security token.
Verifies allowance of sender
to transfer tokenId
security token.
Creates a new NIP13 Token and configures operators.
Execute command
for Security Token with identifier tokenId
. Arguments
the command execution can be passed in argv
.
The execution actor
Gets a command instance around context
and tokenId
.
Gets an execution context
Read metadata of a previously created Security Token with identifier tokenId
.
Read operators of a previously created Security Token with identifier tokenId
.
Read restrictions of a previously created Security Token with identifier tokenId
.
(Optional)
Notify an account account
about notification
Publish a previously created Security Token with identifier tokenId
.
(Optional) partitions records
Generated using TypeDoc
NIP13.TokenStandard
standards
v0.1.0
Class that describes NIP13 security tokens standard
https://github.com/nemtech/NIP/blob/master/NIPs/nip-0013.md


Move with
Use mouse with
Escape key is
Click is
Loot position (red circle) is
Navigate using
Navigate using
Navigate using
Confirm with
Pick item with
Use item with
Hold
for quick transfer
Hold
for mass use
Center cursor with
Navigate to confirm with
or to cancel with
Scroll down with
or scroll up with
Browse left tabs with
or right tabs with
Select first tab with
Press
to close
Toggle inventory (shortcut 'i')


Welcome To PRGS
Public Raise Government Solve
Sign Out
Selected Tickets
Department
Priority level
(1-Critical,2-Important,3-Normal,4-Low)
Description


Upcoming Hyundai Aura sedan engine options unveiled
by Team ODHyundai Aura is the name of the upcoming sedan from the Korean manufacturer which we believe is a Hyundai Grand i10 Nios based compact sedan. Earlier this month, Hyundai revealed the name of the upcoming sedan, and this time around the manufacturer has unveiled its drivetrain options. The Hyundai Aura will be offered with three different BSVI engines along with with a choice of a five-speed manual gearbox and a five-speed AMT (Automatic).
Out of the three, two are petrol engines. 1.2-litre four-cylinder petrol engine which is expected to have the same tune as the Hyundai Grand i10 Nios. 83PS and 116Nm of torque. The engine will be available with a choice of an optional automatic.
The 1.0-litre turbocharged engine on offer is the same mill we've experienced in the Venue, however, the power is expected to be detuned. This engine will be offered a five-speed manual gearbox only.
For buyers opting the diesel variant will get the 1.2-litre three-cylinder engine with a choice of an optional automatic gearbox. The Hyundai Aura will be equipped with an advanced NOx trap catalyst and PM filters to minimize environmental pollution.
The Aura is expected to break cover sometime in January 2020 and post its launch the compact sedan will rival the Honda Amaze, Maruti Suzuki Dzire and the Ford Aspire.
Also Read,
Hyundai Grand i10 diesel and AMT variants discontinued
2020 Hyundai Elite i20 hatchback to have all-digital instrument cluster


Installation Instructions
Download the latest .ZIP release from the Release directory, and uncompress. Included is FTSESetup.exe, and its required files.
New installation
Running FTSESetup.exe will bring up a small UI. Select the BOS.EXE file, and click "Install". The setup utility will patch the EXE and copy all necessary files to the game directory. A backup of the EXE will be produced.
Upgrade installation
Run the FTSESetup.exe executable, as in the normal install process. FTSESetup should automatically detect the BOS executable (assuming it is being run from the same location as previously - if not, select the BOS.EXE file as above). The new version of the DLL and configuration files will be written.
Notes for upgrading from versions prior to 0.45a
If upgrading from an older release, it is necessary to remove any existing ftse.lua or ftse_config.json files from the Fallout Tactics directory. The default information normally in these files is now in a separate pair of configuration files.
Manual installation
If FTSESetup.exe will not work (e.g. due to a lack of .NET runtime), the previous installation method may be used.
- Download FTSEInstaller.exe from the Release directory in the GitHub repository.
- Run FTSEInstaller.exe, pointing it to the BOS.EXE file. A dialog box should appear indicating the patch has been applied.
- Copy the latest FTSE.DLL file from the Release directory in the GitHub repository to the Fallout Tactics directory
- Copy the ftse_base.lua and FTSE_config_base.json files from the FTSESetup directory in the GitHub repository to the Fallout Tactics directory.
- Make a second copy of the FTSE_config_base.json file named FTSE_config.json. Modify this file to turn on/off desired EXE patches.
Validating installation
Once the installation is complete, run Fallout: Tactics. If the installation is correct, the FTSE version number should show along with the Fallout: Tactics version in the bottom left corner of the main menu.


The Ant and the Dove.
One hot day, an ant was searching for some water. After walking around for sometime, she came to a spring. To reach the spring she had to climb up a blade of grass.
While making her wake up, she slipped and fell into the water. She could have drowned if a dove on a nearby tree had not seen her. Seeing that the ant was in trouble, the dove quickly plucked a leaf and dropped it into the water near the struggling ant. The ant moved towards the leaf and climbed up onto it. Soon, the leaf drifted to dry ground, and the ant jumped out . She was safe at last.
Just at that time, a hunter nearby was about to throw his net over the dove, hoping to trap it. Guessing what he was about to do, the ant quickly bit him on the heel. Feeling the pain, the hunter dropped his net. The dove was quick to fly away to safety.


| term(5) | File Formats Manual | term(5) |
The compiled file is created with the tic program, and read by the routine setupterm(3X). The file is divided into six parts: the header, terminal names, boolean flags, numbers, strings, and string table.
The header section begins the file. This section contains six short integers in the format described below. These integers are
Short integers are stored in two 8-bit bytes. The first byte contains the least significant 8 bits of the value, and the second byte contains the most significant 8 bits. (Thus, the value represented is 256*second+first.) The value -1 is represented by the two bytes 0377, 0377; other negative values are illegal. This value generally means that the corresponding capability is missing from this terminal. Note that this format corresponds to the hardware of the VAX and PDP-11 (that is, little-endian machines). Machines where this does not correspond to the hardware must read the integers as two bytes and compute the little-endian value.
The terminal names section comes next. It contains the first line of the terminfo description, listing the various names for the terminal, separated by the “|” character. The section is terminated with an ASCII NUL character.
The boolean flags have one byte for each flag. This byte is either 0 or 1 as the flag is present or absent. The capabilities are in the same order as the file <term.h>.
Between the boolean section and the number section, a null byte will be inserted, if necessary, to ensure that the number section begins on an even byte (this is a relic of the PDP-11's word-addressed architecture, originally designed in to avoid IOT traps induced by addressing a word on an odd byte boundary). All short integers are aligned on a short word boundary.
The numbers section is similar to the flags section. Each capability takes up two bytes, and is stored as a little-endian short integer. If the value represented is -1, the capability is taken to be missing.
The strings section is also similar. Each capability is stored as a short integer, in the format above. A value of -1 means the capability is missing. Otherwise, the value is taken as an offset from the beginning of the string table. Special characters in ^X or \c notation are stored in their interpreted form, not the printing representation. Padding information $<nn> and parameter information %x are stored intact in uninterpreted form.
The final section is the string table. It contains all the values of string capabilities referenced in the string section. Each string is null terminated.
The ncurses libraries and applications support extended terminfo binary format, allowing users to define capabilities which are loaded at runtime. This extension is made possible by using the fact that the other implementations stop reading the terminfo data when they have reached the end of the size given in the header. ncurses checks the size, and if it exceeds that due to the predefined data, continues to parse according to its own scheme.
First, it reads the extended header (5 short integers):
The count- and size-values for the extended string table include the extended capability names as well as extended capability values.
Using the counts and sizes, ncurses allocates arrays and reads data for the extended capabilities in the same order as the header information.
The extended string table contains values for string capabilities. After the end of these values, it contains the names for each of the extended capabilities in order, e.g., booleans, then numbers and finally strings.
Applications which manipulate terminal data can use the definitions described in term_variables(3X) which associate the long capability names with members of a TERMTYPE structure.
To maintain compatibility, the library presents the same data structures to direct users of the TERMTYPE structure as in previous formats. However, that cannot provide callers with the extended numbers. The library uses a similar but hidden data structure TERMTYPE2 to provide data for the terminfo functions.
Despite the consistent use of little-endian for numbers and the otherwise self-describing format, it is not wise to count on portability of binary terminfo entries between commercial UNIX versions. The problem is that there are at least three versions of terminfo (under HP-UX, AIX, and OSF/1) which diverged from System V terminfo after SVr1, and have added extension capabilities to the string table that (in the binary format) collide with System V and XSI Curses extensions. See terminfo(5) for detailed discussion of terminfo source compatibility issues.
This implementation is by default compatible with the binary terminfo format used by Solaris curses, except in a few less-used details where it was found that the latter did not match X/Open Curses.
Eric S. Raymond
documented legacy terminfo format, e.g., from pcurses.


the Edson Building
[20, 40]
|
Jensen Boulevard Police Dept
[21, 40]
|
Rousel Road
[22, 40]
|
a carpark
[23, 40]
|
Somerville Cinema
[24, 40]
|
Wayper Library
[25, 40]
|
the Shea Arms
[26, 40]
|
Brooke Drive
[27, 40]
|
the Tonkin Monument
[28, 40]
|
the Cake Building
[29, 40]
|
wasteland
[20, 41]
|
Shuffery Street
[21, 41]
|
a junkyard
[22, 41]
|
Garton Library
[23, 41]
|
the George Arms
[24, 41]
|
the Checketts Arms
[25, 41]
|
Caller Way
[26, 41]
|
Martindale Park
[27, 41]
|
a warehouse
[28, 41]
|
Withyman Street Police Dept
[29, 41]
|
Wadman Bank
[20, 42]
|
Pearcey Street School
[21, 42]
|
the Mester Arms
[22, 42]
|
Lacey Walk
[23, 42]
|
a carpark
[24, 42]
|
Dales Boulevard Fire Station
[25, 42]
|
the Melhuish Monument
[26, 42]
|
Collinns Park
[27, 42]
|
St Elisabeth's Hospital
[28, 42]
|
Lukins Auto Repair
[29, 42]
|
the Brailey Building
[20, 43]
|
a carpark
[21, 43]
|
the Coram Building
[22, 43]
|
wasteland
[23, 43]
|
Piele Alley
[24, 43]
|
a warehouse
[25, 43]
|
a carpark
[26, 43]
|
Shadwick Walk
[27, 43]
|
Warburton Crescent
[28, 43]
|
Binney Lane
[29, 43]
|
Cunningham Towers
[20, 44]
|
wasteland
[21, 44]
|
Dickinson Square School
[22, 44]
|
Watson Boulevard
[23, 44]
|
the Madill Museum
[24, 44]
|
Lasbury Auto Repair
[25, 44]
|
Houghton Street
[26, 44]
|
Doyne Street
[27, 44]
|
Rayner Crescent
[28, 44]
|
Terry Place
[29, 44]
|
Gower Auto Repair
[20, 45]
|
Judd Crescent
[21, 45]
|
St Perpetua's Church
[22, 45]
|
Withnail Road
[23, 45]
|
Fone Drive
[24, 45]
|
Chick Street
[25, 45]
|
the Shortman Building
[26, 45]
|
St Swithun's Church
[27, 45]
|
the Goodland Monument
[28, 45]
|
Bennet Row Railway Station
[29, 45]
|
Silwood Walk Railway Station
[20, 46]
|
Ormrod Drive
[21, 46]
|
a cemetery
[22, 46]
|
a junkyard
[23, 46]
|
Wasson Auto Repair
[24, 46]
|
the Galavin Museum
[25, 46]
|
Whittle Place
[26, 46]
|
Woodthorpe Plaza
[27, 46]
|
the Probert Building
[28, 46]
|
Latham Cinema
[29, 46]
|
Chaffe Bank
[20, 47]
|
Ackerman Towers
[21, 47]
|
the Banbury Monument
[22, 47]
|
Burchill Drive
[23, 47]
|
Kelher Park
[24, 47]
|
Satherley Road
[25, 47]
|
the Stagg Building
[26, 47]
|
Hemborrow Walk
[27, 47]
|
Angerstein Alley
[28, 47]
|
Kenward Towers
[29, 47]
|
Burdwood Bank
[20, 48]
|
Bown Crescent
[21, 48]
|
St Theophan's Church
[22, 48]
|
Massey Lane Fire Station
[23, 48]
|
Nossiter Place
[24, 48]
|
Channing Square
[25, 48]
|
How Lane
[26, 48]
|
Boon Boulevard
[27, 48]
|
the Cull Monument
[28, 48]
|
Club Hill
[29, 48]
|
a cemetery
[20, 49]
|
the McMullen Museum
[21, 49]
|
a carpark
[22, 49]
|
Shalle Place
[23, 49]
|
Ledger Row
[24, 49]
|
Hinchly Avenue
[25, 49]
|
Stanbury Lane
[26, 49]
|
Seviour Crescent
[27, 49]
|
the Huttenbach Arms
[28, 49]
|
Shelper Park
[29, 49]
|
|
Menu
City Map
Find Location
Route Finder
World View
Map Mirror
|


Timeslot @
Name
Email
Phone number
Send a confirmation email to this participant
Send FYI email(s) to other participants in this timeslot if it is now full