示例#1
0
cMenuEpgTimers::cMenuEpgTimers(void)
    :cOsdMenu(tr("Timers"), 2, CHNUMWIDTH, 10, 6, 6), SwitchTimersLock(&SwitchTimers)
{

  if (strcmp(Skins.Current()->Name(), "Reel") == 0)
#if APIVERSNUM < 10700
      SetCols(3, 10, 6, 10, 6);
#else

#if REELVDR && APIVERSNUM >= 10718
      SetCols(3, 12, 7, 6);
#else
      SetCols(3, 12, 7, 12, 7);
#endif /* REELVDR && APIVERSNUM >= 10718 */

#endif
#if REELVDR && APIVERSNUM >= 10718
  EnableSideNote(true);
#endif
  helpKeys = -1;
  Set();
  SetCurrent(First());
  SetHelpKeys();

  /* get timer state */
  TimerState_=0;
  Timers.Modified(TimerState_);
#ifdef USEMYSQL
  LastEventID_ = -1;
  LastEventID_ = Timers.GetLastEventID();
#endif


}
示例#2
0
文件: commands.c 项目: suborb/reelvdr
eOSState cCMDDir::New(void)
{
  MYDEBUG("Verzeichnis: Neu");
  cFileInfo *info = new cFileInfo(CurrentDir());
  if(!info->isWriteable())
  {
    MYDEBUG("Verzeichnis: Neu: Keine Berechtigung in %s", CurrentDir());
    OSD_ERRMSG(tr("no rights to create"));
  }
  else
  {
    State = csDirNew;
    SetCols(5);
    SetTitle(CurrentDir());
    SetDir();

    cMainMenuItem *mItem = (cMainMenuItem*)First();
    Ins(new cMenuEditStrItem(tr("New"), Dir, MaxFileName, trVDR(FileNameChars)),
        true,
        mItem);
    while(mItem)
    {
      mItem->SetSelectable(false);
      mItem = (cMainMenuItem*)Next(mItem);
    }
    Display();
    cOsdMenu::ProcessKey(kRight);
  }

  return osContinue;
}
示例#3
0
文件: osdbase.c 项目: suborb/reelvdr
cOsdMenu::cOsdMenu(const char *Title, int c0, int c1, int c2, int c3, int c4)
{
  isMenu = true;
  digit = 0;
#ifdef USE_LIEMIEXT
  key_nr = -1;
#endif /* LIEMIEXT */
  hasHotkeys = false;
  displayMenuItems = 0;
  title = NULL;
  menuCategory = mcUnknown;
  SetTitle(Title);
  SetCols(c0, c1, c2, c3, c4);
  first = 0;
  current = marked = -1;
  subMenu = NULL;
  helpRed = helpGreen = helpYellow = helpBlue = NULL;
#ifdef REELVDR
  helpKeys = NULL;
#endif /*REELVDR*/
  helpDisplayed = false;
  status = NULL;
  if (!displayMenuCount++)
     SetDisplayMenu();

#ifdef REELVDR
  enableSideNote = false;
#endif
}
示例#4
0
void MainFrame::OnGridPanelSize(wxSizeEvent &event) {
  auto grid = dynamic_cast<wxGridSizer *>(splitter->GetWindow2()->GetSizer());
  auto size = event.GetSize();
  int col = (size.GetWidth() / 250);
  grid->SetCols(col > 0 ? col : 1);

  grid->FitInside(splitter->GetWindow2());
  splitter->Refresh();
  splitter->Update();
}
示例#5
0
/*
     * Initializes the object, assuming that filename, origin, size, etc are already set on the
     * member variables. Makes sure the raster can be opened, sets the block size, NODATA value,
     * pixel size, and the extent of the raster. If not using the full image then makes sure that
     * the subset chosen (based on origin and size) is valid. If using the full image then sets the
     * size and origin is assumed to be 0,0 and is set in the constructor.
     * @param fullImage True if using the full image, False if using a subset.
     */
