/R/iMode-class.R

http://github.com/tengfei/visnab · R · 104 lines · 73 code · 11 blank · 20 comment · 0 complexity · 455335de171055ea645180e19d836542 MD5 · raw file

  1. ## ======================================================================
  2. ## Enum used in iMode class
  3. ## ======================================================================
  4. setSingleEnum("TooltipMode", levels = c("Off", "Identify", "Metainfo","Text",
  5. "Position"))
  6. setSingleEnum("TooltipPos", levels = c("TopLeft", "TopRight",
  7. "BottomLeft", "BottomRight",
  8. "Float"))
  9. setSingleEnum("BrushMode", levels = c("Transient", "Persistent", "Off"))
  10. setSingleEnum("PointBrushMode", levels = c("Off", "ColorAndGlyph",
  11. "ColorOnly", "GlyphOnly",
  12. "Shadow", "Unshadow"))
  13. setSingleEnum("EdgeBrushMode", levels = c("Off", "ColorAndLine",
  14. "ColorOnly", "LineOnly", "Shadow", "Unshadow"))
  15. setSingleEnum("DragMode", levels = c("NoDrag", "ScrollHandDrag", "RubberBandDrag"))
  16. setGeneric("getQtEnum", function(x,...) standardGeneric("getQtEnum"))
  17. setMethod("getQtEnum", "DragModeSingleEnum", function(x){
  18. val <- switch(x,
  19. NoDrag = Qt$QGraphicsView$NoDrag,
  20. ScrollHandDrag = Qt$QGraphicsView$ScrollHandDrag,
  21. RubberBandDrag = Qt$QGraphicsView$RubberBandDrag)
  22. })
  23. setSingleEnum("ZoomMode", levels = c("Vertical", "Horizontal", "Both", "Off"))
  24. ## ======================================================================
  25. ## iMode class
  26. ## ======================================================================
  27. setClass("iMode", contains = "VIRTUAL")
  28. setMode <- function(name, modes,
  29. contains = character(),
  30. where = topenv(parent.frame())){
  31. nm <- paste(name, "Mode", sep = "")
  32. pars <- setParameters(nm, modes)
  33. parsName <- paste(nm, "Parameters", sep = "")
  34. setRefClass(nm, fields = list(pars = parsName),
  35. contains = c("iMode", "Item", contains),
  36. where = where,
  37. methods = list(
  38. initialize = function(t = as.character(class(.self)), ...){
  39. .self$text <<- t
  40. callSuper(...)
  41. }))
  42. }
  43. ScaleMode.gen <- setMode("Scale",
  44. list(dragMode = "DragModeSingleEnum",
  45. zoomMode = "ZoomModeSingleEnum"))
  46. ## ScaleMode.gen$methods(setScaleMode =
  47. ## function(md = c("dragMode", "zoomMode"), value){
  48. ## .self$pars$field(md, value)
  49. ## })
  50. ScaleMode <- function(dragMode = "ScrollHandDrag",
  51. zoomMode = "Vertical",
  52. ...){
  53. pars <- new("ScaleModeParameters", dragMode = dragMode, zoomMode = zoomMode)
  54. obj <- ScaleMode.gen$new(pars = pars, ...)
  55. }
  56. BrushMode.gen <- setMode("Brush",
  57. list(brushMode = "BrushModeSingleEnum",
  58. pointBrushMode = "PointBrushModeSingleEnum",
  59. edgeBrushMode = "EdgeBrushModeSingleEnum"))
  60. ## BrushMode.gen$methods(setBrushMode =
  61. ## function(md = c("brushMode", "pointBrushMode", "edgeBrushMode"),
  62. ## value){
  63. ## .self$pars$field(md, value)
  64. ## })
  65. BrushMode <- function(brushMode = "Off",
  66. pointBrushMode = "Off",
  67. edgeBrushMode = "Off",
  68. ...){
  69. pars <- new("BrushModeParameters", brushMode = brushMode,
  70. pointBrushMode = pointBrushMode,
  71. edgeBrushMode = edgeBrushMode)
  72. obj <- BrushMode.gen$new(pars = pars, ...)
  73. }
  74. setSingleEnum("Logical", levels = c("TRUE", "FALSE"))
  75. IdentifyMode.gen <- setMode("Identify",
  76. list(tooltipMode = "TooltipModeSingleEnum",
  77. tooltipPos = "TooltipPosSingleEnum",
  78. hoverMode = "LogicalSingleEnum"))
  79. ## IdentifyMode.gen$methods(setIdentifyMode =
  80. ## function(md = c("tooltipMode", "tooltipPos", "hoverMode"),
  81. ## value){
  82. ## .self$pars$field(md, value)
  83. ## })
  84. IdentifyMode <- function(tooltipMode = "Off",
  85. tooltipPos = "Float",
  86. hoverMode = "FALSE",
  87. ...){
  88. pars <- new("IdentifyModeParameters",
  89. tooltipMode = tooltipMode,
  90. tooltipPos = tooltipPos,
  91. hoverMode = hoverMode)
  92. obj <- IdentifyMode.gen$new(pars = pars, ...)
  93. }