Esempio n. 1
0
bool CGraphmatFile::DealAsteriskBullet (size_t LB, size_t HB)
{
	vector<CAsteriskHyp> Hyps;
	size_t LineNo = 0;
	size_t i;

	for (i = LB; i< HB; i++)
	{
		if (GetUnits()[i].IsEOLN()) LineNo++;
	
		// проверяем, является ли данная графема звездочкой
		if (!GetUnits()[i].IsAsterisk()) continue;

		// удостоверяемся, что данная графема  не вошла  в графематические группы
		if (GetUnits()[i].IsGrouped() || HasDescr(i,OBullet)) continue;

		size_t nh = BSpace(i-1);

		size_t nt = PSpace(i+1,HB);

		// перед перечислителя должен стоять конец строки 
		if ((nh > 0) && !GetUnits()[nh].IsEOLN()) continue;

		// проверяем, стоит ли после перечислителя знак препинания, если
		// стоит, то это не пункт перечисления
		if (nt == HB) continue; 
		if (HasDescr (nt,OPun)) continue;

		CAsteriskHyp A;
		A.LineNo =  LineNo;
		A.UnitNo = i;
		Hyps.push_back(A);
	};

	for (i=0; i<Hyps.size(); i++)
		if (	(i+1 == Hyps.size()) 
			||	(i == 0) 
			||	(		(i+1 < Hyps.size())
					&&	(Hyps[i+1].LineNo <  Hyps[i].LineNo + MaxBulletSectionSize)
				)
			||	(		(i > 0)
					&&	(Hyps[i-1].LineNo + MaxBulletSectionSize <  Hyps[i].LineNo)
				)
			)
		{   
			SetDes (Hyps[i].UnitNo,OBullet);

			if (!HasDescr (Hyps[i].UnitNo,OPar))
				SetDes(Hyps[i].UnitNo,OPar); 
		};

	return true; 

}
Esempio n. 2
0
// пункты перечисления типа (1) или [1]
int  CGraphmatFile::DealBulletsWithTwoBrackets (size_t StartPos, size_t EndPos)
{
  size_t i = StartPos;

  if   (   !HasDescr(i, OOpn) )  return false;

  if   (   HasDescr(i, OBullet) )  return false;

  size_t nt = PSpace(i+1, EndPos);

  if (nt == EndPos) return false;
    
   // проверяем, является ли данная графема перечислителем
  if (!IsBulletWord(nt) )  return false;

  size_t BulletWordNo = nt;

  // удостоверяемся, что данная графема  не вошла  в графематические группы
  size_t  nh = (i>0) ? BSpace(i-1) : 0;

  // перед перечислителем должен стоять конец строки 
  if (   !GetUnits()[nh].IsEOLN()
	  && (nh > 0)) return false;

  if (nt + 1 >= EndPos) return false;
  nt = PSpace(nt+1,EndPos);

  // после перечислителя должно стоять либо закрывающая скобка, либо точка
  if (nt == EndPos) return false;

  if   (   !HasDescr(nt, OCls) )  return false;

  if (HasGrouped(StartPos,nt+1)) return false;

  SetDes (StartPos, OBullet);
  if (!HasDescr (StartPos, OPar))
	SetDes(StartPos, OPar);

  SetState(StartPos,nt+1,stGrouped);

  return true;
};
Esempio n. 3
0
int CGraphmatFile::DealFloatNumbers (size_t  StartPos, size_t  EndPos)
{
   if   (   !HasDescr(StartPos, ODg) )  return 0;
   

   // проверим, вдруг это перечислитель
   if (StartPos == 0) return false;
   size_t nh = BSpace (StartPos - 1, 0);
   if (nh == 0 ) return false;
   if (GetUnits()[nh].IsEOLN()) return false;

   size_t nt = StartPos+1;
   if (nt == EndPos) return false;
   if ( !IsOneFullStop(nt)) return false;
   nt++;
   if (nt == EndPos) return false;
   if   (   !HasDescr(nt, ODg) )  return false;
   SetDes (StartPos, OFloat1);
   SetDes (nt, OFloat2);
   SetState(StartPos,nt+1,stGrouped);
   return true;
};
EDDocOpenDlg::EDDocOpenDlg(IString* dN, IWindow* parent, IProfile *p) :
   IFrameWindow( 0,0,parent, IFrameWindow::nextShellRect().scaleBy(0.6, 0.5),
                  IFrameWindow::classDefaultStyle
                & ~IFrameWindow::maximizeButton
                & ~IFrameWindow::minimizeButton
                | IFrameWindow::dialogBackground, "�ffnen"),
   DocOpenClient(0, this, this),
   DocOpenCnr   (0, &DocOpenClient, &DocOpenClient)
{
   profile = p;
   docName = dN;
   *docName = "";

  /* Erstelle Dateiauswahl-Container */
   IContainerColumn* pcolumn;

   pcolumn = new IContainerColumn(IContainerColumn::isIconViewText);
   pcolumn->setHeadingText("Name");
   pcolumn->showSeparators(IContainerColumn::horizontalSeparator);
   DocOpenCnr.addColumn(pcolumn);
   DocOpenCnr.setDetailsViewSplit(pcolumn, 100);

   pcolumn = new IContainerColumn(DocCnrObj::statusOffset());
   pcolumn->setHeadingText("Status");
   pcolumn->showSeparators();
   DocOpenCnr.addColumn(pcolumn);

   pcolumn = new IContainerColumn(DocCnrObj::filepathOffset());
   pcolumn->setHeadingText("Dateipfad");
   pcolumn->showSeparators(IContainerColumn::horizontalSeparator);
   DocOpenCnr.addColumn(pcolumn);

   DocOpenCnr
      .setSingleSelection()
      .setDeleteColumnsOnClose()
      .setDeleteObjectsOnClose()
      .showSplitBar()
      .showTitleSeparator()
      .showDetailsView()
      .enableTabStop();

  /* Erstelle Buttons */
   ISetCanvas  BSpace(0x800C, &DocOpenClient, &DocOpenClient);
   IPushButton BOk(DID_OK, &BSpace, &BSpace);
   IPushButton BCancel(DID_CANCEL, &BSpace, &BSpace);
   IPushButton BNew(IDD_DOCNEW, &BSpace, &BSpace);
   IPushButton BDelete(IDD_DOCDEL, &BSpace, &BSpace);
   BOk.enableDefault()
      .setText( "~OK" )
      .enableTabStop()
      .enableGroup();
   BCancel
      .setText( "A~bbruch" )
      .enableTabStop();
   BNew
      .setText("~Neu")
      .enableTabStop();
   BDelete
      .setText("~L�schen")
      .enableTabStop();
   BSpace
     .setMargin( ISize() )
     .setPackType( ISetCanvas::expanded );

  /* Baue Fenster auf */
   ISize defaultCell = IMultiCellCanvas::defaultCell();
   DocOpenClient
      .addToCell(&DocOpenCnr,  2, 2, 3)
      .addToCell(&BSpace,      2, 4);

   DocOpenClient
      .setColumnWidth(1, MARGIN)
      .setColumnWidth(4, MARGIN)
      .setColumnWidth(3, defaultCell.width(), true)
      .setRowHeight  (1, MARGIN)
      .setRowHeight  (2, defaultCell.height(), true)
      .setRowHeight  (3, MARGIN)
      .setRowHeight  (5, MARGIN);

  /* Text-Eintr�ge aus Profile einlesen */
  /* Profile-Cursor, um Text-Eintr�ge auszulesen */
   IProfile::Cursor cursor(*profile);
   for (cursor.setToFirst(); cursor.isValid(); cursor.setToNext() ) {
      IString   strDocName = profile->applicationOrKeyAt(cursor);
      DocCnrObj *docObj = new DocCnrObj(strDocName, *profile);
      DocOpenCnr.addObject(docObj);
   } /* endfor */

   DocOpenCnr.sortByIconText();

  /* Fenster anzeigen und abfragen */
   IFrameHandler::handleEventsFor(this);
   setClient(&DocOpenClient);
   setFocus();
   showModally();
}
Esempio n. 5
0
// пункты перечисления
bool CGraphmatFile::DealBullet (size_t i, size_t HB)
{
	if (i == 0)    return false;
	if (i  >= HB )  return false;

	// проверяем, является ли данная графема перечислителем
	if (!IsBulletWord (i))  return false;

	if (HasDescr(i,OBullet)) return false;
	size_t nt = PSpace(i+1,HB);
	size_t nh = BSpace(i-1);
	// перед перечислителя должен стоять конец строки 
	if ((nh > 0) && !GetUnits()[nh].IsEOLN()) return false;

	// удостоверяемся, что данная графема  не вошла  в графематические группы.
	if (GetUnits()[nh].IsGrouped()) return false;

	// после перечислителя должно стоять либо закрывающая скобка, либо точка
	if (nt == HB) return false;
	if (!HasDescr(nt,OCls) && !IsOneFullStop(nt)) return false;

	// проверяем, относится ли закрывающая скобка к пункту перечисления,
	// или спереди есть открывающая скобка, в таком случае, это не пункт перечисления  
	size_t TempLowBorder = 0;

	if (i > 100)
		TempLowBorder = i-100;

	if  (HasDescr(nt,OCls))
		for (size_t k=i; k > TempLowBorder; k--)
			if (HasDescr (k,OCls)) // встретилась другая закрывающая  скобка 
				break;
			else
				if  (HasDescr (k,OOpn)) // встретилась открывающая скобка 
					return false;



	// проверяем, стоит ли после перечислителя знак препинания, если
	// стоит, то это не пункт перечисления
	nt++;
	if (nt == HB) return false;

	nt = PSpace(nt,HB);
	if (nt == HB) return false; 

	if (HasDescr (nt,OPun)) return false;

	if (IsBulletWord (nt))  
		SetState(i,nt+1,stGrouped);


	SetDes (i,OBullet);



	if (!HasDescr (i,OPar))
		SetDes(i,OPar);

	return true; 
}