dialog.variable.window {arvoRe}R Documentation

Usage

dialog.variable.window(...)

Arguments

...

Examples

##---- Should be DIRECTLY executable !! ----
##-- ==>  Define data, use random,
##--    or do  help(data=index)  for the standard data sets.

## The function is currently defined as
function(...) {
        if (!exists("variableMAT",.EnvironmentArvoRe)) new.variable.list() # se não existe uma tabela de variaveis, então ele cria.
        
        variableWindow <- tktoplevel()
        title <- "ÁrvoRe - Variáveis"
        tkwm.title(variableWindow,title)
        
        frameOverall <- tkframe(variableWindow)
        frameUpper <- tkframe(frameOverall, relief="groove", borderwidth=0)
        frameUpperLeft <- tkframe(frameUpper, relief="groove", borderwidth=2)
        frameUpperRigth <- tkframe(frameUpper, relief="groove", borderwidth=2)
        frameLower <- tkframe(frameOverall, relief="groove", borderwidth=2)
        
        scrvar <- tkscrollbar(frameUpperRigth, repeatinterval=5,
                                        command=function(...)tkyview(tlvar,...))
        tlvar <- tklistbox(frameUpperRigth,height=4,selectmode="single",
                                        yscrollcommand=function(...)tkset(scrvar,...),background="white")
        tkgrid(tklabel(frameUpperRigth,text="Variáveis"))
        tkgrid(tlvar,scrvar)
        tkgrid.configure(scrvar,rowspan=4,sticky="nsw")
        
        tkgrid(frameUpperLeft, frameUpperRigth,sticky="nsw")
        tkgrid(frameUpper,sticky="ns")
        tkgrid(frameLower,sticky="ns")
        
        variablesnames <- variableMAT[,1]
        
        if (length(variablesnames) > 0) {
                for (i in (1:length(variablesnames))) {
                tkinsert(tlvar,"end",variablesnames[i])
                }
        }
        
        AddSelection <- function()
        {
            addvariableWindow <- tktoplevel()
            title <- "ÁrvoRe - Variáveis"
            tkwm.title(addvariableWindow,title)
            
            frameOverall <- tkframe(addvariableWindow)
            frameUpper <- tkframe(frameOverall, relief="groove", borderwidth=2)
            frameLower <- tkframe(frameOverall, borderwidth=2)
            
            tkgrid(tklabel(frameOverall,text="Nova Variável"))
            
            Namevar <- tclVar("")
            Fixvar <- tclVar(0)
            Minvar <- tclVar(0)
            Maxvar <- tclVar(0)
            Notesvar <- tclVar("")
            
            campowidth <- 25
                Name.var.Value  <- tkentry(frameUpper, width=campowidth,textvariable=Namevar)
                tkgrid(tklabel(frameUpper,text="Nome da variável"), sticky = "n")
                tkgrid(Name.var.Value, sticky = "n")
                
                Fix.var.Value  <- tkentry(frameUpper, width=campowidth,textvariable=Fixvar)
                tkgrid(tklabel(frameUpper,text="Valor padrão da variável"), sticky = "n")
                tkgrid(Fix.var.Value, sticky = "n")
                
                Min.var.Value  <- tkentry(frameUpper, width=campowidth,textvariable=Minvar)
                tkgrid(tklabel(frameUpper,text="Valor mínimo da variável"), sticky = "n")
                tkgrid(Min.var.Value, sticky = "n")

                Max.var.Value  <- tkentry(frameUpper, width=campowidth,textvariable=Maxvar)
                tkgrid(tklabel(frameUpper,text="Valor máximo da variável"), sticky = "n")
                tkgrid(Max.var.Value, sticky = "n")

                Notes.var.Value  <- tkentry(frameUpper, width=campowidth,textvariable=Notesvar)
                tkgrid(tklabel(frameUpper,text="Notas"), sticky = "n")
                tkgrid(Notes.var.Value, sticky = "n")
                
                OnOkAdd <- function() {
                        Allok <- TRUE
                        NameVal <- as.character(tclvalue(Namevar))
                        FixVal <- as.integer(tclvalue(Fixvar))
                        MinVal <- as.integer(tclvalue(Minvar))
                        MaxVal <- as.integer(tclvalue(Maxvar))
                        NotesVal <- as.character(tclvalue(Notesvar))
                        
                        if((nchar(NameVal) <= 0)&& Allok) {
                                Allok <- FALSE
                                msg <- "Este não é um nome válido para uma variável."
                                tkmessageBox(message = msg, icon="error")
                                tkfocus(addvariableWindow)
                        }
                        if((!is.numeric(FixVal))&& Allok) {
                                Allok <- FALSE
                                msg <- "Este não é um valor fixo válido para uma variável."
                                tkmessageBox(message = msg, icon="error")
                                tkfocus(addvariableWindow)
                        }
                        if((!is.numeric(MinVal))&& Allok) {
                                Allok <- FALSE
                                msg <- "Este não é um valor mínimo válido para uma variável."
                                tkmessageBox(message = msg, icon="error")
                                tkfocus(addvariableWindow)
                        }
                        if((!is.numeric(MaxVal))&& Allok) {
                                Allok <- FALSE
                                msg <- "Este não é um valor máximo válido para uma variável."
                                tkmessageBox(message = msg, icon="error")
                                tkfocus(addvariableWindow)
                        }
                        if((MinVal >= MaxVal)&& Allok) {
                                Allok <- FALSE
                                msg <- "O valor mínimo de uma variável deve ser menor que o valor máximo."
                                tkmessageBox(message = msg, icon="error")
                                tkfocus(addvariableWindow)
                        }
                        if(Allok) {
                                newvariableline <- data.frame(Name = NameVal, Fix.Value = FixVal, Min.Value = MinVal,
                                                                                        Max.Value = MaxVal, Notes = NotesVal)
                                safedofunction(TheTree, .EnvironmentArvoRe, .modeltypeArvore)
                                setvariablelist(variableMAT = variableMAT, newvariableline = newvariableline, action = "add")
                                tkinsert(tlvar,"end",NameVal)
                                tkdestroy(addvariableWindow)
                                tkfocus(variableWindow)
                        }
                        
                }
                
                OnCanceladd <- function() {
                        tkdestroy(addvariableWindow)
                        tkfocus(variableWindow)
                }
                
                .Width.but <- 10
                .Height.but <- 1

                OK.but <-tkbutton(frameLower,text="OK", width=.Width.but, height=.Height.but, command=OnOkAdd)
                Cancel.but <-tkbutton(frameLower,text="Cancelar", width=.Width.but, height=.Height.but, command=OnCanceladd)
                
                tkgrid(OK.but, Cancel.but, sticky = "s", padx = 5, pady = 5)
                
                tkgrid(frameUpper,sticky="nwe")
                tkgrid(frameLower,sticky="nwe")
                tkgrid(frameOverall)
                
                tkbind(addvariableWindow, "<Return>",OnOkAdd)
                tkbind(addvariableWindow, "<Escape>",OnCanceladd)
                
                tkfocus(addvariableWindow)
        }

        DeleteSelection <- function()
        {
            variableIndex <- as.integer(tkcurselection(tlvar))
            variableslist <- variableMAT$Name
            variabletodelete <- as.character(variableslist[variableIndex+1])
            safedofunction(TheTree, .EnvironmentArvoRe, .modeltypeArvore)
            setvariablelist(variableMAT = variableMAT, variable.name = variabletodelete, action = "delete")
            tkdelete(tlvar,variableIndex)
            tkfocus(variableWindow)
        }
        
        EditSelection <- function()
        {       
            variableIndex <- as.integer(tkcurselection(tlvar))

                variableslist <- variableMAT$Name
                variableselected <- as.character(variableslist[variableIndex+1])
                
                addvariableWindow <- tktoplevel()
                title <- "ÁrvoRe - Variáveis"
                tkwm.title(addvariableWindow,title)
                
                frameOverall <- tkframe(addvariableWindow)
                frameUpper <- tkframe(frameOverall, relief="groove", borderwidth=2)
                frameLower <- tkframe(frameOverall, borderwidth=2)
                
                tkgrid(tklabel(frameOverall,text="Propriedades da Variável"))
            
                variableMATnames <- names(variableMAT)
                Data <- subset(variableMAT, Name == variableselected, select = variableMATnames)
            
                Namevar <- tclVar(Data$Name)
                Fixvar <- tclVar(Data$Fix.Value)
                Minvar <- tclVar(Data$Min.Value)
                Maxvar <- tclVar(Data$Max.Value)
                Notesvar <- tclVar(Data$Notes)
            
                campowidth <- 25
                Name.var.Value  <- tkentry(frameUpper, width=campowidth,textvariable=Namevar)
                tkgrid(tklabel(frameUpper,text="Nome da variável"), sticky = "n")
                tkgrid(Name.var.Value, sticky = "n")
                
                Fix.var.Value  <- tkentry(frameUpper, width=campowidth,textvariable=Fixvar)
                tkgrid(tklabel(frameUpper,text="Valor padrão da variável"), sticky = "n")
                tkgrid(Fix.var.Value, sticky = "n")
        
                Min.var.Value  <- tkentry(frameUpper, width=campowidth,textvariable=Minvar)
                tkgrid(tklabel(frameUpper,text="Valor mínimo da variável"), sticky = "n")
                tkgrid(Min.var.Value, sticky = "n")
                
                Max.var.Value  <- tkentry(frameUpper, width=campowidth,textvariable=Maxvar)
                tkgrid(tklabel(frameUpper,text="Valor máximo da variável"), sticky = "n")
                tkgrid(Max.var.Value, sticky = "n")

                Notes.var.Value  <- tkentry(frameUpper, width=campowidth,textvariable=Notesvar)
                tkgrid(tklabel(frameUpper,text="Notas"), sticky = "n")
                tkgrid(Notes.var.Value, sticky = "n")
                
                OnOkAdd <- function() {
                        Allok <- TRUE
                        NameVal <- as.character(tclvalue(Namevar))
                        FixVal <- as.integer(tclvalue(Fixvar))
                        MinVal <- as.integer(tclvalue(Minvar))
                        MaxVal <- as.integer(tclvalue(Maxvar))
                        NotesVal <- as.character(tclvalue(Notesvar))
                                
                        if((nchar(NameVal) <= 0)&& Allok) {
                                Allok <- FALSE
                                msg <- "Este não é um nome válido para uma variável."
                                tkmessageBox(message = msg, icon="error")
                                tkfocus(addvariableWindow)
                        }
                        if((!is.numeric(FixVal))&& Allok) {
                                Allok <- FALSE
                                msg <- "Este não é um valor fixo válido para uma variável."
                                tkmessageBox(message = msg, icon="error")
                                tkfocus(addvariableWindow)
                        }
                        if((!is.numeric(MinVal))&& Allok) {
                                Allok <- FALSE
                                msg <- "Este não é um valor mínimo válido para uma variável."
                                tkmessageBox(message = msg, icon="error")
                                tkfocus(addvariableWindow)
                        }
                        if((!is.numeric(MaxVal))&& Allok) {
                                Allok <- FALSE
                                msg <- "Este não é um valor máximo válido para uma variável."
                                tkmessageBox(message = msg, icon="error")
                                tkfocus(addvariableWindow)
                        }
                        if((MinVal >= MaxVal)&& Allok) {
                                Allok <- FALSE
                                msg <- "O valor mínimo de uma variável deve ser menor que o valor máximo."
                                tkmessageBox(message = msg, icon="error")
                                tkfocus(addvariableWindow)
                        }
                        if(Allok) {
                                oldvariable.name <- Data$Name
                                newvariableline <- data.frame(Name = NameVal, Fix.Value = FixVal, Min.Value = MinVal,
                                                                                        Max.Value = MaxVal, Notes = NotesVal)
                                                                                        
                                safedofunction(TheTree, .EnvironmentArvoRe, .modeltypeArvore)
                                if (length(oldvariable.name) == 0) {
                                        setvariablelist(variableMAT = variableMAT, newvariableline = newvariableline, 
                                                                                action = "add")
                                        oldvariable.name <- " "
                                } else {
                                        setvariablelist(variableMAT = variableMAT, newvariableline = newvariableline, 
                                                                                variable.name = oldvariable.name, action = "edit")
                                }
                                
                            if (oldvariable.name != NameVal) {
                                    if (oldvariable.name != " ") tkdelete(tlvar,variableIndex)
                                    tkinsert(tlvar,"end",NameVal)
                            }
                                tkdestroy(addvariableWindow)
                                tkfocus(variableWindow)
                        }
                                
                }

                OnCanceladd <- function() {
                        tkdestroy(addvariableWindow)
                        tkfocus(variableWindow)
                }
                
                .Width.but <- 10
                .Height.but <- 1

                OK.but <-tkbutton(frameLower,text="OK", width=.Width.but, height=.Height.but, command=OnOkAdd)
                Cancel.but <-tkbutton(frameLower,text="Cancelar", width=.Width.but, height=.Height.but, command=OnCanceladd)
                
                tkgrid(OK.but, Cancel.but, sticky = "s", padx = 5, pady = 5)
                
                tkgrid(frameUpper,sticky="nwe")
                tkgrid(frameLower,sticky="nwe")
                tkgrid(frameOverall)
                
                tkbind(addvariableWindow, "<Return>",OnOkAdd)
                tkbind(addvariableWindow, "<Escape>",OnCanceladd)
                
                tkfocus(addvariableWindow)
                
        }

        OnOK <- function()
        {
                tkdestroy(variableWindow)
                tkfocus(tt)
        }
                
        .Width.but <- 10
        .Height.but <- 1
        
        OK.but <-tkbutton(frameOverall,text="OK", width=.Width.but, height=.Height.but, command=OnOK)
        Edit.but <-tkbutton(frameUpperLeft,text="Editar", width=.Width.but, height=.Height.but,command=EditSelection)
        Add.but <-tkbutton(frameUpperLeft,text="Nova", width=.Width.but, height=.Height.but,command=AddSelection)
        Delete.but <-tkbutton(frameUpperLeft,text="Apagar", width=.Width.but, height=.Height.but,command=DeleteSelection)

        tkbind(variableWindow, "<Return>",OnOK)
        tkbind(variableWindow, "<Escape>",OnOK)
                
        tkgrid(OK.but, sticky = "s", padx = 5, pady = 5)
        tkgrid(Add.but, sticky = "s", padx = 5, pady = 5)
        tkgrid(Delete.but, sticky = "s", padx = 5, pady = 5)
        tkgrid(Edit.but, sticky = "s", padx = 5, pady = 5)
        
        tkgrid(frameOverall)
        
        posiciona.janela.no.mouse(variableWindow, 250, 160)
                                        
        tkfocus(variableWindow)
  }

[Package arvoRe version 0.1.7 Index]