Files
vx4-GuiLin-Gear/TextEditOption_backup.cpp
T

1367 lines
53 KiB
C++

#include "TextEditOption.h"
#include "ui_texteditoption.h"
#include "PicWidget.h"
#include "scene/picscene.h"
#include <QFileDialog>
#include <QDebug>
#include <QInputDialog>
#include <QDir>
#include <QDesktopServices>
#include <QUrl>
#include <QFile>
#include <QIODevice>
#include <QTextDocumentWriter>
#include <QFontDatabase>
#include <QSize>
#include <QPainter>
//#include <QPaintEngine>
#include <stdlib.h>
#include <QFontMetrics>
#include <QChar>
#include <QFileInfo>
#include <QTextCodec>
#include <QTextBlockFormat>
#include <QTextBlock>
#include "Public.h"
#include "myinclude.h"
#include "QBarCode.h"
#include "dlgQrCode.h"
#include<string>
#include<iostream>
TextEditOption::TextEditOption(QWidget *parent) :
QWidget(parent),
ui(new Ui::TextEditOption)
{
ui->setupUi(this);
fileDialog = 0;
fileName = "";
textEdit = 0;
newFileAppending = false;
dialogFileOperation = new DialogFileOperation(0);
dialogInsertVari = new DialogInsertVari(0);
dialogFontSize = new DialogFontSize(0);
dialogLineSpace = new DialogLineSpace(0);
editMode=0;
#ifdef _2DCODE_
dlgQrcode = new dlgQrCode();
barcode= new QBarCode();
connect(barcode,SIGNAL(onBarCodeClose()),this,SLOT(onBarCodeClose()));
connect(dlgQrcode,SIGNAL(onQRCodeCloseNow()),this,SLOT(onQRCodeClose()));
#endif
//textEdit->setFontFamily(Public::getFontFamily(12));
//textEdit->clear();
#ifdef MYSAVEFILEDLG
dialogSaveFile =new DialogSaveFile(0);
#endif
sceneEditItem = false;
}
TextEditOption::~TextEditOption()
{
delete ui;
if(fileDialog)
delete fileDialog;
if(dialogInsertVari)
delete dialogInsertVari;
if(dialogFontSize)
delete dialogFontSize;
if(dialogLineSpace)
delete dialogLineSpace;
#if _2DCODE_
if(dlgQrcode)
delete dlgQrcode;
#endif
//free(dlgQrCode);
#ifdef MYSAVEFILEDLG
if(dialogSaveFile) delete dialogSaveFile;
if(dialogFileOperation) delete dialogFileOperation;
#endif
}
void TextEditOption::enableButtonSave(){
if(!ui->bottonSave->isEnabled())
ui->bottonSave->setEnabled(true);
}
void TextEditOption::bindText(QTextEdit *textEdit){
this->textEdit = textEdit;
connect(textEdit,SIGNAL(textChanged ()),this,SLOT(enableButtonSave()));
ui->bottonSave->setEnabled(false);
connect(dialogFileOperation,SIGNAL(openFile(QString,bool)),this,SLOT(onFileOpen(QString,bool)));
#ifdef MYSAVEFILEDLG
connect(dialogSaveFile,SIGNAL(saveFile(QString,bool)),this,SLOT(onSaveASFile(QString,bool)));
#endif
}
void TextEditOption::bindSysPara(SysPara *sysPara){
this->sysPara = sysPara;
#ifdef _2DCODE_
if(sysPara)
{
barcode->bindSysPara(sysPara);
//qDebug()<<"TextEditOption bind by TextEdit.";
}
#endif
//else qDebug()<<"TextEditOption bind by TextEdit failure";
}
void TextEditOption::bindPicWidget(PicWidget *picwidget){
this->picwidget = picwidget;// stackedWidgetOption
// connect(textEdit,SIGNAL(textChanged ()),this,SLOT(enableButtonSave()));
// ui->bottonSave->setEnabled(false);
// connect(dialogFileOperation,SIGNAL(openFile(QString,bool)),this,SLOT(onFileOpen(QString,bool)));
}
void TextEditOption::bindStackWidget(QStackedWidget *stackedWidgetOption,QStackedWidget *stackedWidgetText){
this->stackedWidgetOption = stackedWidgetOption;// stackedWidgetOption
this->stackedWidgetText = stackedWidgetText;
// connect(textEdit,SIGNAL(textChanged ()),this,SLOT(enableButtonSave()));
// ui->bottonSave->setEnabled(false);
// connect(dialogFileOperation,SIGNAL(openFile(QString,bool)),this,SLOT(onFileOpen(QString,bool)));
}
void TextEditOption::showDlg(){
if(editMode==PICFILE){
disconnect(textEdit,SIGNAL(textChanged()),0,0);
connect(textEdit,SIGNAL(textChanged ()),this,SLOT(enableButtonSave()));
ui->bottonSave->setEnabled(false);
disconnect(dialogFileOperation,SIGNAL(openFile(QString,bool)),0,0);
connect(dialogFileOperation,SIGNAL(openFile(QString,bool)),this,SLOT(onFileOpen(QString,bool)));
on_pushButtonFile_pressed();
// dialogFileOperation->show();
}
}
/*
* 和DialogFileOperation对接
* */
void TextEditOption::onFileOpen(QString filePath,bool insertFlag)
{
if(editMode==PICFILE){
if(filePath.endsWith(".png") )//||filePath.endsWith(".bmp") )
{
if(insertFlag){
emit PicfileNameOpen(filePath,insertFlag);
}
else {
//
emit PicfileNameOpen(filePath,0);
}
return ;
}
else{
if(stackedWidgetOption) {
stackedWidgetOption->setCurrentIndex(1);
stackedWidgetText->setCurrentIndex(1);
}
}
}
else if(editMode==TXTFILE) {
if(filePath.endsWith(".gif") || filePath.endsWith(".jpeg") || filePath.endsWith(".jpg")
|| filePath.endsWith(".bmp") || filePath.endsWith(".BMP") || filePath.endsWith(".png"))
{
QString html = "<img src='" + filePath + "'/>";
QTextCharFormat fmt = textEdit->currentCharFormat ();
if(insertFlag){
textEdit->insertHtml (html);
}
else {
textEdit->setHtml (html);
textEdit->moveCursor(QTextCursor::EndOfLine); //在插入图片的情况下,将图片至于末会导致格式还原
}
textEdit->mergeCurrentCharFormat(fmt);
}
else if(filePath.endsWith(".xml"))
{
memset(sysPara->para.lastOpenedFileName,0,sizeof(sysPara->para.lastOpenedFileName));
return;
}
else {
QFile file(filePath);
if(!file.open(QIODevice::ReadOnly)){
QMessageBox::warning(this,tr("警告"),tr("无法打开文件") + filePath);
}
else {
QByteArray data = file.readAll();
QTextCodec *codec = Qt::codecForHtml(data);
QString str = codec->toUnicode(data);
// if (Qt::mightBeRichText(str)) {
// textEdit->setHtml(str);
// } else {
// str = QString::fromLocal8Bit(data);
// textEdit->setPlainText(str);
// }
// QTextStream in (&file);in.readAll()
if(filePath.startsWith(UDISK_DOC_ROOT_DIR)){
str.replace(DOC_ROOT_DIR,UDISK_DOC_ROOT_DIR); //做相应处理
}
if(insertFlag){
QMessageBox::StandardButton ret;
ret = QMessageBox::warning(this, tr("Application"), tr("是否确认将文件内容追加到打开的文件?"),
QMessageBox::Ok | QMessageBox::Cancel);
if (ret == QMessageBox::Ok){
textEdit->insertHtml(str);
}
}
else
{
//updateFileVariWidth(str);
textEdit->setHtml(str);
fileName = filePath;
if(sysPara){
sysPara->sysFile =fileName;
sysPara->loadParaFromFile();
//qDebug()<<"textedit txt mode onFileOpen" << sysPara->sysFile;
snprintf(sysPara->para.lastOpenedFileName,sizeof(sysPara->para.lastOpenedFileName),"%s",fileName.toAscii().constData());
}
emit fileNameChanged(QFileInfo(fileName).fileName());
textEdit->moveCursor(QTextCursor::EndOfLine);
onDialogLineSpaceAccepted();
}
}
//#if defined(__CONVERTERBOARD__)|| defined(__VX__)
#if 1
fsync(file.handle());
#endif
file.close();
}
if(insertFlag) //在打开文件的时候不设置焦点
textEdit->setFocus();
if(stackedWidgetOption) {
stackedWidgetOption->setCurrentIndex(0);
stackedWidgetText->setCurrentIndex(0);
// textEdit->setFocus();
}
}
else if(editMode==SCENE) {
//开机会调用到此,然后打开文件
if(filePath.endsWith(".xml"))
{
memset(sysPara->para.lastOpenedFileName,0,sizeof(sysPara->para.lastOpenedFileName));
emit scenefileOpen(filePath,false);//sceneeditoption 接收这个信号然后打开文件
emit fileNameChanged(QFileInfo(filePath).fileName());
}
else
{
if(sceneEditItem == true)
{
if(filePath.endsWith(".gif") || filePath.endsWith(".jpeg") || filePath.endsWith(".jpg")
|| filePath.endsWith(".bmp") || filePath.endsWith(".BMP") || filePath.endsWith(".png"))
{
QString html = "<img src='" + filePath + "'/>";
QTextCharFormat fmt = textEdit->currentCharFormat ();
if(insertFlag){
textEdit->insertHtml (html);
}
else {
textEdit->setHtml(html);
textEdit->moveCursor(QTextCursor::EndOfLine); //在插入图片的情况下,将图片至于末会导致格式还原
}
textEdit->mergeCurrentCharFormat(fmt);
}
else {
QFile file(filePath);
if(!file.open(QIODevice::ReadOnly)){
QMessageBox::warning(this,tr("警告"),tr("无法打开文件") + filePath);
}
else {
QByteArray data = file.readAll();
QTextCodec *codec = Qt::codecForHtml(data);
QString str = codec->toUnicode(data);
if(filePath.startsWith(UDISK_DOC_ROOT_DIR)){
str.replace(DOC_ROOT_DIR,UDISK_DOC_ROOT_DIR); //做相应处理
}
if(insertFlag){
QMessageBox::StandardButton ret;
ret = QMessageBox::warning(this, tr("Application"), tr("是否确认将文件内容追加到打开的文件?"),
QMessageBox::Ok | QMessageBox::Cancel);
if (ret == QMessageBox::Ok){
textEdit->insertHtml(str);
}
}
else
{
textEdit->setHtml(str);
fileName = filePath;
if(sysPara){
sysPara->sysFile =fileName;
sysPara->loadParaFromFile();
//qDebug()<<"onFileOpen"<<sysPara->sysFile;
snprintf(sysPara->para.lastOpenedFileName,sizeof(sysPara->para.lastOpenedFileName),"%s",fileName.toAscii().constData());
}
emit fileNameChanged(QFileInfo(fileName).fileName());
textEdit->moveCursor(QTextCursor::EndOfLine);
}
}
//#if defined(__CONVERTERBOARD__)|| defined(__VX__)
#if 1
fsync(file.handle());
#endif
file.close();
}
}
/*
if(stackedWidgetOption) {
stackedWidgetOption->setCurrentIndex(0);
stackedWidgetText->setCurrentIndex(0);
}
*/
}
}
}
void TextEditOption::onbottonInsertImgclicked()
{
if(fileDialog)
delete fileDialog;
fileDialog = new MyFileDialog(0);
disconnect(fileDialog,SIGNAL(accepted()),0,0);
connect(fileDialog,SIGNAL(accepted()),this,SLOT(onInsertImgFIle_select()));
fileDialog->showFileDialog(tr("插入图片"),QString("/"),QString("img (*.bmp *.jpg *.png *.gif)"));
}
void TextEditOption::onInsertImgFIle_select(){
QStringList files = fileDialog->selectedFiles();
for(int i = 0;i < files.size(); i++){
QString html = "<img src='" + files.value(i) + "'/>";
textEdit->insertHtml (html);
}
}
void TextEditOption::onbottonInsertTextclicked()
{
if(fileDialog)
delete fileDialog;
fileDialog = new MyFileDialog(0);
disconnect(fileDialog,SIGNAL(accepted()),0,0);
connect(fileDialog,SIGNAL(accepted()),this,SLOT(onInsertTextFIle_select()));
fileDialog->showFileDialog(tr("插入文本"),QString(DOC_ROOT_DIR),QString("text (*.html *.txt)"));
}
void TextEditOption::onInsertTextFIle_select(){
QStringList files = fileDialog->selectedFiles();
for(int i = 0;i < files.size(); i++){
QFile file(files.value(i));
if(!file.open(QIODevice::ReadOnly | QIODevice::Text)){
QMessageBox::warning(this,tr("警告"),tr("无法打开文件") + files.value(i));
}
else{
QTextStream in (&file);
textEdit->insertHtml(in.readAll());
}
//#if defined(__CONVERTERBOARD__)|| defined(__VX__)
#if 1
fsync(file.handle());
#endif
file.close();
}
}
void TextEditOption::onbuttonOpenclicked()
{
if(!textEdit){
QMessageBox::critical(this,tr("错误"),tr("TextEditOption 构造函数参数textEdit 不应当为空")); //
}
if(fileDialog)
delete fileDialog;
fileDialog = new MyFileDialog(0);
disconnect(fileDialog,SIGNAL(accepted()),0,0);
connect(fileDialog,SIGNAL(accepted()),this,SLOT(onOpenFIle_select()));
fileDialog->DontUseNativeDialog;
fileDialog->showFileDialog(tr("打开文件"),QString(DOC_ROOT_DIR),QString("Text files (*.txt *.html)"));
}
void TextEditOption::openFIle(QString openFileName){
QFile file(openFileName);
if(!file.open(QIODevice::ReadOnly | QIODevice::Text)){
QMessageBox::warning(this,tr("警告"),tr("无法打开文件") + openFileName);
}
else{
QTextStream in (&file);
textEdit->setText(in.readAll());
fileName = openFileName;
if(sysPara){
sysPara->sysFile =fileName;
sysPara->loadParaFromFile();
//qDebug()<<"openFIle"<<sysPara->sysFile;
snprintf(sysPara->para.lastOpenedFileName,sizeof(sysPara->para.lastOpenedFileName),"%s",fileName.toAscii().constData());
}
emit fileNameChanged(QFileInfo(fileName).fileName());
}
file.close();
}
void TextEditOption::onOpenFIle_select(){
QStringList files = fileDialog->selectedFiles();
for(int i = 0;i < files.size(); i++){
openFIle(files.value(i));
}
}
void TextEditOption::on_buttonSaveAS_clicked()
{
#ifdef MYSAVEFILEDLG
disconnect(dialogSaveFile,SIGNAL(saveFile(QString,bool)),0,0);
connect(dialogSaveFile,SIGNAL(saveFile(QString,bool)),this,SLOT(onSaveASFile(QString,bool)));
dialogSaveFile->refreshListView(editMode);
dialogSaveFile->show();
dialogSaveFile->setEnterFileName("");
#else
if(fileDialog)
delete fileDialog;
fileDialog = new MyFileDialog(0);
disconnect(fileDialog,SIGNAL(accepted()),0,0);
connect(fileDialog,SIGNAL(accepted()),this,SLOT(onSaveAS_FIle_select()));
fileDialog->showFileDialog(tr("另存为"),QString(DOC_ROOT_DIR),QString("files (*.html *.txt)"));
#endif
}
void TextEditOption::saveFile(){
if(fileName.endsWith(".txt")){
QMessageBox::StandardButton ret;
ret = QMessageBox::warning(this, tr("警告"),
tr("以.txt保存将丢失所有格式,你是否愿意保存为.html格式?"),
QMessageBox::Ok | QMessageBox::Cancel);
if (ret == QMessageBox::Ok){
fileName += ".html";
}
}
QString html = textEdit->toHtml();
QString pattern = "<img src=\""UDISK_DOC_ROOT_DIR"([\\w.]*)";
QRegExp rx(pattern);
bool picFromUdisk = false;
int from = 0;
while(from < html.size() && from != -1){ //检查是否有图片来自U盘
from = html.indexOf(rx,from);
if(from != -1){
from ++;
picFromUdisk = true;
QMessageBox::StandardButton ret;
ret = QMessageBox::information(0,tr("提醒"),tr("检测到有图片 %1 来自U盘,是否拷贝图片到本地?").arg(rx.cap(1)),
QMessageBox::Ok | QMessageBox::Cancel);
if(ret == QMessageBox::Ok){
system((char *)((QString("cp "UDISK_DOC_ROOT_DIR"%1 "DOC_ROOT_DIR).arg(rx.cap(1))).toUtf8().data()));
}
}
}
if(picFromUdisk){
textEdit->setHtml(html.replace(UDISK_DOC_ROOT_DIR,DOC_ROOT_DIR));
}
QTextDocumentWriter writer(fileName);
//writer.setFormat("html");
bool success = writer.write(textEdit->document());
if (success){
textEdit->document()->setModified(false);
ui->bottonSave->setEnabled(false);
if(sysPara){
sysPara->sysFile =fileName;
snprintf(sysPara->para.lastOpenedFileName,sizeof(sysPara->para.lastOpenedFileName),"%s",fileName.toAscii().constData());
}
}
else {
QMessageBox::warning(this,tr("警告"),tr("无法保存文件") + fileName);
}
emit fileNameChanged(QFileInfo(fileName).fileName());
checkNewFileAppending();
}
void TextEditOption::onSaveAS_FIle_select(){
QStringList files = fileDialog->selectedFiles();
for(int i = 0;i < files.size(); i++){
fileName = files[i];
if(!fileName.endsWith(".html",Qt::CaseInsensitive) && !fileName.endsWith(".txt",Qt::CaseInsensitive))
fileName += ".html";
saveFile();
}
}
void TextEditOption::onSaveASFile(QString filename,bool Flag){// use for dialogSaveFile class
fileName = filename;
if(!fileName.endsWith(".html",Qt::CaseInsensitive) && !fileName.endsWith(".txt",Qt::CaseInsensitive))
fileName += ".html";
saveFile();
//emit fileNameChanged(QFileInfo(fileName).fileName());
//qDebug()<<fileName;
}
void TextEditOption::checkNewFileAppending(){
if(newFileAppending){
textEdit->clear();
fileName = "";
emit fileNameChanged(QFileInfo(fileName).fileName());
setFontFormat();
onDialogLineSpaceAccepted();
}
newFileAppending = false;
}
void TextEditOption::onSave_File_reject(){
checkNewFileAppending();
}
void TextEditOption::on_bottonSave_clicked()
{
if(sysPara->para.EditMode==SCENE){
//在场景模式下,这个是确定按钮,切换到场景模式
if(sceneEditItem)
{
editItemModeDone();
emit editItemDone();
}
}
else
{
if(fileName.isEmpty()){
#ifdef MYSAVEFILEDLG
disconnect(dialogSaveFile,SIGNAL(saveFile(QString,bool)),0,0);
connect(dialogSaveFile,SIGNAL(saveFile(QString,bool)),this,SLOT(onSaveASFile(QString,bool)));
dialogSaveFile->refreshListView(editMode);
dialogSaveFile->show();
dialogSaveFile->setEnterFileName("");
#else
if(fileDialog)
delete fileDialog;
fileDialog = new MyFileDialog(0);
disconnect(fileDialog,SIGNAL(accepted()),0,0);
connect(fileDialog,SIGNAL(accepted()),this,SLOT(onSaveAS_FIle_select()));
connect(fileDialog,SIGNAL(rejected()),this,SLOT(onSave_File_reject()));
fileDialog->showFileDialog(tr("保存..."),QString(DOC_ROOT_DIR),QString("HTML files (*.html)"));
#endif
}
else {
saveFile();
newFileAppending = false;
}
}
}
bool TextEditOption::maybeSave(){
if (!textEdit->document()->isModified())
return true;
if (fileName.startsWith(QLatin1String(":/")))
return true;
QMessageBox msgBox(QMessageBox::Information,tr("提示"),tr("文档已经改变,是否保存?"));
QPushButton *saveButton = msgBox.addButton(tr("保存"), QMessageBox::ActionRole);
QPushButton *cancleSaveButton = msgBox.addButton(tr("放弃保存"), QMessageBox::ActionRole);
QPushButton *abortButton = msgBox.addButton(QMessageBox::Cancel);
msgBox.exec();
if (msgBox.clickedButton() == saveButton) {
newFileAppending = true;
on_bottonSave_clicked();
return false;
} else if (msgBox.clickedButton() == cancleSaveButton) {
return true;
}
else
return false;
return true;
}
void TextEditOption::on_bottonNew_pressed()
{
if (maybeSave()) {
//setFontFormat();
textEdit->clear();
fileName = "";
QFile file(fileName);
emit fileNameChanged(QFileInfo(fileName).fileName());
}
#ifdef VARCOLOR
textEdit->insertHtml(QString("<span style='background:#ffffff;color=#000000;'> &nbsp;<span />"));
#endif
}
void TextEditOption::onOpenNewFile()
{
//if (maybeSave())
{
//setFontFormat();
textEdit->clear();
fileName = "";
QFile file(fileName);
emit fileNameChanged(QFileInfo(fileName).fileName());
}
#ifdef VARCOLOR
textEdit->insertHtml(QString("<span style='background:#ffffff;color=#000000;'> &nbsp;<span />"));
#endif
}
void TextEditOption::on_buttonInsertVari_pressed()
{ QString s,fontname="";
if(sysPara)
{
//s.sprintf("%s(%02dX%02d)",sysPara->para.qrOption.text,sysPara->para.qrOption.width,sysPara->para.qrOption.height);
s= sysPara->para.qrOption.text;
if(s.length()>120)s="string to long.";
dialogInsertVari->setValue("");
}
if(dialogInsertVari->exec() == QDialog::Accepted && sysPara){
// qDebug()<< "dialogInsertVari::Accepted";
int pixelSize = ui->labelFontSize->text().toInt();
QFont font;
fontname=ui->labFontFamily->text();
//qDebug()<< "fontname:"<<fontname;
font.setFamily(
//Public::getFontFamily(pixelSize) // 20160812 未实现横向字体 以前的
fontname // 20160812
);
//qDebug()<< "font name:"<<Public::getFontFamily(pixelSize, 0);
//pixelSize==7? font.setFamily(fontname):font.setFamily(Public::getFontFamily(pixelSize, 0));
font.setPixelSize(pixelSize);
font.setWeight(ui->checkBoxBold->isChecked() && (pixelSize<=16) ?QFont::Bold:QFont::Normal);
font.setLetterSpacing(QFont::AbsoluteSpacing,sysPara->para.textEditCharSpace);
//qDebug()<<font<<sysPara->para.textEditCharSpace<<QFont::AbsoluteSpacing;
QFontMetrics fontMetrics(font);
int width = (fontMetrics.width("0123456789"))/10;
if(sysPara->para.flagOfModuleDecimal || sysPara->para.flagOfModuleHide){
width = (fontMetrics.width("0123456789.m "))/13;
}
// if(sysPara->para.printNumPoint)
// {
// width = (fontMetrics.width("0123456789."))/11 ;
// }
// else
// {
// width = (fontMetrics.width("0123456789"))/10 ;
// }
int height = fontMetrics.ascent()+ fontMetrics.descent();
int digitalNum;
int varType;
// 调整变量占位区的大小
//qDebug()<<"leading:"<<fontMetrics.leading()<<"descent:"<<fontMetrics.descent()<<"ascent:"<<fontMetrics.ascent();
#ifndef ADJ
height = Public::getNumberHeight(font);
//if(pixelSize==12 && height<10) height =12;
//qDebug()<<"Var:"<<height;
#endif
unsigned char splitMode=sysPara->para.ExpirySplitMode;
dialogInsertVari->getValue(&varType,&digitalNum,&splitMode);
fmt = textEdit->currentCharFormat ();
if((varType<9 || varType==13 || varType==14 || varType == 15) // 普通变量;varType=13 is CNT3 var
// ||(varType>=20 && varType<29) // 横左变量
// ||(varType>=40 && varType<49) // 右横变量
)
{
int varType1= varType;
if(fontname.contains("SerifL") ||fontname.contains("serifl") )
varType1= 20+varType;
else if(fontname.contains("SerifR") ||fontname.contains("serifr") )
varType1= 20+varType;
else if(fontname.contains("bangla") )
varType1= 30+varType;
else if(fontname.contains("biyangF") )
varType1= 50+varType;
else if(fontname.contains("Roman") )
varType1= 60+varType;
// varType1= 40+varType; // 变量右横时取 40,左横时取 20
// qDebug()<<"pixelSize:"<<pixelSize;
// if(pixelSize)
// width += 1;
textEdit->insertHtml(QString("<img src=':/%1/%5/../image/digitalWidth%2.bmp' height='%3' width='%4'/>")
.arg(varType).arg(ui->checkBoxBold->isChecked() && (pixelSize<=16)?(digitalNum*100 + 75):digitalNum)
.arg(height+1).arg(width*digitalNum).arg(varType1)); //插入索引后
// qDebug()<<"vari heigh:"<<height+1;
// qDebug()<<"vari width:"<<width*digitalNum;
//textEdit->mergeCurrentCharFormat(fmt);
} // 普通变量 VarType<=8
else if(varType >=9 && varType <=11)
{ //
#ifdef _2DCODE_
s= sysPara->para.qrOption.text;
dlgQrcode->move( (this->width() - dlgQrcode->width())/2 ,10);
if(varType==9){
dlgQrcode->flagInsert=1;
sysPara->para.qrOption.AutoCount=1;
sysPara->para.qrOption.AutoRefresh=1;
sysPara->para.qrOption.type=0;
sysPara->para.qrOption.cntNum=digitalNum; //digitalNum
dlgQrcode->setWindowTitle(tr("二维码变量设置"));
dlgQrcode->SetOption(&sysPara->para.qrOption);
dlgQrcode->setCntCheckBoxHide(0);
dlgQrcode->show();
}
else if(varType==10){
dlgQrcode->flagInsert=1;
sysPara->para.qrOption.AutoCount=1;
sysPara->para.qrOption.AutoRefresh=1;
sysPara->para.qrOption.type=1;
sysPara->para.qrOption.cntNum=digitalNum;
dlgQrcode->setCntCheckBoxHide(0);
dlgQrcode->setWindowTitle("二维码变量设置");
dlgQrcode->SetOption(&sysPara->para.qrOption);
dlgQrcode->show();
}
else if(varType==11){
barcode->move(0,0);
barcode->flagInsert=1;
sysPara->para.qrOption.AutoCount=1;
sysPara->para.qrOption.AutoRefresh=1;
sysPara->para.qrOption.type=1;
sysPara->para.qrOption.cntNum=digitalNum;
barVarFont = font;
barVarHeight=height;
barVarWidth =width;
//barcode->setCntCheckBoxHide(0);
barcode->setWindowTitle("条形码变量设置");
barcode->SetOption(&sysPara->para.bcOption);
barcode->show();
}
textEdit->mergeCurrentCharFormat(fmt);
#endif
}
else if(varType ==RANDOMNUM){ //12
//digitalNum=13;
//qDebug()<<"digitalNum"<<digitalNum;
textEdit->insertHtml(QString("<img src=':/%1/image/digitalWidth%2.bmp' height='%3' width='%4'/>")
.arg(varType).arg(ui->checkBoxBold->isChecked() && (pixelSize<=16)?(digitalNum*100 + 75):digitalNum)
.arg(height+1).arg(width*digitalNum)); //插入索引后
textEdit->mergeCurrentCharFormat(fmt);
}
else if(varType ==EXPIRYDATE){ //80 :/80/image/expiryDate8.bmp qrc:/80/image/expiryDate875.bmp
// QImage img;
// img.load("/home/student/mini2440/UP/QtUI/QRUI_SUNV54/80/image/digitalWidth8.bmp");
// img.setPixel(0,4,0xffff0Cfc);
// img.setPixel(0,5,0xffff0Cfc);
// img.save("/home/student/mini2440/UP/QtUI/QRUI_SUNV54/80/image/curDate8.bmp");
// 0xff00fc
int varType1 = varType;
if(fontname.contains("bangla") )
{
varType1= 10+varType;
}
else if(fontname.contains("biyangF") )
{
varType1= 20+varType;
}
else if(fontname.contains("Roman") )
{
varType1= 30+varType;
}
sysPara->print.ExpiryVar.splitMode=splitMode;
font.setLetterSpacing(QFont::AbsoluteSpacing,sysPara->para.textEditCharSpace);
QFontMetrics fontMetrics(font);
QHash<int, QString> dateFormat;
dateFormat.insert(0,"yyyy-MM-dd");
dateFormat.insert(1,"yyyy/MM/dd");
dateFormat.insert(2,"yyyyMMdd");
dateFormat.insert(3,"yyyy年MM月dd日");
dateFormat.insert(4,"yyyy-MM-dd hh:mm");
dateFormat.insert(5,"yyyy/MM/dd hh:mm");
dateFormat.insert(6,"yyyyMMddhhmm");
dateFormat.insert(7,"yyyy年MM月dd日 hh:mm");
dateFormat.insert(8,"hh:mm");
dateFormat.insert(9,"ddhhmm");
dateFormat.insert(10,"dd MM yy");
dateFormat.insert(11,"dd/MM/yy");
dateFormat.insert(12,"dd/MM/yyyy");
dateFormat.insert(13,"dd-MM-yy");
dateFormat.insert(14,"dd-MM-yyyy");
//dateFormat.insert(10,"x");
QString DateTime = QDateTime::currentDateTime().toString(dateFormat.value(splitMode));
//qDebug()<<"DateTime "<<DateTime;
int dateTimeWidth = fontMetrics.width(DateTime);
// qDebug()<<" ExpiryVar height"<<height;
// qDebug()<<"splitMode="<<splitMode;
// qDebug()<<" dateTimeWidth"<<dateTimeWidth;
if(DateTime == "x")
{
qDebug()<<" x handle";
textEdit->insertHtml(QString("<img src=':/%1/image/digitalWidth%2.bmp' height='%3' width='%4'/>")
.arg(varType).arg(ui->checkBoxBold->checkState() && (pixelSize<=16)?(175):1)
.arg(height+1).arg(dateTimeWidth+4)); //插入索引后
sysPara->print.ExpiryVar.bold = ui->checkBoxBold->checkState();
textEdit->mergeCurrentCharFormat(fmt);
}else
{
if(splitMode == 3 || splitMode ==7 )
{
height = fontMetrics.ascent();
}
// textEdit->insertHtml(QString("<img src=':/%1/image/expiryDate%2.bmp' height='%3' width='%4'/>")
// .arg(varType).arg(ui->checkBoxBold->checkState() && (pixelSize<=16)?(875):8)
// .arg(height+1).arg(width*(splitMode<2?9:7)+(width>>1))); //插入索引后
//sysPara->print.ExpiryVar.bold = ui->checkBoxBold->isChecked();
textEdit->insertHtml(QString("<img src=':/%1/image/expiryDate%2.bmp' height='%3' width='%4'/>")
.arg(varType1).arg(ui->checkBoxBold->checkState() && (pixelSize<=16)?(875):8)
.arg(height+1).arg(dateTimeWidth+4)); //插入索引后
sysPara->print.ExpiryVar.bold = ui->checkBoxBold->checkState();
textEdit->mergeCurrentCharFormat(fmt);
}
}
else if(varType ==CURDATE ){ //81 :/80/image/expiryDate8.bmp qrc:/80/image/curDate8.bmp
#if 0
QImage img;
img.load("/home/student/mini2440/UP/QtUI/QRUI_SUNV54/80/image/digitalWidth8.bmp");
img.setPixel(0,4,0xffff0Cfc);
img.setPixel(0,5,0xffff0Cfc);
img.save("/home/student/mini2440/UP/QtUI/QRUI_SUNV54/81/image/curDate8.bmp");
#endif
int varType1 = varType;
if(fontname.contains("bangla") )
{
varType1= 10+varType;
}
else if(fontname.contains("biyangF") )
{
varType1= 20+varType;
}
else if(fontname.contains("biyangF") )
{
varType1= 30+varType;
}
// 0xff00fc
//qDebug()<<"CurDateVar height"<<height;
sysPara->print.CurDateVar.splitMode = splitMode;
font.setLetterSpacing(QFont::AbsoluteSpacing, sysPara->para.textEditCharSpace);
QFontMetrics fontMetrics(font);
QHash<int, QString> dateFormat;
dateFormat.insert(0,"yyyy-MM-dd");
dateFormat.insert(1,"yyyy/MM/dd");
dateFormat.insert(2,"yyyyMMdd");
dateFormat.insert(3,"yyyy年MM月dd日");
dateFormat.insert(4,"yyyy-MM-dd hh:mm");
dateFormat.insert(5,"yyyy/MM/dd hh:mm");
dateFormat.insert(6,"yyyyMMddhhmm");
dateFormat.insert(7,"yyyy年MM月dd日 hh:mm");
dateFormat.insert(8,"hh:mm");
dateFormat.insert(9,"ddhhmm");
dateFormat.insert(10,"dd MM yy");
dateFormat.insert(11,"dd/MM/yy");
dateFormat.insert(12,"dd/MM/yyyy");
dateFormat.insert(13,"dd-MM-yy");
dateFormat.insert(14,"dd-MM-yyyy");
//dateFormat.insert(10,"x");
// dateFormat.insert(10,"A dd MM yy");
QString DateTime = QDateTime::currentDateTime().toString(dateFormat.value(splitMode));
int dateTimeWidth = fontMetrics.width(DateTime) ;
qDebug()<<"insert splitMode="<<splitMode;
#if 0
if(DateTime != "x")
{
// textEdit->insertHtml(QString("<img src=':/%1/image/curDate%2.bmp' height='%3' width='%4'/>")
// .arg(varType).arg(ui->checkBoxBold->checkState() && (pixelSize<=16)?(875):8)
// .arg(height+1).arg(width*(splitMode<2?9:7)+(width>>1))); //插入索引后
// sysPara->print.CurDateVar.bold = ui->checkBoxBold->checkState();
textEdit->insertHtml(QString("<img src=':/%1/image/curDate%2.bmp' height='%3' width='%4'/>")
.arg(varType).arg(ui->checkBoxBold->checkState() && (pixelSize<=16)?(875):8)
.arg(height+1).arg(dateTimeWidth+2)); //插入索引后
sysPara->print.CurDateVar.bold = ui->checkBoxBold->checkState();
//qDebug()<<"sysPara->print.CurDateVar.bold:"<<sysPara->print.CurDateVar.bold;
textEdit->mergeCurrentCharFormat(fmt);
}
#endif
if(DateTime == "x")
{
qDebug()<<" x handle";
textEdit->insertHtml(QString("<img src=':/%1/image/curDate%2.bmp' height='%3' width='%4'/>")
.arg(varType).arg(ui->checkBoxBold->checkState() && (pixelSize<=16)?(875):1)
.arg(height+1).arg(dateTimeWidth+4)); //插入索引后
textEdit->mergeCurrentCharFormat(fmt);
}else
{
if(splitMode == 3 || splitMode ==7 )
{
height = fontMetrics.ascent();//fontMetrics.ascent()+ fontMetrics.descent();
}
// textEdit->insertHtml(QString("<img src=':/%1/image/curDate%2.bmp' height='%3' width='%4'/>")
// .arg(varType).arg(ui->checkBoxBold->checkState() && (pixelSize<=16)?(875):8)
// .arg(height+1).arg(width*(splitMode<2?9:7)+(width>>1))); //插入索引后
// sysPara->print.CurDateVar.bold = ui->checkBoxBold->checkState();
qDebug()<<"height:"<<height;
textEdit->insertHtml(QString("<img src=':/%1/image/curDate%2.bmp' height='%3' width='%4'/>")
.arg(varType1).arg(ui->checkBoxBold->checkState() && (pixelSize<=16)?(875):8)
.arg(height+1).arg(dateTimeWidth+4)); //插入索引后
//sysPara->print.CurDateVar.bold = ui->checkBoxBold->checkState();
//qDebug()<<"sysPara->print.CurDateVar.bold:"<<sysPara->print.CurDateVar.bold;
textEdit->mergeCurrentCharFormat(fmt);
}
}
else if(varType == CURCLASS) { //82 :/82/image/curDate1.bmp
font.setLetterSpacing(QFont::AbsoluteSpacing,sysPara->para.textEditCharSpace);
QFontMetrics fontMetrics(font);
int dateTimeWidth = fontMetrics.width("A") ;
int pixBmpSize = 1;
if (ui->checkBoxBold->checkState() && (pixelSize<=16)) {
pixBmpSize = 875;
}
else {
if(pixelSize >= 9) {
pixBmpSize = 91;
}
else {
pixBmpSize = 1;
}
}
qDebug()<<"height:"<<height<<"pixBmpSize:"<<pixBmpSize;
textEdit->insertHtml(QString("<img src=':/%1/image/class%2.bmp' height='%3' width='%4'/>")
.arg(varType).arg(pixBmpSize)
.arg(height+1).arg(dateTimeWidth+2)); //插入索引后
textEdit->mergeCurrentCharFormat(fmt);
}
textEdit->setFocus();
}
}
void TextEditOption::mergeFormatOnWordOrSelection(const QTextCharFormat &format)
{
QTextCursor cursor = textEdit->textCursor();
//if (!cursor.hasSelection())
// cursor.select(QTextCursor::WordUnderCursor);
//cursor.mergeCharFormat(format);
//textEdit->setTextCursor(cursor);
//qDebug()<<"mergeFormatOnWordOrSelection"<<format;
//qDebug()<<cursor;
textEdit->mergeCurrentCharFormat(format);
}
void TextEditOption::updateSysParaToUI() //重载
{
if(sysPara){
/*务必先设置行距*/
dialogLineSpace->setValue(sysPara->para.textEditLineSpace,sysPara->para.textEditCharSpace);
onDialogLineSpaceAccepted();
/*将文件打开*/
QString file = QString(sysPara->para.lastOpenedFileName);
if(QFile::exists(file)){
sysPara->sysFile =file;
onFileOpen(file,false);
}
dialogFontSize->setValue(sysPara->para.fontPixelSize);
}
}
void TextEditOption::onMbSetLineAndChar(int line_space, int char_space)
{
sysPara->para.textEditLineSpace = line_space;
sysPara->para.textEditCharSpace = char_space;
dialogLineSpace->setValue(sysPara->para.textEditLineSpace,sysPara->para.textEditCharSpace);
onDialogLineSpaceAccepted();
}
QLabel *TextEditOption::getLabelFontSize(){
return ui->labelFontSize;
}
QLabel *TextEditOption::getLabelFontFamily(){
return ui->labFontFamily;
}
void TextEditOption::setFontFormat(){
if(sysPara){
qreal pixelSize = ui->labelFontSize->text().toFloat();
if(pixelSize < Public::getMinFontPixelSize())
pixelSize = sysPara->para.fontPixelSize;
if(pixelSize < Public::getMinFontPixelSize()){
pixelSize = Public::getMinFontPixelSize();
}
if (pixelSize >= 0) {
QTextCharFormat fmt;
int DPI = textEdit->logicalDpiX();
DPI = DPI?DPI:1;
qreal pointSize = pixelSize*72/DPI; //Pixel = DPI * Point / 72
fmt.setFontPointSize(pointSize);
#ifdef VNLGXX
QString fontFamily = dialogFontSize->getFontFamily();
#else
QString fontFamily = // Public::getFontFamily((int)pixelSize);
ui->labFontFamily->text();
ui->labFontFamily->setText(fontFamily);
#endif
fmt.setFontFamily(fontFamily);
fmt.setFontWeight(ui->checkBoxBold->isChecked() && (pixelSize<=16)? QFont::Bold:QFont::Normal);
//fmt.setUnderlineStyle();
//fmt.setVerticalAlignment(QTextCharFormat::AlignBottom);
//QfontMetrics.bottom
//fmt.setUnderlineStyle(QTextCharFormat::NoUnderline);
//qDebug() << "logicalDpiX:" << textEdit->logicalDpiX() << "logicalDpiY:" << textEdit->logicalDpiY();
//qDebug() << "physicalDpiX:" << textEdit->physicalDpiX() << "physicalDpiX:" << textEdit->physicalDpiX();
mergeFormatOnWordOrSelection(fmt);
// QFont font = textEdit->document()->defaultFont();
// font.setPointSizeF(pointSize);
// textEdit->document()->setDefaultFont(font);
//qDebug()<<"Font:"<<fontFamily<<pixelSize;
}
}
}
void TextEditOption::currentCharFormatChanged(const QTextCharFormat &format){
QFont font = format.font();
//qDebug()<<"pixelSize:"<<font.pixelSize();
//qDebug()<<"pixelSize:"<<font.pointSize();
sysPara->para.fontPixelSize = font.pointSize();
dialogFontSize->setValue(sysPara->para.fontPixelSize);
ui->checkBoxBold->setChecked(font.bold());
}
QPushButton * TextEditOption::getPushButtonPreview(){
return ui->pushButtonPreview;
}
QCheckBox *TextEditOption::getCheckBoxBold(){
return ui->checkBoxBold;
}
void TextEditOption::on_pushButtonFile_pressed()
{
if(sceneEditItem)
{
dialogFileOperation->refreshListView(TXTFILE);
dialogFileOperation->exec();
}
else
{
dialogFileOperation->refreshListView(editMode);
dialogFileOperation->exec();
}
}
void TextEditOption::on_buttonSelectFont_pressed()
{
if(dialogFontSize->exec() == QDialog::Accepted){
int fontSize;
dialogFontSize->getValue(&fontSize);
ui->labFontFamily->setText(dialogFontSize->getFontFamily());
if(sysPara){
sysPara->para.fontPixelSize = fontSize;
}
ui->labelFontSize->setText(QString::number(fontSize));
setFontFormat();
textEdit->setFocus();
emit fontSizeChange(fontSize);
bool flagBangal=false;
if(dialogFontSize->getFontFamily() == "bangla")
flagBangal = true;
emit switchBengalLanguage(flagBangal);
}
}
void TextEditOption::on_checkBoxBold_released()
{
setFontFormat();
textEdit->setFocus();
}
void TextEditOption::onDialogLineSpaceAccepted(){
dialogLineSpace->getValue(&sysPara->para.textEditLineSpace,&sysPara->para.textEditCharSpace);
// QString str = textEdit->toHtml();
// updateFileVariWidth(str);
// textEdit->setHtml(str);
for(QTextBlock textBlock = textEdit->document()->begin();textBlock != textEdit->document()->end(); textBlock = textBlock.next()){
QTextBlockFormat textBlockFormat = textBlock.blockFormat();
textBlockFormat.setAlignment(Qt::AlignBottom);
textBlockFormat.setTopMargin(-1);
textBlockFormat.setBottomMargin(sysPara->para.textEditLineSpace-1);
QTextCursor textCursor = textEdit->textCursor();
textCursor.setPosition(textBlock.position());
textCursor.setBlockFormat(textBlockFormat);
textEdit->setTextCursor(textCursor);
}
// QString str = textEdit->toHtml();
// updateFileVariWidth(str);
// textEdit->setHtml(str);
QFont font = textEdit->font();
font.setLetterSpacing(QFont::AbsoluteSpacing,sysPara->para.textEditCharSpace);
textEdit->setFont(font);
}
void TextEditOption::on_buttonLineSpace_clicked()
{
if(dialogLineSpace->exec() == QDialog::Accepted){
onDialogLineSpaceAccepted();
sysPara->saveParaToFile();
textEdit->setFocus();
sysPara->para.alterPrint.lineSpace = sysPara->para.textEditLineSpace;
}
}
void TextEditOption::InsertQRCodeToEdit(QString barCodeName,int width,int height ,int enSave){
#ifdef _2DCODE_
textEdit->setText("");
InsertQRCodeToEdit(barCodeName, width, height);
fileName = DOC_ROOT_DIR +QFileInfo(barCodeName).baseName() +".html";
if(enSave) saveFile();
#endif
}
void TextEditOption::InsertBarCodeToEdit(QString barCodeName,int width,int height ,int enSave){
#ifdef _2DCODE_
textEdit->setText("");
InsertBarCodeToEdit(barCodeName, width, height);
fileName = DOC_ROOT_DIR +QFileInfo(barCodeName).baseName() +".html";
if(enSave) saveFile();
#endif
}
void TextEditOption::InsertBarCodeToEdit(QString barCodeName,int width,int height )
{
#ifdef _2DCODE_
//dialogInsertVari->getValue(&varType,&digitalNum);
QTextCharFormat fmt = textEdit->currentCharFormat ();
textEdit->insertHtml(QString("<img src='%1' height='%2' width='%3'/>")
.arg(barCodeName)
.arg(height).arg(width)); //插入索引后
textEdit->mergeCurrentCharFormat(fmt);
//textEdit->setFocus();
//qDebug()<<"TEOption:"<<barCodeName<<width<<height;
#endif
}
void TextEditOption::InsertQRCodeToEdit(QString barCodeName,int width,int height )
{
#ifdef _2DCODE_
//dialogInsertVari->getValue(&varType,&digitalNum);
QTextCharFormat fmt = textEdit->currentCharFormat ();
textEdit->insertHtml(QString("<img src='%1' height='%2' width='%3'/>")
.arg(barCodeName)//QFileInfo(barCodeName).
.arg(width).arg(height)); //插入索引后
textEdit->mergeCurrentCharFormat(fmt);
//textEdit->setFocus();
//qDebug()<<"TEOption:"<<barCodeName<<width<<height;
#endif
}
void TextEditOption::onQRCodeClose(){
#ifdef _2DCODE_
if(dlgQrcode->flagInsert ) {
dlgQrcode->GetOption((qrOption_t*)&sysPara->para.qrOption);
dlgQrcode->flagInsert=0;
if(sysPara->para.EditMode==PICFILE){
}
else {
if(sysPara->para.qrOption.type==0){
textEdit->insertHtml(QString("<img src=':/%1/image/DMTV%2.bmp' height='%2' width='%3' />")
.arg(9).arg(sysPara->para.qrOption.height).arg(sysPara->para.qrOption.width)); //插入索引后
}
else if(sysPara->para.qrOption.type==1){
textEdit->insertHtml(QString("<img src=':/%1/image/QRV%2.bmp' height='%2' width='%3' />")
.arg(10).arg(sysPara->para.qrOption.height).arg(sysPara->para.qrOption.width)); //插入索引后
}
else if(sysPara->para.qrOption.type==2){
textEdit->insertHtml(QString("<img src=':/%1/image/BARV%2.bmp' height='%2' width='%3' />")
.arg(11).arg(sysPara->para.qrOption.height).arg(sysPara->para.qrOption.width)); //插入索引后
}
}
}
sysPara->saveParaToFile();
#endif
}
void TextEditOption::onBarCodeClose(){
#ifdef _2DCODE_
bcPara_t bcoption;
if(barcode->flagInsert ) {
barcode->GetOption((bcOption_t*)&sysPara->para.bcOption);
//qDebug()<<"onBarCodeClose"<<sysPara->para.bcOption.barType<<sysPara->para.bcOption.height;
barcode->GetOption2((bcPara_t*)&bcoption);
//qDebug()<<"onBarCodeClose"<<bcoption.type;
sysPara->para.bcOption.barType = bcoption.type;
barcode->flagInsert=0;
if(sysPara->para.EditMode==PICFILE){
}
else
{
fmt = textEdit->currentCharFormat ();
textEdit->insertHtml(QString("<img src=':/%1/image/BARV%4.bmp' height='%2' width='%3' />")
.arg(11).arg(bcoption.height).arg(bcoption.width).arg(bcoption.type*100+bcoption.height));
//插入索引后
//qDebug()<<QString("<img src=':/%1/image/BARV%4.bmp' height='%2' width='%3' />")
// .arg(11).arg(bcoption.height).arg(bcoption.width).arg(bcoption.type*100+bcoption.height);
int varType1= 7;//CNT1:7, CNT2:8
int digitalNum;
if(sysPara->para.bcOption.var1En){
digitalNum=sysPara->para.bcOption.var1Num;
textEdit->insertHtml(QString("%1%2").arg(sysPara->para.bcOption.TxtModule).arg(sysPara->para.bcOption.TxtLine));
textEdit->insertHtml(QString("<img src=':/%1/image/digitalWidth%2.bmp' height='%3' width='%4'/>")
.arg(varType1).arg(ui->checkBoxBold->isChecked() && (barVarHeight<=16)?(digitalNum*100 + 75):digitalNum)
.arg(barVarHeight+1).arg( barVarWidth*digitalNum)); //插入索引后
}
if(sysPara->para.bcOption.var2En)
{
digitalNum=sysPara->para.bcOption.var2Num;
textEdit->insertHtml(QString("<img src=':/%1/image/digitalWidth%2.bmp' height='%3' width='%4'/>")
.arg(varType1+1).arg(ui->checkBoxBold->isChecked() && (barVarHeight<=16)?(digitalNum*100 + 75):digitalNum)
.arg(barVarHeight+1).arg( barVarWidth*digitalNum)); //插入索引后
}
textEdit->mergeCurrentCharFormat(fmt);
}
}
sysPara->saveParaToFile();
#endif
}
void TextEditOption::onEditItemMode()
{
ui->bottonNew->setDisabled(true);
ui->buttonSaveAS->setDisabled(true);
ui->pushButtonPreview->setDisabled(true);
ui->bottonSave->setText(tr("完成"));
sceneEditItem = true;
}
void TextEditOption::editItemModeDone()
{
sceneEditItem = false;
ui->bottonNew->setDisabled(false);
ui->buttonSaveAS->setDisabled(false);
ui->pushButtonPreview->setDisabled(false);
ui->bottonSave->setText(tr("保存"));
}
void TextEditOption::modbus_insert_pic(QString filename)
{
// on_pushButtonFile_pressed();
dialogFileOperation->modbus_openfile(filename);
}
void TextEditOption::updateSysParaToZero() //重载
{
if(sysPara){
dialogLineSpace->setValue(sysPara->para.textEditLineSpace,sysPara->para.textEditCharSpace);
onDialogLineSpaceAccepted();
}
}
void TextEditOption::SetHiddenValue(bool select)
{
dialogInsertVari->EnableHiddenValue(select);
}
void TextEditOption::updateFileVariWidth(QString &str)
{
QString pattern = "<img src=\":/(\\d*)/(\\d*)/../image/digitalWidth(\\d*).bmp\" width=\"(\\d*)\" height=\"(\\d*)\" />";
QRegExp rx(pattern);
int from = 0;
// 正常变量
while(from < str.size() && from != -1) {
from = str.indexOf(rx,from);//返回匹配到到起始地址
bool ok;
if(from != -1){//找到匹配的
int width = rx.cap(4).toInt(&ok)*(sysPara->status.addSpace?2:1);
int digitalNum = rx.cap(3).toInt(&ok);//第二个匹配,数字到个数
if(digitalNum>100){ //加粗
digitalNum/=100;
ui->checkBoxBold->setChecked(true);
}
// 获取匹配的<img>标签
QString matchedTag = rx.cap(0);
// 构建新的<img>标签,替换width属性值
QString newTag = matchedTag;
int singlewidth = getSingleDigitWidth();
int newWidth= (singlewidth + sysPara->para.textEditCharSpace) * digitalNum;
if(newWidth == width){
return;
}
newTag.replace(QString("width=\"%1\"").arg(rx.cap(4)), QString("width=\"%1\"").arg(newWidth));
// 替换原始文本中的<img>标签
str.replace(from, rx.matchedLength(), newTag);
from ++;
from+=newTag.length();
}
}
}
int TextEditOption::getSingleDigitWidth()
{
int pixelSize = ui->labelFontSize->text().toInt();
QFont font;
QString fontname=ui->labFontFamily->text();
font.setFamily(
fontname // 20160812
);
font.setPixelSize(pixelSize);
font.setWeight(ui->checkBoxBold->isChecked() && (pixelSize<=16) ?QFont::Bold:QFont::Normal);
font.setLetterSpacing(QFont::AbsoluteSpacing,0);
QFontMetrics fontMetrics(font);
int width = (fontMetrics.width("0"));
// int width = (fontMetrics.width("0123456789"))/10;
// if(sysPara->para.flagOfModuleDecimal || sysPara->para.flagOfModuleHide){
// width = (fontMetrics.width("0123456789.m "))/13;
// }
return width;
}