Exemple #1
0
void CWedDoc::SaveBackup(const char *docname)

{
	CString	 num, filename = docname;
    PathToFname(filename);

	if(access(docname, 0) < 0)
		{
		num.Format("File %s does not exist, did make auto backup ", filename);
		message(num);
		//AfxMessageBox(num);
		return;
		}

	// Save only if smaller then 2 Meg
	if(docstat.st_size > MAX_BACKUP)
		{
		num.Format("File is too large for auto backup ", filename);
		message(num);
		return;
		}

	// Truncate up tp the first backslash
	int idx; CString tfn(docname);

	idx = tfn.Find("\\\\");
	if(idx >= 0)
		{
		tfn = tfn.Right(tfn.GetLength() - (idx + 1) );
		}
	else
		{
		idx = tfn.Find('\\');
		if(idx >= 0)
			{
			tfn = tfn.Right(tfn.GetLength() - (idx) );
			}
		}

	CString fbackup;
	//int hhh = HashString(docname);

	fbackup.Format("%sbackup%s", dataroot, tfn);
	create_full_dir(fbackup);

	CString fbdir(fbackup);
	PathToDir(fbdir);
	fbdir += "history\\"; fbdir += filename;

	//P2N("Sent backup copy to: %s\r\n", fbackup);

	// See if backup file exists already
    struct _stat docstat_o, docstat_b;

	_stat(docname, &docstat_o);

	CTime ct(docstat_o.st_mtime);
	CString datestr = ct.Format(".%a_%b_%d_%Y--%H_%M");
	fbdir += datestr;

	//P2N("Sent backup history to: %s\r\n", fbdir);

	// If backup is less than ....
	if(_stat(fbackup, &docstat_b) >=0)
		{
		//P2N("Document %s m_time=%d BackupFile m_time=%d \r\n",
        //              docname, docstat_o.st_mtime,  docstat_b.st_mtime );

		//if((docstat_o.st_mtime -  docstat_b.st_mtime) > 10)
			{
			//P2N("***Backing up: %s\r\n", fbackup);
			create_full_dir(fbdir);
			rename(fbackup, fbdir);
			}
		}

 	CFile cf;
	if(cf.Open(fbackup, CFile::modeCreate | CFile::modeWrite ))
		{
		num.Format("Saving backup copy %s ", filename);
		message(num);
		CArchive ar(&cf, CArchive::store);
		Serialize(ar, fbackup);
		}
	else
		{
		num.Format("Could not create backup copy of %s ", filename);
		message(num);
		//P2N("Cannot create backup copy of: %s\r\n", droot);
		}
}
void page_fluxbox_settings::LoadSettings(int){
  emit HasPendingChanges(false);
  emit ChangePageTitle( tr("Window Manager Settings") );
  loading = true;
  if(ui->radio_simple->isChecked()){
    ui->stackedWidget->setCurrentWidget(ui->page_simple); //ensure the proper page is visible
    ui->combo_session_wfocus->clear();
    ui->combo_session_wfocus->addItem( tr("Click To Focus"), "ClickToFocus");
    ui->combo_session_wfocus->addItem( tr("Active Mouse Focus"), "MouseFocus");
    ui->combo_session_wfocus->addItem( tr("Strict Mouse Focus"), "StrictMouseFocus");

    ui->combo_session_wloc->clear();
    ui->combo_session_wloc->addItem( tr("Align in a Row"), "RowSmartPlacement");
    ui->combo_session_wloc->addItem( tr("Align in a Column"), "ColSmartPlacement");
    ui->combo_session_wloc->addItem( tr("Cascade"), "CascadePlacement");
    ui->combo_session_wloc->addItem( tr("Underneath Mouse"), "UnderMousePlacement");

    ui->combo_session_wtheme->clear();
    QStringList dirs; dirs << LOS::AppPrefix()+"share/fluxbox/styles" << QDir::homePath()+"/.fluxbox/styles";
    QFileInfoList fbstyles; 
    for(int i=0; i<dirs.length(); i++){
      QDir fbdir(dirs[i]);
      fbstyles << fbdir.entryInfoList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name | QDir::IgnoreCase);
    }
    QString lastdir;
    for(int i=0; i<fbstyles.length(); i++){
      if(lastdir!=fbstyles[i].absolutePath()){
        lastdir = fbstyles[i].absolutePath(); //save for checking later
        if(ui->combo_session_wtheme->count()>0){ ui->combo_session_wtheme->insertSeparator(ui->combo_session_wtheme->count()); }
      }
      ui->combo_session_wtheme->addItem(fbstyles[i].fileName(), fbstyles[i].absoluteFilePath());
    }

    QStringList FB = readFile(QString(getenv("XDG_CONFIG_HOME"))+"/lumina-desktop/fluxbox-init");
    QString val;
    //Do the window placement
    val = FB.filter("session.screen0.windowPlacement:").join("").section(":",1,1).simplified();
    //qDebug() << "Window Placement:" << val;
    int index = ui->combo_session_wloc->findData(val);
    if(index<0){ index = 0;} //use the default
    ui->combo_session_wloc->setCurrentIndex(index);

    //Do the window focus
    val = FB.filter("session.screen0.focusModel:").join("").section(":",1,1).simplified();
    //qDebug() << "Window Focus:" <<  val;
    index = ui->combo_session_wfocus->findData(val);
    if(index<0){ index = 0;} //use the default
    ui->combo_session_wfocus->setCurrentIndex(index);

    //Do the window theme
    val = FB.filter("session.styleFile:").join("").section(":",1,1).simplified();
    //qDebug() << "Window Theme:" << val;
    index = ui->combo_session_wtheme->findData(val);
    if(index<0){ index = 0;} //use the default
    ui->combo_session_wtheme->setCurrentIndex(index);

    //Now the number of workspaces
    val = FB.filter("session.screen0.workspaces:").join("").section(":",1,1).simplified();
    //qDebug() << "Number of Workspaces:" << val;
    if(!val.isEmpty()){ ui->spin_session_wkspaces->setValue(val.toInt()); }
  }else{
    //Advanced editor
    ui->stackedWidget->setCurrentWidget(ui->page_advanced); //ensure the proper page is visible
    ui->text_file->setPlainText( readFile(QString(getenv("XDG_CONFIG_HOME"))+"/lumina-desktop/fluxbox-init").join("\n") );
  }
  QApplication::processEvents();
  loading = false;
}