\name{importWizard}
\alias{importWizard}
\alias{initImportWizard}
\alias{getTopCan}
\alias{getAFrame}
\alias{finish}
\alias{getState1Frame}
\alias{setState1BFrame}
\alias{setState1TFrame}
\alias{showData4State1}
\alias{setState1MFrame}
\alias{getState2Frame}
\alias{setState2MFrame}
\alias{setSepRadios}
\alias{setQuoteList}
\alias{setQuote}
\alias{setState2BFrame}
\alias{showData4State2}
\alias{getState3Frame}
\alias{setState3TFrame}
\alias{setState3BFrame}
\alias{getName4Data}
\alias{writeCol4Matrix}
\alias{popStartLine}
\alias{readFileByLines}

\title{A widget for importing data to R}
\description{
  Functions constructs a widget that allows users to inport data
  file to R. The imported data will be returned as an R data frame
  together with the argument list used to import the data using read.table
}
\usage{
importWizard(filename = "", maxRow = 400)
initImportWizard(env)
getTopCan(base, env)
getAFrame(base, env)
finish(env)
getState1Frame(base, env)
setState1BFrame(frame, env)
setState1TFrame(frame, viewer, delims, env, startList)
showData4State1(widget, env)
setState1MFrame(frame, env, dataViewer)
getState2Frame(base, env, state = "state2", reset = FALSE)
setState2MFrame(frame,env)
setSepRadios(frame, env, state = "state2")
setQuoteList(frame, env)
setQuote(listBox, env, state = "state2")
setState2BFrame(frame, env)
showData4State2(canvas, env, state = "state2")
getState3Frame(base, env)
setState3TFrame(frame, env)
setState3BFrame(frame, env)
getName4Data(filename, objType)
writeCol4Matrix(tempFrame, dataFile, colInfos, env)
popStartLine(startList, env)
readFileByLines(filename)
}

\arguments{
  \item{filename}{\code{filename} a character string for the name of the
    file to be imported. The default is an empty string and users have to
    click a browse button to get the file name through
    \code{\link{fileBrowser}}}  
  \item{maxRow}{\code{maxRow} an integer for the maximum number of rows
    of the data file to be imported to be shown on the widget. The
    default is 200 rows}
  \item{env}{\code{env} an R environment object for storing the required
    information}
  \item{base}{\code{base} a tcltk window to hold a canvas on the top and
    frames in the bottom}
  \item{frame}{\code{frame} a tcktl frame}
  \item{viewer}{\code{viewer} a tkwin object for a widget}
  \item{delims}{\code{delims} a character string for a file separater}
  \item{widget}{\code{widget} a tcltk widget}
  \item{state}{\code{state} a character string for the state of
    importing process}
  \item{listBox}{\code{listBox} a tcltk list box}
  \item{canvas}{\code{canvas} a tcltk canvas}
  \item{tempFrame}{\code{tempFrame} a tcltk frame that will be used to
    hold widget elements}
  \item{dataFile}{\code{dataFile} a data matrix holding data to be
    displayed}
  \item{colInfos}{\code{colInfos} an object of class colInfo with a
    name, type, and drop slot}
  \item{reset}{\code{reset} a boolean that is TRUE when the window needs
    to be reset}
  \item{dataViewer}{\code{dataViewer} a tkwin object for a list box}
  \item{objType}{\code{objType} a character string indicating the data
    type of an object to be saved. Defaulted to "object"}
  \item{startList}{\code{startList} a tk text box object}
}
\details{
  \code{\link{importWizard}} mimics the interface of MS Excel and
  collects arguments for the function \code{\link{read.table}}. Due to
  performace concern, a maximum number of rows (maxRow) set by 
  users will be displayed. Overly long data set may cause slow response
  of the system.

  \code{\link{initImportWizard}} initializes the interface for
  importWizard by creating a widget with an empty top canvas and bottom
  frame filled with four buttons.

  \code{\link{getTopCan}} Creates a canvas that is going to be filled by
  a frame created by other functions depending on the state of the
  importing process.

  \code{\link{getAFrame}} Gets a frame for the canvas created by
  \code{\link{initImportWizard}} based on the current state of importing
  process.

  \code{\link{finish}} Finishes the importing process and returns a data
  frame read from a file using \code{\link{read.table}}.

  \code{\link{getState1Frame}} Returns a tcltk frame containing a list
  box to show a data file read by \code{\link{readLines}} and widgets
  for user imports.

  \code{\link{setState1BFrame}} Fills the bottom frame of the frame
  created by \code{\link{getState1Frame}} with a list box.

  \code{\link{setState1TFrame}} Fills the top frame of the frame
  created by \code{\link{getState1Frame}} with a list box.

  \code{\link{showData4State1}} Populates a tcltk list or text widget
  with data read using readLines.

  \code{\link{setState1MFrame}} Fills the mid frame of the frame
  created by \code{\link{getState1Frame}}.

  \code{\link{getState2Frame}} Returns a tcltk frame containing a canvas
  to show a data file read by \code{\link{read.table}} and widgets
  for user imports.

  \code{\link{setState2MFrame}} Fills the mid frame of the frame
  created by \code{\link{getState2Frame}}.

  \code{\link{setSepRadios}} Renders radio buttons for options of file
  separators in the frame created by \code{\link{setState2MFrame}}.

  \code{\link{setQuoteList}} Renders the selection list for the quote
  used by a data file in the frame created by
  \code{\link{setState2MFrame}}.

  \code{\link{setQuote}} Sets the value when a user has selected the
  quote used by a data file.

  \code{\link{setState2BFrame}} Fills the bottom frame of the frame
  created by \code{\link{getState2Frame}} with a canvas.

  \code{\link{showData4State2}} Populates the canvas created by
  \code{\link{setState2BFrame}} using data read by
  \code{\link{read.table}}.
  
  \code{\link{getState3Frame}} Returns a tcltk frame containing a canvas
  to show a data file read by \code{\link{read.table}} and widgets
  for user imports.

  \code{\link{setState3TFrame}} Fills the top frame of the frame
  created by \code{\link{getState3Frame}}.

  \code{\link{setState3BFrame}} Fills the bottom frame of the frame
  created by \code{\link{getState3Frame}}.

  \code{\link{getName4Data}} Takes user input for a file name using a
  widget.

  \code{\link{writeCol4Matrix}} Creates a tcltk frame with list boxes as
  columns displaying data of a data matrix.
}
\value{

  \code{\link{getTopCan}} returns a tcltk canvas.

  \code{\link{getAFrame}} returns a tcltk frame.

  \code{\link{finish}} returns a data.frame.

  \code{\link{getState1Frame}} returns a tcltk frame with several
  widgets.

  \code{\link{setState1BFrame}} returns the tkwin object of list box.

  \code{\link{getState2Frame}} returns a tcltk frame with several
  widgets.

  \code{\link{getState3Frame}} returns a tcltk frame with several
  widgets.
  
  \code{\link{getName4Data}} returns a character string for the name of
  a file to be saved.
}

\author{Jianhua Zhang}

\seealso{\code{\link{fileBrowser}}, \code{\link{argsWidget}}}

\examples{
  if(interactive()){
      importWizard()
  }
}
\keyword{interface}