void Raster::Init(bool bFullImage)
{
    Init();
    GDALDataset * ds = (GDALDataset*) GDALOpen(m_sFilePath, GA_ReadOnly);

    if (ds == NULL)
        throw RasterManagerException(INPUT_FILE_NOT_VALID, CPLGetLastErrorMsg());

    GDALRasterBand * band = ds->GetRasterBand(1);

    double dRMin, dRMax, dRMean, dRStdDev;

    // Get some easy stats that GDAL gives us
    band->GetStatistics( 0 , true, &dRMin, &dRMax, &dRMean, &dRStdDev );
    m_dRasterMax = dRMax;
    m_dRasterMin = dRMin;

    m_dRasterMean = dRMean;
    m_dRasterStdDev = dRStdDev;

    OGRLinearRing ring = OGRLinearRing();
    if (bFullImage)
    {
        SetCols( band->GetXSize() );
        SetRows( band->GetYSize() );

        ring.addPoint(GetLeft(), GetTop());
        ring.addPoint(GetLeft(), GetTop() + (GetCellHeight() * GetRows()));
        ring.addPoint(GetLeft() + (GetCellWidth() * GetCols()), GetTop() + (GetCellHeight() * GetRows()));
        ring.addPoint(GetLeft() + (GetCellWidth() * GetCols()), GetTop());
        ring.closeRings();
    }
    else
    {
        if ((GetLeft() + GetCols() > band->GetXSize()) || (GetTop() + GetRows() > band->GetYSize()))
        {
            QString sErr = QString("Invalid origin ( %1, %2 ) and size ( %5, %6 ) for file: %7")
                    .arg(GetLeft())
                    .arg(GetTop())
                    .arg(GetCols())
                    .arg(GetRows())
                    .arg(FilePath());
            throw RasterManagerException(INPUT_FILE_NOT_VALID, sErr);
        }
        double xMapOrigin = GetLeft() + (GetLeft() * GetCellWidth());
        double yMapOrigin = GetTop() + (GetTop() * GetCellHeight());
        ring.addPoint(xMapOrigin, yMapOrigin);
        ring.addPoint(xMapOrigin, yMapOrigin + (GetCellHeight() * GetRows()));
        ring.addPoint(xMapOrigin + (GetCellWidth() * GetCols()), yMapOrigin + (GetCellHeight() * GetRows()));
        ring.addPoint(xMapOrigin + (GetCellWidth() * GetCols()), yMapOrigin);
        ring.closeRings();
    }
    GDALClose(ds);

}
示例#6
0
void cMenuCreateFavouritesFolder::Set()
{
    Clear();
    SetCols(15);

    // clear name
    folderName[0] = 0;

    AddFloatingText(tr("Enter new favourites folder name"), 50);
    Add(new cOsdItem("",osUnknown, false));
    Add(new cMenuEditStrItem(tr("Folder name"), folderName, sizeof(folderName)-1));

    Display();
}
示例#7
0
cOsdMenu::cOsdMenu(const char *Title, int c0, int c1, int c2, int c3, int c4)
{
  isMenu = true;
  digit = 0;
  hasHotkeys = false;
  title = NULL;
  SetTitle(Title);
  SetCols(c0, c1, c2, c3, c4);
  first = 0;
  current = marked = -1;
  subMenu = NULL;
  helpRed = helpGreen = helpYellow = helpBlue = NULL;
  status = NULL;
  if (!displayMenuCount++)
     SetDisplayMenu();
}
示例#8
0
文件: commands.c 项目: suborb/reelvdr
eOSState cCMDDir::Edit(cMainMenuItem *mItem)
{
  MYDEBUG("Verzeichnis: Edit: %s", mItem->FileName());
  cFileInfo *info = new cFileInfo(mItem->FileName());
  if(!info->isWriteable())
  {
    DELETENULL(info);
    info = new cFileInfo(CurrentDir());
    if(!info->isWriteable())
    {
      MYDEBUG("Verzeichnis: Edit: Keine Rechte");
      OSD_ERRMSG(tr("no rights to rename"));
      DELETENULL(info);
      return osContinue;
    }
  }
  DELETENULL(info);
  info = new cFileInfo(mItem->FileName());
  SetDir(info->FileName());
  DELETENULL(info);
  State = csDirEdit;
  SetCols(11);
  SetTitle(CurrentDir());

  cMainMenuItem *dmItem = NULL;
  mItem = (cMainMenuItem*)First();
  while(mItem)
  {
    if(!strcasecmp(mItem->FileName(), LastSelDir()))
    {
      MYDEBUG("Verzeichnis: Edit: Item gefunden: %s", mItem->FileName());
      Ins(new cMenuEditStrItem(tr("Rename"), Dir, MaxFileName, trVDR(FileNameChars)),
          true,
          mItem);
      dmItem = mItem;
    }
    mItem->SetSelectable(false);
    mItem = (cMainMenuItem*)Next(mItem);
  }

  if(dmItem)
    Del(dmItem->Index());
  Display();
  cOsdMenu::ProcessKey(kRight);

  return osContinue;
}
示例#9
0
/******************** myMenuSetup ********************/
myMenuSetup::myMenuSetup()
{
  SetCols(45);

  hidemainmenuentry=mysetup.HideMainMenuEntry;
  patchnew=mysetup.PatchNew;
  replaceorgrecmenu=mysetup.ReplaceOrgRecMenu;

  for(int i=0; i<MAX_RECLIST_COLUMNS; i++) {
    reclistcolumn[i].Type         = mysetup.RecListColumn[i].Type;
    STRN0CPY(reclistcolumn[i].Name, mysetup.RecListColumn[i].Name);
    reclistcolumn[i].Width        = mysetup.RecListColumn[i].Width;
    reclistcolumn[i].Align       = mysetup.RecListColumn[i].Align;
    STRN0CPY(reclistcolumn[i].Op1 , mysetup.RecListColumn[i].Op1);
    STRN0CPY(reclistcolumn[i].Op2 , mysetup.RecListColumn[i].Op2);
  }
  shownewrecs=mysetup.ShowNewRecs;
  recsperdir=mysetup.RecsPerDir;
  descendsorting=mysetup.DescendSorting;
  golastreplayed=mysetup.GoLastReplayed;
  returntoplugin=mysetup.ReturnToPlugin;
  limitbandwidth=mysetup.LimitBandwidth;
  usevdrsrecinfomenu=mysetup.UseVDRsRecInfoMenu;
  patchfont=mysetup.PatchFont;
  filesystemfreemb=mysetup.FileSystemFreeMB;
  usecutterqueue=mysetup.UseCutterQueue;

  sortingtypetexts[0]=tr("ascending");
  sortingtypetexts[1]=tr("descending");

  Add(new cMenuEditBoolItem(tr("Show nr. of new recordings of a directory"),&shownewrecs));
  Add(new cMenuEditStraItem(tr("Maximum number of recordings per directory"), &recsperdir, 5, RecsPerDir_texts));
  Add(SubMenuItem(tr("Items to show in recording list"), osUser1)); 
  Add(new cMenuEditBoolItem(tr("Show alternative to new marker"),&patchnew));
  Add(new cMenuEditBoolItem(tr("Show free disk space for each file system"),&filesystemfreemb));
  Add(new cMenuEditStraItem(tr("Sorting"),&descendsorting,2,sortingtypetexts));
  Add(new cMenuEditBoolItem(tr("Hide main menu entry"),&hidemainmenuentry));
#ifdef MAINMENUHOOKSVERSNUM
  Add(new cMenuEditBoolItem(tr("Replace original recordings menu"),&replaceorgrecmenu));
#endif
  Add(new cMenuEditBoolItem(tr("Jump to last replayed recording"),&golastreplayed));
  Add(new cMenuEditBoolItem(tr("Call plugin after playback"),&returntoplugin));
  Add(new cMenuEditBoolItem(tr("Limit bandwidth for move recordings"),&limitbandwidth));
  Add(new cMenuEditBoolItem(tr("Use VDR's recording info menu"),&usevdrsrecinfomenu));
  Add(new cMenuEditBoolItem(tr("Use cutter queue"),&usecutterqueue));
}
示例#10
0
/*
 * Copy the object. (Note that this simply copies the member properties
 * of the class for assigning the object to a new variable. See the
 * Copy() method for actually copying the raster dataset object to a new
 * file on disk.
*/
void Raster::CopyObject(Raster &src)
{
    Init();

    m_sFilePath = (char *) malloc(strlen(src.FilePath()) * sizeof(char)+1);
    std::strcpy(m_sFilePath, src.FilePath());

    SetTransform(src.GetTop(), src.GetLeft(), src.GetCellWidth(), src.GetCellHeight());

    SetRows(src.GetRows());
    SetCols(src.GetCols());

    SetNoDataValue(src.GetNoDataValuePtr());

    xBlockSize = src.xBlockSize;
    yBlockSize = src.yBlockSize;
}
示例#11
0
void cMenuMoveChannelInFavBouquet::Set()
{
    Clear();
    SetCols(18, 5); // same tab size as channellist menu

    cChannel *ch = favourites.First();

    for (; ch; ch = favourites.Next(ch))
        if (!ch->GroupSep() && favouritesFilters.IsAllowedChannel(ch)) {
            cOsdChannelItem *item = new cOsdChannelItem(ch, true, channel == ch);
            Add(item);
            if (channel == ch)
                SetCurrent(item);
        }

    Display();
}
示例#12
0
void cMenuRenameFavFolder::Set()
{
    Clear();
    SetCols(20);

    AddFloatingText(tr("Rename favourites folder"), 50);
   // Add(new cOsdItem("", osUnknown, false)); //empty line

    Add(new cMenuEditStrItem(tr("New folder name"), folderName, sizeof(folderName)));


    for (int i=0; i<3; ++i)
        Add(new cOsdItem("",osUnknown, false)); //blank lines

    Add(new cOsdItem(tr("Info:"),osUnknown, false));
    AddFloatingText(tr("Press right key to enter folder name and Ok to rename."), 50);

    Display();
}
示例#13
0
bool
CMotion2DImage<Type>::Init(unsigned nb_rows, unsigned nb_cols)
{
  // Test image size differ
  if ((nb_rows != nrows) || (nb_cols != ncols)) {
    if (bitmap != NULL) {
      delete [] bitmap;
      bitmap = NULL;
    }
  }

  if (nb_rows != nrows) {
    if (row != NULL)  {
      delete [] row;
      row = NULL;
    }
  }

  SetCols(nb_cols) ;
  SetRows(nb_rows) ;

  npixels=ncols*nrows;

  if (bitmap == NULL) bitmap = new Type[npixels] ;
  if (bitmap == NULL)
  {
    cerr << "Error in CMotion2DImage::Init(): cannot allocate memory" << endl;
    return false ;
  }

  if (row == NULL) row = new  Type*[nrows] ;
  if (row == NULL)
  {
    cerr << "Error in CMotion2DImage::Init(): cannot allocate memory" << endl;
    return false;
  }

  unsigned i ;
  for ( i =0  ; i < nrows ; i++)
    row[i] = bitmap + i*ncols ;

  return true;
}
示例#14
0
文件: commands.c 项目: suborb/reelvdr
void cCMDDir::Build(char *dir)
{
  MYDEBUG("Erstelle Verzeichnisliste %s", dir);
  if(!dir)
    dir = CurrentDir();

  Clear();
  if(State == csNone)
  {
    SetCols(0);
    SetTitle(tr("Edit Directories"));
  }

  cDirHandling *DirHand = new cDirHandling(this, this);
  SetCurrent(Get(DirHand->Build(dir, true)));
  delete(DirHand);

  Display();
  SetHelp();
}
示例#15
0
文件: osdbase.c 项目: flensrocker/vdr
cOsdMenu::cOsdMenu(const char *Title, int c0, int c1, int c2, int c3, int c4)
{
  isMenu = true;
  digit = 0;
  hasHotkeys = false;
  displayMenuItems = 0;
  title = NULL;
  menuCategory = mcUnknown;
  menuSortMode = msmUnknown;
  menuOrientation = moVertical;
  SetTitle(Title);
  SetCols(c0, c1, c2, c3, c4);
  first = 0;
  current = marked = -1;
  subMenu = NULL;
  helpRed = helpGreen = helpYellow = helpBlue = NULL;
  helpDisplayed = false;
  status = NULL;
  if (!displayMenuCount++)
     SetDisplayMenu();
}
示例#16
0
wxSizerItem* wxGridBagSizer::Add( wxGBSizerItem *item )
{
    wxCHECK_MSG( !CheckForIntersection(item), NULL,
                 wxT("An item is already at that position") );
    m_children.Append(item);
    item->SetGBSizer(this);
    if ( item->GetWindow() )
        item->GetWindow()->SetContainingSizer( this );

    // extend the number of rows/columns of the underlying wxFlexGridSizer if
    // necessary
    int row, col;
    item->GetEndPos(row, col);
    row++;
    col++;

    if ( row > GetRows() )
        SetRows(row);
    if ( col > GetCols() )
        SetCols(col);

    return item;
}
示例#17
0
// ------------------
// cMenuSetupGeneral
cMenuSetupGeneral::cMenuSetupGeneral(cEPGSearchConfig* Data)
: cMenuSetupSubMenu(tr("General"), Data)
{
    SetCols(28);
    Set();
}
示例#18
0
void cBrowserMenu::SetColumns(int c0, int c1, int c2, int c3, int c4)
{
    SetCols(c0, c1, c2, c3, c4);
}
示例#19
0
void cMenuFavourites::Set()
{
    Clear();

    SetCols(18, 5); // same tab size as channellist menu
    cChannel *currChannel = Channels.GetByNumber(cDevice::PrimaryDevice()->CurrentChannel());
    tChannelID channelId;
    if (lastPosition < 0 && currChannel) channelId = currChannel->GetChannelID();
    cChannel *channel = favourites.First();
    cOsdItem *item = NULL;
    bool currentSet = false;

    for ( ; channel; channel = favourites.Next(channel)) {
        if (mode == eFavFolders) {
            // show only fav folder names
            if (channel->GroupSep()) {
                Add(item = new cOsdChannelItem(channel, true));

                if (*lastSelectedFolder && strcmp(channel->Name(), *lastSelectedFolder)==0) {
                    SetCurrent(item);
                    currentSet = true; // don't override this current-item below
                }
            }
        } else if (favouritesFilters.IsAllowedChannel(channel)) {
            Add(item = new cOsdChannelItem(channel, true));

            if (item && channel->GetChannelID() == channelId) {
                SetCurrent(item);
                currentSet = true;
            }
        }
    }// for

    // lets not have empty menus
    if (Count()==0) { // no osditems
        if (mode == eFavFolders) {
            AddFloatingText(tr("No favourite folders available"), 50);
            Add(new cOsdItem("",osUnknown, false)); // blank line
            Add(new cOsdItem("",osUnknown, false)); // blank line
            Add(new cOsdItem("",osUnknown, false)); // blank line
            Add(new cOsdItem("",osUnknown, false)); // blank line
            Add(new cOsdItem(tr("Info:"), osUnknown, false));
            AddFloatingText(tr("Please select 'all Channels' to add channels to your favorites."), 50);
       } else {
            AddFloatingText(tr("No channels in this bouquet"), 50);
    }
 } else {
        if (!currentSet) {
            if (lastPosition >= Count())
                lastPosition = Count() - 1;
            SetCurrent(Get(lastPosition));
        }
    }


    cString tmpTitle = favouritesFilters.MakeTitle();
    if (*tmpTitle)
        tmpTitle = cString::sprintf("%s: %s/%s", tr("Channel List"),
                                    tr(FAVOURITES), *tmpTitle);
    else
        tmpTitle = cString::sprintf("%s: %s", tr("Channel List"), tr(FAVOURITES));

    SetTitle(*tmpTitle);
    Display();
    SetHelp(tr(ALL_CHANNELS), tr(SOURCES), tr(FAVOURITES), tr("Functions"));

}
示例#20
0
void cMenuAddChannelToFavourites::Set(bool selectLast)
{
    Clear();
    SetCols(6);

    if (CountFavFolders() == 0)
        AddFloatingText(tr("You have no favourite folders. Please create one before you can add the channel"), 50);
     else
        AddFloatingText (cString::sprintf(tr("Select folder for %d channels"),
                                          channelsToAdd.size())
                         , 50);

    Add(new cOsdItem("", osUnknown, false));


    // Give user chance to add new folder
    Add(new cOsdItem(*cString::sprintf("%c\t%s", char(132), tr("Create new folder"))));

    /* if folder available, differentiate them from the above option */
    if (CountFavFolders() != 0) {
        Add(new cOsdItem("", osUnknown, false));
    }

    cOsdChannelItem *firstFolderItem = NULL, *bouquetItem = NULL;

    // count the number of to-be-added channels that are in a bouquet
    // if it is equal to the channelsToAdd.size() then the bouquet contains
    // all the to-be-added channels, so the bouquet should be marked as unavailable
    unsigned int count_repeats = 0;

    // show all 'bouquets' from favourite list
    cChannel *ch = favourites.First();
    for ( ; ch; ch = favourites.Next(ch)) {
        if (ch->GroupSep()) {

            // all channels to be added were in the previous bouquet, so
            // the bouquet should be unselectable
            if (bouquetItem && count_repeats == channelsToAdd.size()) {
                // if this bouquet was the current item
                // now it no longer is.
                if (firstFolderItem == bouquetItem)
                    firstFolderItem = NULL;

                // bouquet not selectable
                bouquetItem->SetForbidden(true);
                bouquetItem->Set();
            } // if (all channels in prev bouquet)

            bouquetItem = new cOsdChannelItem(ch, true);
            Add(bouquetItem);
            count_repeats = 0;

            if (!firstFolderItem)
                firstFolderItem = bouquetItem;
        } else {
            if (bouquetItem) {
                tChannelID channelID = ch->GetChannelID();
                // check if any to-be-added channel is present in the current bouquet
                // if so, increment count_repeats
                for(unsigned int i=0; i< channelsToAdd.size(); ++i) {
                    cChannel *channel = Channels.GetByNumber(channelsToAdd.at(i));
                    if (channel && channel->GetChannelID() == channelID) {
                        count_repeats ++;
                        break;
                    } // if
                } // for
            } // if bouquetItem
        } // else
    } // for

    /* last entry is the newly created folder */
    if (selectLast) {
        SetCurrent(Get(Count()-1));
    }
    else
        SetCurrent(firstFolderItem);

    Display();

    SetStatus(tr("Select folder with 'Ok'"));
}
示例#21
0
void myMenuSetupColumns::Set() {
  SetCols(30);

  // build up menu entries
//  SetHelp(tr("Edit"), NULL, NULL, NULL);  //SetHelp(tr("Edit"), NULL, tr("Move Up"), tr("Move down"));

  // save current postion
  int current = Current();
  // clear entries, if any
  Clear();


  cOsdItem *sItem;
  char *itemStr;
  int ret;

  ret = asprintf(&itemStr, "%s\t%s", tr("Icon"), tr("(fixed to the first position)"));
  if (ret <= 0) {
    esyslog("Error allocating linebuffer for cOsdItem.");
    return;
  }
  sItem = new cOsdItem(itemStr);
  sItem->SetSelectable(false);
  Add(sItem);


  // build up setup menu
  for(int i=0; i<MAX_RECLIST_COLUMNS; i++) {

    ret = asprintf(&itemStr, "%s %i", tr("Item"),i+1);
    if (ret <= 0) {
      esyslog("Error allocating linebuffer for cOsdItem.");
      return;
    }

    Add(new cMenuEditStraItem(itemStr, &(preclistcolumns[i].Type), MAX_COLTYPES, ColumnType_descriptions));

    switch (preclistcolumns[i].Type) {
    case COLTYPE_NONE:
      break;

    case COLTYPE_BLANK:
      Add(new cMenuEditIntItem(IndentMenuItem(tr("Width")), &(preclistcolumns[i].Width), 0, 24));
      break;

    case COLTYPE_DATE:
      Add(new cMenuEditIntItem(IndentMenuItem(tr("Width")), &(preclistcolumns[i].Width), 8, 24));
      Add(new cMenuEditStraItem(IndentMenuItem(tr("Alignment")), &(preclistcolumns[i].Align), 3, AlignmentType_names));
      break;

    case COLTYPE_TIME:
      Add(new cMenuEditIntItem(IndentMenuItem(tr("Width")), &(preclistcolumns[i].Width), 5, 24));
      Add(new cMenuEditStraItem(IndentMenuItem(tr("Alignment")), &(preclistcolumns[i].Align), 3, AlignmentType_names));
      break;

    case COLTYPE_DATETIME:
      Add(new cMenuEditIntItem(IndentMenuItem(tr("Width")), &(preclistcolumns[i].Width), 14, 24));
      Add(new cMenuEditStraItem(IndentMenuItem(tr("Alignment")), &(preclistcolumns[i].Align), 3, AlignmentType_names));
      break;

    case COLTYPE_LENGTH:
      Add(new cMenuEditIntItem(IndentMenuItem(tr("Width")), &(preclistcolumns[i].Width), 3, 24));
      Add(new cMenuEditStraItem(IndentMenuItem(tr("Alignment")), &(preclistcolumns[i].Align), 3, AlignmentType_names));
      break;

    case COLTYPE_RATING:
      Add(new cMenuEditIntItem(IndentMenuItem(tr("Width")), &(preclistcolumns[i].Width), 5, 24));
      Add(new cMenuEditStraItem(IndentMenuItem(tr("Alignment")), &(preclistcolumns[i].Align), 3, AlignmentType_names));
     break;

    case COLTYPE_FILE:
      Add(new cMenuEditStrItem(IndentMenuItem(tr("Name")), (preclistcolumns[i].Name), 64, tr(FileNameChars)));

      Add(new cMenuEditIntItem(IndentMenuItem(tr("Width")), &(preclistcolumns[i].Width), 1, 24));
      Add(new cMenuEditStraItem(IndentMenuItem(tr("Alignment")), &(preclistcolumns[i].Align), 3, AlignmentType_names));
      Add(new cMenuEditStrItem(IndentMenuItem(tr("Filename")), (preclistcolumns[i].Op1), 64, tr(FileNameChars)));
      break;

    case COLTYPE_FILETHENCOMMAND:
      Add(new cMenuEditStrItem(IndentMenuItem(tr("Name")), (preclistcolumns[i].Name), 64, tr(FileNameChars)));

      Add(new cMenuEditIntItem(IndentMenuItem(tr("Width")), &(preclistcolumns[i].Width), 1, 24));
      Add(new cMenuEditStraItem(IndentMenuItem(tr("Alignment")), &(preclistcolumns[i].Align), 3, AlignmentType_names));
      Add(new cMenuEditStrItem(IndentMenuItem(tr("Filename")), (preclistcolumns[i].Op1), 1024, tr(FileNameChars)));
      Add(new cMenuEditStrItem(IndentMenuItem(tr("Command")), (preclistcolumns[i].Op2), 1024, tr(FileNameChars)));
      break;
    }
  }

  ret = asprintf(&itemStr, "%s\t%s", tr("Name of the recording"), tr("(fixed to the last position)"));
  if (ret <= 0) {
    esyslog("Error allocating linebuffer for cOsdItem.");
    return;
  }
  sItem = new cOsdItem(itemStr);
  sItem->SetSelectable(false);
  Add(sItem);

  // restore current position
  SetCurrent(Get(current));
}