R/interface.r

# cpGUI()
# cpGUI(object = raw1)
# cpGUI(object = prof)

qsetClass("cpGUI", Qt$QWidget, function(parent = NULL, object = NULL) {
  super(parent)
  ## figure out which stage is active
  ## default is load sample
  ## for chromatoplots objects get stage using pipeline from commandr
  ## TODO implement for xcms
  nextstage <- 1
  if(!is.null(object) && attr(class(object), 'package') == 'chromatoplots'){
    lastact <- length (pipeline(object)@.Data)
    stages <- c('LoadSample', 'GenProfile')
    nextstage <- which(!is.na(pmatch(stages, strsplit(class(pipeline(object)@.Data[[lastact]])[1], 
                    "Proto")[[1]][2] ) )) + 1
  }
  this$loadbutton <- Qt$QPushButton("&Load Sample")
  if(nextstage != 1){
    qsetStyleSheet("color: grey", widget = this$loadbutton)
    
#     loadbutton$setEnabled(FALSE)
  }
  this$genProfbutton <- Qt$QPushButton("&Generate Profile")
  if(nextstage != 2){
    qsetStyleSheet("color: grey", widget = this$genProfbutton)
    
#     genProfbutton$setEnabled(FALSE)
  }
  this$rembasebutton <- Qt$QPushButton("&Remove Baseline")
  if(nextstage != 3){
    qsetStyleSheet("color: grey", widget = this$rembasebutton)
    
#     rembasebutton$setEnabled(FALSE)
  }
  this$fpeakbutton <- Qt$QPushButton("&Find Peaks")
  if(nextstage != 4 ){
    qsetStyleSheet("color: grey", widget = this$fpeakbutton)
    
#     fpeakbutton$setEnabled(FALSE)
  }
  
  qconnect(loadbutton, "clicked", lsample, object)
  qconnect(genProfbutton, 'clicked', genprof)
  qconnect(rembasebutton, 'clicked', rmbase)
#   qconnect(fpeakbutton, 'clicked', NULL)
  
  buttonLayout1 <- Qt$QVBoxLayout()
  buttonLayout1$addWidget(loadbutton)
  buttonLayout1$addWidget(genProfbutton)
  buttonLayout1$addWidget(rembasebutton)
  buttonLayout1$addWidget(fpeakbutton)
  
  mywidget <- Qt$QPushButton("&Find Peaks")
  
  buttonLayout2 <- Qt$QVBoxLayout()
  buttonLayout2$addWidget(mywidget)
  
  mainLayout <- Qt$QGridLayout()
  mainLayout$addLayout(buttonLayout1, 1, 2, alignment = 1)
  #mainLayout$addLayout(buttonLayout2, 1, 2, alignment = Qt$Qt$AlignTop)
  
  setLayout(mainLayout)
  
  setWindowTitle('ChromatoplotsGUI')
  this$setGeometry(Qt$QRect(0,0,250,50)) 
  qsetStyleSheet("background-color: lightGrey; min-height: 140px; max-width: 145px; ", 
                 widget = this$loadbutton)
  qsetStyleSheet("background-color: lightGrey; min-height: 140px; max-width: 145px; ", 
                 widget = this$genProfbutton)
  qsetStyleSheet("background-color: lightGrey; min-height: 140px; max-width: 145px; ", 
                 widget = this$rembasebutton)
  qsetStyleSheet("background-color: lightGrey; min-height: 140px; max-width: 145px; ", 
                 widget = this$fpeakbutton)})


qsetMethod("lsample", cpGUI, function(object = NULL) {
#   this$loadbutton$setEnabled(FALSE)
  qsetStyleSheet("color: red", widget = this$loadbutton)
  this$setGeometry(Qt$QRect(0,0, 500, 50))
  qsetStyleSheet("color: black", widget = this$genProfbutton)
 # args <- getClass(class(object))@slots
 # args <- unlist(args[! names(args) %in% c('env', 'pipeline')])
 })

qsetMethod('genprof', cpGUI, function(){
  qsetStyleSheet("color: grey", widget = this$genProfbutton)
  qsetStyleSheet("color: black", widget = this$rembasebutton)
#   this$genProfbutton$setEnabled(FALSE)
#   this$rembasebutton$setEnabled(TRUE)
})

qsetMethod('rmbase', cpGUI, function(){
  qsetStyleSheet("color: grey", widget = this$rembasebutton)
  qsetStyleSheet("color: black", widget = this$fpeakbutton)
  
#   this$rembasebutton$setEnabled(FALSE)
#   this$fpeakbutton$setEnabled(TRUE)
})
mariev/chromatoplotsgui documentation built on May 21, 2019, 11:46 a.m.