static int CopyAll_FileToHDD(char *SpisF)                    //Запись списка файла на HDD рекордера
{
   char NameF[260], Ss[100];
   //Надо проверить, что такого имени в папке нет
   InitProgressBar2_2(all_nCl, "");                          //Функция прогресса для нескольких файлов
   c_FAT1 = (DWORD *)MyAllocMem(Size_FAT1);                  //Память под FAT
   if(c_FAT1 == NULL)  return -1;
   CopyMemory(c_FAT1, FAT1, Size_FAT1);                      //Скопировали содержимое FAT1
   if(Load_Dir() < 0) return -1;                             //Загрузка кластера каталога
   for(int i=0; i<numF_Sp; i++)                              //По числу имен в списке
   {  lstrcpy(NameF, SpisF);                                 //Переслали имя каталога
      lstrcat(NameF, "\\");                                  //Добавили разделитель
      lstrcat(NameF, SpisF + pozNameF[i]);                   //Добавили имя файла
      sprintf(Ss, "%s:   %d  ( %d )", (Lan+24)->msg, i+1, numF_Sp);
      int ret = WriteFile_ToHDD(NameF, Ss);                  //Запись файла на HDD рекордера
      CloseFile(&inFile);
      if(ret < 0) return -1;
      Close_ProgressBar();
   }
#if !defined EMULATOR_HDD                                    //Режим эмулятора
   if(Save_FAT1() < 0) return -1;                            //Сохранение обновленной FAT первого раздела
   if(Save_Dir() < 0) return -1;                             //Сохранение кластера каталога
   if(Change_Sec67(-writeNewCl) < 0) return -1;              //Внесение изменений в содержимое сектора 67
#endif
   writeCl += writeNewCl;                                    //Число записанных кластеров
   ViewSize();                                               //Показа дискового пространства
   return 0;
}
static int CopyOne_FileToHDD(char *NameF)                    //Запись единственного файла на HDD рекордера
{
   //Надо проверить, что такого имени в папке нет
   c_FAT1 = (DWORD *)MyAllocMem(Size_FAT1);                  //Память под FAT
   if(c_FAT1 == NULL)  return -1;
   CopyMemory(c_FAT1, FAT1, Size_FAT1);                      //Скопировали содержимое FAT1
   if(Load_Dir() < 0) return -1;                             //Загрузка кластера каталога
   if(WriteFile_ToHDD(NameF, (Lan+24)->msg) < 0) return -1;  //Запись файла на HDD рекордера
#if !defined EMULATOR_HDD                                    //Режим эмулятора
   if(Save_FAT1() < 0) return -1;                            //Сохранение обновленной FAT первого раздела
   if(Save_Dir() < 0) return -1;                             //Сохранение кластера каталога
   if(Change_Sec67(-writeNewCl) < 0) return -1;              //Внесение изменений в содержимое сектора 67
#endif
   writeCl += writeNewCl;                                    //Число записанных кластеров
   ViewSize();                                               //Показа дискового пространства
   return 0;
}
static int Create_New_Folder_ToHDD(void)                     //Cоздание папки на диске LG
{
   if(*NameFoFi == 0)
     return Error1((Lan+184)->msg);                          //"Недопустимое имя"
   c_FAT1 = (DWORD *)MyAllocMem(Size_FAT1);                  //Память под FAT
   if(c_FAT1 == NULL)  return -1;
   CopyMemory(c_FAT1, FAT1, Size_FAT1);                      //Скопировали содержимое FAT1
   if(Load_Dir() < 0) return -1;                             //Загрузка кластера каталога
   if(CreateNewFolder() < 0) return -1;                      //Создание новой папки на HDD рекордера
#if !defined EMULATOR_HDD                                    //Режим эмулятора
   if(Save_FAT1() < 0) return -1;                            //Сохранение обновленной FAT первого раздела
   if(Save_Dir() < 0) return -1;                             //Сохранение кластера каталога
   if(Change_Sec67(-1) < 0) return -1;                       //Внесение изменений в содержимое сектора 67
#endif
   writeCl++;                                                //Число записанных кластеров
   ViewSize();                                               //Показа дискового пространства
   MyFreeMem(&(void*)c_FAT1);
   MyFreeMem(&(void*)spisF);
   return 0;
}
/*-------------------------------------------------------------------------*/
VOID ViewHeader( CHAR *file )
{
    INT          i, m;
    CHAR         buf[64];
    static CHAR  str[140], tmp[140];

    _splitpath( file, NULL, NULL, fname, ext );

    if( pktcount )
        sprintf( str, "%u - %u  (%s%s)", pktNumber + 1, pktcount, fname, ext );
    else
        sprintf( str,  "1 - 1  (%s%s)", fname, ext );

    i = strlen( str );
    WSetCurColor( wmain, C_TEXT );
    WSetXY      ( wmain,  6, 0 );
    WPuts       ( wmain, str );
    memset      ( str, ' ', 30 - i ); str[ 30 - i ] = 0;
    WSetXY      ( wmain,  6 + i, 0 );
    WPuts       ( wmain, str );
    
    if(( m = maxXmain - 32 ) > 64 )
        m = 64;

    strncpy( tmp, Current -> from, m - 7 ); WSetXY( wmain, 6, 1 );
    sprintf( str,  "%-*.*s", m - 7, m - 7, tmp ); WPutstr( wmain, str );
    
    strncpy( tmp, Current -> to, m - 7 ); WSetXY( wmain, 6, 2 );
    sprintf( str,  "%-*.*s", m - 7, m - 7, tmp ); WPutstr( wmain, str );

    strncpy( tmp, Current -> subj, maxXsubj - 6 ); WSetXY( wmain, 6, 3 );
    sprintf( str,  "%-*.*s", maxXsubj - 6, maxXsubj - 6, tmp ); WPutstr( wmain, str );

    if( Current -> area )
    {
        strcpy ( str, " " );
        strncat( str, Current -> area, 60 );
        strcat ( str, " " );
    }
    else
        strcpy( str, " Netmail " );

    i = strlen( str );
    WPutbs ( wmain, 0,  6, WGetSchColor( wmain, C_MORE ), str );
    memset ( str, 'Ä', 60 - i ); str[ 60 - i ] = 0;
    WPutbs ( wmain, 0, 6 + i, WGetSchColor( wmain, C_BORDER ), str );

    if( BadPkt )
    {
        WPutbs( wmain, 0, 2, WGetSchColor( wmain, C_BORDER ), "´ Ã" );
        WPutbs( wmain, 0, 3, WGetSchColor( wmain, C_MORE   ),  "b"  );
    }
    else
        WPutbs( wmain, 0, 2, WGetSchColor( wmain, C_BORDER ), "ÄÄÄ" );
    
    if( ReadOnly )
    {
        WPutbs( wmain, 0, maxXmain - 4, WGetSchColor( wmain, C_BORDER ),  "´  Ã" );
        WPutbs( wmain, 0, maxXmain - 3, WGetSchColor( wmain, C_MORE   ),   "ro" );
    }
    else
        WPutbs( wmain, 0, maxXmain - 4, WGetSchColor( wmain, C_BORDER ), "ÄÄÄÄ" );

    WPrints ( wmain, m + 11, 0, Current -> date );

    strncpy( str, FidoAddr2Str( &Current -> AddrFrom, buf ), maxXmain - m );
    WSetXY ( wmain, m, 1 );
    WPrintf( wmain, "%-*.*s", maxXmain - m, maxXmain - m, str );

    if( Current -> area )
        WSetCurColor( wmain, C_HIDE );

    strncpy( str, FidoAddr2Str( &Current -> AddrTo, buf ), maxXmain - m );
    WSetXY( wmain, m, 2 );
    WPrintf( wmain, "%-*.*s", maxXmain - m, maxXmain - m, str );

#ifndef _LITE_
    ViewSelected();
#endif
    ViewSize();
    ViewAttr();
}
Exemple #5
0
void CQueueView::UpdateView(bool Repaint)
{
	m_DC.FillSolidRect(CRect(CPoint(0, 0), m_ClientSize), GetSysColor(COLOR_WINDOW));
	m_DC.SetBkMode(TRANSPARENT);
	m_DC.SelectObject(GetStockObject(DEFAULT_GUI_FONT));
	CPoint	ScrollPos = GetScrollPosition();
	CPoint	PlugPt(PageMargin - ScrollPos);
	CRenderer&	Render = theApp.GetMain()->GetRenderer();
	int	RenderTime = Render.GetFrameCounter();
	int	plugs = m_Engine.GetPluginCount();
	CFrameArray	QFrame;
	for (int PlugIdx = 0; PlugIdx < plugs; PlugIdx++) {
		CPlugin&	plug = m_Engine.GetPlugin(PlugIdx);
		int	Inputs = plug.GetNumInputs();
		bool	UsingProcessCopy = plug.UsingProcessCopy();
		int	FrameRows = UsingProcessCopy ? max(Inputs, 2) : 1;
		int	PluginHeight = PluginMargin.cy * 2 + GetFrameArea(1, FrameRows).cy;
		CSize	PluginSize(PluginWidth, PluginHeight);
		CRect	PlugRect(PlugPt, PluginSize);
		DrawPlugin(PlugRect, plug.GetName(), plug.IsProcessing());
		if (m_Engine.IsRunning())
			DrawFrameCounter(PlugPt, plug.GetFrameCounter(), RenderTime);
		if (UsingProcessCopy)
			DrawOutputFrame(PlugPt + OutputOffset, plug.GetOutputFrame());
		CPoint	FramePt(PlugPt + InProcessOrg);
		for (int InpIdx = 0; InpIdx < Inputs; InpIdx++) {
			DrawInputFrame(InpIdx, FramePt, plug.GetInputFrame(InpIdx));
			plug.GetInputQueue(InpIdx)->DumpState(QFrame);
			DrawFrameArray(CPoint(PlugPt.x + QueueOrg.cx, FramePt.y), QFrame);
			FramePt.y += FrameOffset.cy;
		}
		PlugPt.y += PluginSize.cy + PluginMargin.cy;
		int	helpers = plug.GetHelperCount();
		for (int HelpIdx = 0; HelpIdx < helpers; HelpIdx++) {
			CPluginHelper&	helper = plug.GetHelper(HelpIdx);
			CRect	HelpRect(PlugPt, PluginSize);
			DrawPlugin(HelpRect, helper.GetName(), helper.IsProcessing());
			if (m_Engine.IsRunning())
				DrawFrameCounter(PlugPt, helper.GetFrameCounter(), RenderTime);
			if (UsingProcessCopy)
				DrawOutputFrame(PlugPt + OutputOffset, helper.GetOutputFrame());
			CPoint	FramePt(PlugPt + InProcessOrg);
			for (int InpIdx = 0; InpIdx < Inputs; InpIdx++) {
				DrawInputFrame(InpIdx, FramePt, helper.GetInputFrame(InpIdx));
				FramePt.y += FrameOffset.cy;
			}
			PlugPt.y += PluginSize.cy + PluginMargin.cy;
		}
	}
	int	TotalPluginHeight = PlugPt.y + ScrollPos.y;
	DrawPlugin(CRect(PlugPt, RenderSize), Render.GetName(), FALSE);
	DrawFrameCounter(PlugPt, RenderTime, RenderTime);
	PFRAME	OutFrame = Render.GetCurFrame();
	CPoint	FramePt(PlugPt + InProcessOrg);
	if (OutFrame != NULL)
		DrawFrame(FramePt, OutFrame);
	m_Engine.GetRenderQueue()->DumpState(QFrame);
	FramePt.x = PlugPt.x + QueueOrg.cx;
	DrawFrameArray(FramePt, QFrame);
	FramePt.x = PlugPt.x;
	FramePt.y += RenderSize.cy;
	m_Engine.GetFreeQueue()->DumpState(QFrame);
	DrawFrameArray(FramePt, QFrame);
	CSize	ViewSize(PluginWidth + m_MaxRowFrames * FrameOffset.cx, 
		TotalPluginHeight + RenderSize.cy + FrameOffset.cy + PageMargin.cy);
	if (ViewSize != m_ViewSize) {	// if view size changed
		m_ViewSize = ViewSize;
		SetScrollSizes(MM_TEXT, ViewSize);	// set scroll sizes
	}
	if (Repaint)
		Invalidate();
}