Files
VX5-DiaphragmPump/PicEdit.cpp
T
2026-08-26 16:13:59 +08:00

959 lines
32 KiB
C++

#include "PicEdit.h"
#include "ui_picedit.h"
#include "SysPara.h"
#include <QMessageBox>
#include <QDebug>
#include "ui_InputMethod.h"
#include "InputMethod.h"
#include "Public.h"
#include "stdio.h"
#include "myinclude.h"
#include "dlgdrawinit.h"
#include <QTranslator>
#include <QTime>
#include<iostream>
#include<string>
PicEdit::PicEdit(QWidget *parent) :
QWidget(parent),
ui(new Ui::PicEdit)
{
ui->setupUi(this);
ui->lineEditInputTxt->setMaximumWidth(1);
fileDialog = 0;
charSpace=0;
dlgdraw =0;
lineSpace=1;
openedFileName = "";
newFileAppending = false;//Qt::Key_Backspace
inserPicFile = false;
connect(ui->widgetPic,SIGNAL(picWidgetModify()),this,SLOT(enableSaveButton()));
connect(ui->widgetPic,SIGNAL(ShowKeybord()),this,SLOT(showKeybord()));
connect(ui->widgetPic,SIGNAL(rowColChanged(QString)),ui->label_ROWCOL,SLOT(setText(QString)));
connect(ui->widgetPic,SIGNAL(currXYChanged(QString)),ui->label_CURXY,SLOT(setText(QString)));
connect(ui->widgetPic,SIGNAL(ChangeFont(int)),this,SLOT(onChangeFont(int)));
#ifdef MYSAVEFILEDLG
dialogSaveFile =new DialogSaveFile(0);
#endif
textEdit=new QTextEdit;
zkEditEn=0;
dialogFileOperation = new DialogFileOperation(0);
dialogInsertVari = new DialogInsertVari(0);
dialogLineSpace = new DialogLineSpace(0);
timer = new QTimer();
connect(timer, SIGNAL(timeout()), ui->widgetPic, SLOT(cursorFlash()));
connect(timer, SIGNAL(timeout()), this, SLOT(cursorFlash()));
timer->start(500);
ui->pushButtonZKEdit->setEnabled (zkEditEn);
VarNum=0;
isInput =0;
ui->scrollArea->setAlignment ( Qt::AlignAbsolute );
ui->radioButtonCharCurrent->setChecked (1);
ui->widgetPic->charPara.CharCurrent=1;
ui->comboBoxLattice->setCurrentIndex (1);
ui->pushButtonSave->setEnabled(false);
forcePicWidgetSize = false;
ui->widgetPic->charPara.DrawGridEn=true;
ui->checkBoxDrawGridEn->setCheckState ((Qt::CheckState)ui->widgetPic->charPara.DrawGridEn );
ui->widgetPic->charPara.DrawEn=false;
ui->widgetPic->initWidget(300,ui->spinBoxHeightPoint->value());
setEnterKey(1);
openedFileName = "";
ui->widgetPic->setScale (3);
ui->widgetPic->resizeWidget (150,8);
ui->labelScaleLeval->setText(tr("放大倍数:%1").arg(ui->widgetPic->getScaleValue()));
memset(var,0,sizeof(var));
ui->widgetPic->picSetHome();
ui->labInserMode->setText((ui->widgetPic->charPara.insertMode)? tr("插入模式"):tr("修改模式"));
ui->label_Note->setText(tr("编辑现有的多字体文件\r\n请使用修改模式!!!"));
ui->widgetPic->charPara.DrawEn=0;
ui->widgetPic->drawPara.width = 10;
ui->widgetPic->drawPara.height = 8;
ui->checkBoxControlChar->hide();
ui->checkBoxBold->hide();
// ui->pushButtonDrawPIC->hide();
}
PicEdit::~PicEdit()
{
delete ui;
if(fileDialog)
delete fileDialog;
if(fileDialog)
delete fileDialog;
if(dialogInsertVari)
delete dialogInsertVari;
if(dialogLineSpace)
delete dialogLineSpace;
if(dlgdraw) delete dlgdraw;
#ifdef MYSAVEFILEDLG
if(dialogSaveFile) delete dialogSaveFile;
if(dialogFileOperation) delete dialogFileOperation;
#endif
}
void PicEdit::setEnterKey(int n)
{
// ui->pushButtonEnsure->setIcon(QIcon( n?":/icon/sure.png":":/icon/keyenter.png")); // icon().addPixmap(,0,0);
// ui->pushButtonEnsure->setText(n?"":"换行"); ///icon/sure.png
}
void PicEdit::on_pushButtonZKEdit_pressed( )
{
//qDebug ()<<"start 1"<<ui->widgetPic->charPara.CharWidth<<ui->widgetPic->charPara.CharHeight;
//qDebug ()<<"11";
if(ui->widgetPic->zkEditEn)
{
ui->widgetPic->zkEditEn=0;
ui->pushButtonNew->setEnabled (true);
ui->pushButtonInsertVari->setEnabled (true);
ui->pushButtonOpen->setEnabled (true);
ui->pushButtonSaveAs->setEnabled (true);
ui->pushButtonImport->setEnabled (true);
ui->pushButtonSave->setText (tr("保存/打印"));
ui->pushButtonSave->setText (tr("保存"));
ui->pushButtonZKEdit->setText (tr("字库编辑"));
ui->comboBoxLattice->setDisabled (0);
ui->spinBoxHeightPoint->setDisabled (0);
//ui->spinBoxWidthPoint->setDisabled (0);
ui->widgetPic->charPara.CharCurrent=1;
//ui->widgetPic->charPara.CurrentEn =1;
ui->widgetPic->charPara.DrawEn =0;
ui->widgetPic->charPara.LineSpace=1;
ui->pushButtonImport->setEnabled(true);
ui->widgetPic->initWidget (30,ui->widgetPic->charPara.LineHeight);
ui->labelNote2->setText (tr("点击光栅可打开键盘,点击空白处关闭"));// 请选择字体,打开键盘并输入要编辑的字符.
// 点击光栅可打开键盘,点击其它空白处可关闭键盘.
//qDebug ()<<"22";
emit zkEditEnStatus(tr("信息编辑"));
}
else {
//qDebug ()<<"33";
ui->widgetPic->zkEditNow();
ui->widgetPic->charPara.DrawEn =1;
ui->pushButtonNew->setDisabled(true);
ui->pushButtonInsertVari->setDisabled (true);
ui->pushButtonOpen->setDisabled (true);
ui->pushButtonSaveAs->setDisabled (true);
ui->pushButtonImport->setDisabled (true);
ui->pushButtonSave->setDisabled (true);
//ui->comboBoxLattice->setDisabled (true);
ui->spinBoxHeightPoint->setDisabled (true);
//ui->spinBoxWidthPoint->setDisabled (true);
//qDebug ()<<"441";
ui->pushButtonSave->setText (tr("字库保存"));
//qDebug ()<<"442";
ui->pushButtonZKEdit->setText (tr("返回信息编辑"));
//qDebug ()<<"443";
ui->pushButtonImport->setEnabled(false);
ui->labelNote2->setText (tr("请选择字体,打开键盘并输入要编辑的字符"));// 请选择字体,打开键盘并输入要编辑的字符.
//qDebug ()<<"44";
// 点击光栅可打开键盘,点击其它空白处可关闭键盘.
//emit zkEditEnStatus(tr("字库编辑"));
//ui->lineEditInputTxt->setFocus ();
ui->widgetPic->zkEditEn=1;
}
//qDebug ()<<"start 2"<<ui->widgetPic->charPara.CharWidth<<ui->widgetPic->charPara.CharHeight;
}
void PicEdit::checkNewFileAppending(){
if(newFileAppending){
ui->widgetPic->initWidget(300,ui->spinBoxHeightPoint->value());
openedFileName = "";
}
newFileAppending = false;
}
void PicEdit::onSave_File_reject(){
checkNewFileAppending();
}
void PicEdit::bindSysPara(SysPara *sysPara){
ui->widgetPic->bindSysPara (sysPara);
this->sysPara = sysPara;
}
bool PicEdit::maybeSave(){
if(!ui->widgetPic->isModified())
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_pushButtonSave_clicked();
return false;
}
else if (msgBox.clickedButton() == cancleSaveButton) {
return true;
}
else
return false;
return true;
}
void PicEdit::on_pushButtonNew_pressed(){
if(maybeSave())
{
ui->widgetPic->initWidget(300,ui->spinBoxHeightPoint->value()+1);
openedFileName = "";
ui->labelFileName->setText("");
ui->labelScaleLeval->setText(tr("放大倍数:%1").arg(ui->widgetPic->getScaleValue()));
VarNum=0;
ui->widgetPic->zkEditEn=false;
memset(var,0,sizeof(var));
ui->widgetPic->charPara.DrawEn =0;
ui->widgetPic->charPara.CharCurrent=1;
ui->widgetPic->charPara.CurrentEn =1;
ui->lineEditInputTxt->setFocus ();
}
}
void PicEdit::showKeybord( )
{
if(!ui->widgetPic->charPara.DrawEn || ui->widgetPic->zkEditEn ) ui->lineEditInputTxt->setFocus ();
}
void PicEdit::enableSaveButton(){
ui->pushButtonSave->setEnabled(true);
if(ui->widgetPic->zkEditEn) ui->comboBoxLattice->setDisabled (1);
}
void PicEdit::on_pushButtonEnlarge_pressed()
{
ui->widgetPic->enlargeDisplay();
ui->labelScaleLeval->setText(tr("放大倍数:%1").arg(ui->widgetPic->getScaleValue()));
}
void PicEdit::on_pushButtonReduce_pressed()
{
ui->widgetPic->reduceDisplay();
ui->labelScaleLeval->setText(tr("放大倍数:%1").arg(ui->widgetPic->getScaleValue()));
}
void PicEdit::on_pushButtonEnsure_pressed()
{
ui->widgetPic->ensureCurrPos();
//qDebug()<<"ENLINE2";
}
void PicEdit::on_pushButtonLeft_pressed()
{
//ui->widgetPic->charPara.CharHeight =ui->widgetPic->charPara.LineHeight;
ui->widgetPic->currPositionMove(ui->widgetPic->charPara.CharCurrent? (-ui->widgetPic->charPara.CharWidth):(-1),0);
}
void PicEdit::on_pushButtonRight_pressed()
{
//ui->widgetPic->charPara.CharHeight =ui->widgetPic->charPara.LineHeight;
ui->widgetPic->currPositionMove(ui->widgetPic->charPara.CharCurrent?ui->widgetPic->charPara.CharWidth:1,0);
}
void PicEdit::on_pushButtonUp_pressed()
{
//ui->widgetPic->charPara.CharHeight =ui->widgetPic->charPara.LineHeight;
ui->widgetPic->currPositionMove(0,ui->widgetPic->charPara.CharCurrent?-(ui->widgetPic->charPara.LineHeight):-1);
//qDebug()<<"TEST2014 UP";
}
void PicEdit::on_pushButtonDown_pressed()
{
//ui->widgetPic->charPara.CharHeight =ui->widgetPic->charPara.LineHeight;
ui->widgetPic->currPositionMove(0,ui->widgetPic->charPara.CharCurrent?ui->widgetPic->charPara.LineHeight:1);
}
void PicEdit::on_spinBoxHeightPoint_valueChanged(int height)
{
ui->widgetPic->resizeWidget (ui->widgetPic->getWidth (),height);
//qDebug ()<<"HeightPoint:"<<height;
}
void PicEdit::ondlgDrawOK()
{
ui->widgetPic->charPara.DrawEn=true;
ui->widgetPic->drawPara.width= dlgdraw->getWidth();
ui->widgetPic->drawPara.height=dlgdraw->getHeight();
if(maybeSave())
{
DrawInit(1);
}
if(dlgdraw) delete dlgdraw;
}
void PicEdit::on_checkBoxDrawGridEn_clicked( )
{
ui->widgetPic->charPara.DrawGridEn=ui->checkBoxDrawGridEn->checkState ();
ui->widgetPic->resizeWidget (ui->widgetPic->getWidth (),ui->widgetPic->getHeight ());
ui->widgetPic->update ();
}
void PicEdit::on_checkBoxControlChar_clicked( )
{
ui->widgetPic->charPara.checkBoxControlChar=ui->checkBoxControlChar->checkState ();
}
void PicEdit::on_pushButtonSaveAs_clicked()
{
#ifdef MYSAVEFILEDLG
disconnect(dialogSaveFile,SIGNAL(saveFile(QString,bool)),0,0);
connect(dialogSaveFile,SIGNAL(saveFile(QString,bool)),this,SLOT(onSaveASFile(QString,bool)));
dialogSaveFile->setTitleTxt(tr("文件另存为..."));
dialogSaveFile->refreshListView(1);
dialogSaveFile->setEnterFileName("");
dialogSaveFile->show();
#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),
ui->widgetPic->charPara.DrawEn?QString("Picture files (*.jpg)"):
QString("Picture files (*.png)")
);// *.png )"));//
#endif
}
void PicEdit::onSaveASFile(QString fileName,bool Flag){// use for dialogSaveFile class
// filename= fileName ;
if( ui->widgetPic->charPara.DrawEn ){
if( !fileName.endsWith(".jpg",Qt::CaseInsensitive) )
fileName += ".jpg";
ui->widgetPic->saveImage1(fileName);
//ui->pushButtonSave->setEnabled(false);
openedFileName = fileName;
ui->labelFileName->setText(tr("文件名:")+QFileInfo( fileName).fileName());
}
else {
if( !fileName.endsWith(".png",Qt::CaseInsensitive) )
fileName += ".png";
ui->widgetPic->saveImage(fileName);
//ui->pushButtonSave->setEnabled(false);
openedFileName = fileName;
ui->labelFileName->setText(tr("文件名:")+QFileInfo( fileName).fileName());
QString str1 =QFileInfo( fileName).baseName()+".dpn";
if(sysPara){
sysPara->sysFile = QString( PARA_ROOT_DIR+str1);
sysPara->savePrintParaToFile();
}
printThisFileNow(fileName);
}
checkNewFileAppending();
}
void PicEdit::onSaveAS_FIle_select(){
QStringList files = fileDialog->selectedFiles();
for(int i = 0;i < files.size(); i++)
{
QString fileName = files[i];
//qDebug()<<"onSaveAS_FIle_select"<<fileName;
if( ui->widgetPic->charPara.DrawEn ){
if( !fileName.endsWith(".jpg",Qt::CaseInsensitive) )
fileName += ".jpg";
ui->widgetPic->saveImage1(fileName);
//ui->pushButtonSave->setEnabled(false);
openedFileName = fileName;
ui->labelFileName->setText(tr("文件名:")+QFileInfo( fileName).fileName());
}
else {
if( !fileName.endsWith(".png",Qt::CaseInsensitive) )
fileName += ".png";
ui->widgetPic->saveImage(fileName);
//ui->pushButtonSave->setEnabled(false);
openedFileName = fileName;
ui->labelFileName->setText(tr("文件名:")+QFileInfo( fileName).fileName());
QString str1 =QFileInfo( fileName).baseName()+".dpn";
if(sysPara){
sysPara->sysFile = QString( PARA_ROOT_DIR+str1);
sysPara->savePrintParaToFile();
}
}
printThisFileNow(fileName);
}
checkNewFileAppending();
}
void PicEdit::onFileOpen(QString fileName,bool forcePicWidgetSize)
{
if(inserPicFile)
{
if (fileName.endsWith(".png") )ui->widgetPic->insertImage(fileName,false);
else ui->widgetPic->insertImage1(fileName,0);
// if(openedFileName=="") openedFileName= fileName;
}
else {
if(fileName.endsWith(".png")){
ui->widgetPic->loadImage(fileName,false);
openedFileName = fileName;
}
else if(fileName.endsWith(".jpg")){
ui->widgetPic->insertImage1(fileName,1);
VarNum=0;
ui->widgetPic->zkEditEn=false;
memset(var,0,sizeof(var));
ui->widgetPic->charPara.CurrentEn =1;
ui->widgetPic->charPara.DrawEn=1;
}
ui->widgetPic->setScale (3);
ui->labelFileName->setText(tr("文件名:)")+QFileInfo( fileName).fileName());
ui->labelScaleLeval->setText(tr("放大倍数:%1").arg(ui->widgetPic->getScaleValue()));
VarNum=0;
}
}
void PicEdit::updateAuthorization(int auth){
// do nothing here
zkEditEn= (auth&AUTH_DISPLAY_SYSTEM_SETTING) ||(auth&AUTH_DISPLAY_SYSTEM_MANAGE);
ui->pushButtonZKEdit->setEnabled (zkEditEn);
}
void PicEdit::on_pushButtonOpen_clicked()
{
disconnect(dialogFileOperation,SIGNAL(openFile(QString,bool)),0,0);
connect(dialogFileOperation,SIGNAL(openFile(QString,bool)),this,SLOT(onFileOpen(QString,bool)));
dialogFileOperation->refreshListView(1);
dialogFileOperation->exec();
inserPicFile = false;
}
void PicEdit::onOpenFIle_select(){
QStringList files = fileDialog->selectedFiles();
for(int i = 0;i < files.size(); i++){
QString fileName = files.value(i);
ui->widgetPic->loadImage(fileName,forcePicWidgetSize);
openedFileName = fileName;
ui->labelFileName->setText(tr("文件名:")+QFileInfo( fileName).fileName());
ui->labelScaleLeval->setText(tr("放大倍数:%1").arg(ui->widgetPic->getScaleValue()));
VarNum=0;
}
}
void PicEdit::on_pushButtonSave_clicked()
{
if(ui->widgetPic->zkEditEn && zkEditEn ) {
ui->widgetPic->zkEditSave();
ui->pushButtonOpen->setDisabled (true);
ui->pushButtonSave->setDisabled (true);
//ui->pushButtonImport->setEnabled(true);
ui->pushButtonZKEdit->setText (tr("返回信息编辑"));
ui->comboBoxLattice->setDisabled (0);
emit zkEditEnStatus(tr("字库编辑"));
return ;
}
if(!openedFileName.isEmpty()){
//qDebug()<<"on_pushButtonSave_clicked"<<openedFileName;
if(ui->widgetPic->charPara.DrawEn) {
//if(openedFileName.endsWith("html"))
openedFileName =DOC_ROOT_DIR+ QFileInfo(openedFileName).baseName()+".jpg";
ui->widgetPic->saveImage1(openedFileName);
}
else {
//if(openedFileName.endsWith("html"))
openedFileName = DOC_ROOT_DIR+QFileInfo(openedFileName).baseName()+".png";
ui->widgetPic->saveImage(openedFileName);
// qDebug()<<"on_pushButtonSave_clicked"<<openedFileName;
}
ui->pushButtonSave->setEnabled(true);
printThisFileNow(openedFileName);
}
else {
#ifdef MYSAVEFILEDLG
disconnect(dialogSaveFile,SIGNAL(saveFile(QString,bool)),0,0);
connect(dialogSaveFile,SIGNAL(saveFile(QString,bool)),this,SLOT(onSaveASFile(QString,bool)));
dialogSaveFile->refreshListView(1);
dialogSaveFile->setTitleTxt(tr("文件保存为..."));
dialogSaveFile->setEnterFileName("");
dialogSaveFile->show();
#else
if(fileDialog)
delete fileDialog;
fileDialog = new MyFileDialog(0);
disconnect(fileDialog,SIGNAL(accepted()),0,0);
connect(fileDialog,SIGNAL(rejected()),this,SLOT(onSave_File_reject()));
connect(fileDialog,SIGNAL(accepted()),this,SLOT(onSaveAS_FIle_select()));
fileDialog->showFileDialog(tr("保存"),tr(DOC_ROOT_DIR),
ui->widgetPic->charPara.DrawEn?QString("Picture files (*.jpg)"):
QString("Picture files (*.png)")
);
#endif
}
}
void PicEdit::on_pushButtonImport_clicked()
{ //insert pic 插入图片 pushButtonImport
inserPicFile =true;
disconnect(dialogFileOperation,SIGNAL(openFile(QString,bool)),0,0);
connect(dialogFileOperation,SIGNAL(openFile(QString,bool)),this,SLOT(onFileOpen(QString,bool)));
dialogFileOperation->refreshListView(1);
dialogFileOperation->exec();
}
void PicEdit::on_pushButtonEnd_pressed(){
ui->widgetPic->picSetEnd ();
}
void PicEdit::on_pushButtonHome_pressed(){
ui->widgetPic->picSetHome();
}
void PicEdit::keyPressEvent(QKeyEvent *e)
{
ui->widgetPic->charPara.CharHeight =ui->widgetPic->charPara.LineHeight;
switch(e->key())
{
case Qt::Key_Return:on_pushButtonEnsure_pressed();
//qDebug()<<"TEST2014 ENTER";
break;
case Qt::Key_Up: on_pushButtonUp_pressed();
//qDebug()<<"TEST2014 UP2";
break;
case Qt::Key_Left: on_pushButtonLeft_pressed();break;
case Qt::Key_Right:on_pushButtonRight_pressed();break;
case Qt::Key_Down:on_pushButtonDown_pressed();break;
case Qt::Key_Enter:
//qDebug()<<"ENLINE";
break;
case Qt::Key_Home:ui->widgetPic->picSetHome(); break;
case Qt::Key_End:ui->widgetPic->picSetEnd (); break;
case Qt::Key_Clear: break;
case Qt::Key_Backspace:
ui->widgetPic->picDelOneChar (); break;
case Qt::Key_Delete:
ui->widgetPic->picDelNextChar ();
break;
}
//if(e->key())qDebug()<<"TES"<<e->key();
}
void PicEdit::on_comboBoxLattice_currentIndexChanged(int index)
{ //字体选择
int font[]={5,7,9,12,16,16,24,24,32};
int fontWidth[]= {5,5,6,8,8,12,24,24,24 };
ui->widgetPic->charPara.Font=(PFONTNAME)index;
ui->widgetPic->charPara.CharHeight =font[index];
ui->widgetPic->charPara.LineHeight = ui->widgetPic->charPara.CharHeight+ui->widgetPic->charPara.LineSpace;
ui->widgetPic->charPara.CharWidth =fontWidth[index] ;
if( ui->widgetPic->getHeight ()<font[index])
ui->spinBoxHeightPoint->setValue (font[index]);
if( ui->widgetPic->currYpos+ ui->widgetPic->charPara.LineHeight > ui->widgetPic->getHeight() ){
ui->widgetPic->resizeWidget( ui->widgetPic->getWidth(),ui->widgetPic->currYpos+ ui->widgetPic->charPara.LineHeight);
}
ui->widgetPic->update ();
ui->lineEditInputTxt->setFocus ();
}
void PicEdit::on_lineEditInputTxt_textEdited (QString txt)
{
var[0]=0;var[1]=0;
ui->widgetPic->charPara.Bold=ui->comboBoxBoldMul->currentIndex();
if(ui->widgetPic->charPara.Bold>2)ui->widgetPic->charPara.Bold=2;
emit ui->widgetPic->inputTxtDot (txt,var);
ui->lineEditInputTxt->clear ();
}
void PicEdit::on_pushButtonStartInput_clicked()
{
ui->lineEditInputTxt->setInputMethodHints(Qt::ImhLowercaseOnly);
ui->lineEditInputTxt->setFocus();
toggleVirtualKeyboard();
}
void PicEdit::on_pushButtonDeleteChar_clicked()
{
ui->widgetPic->picDelOneChar ();
}
void PicEdit::on_radioButtonCharCurrent_clicked()
{
ui->widgetPic->charPara.CharCurrent=ui->radioButtonCharCurrent->isChecked ();
}
void PicEdit::on_radioButtonDotCurrent_clicked()
{
ui->widgetPic->charPara.CharCurrent=ui->radioButtonCharCurrent->isChecked ();
}
void PicEdit::on_pushButtonInsertVari_pressed()
{
if(dialogInsertVari->exec() == QDialog::Accepted ){
int pixelSize =ui->widgetPic->charPara.CharHeight;// ui->comboBoxLattice->currentIndex ();
QFont font;
font.setFamily(Public::getFontFamily(pixelSize));
font.setPixelSize(pixelSize);
font.setWeight(ui->checkBoxBold->isChecked()?QFont::Bold:QFont::Normal);
font.setLetterSpacing(QFont::AbsoluteSpacing,ui->widgetPic->charPara.FontGap); // sysPara->para.textEditCharSpace
QFontMetrics fontMetrics(font);
ui->widgetPic->charPara.Bold = ui->checkBoxBold->isChecked();
int width = (fontMetrics.width("0123456789"))/10 ;
int height = fontMetrics.ascent () + fontMetrics.descent();//pixelSize;
int digitalNum;
int varType;
unsigned char splitMode;
dialogInsertVari->getValue(&varType,&digitalNum,&splitMode);
QString txt;
//================
int val = 0;
QTime t = QTime::currentTime();
QDate d = QDate::currentDate();
switch(varType){
case 0:val = d.year(); digitalNum=digitalNum>2?4:2; break;
case 1:val = d.month();digitalNum=2;break;
case 2:val = d.day();digitalNum=2;break;
//case 3:val = d.dayOfWeek();digitalNum=2;break; //weekNumber
case 3:val = d.weekNumber();digitalNum=2;break;
case 4:val = t.hour(); digitalNum=2;break;
case 5:val = t.minute();digitalNum=2;break;
case 6:val = t.second();digitalNum=2;break;
case 7:val = QString::number(sysPara->status.calandar_and_dat.cnt1CurrValue,16).toInt(); break;
case 8:val = QString::number(sysPara->status.calandar_and_dat.cnt2CurrValue,16).toInt();break;
case 13:val = QString::number(sysPara->status.Status_Counter3.cnt3CurrValue,16).toInt();break;
case 14:val = d.dayOfYear();digitalNum=3;break;
default:val=0;
}
// qDebug()<<val<<"val";
if(digitalNum==1)
{
txt.sprintf("%01d",val );
txt = txt.right(digitalNum);
}
else if(digitalNum==2)
{
txt.sprintf("%02d",val );
txt = txt.right(digitalNum);
}
else if(digitalNum==3)
{
txt.sprintf("%03d",val );
txt = txt.right(digitalNum);
}
else if(digitalNum==4)
{
txt.sprintf("%04d",val );
txt = txt.right(digitalNum);
}
else if(digitalNum==5)
{
txt.sprintf("%05d",val );
txt = txt.right(digitalNum);
}
else if(digitalNum==6)
{
txt.sprintf("%06d",val );
txt = txt.right(digitalNum);
}
else if(digitalNum==7)
{
txt.sprintf("%07d",val );
txt = txt.right(digitalNum);
}
else if(digitalNum==8)
{
txt.sprintf("%08d",val );
txt = txt.right(digitalNum);
}
else
{
txt.sprintf("%04d",val );
txt = txt.right(4);
}
//======================
for(int i=0;i<40;i++) var[i]=FVAR;
if(VarNum<15)VarNum++;
else {
//VarNum=0;
QMessageBox msgBox(QMessageBox::Information,tr("提示"),tr("本条信息的变量超过规定数量!"));
msgBox.exec();
}
var[1]=varType; //0
var[2]=digitalNum;//1
var[3]=width;//2
var[4]=height;//3
var[5]=ui->widgetPic->charPara.FontGap;//4
ui->widgetPic->charPara.Bold=ui->comboBoxBoldMul->currentIndex();
if(ui->widgetPic->charPara.Bold>2)ui->widgetPic->charPara.Bold=2;
if(digitalNum) ui->widgetPic->inputTxtDot (txt,var);
}
ui->lineEditInputTxt->setFocus ();
}
void PicEdit::ChinaProview(QString txt)
{
int mCol = (int)textEdit->document()->size().width();
bool MaxCol4000;
if(sysPara->status.flagOfNo67FPGA)
MaxCol4000 = true;
else
MaxCol4000 = false;
if(mCol > (MaxCol4000?MAX_PRINT_COL_NUM_Normal:MAX_PRINT_COL_NUM_Wide))
mCol= MaxCol4000?MAX_PRINT_COL_NUM_Normal:MAX_PRINT_COL_NUM_Wide;
int maxPicHeight = MAX_PRINT_ROW_NUM + 12;
//qDebug ()<<QString("w:%1,H:%2").arg (mCol).arg (maxPicHeight);
QSize size(mCol,maxPicHeight);
QImage image(size,QImage::Format_ARGB32);
image.fill(0x00ffffff);
QPainter painter(&image);
textEdit->document()->drawContents (&painter, image.rect()); /*将text写到pic*/
//image.save("printImage.jpg");
unsigned char mDat[mCol*maxPicHeight];
memset(mDat,0,sizeof(mDat));
int firstRow = maxPicHeight;
/*--------------------------------------------------------------------------*/
for(int j = 0; j < maxPicHeight; j++){ //计算首行位置
for(int i = 0; i < mCol; i++){
QRgb rgb = image.pixel(i,j);
if(rgb&0xff000000){
firstRow = j;
break;
}
}
if(firstRow != maxPicHeight)
break;
}
/*--------------------------------------------------------------------------*/
int lastRow = firstRow + MAX_PRINT_ROW_NUM;
lastRow = (lastRow>maxPicHeight)?maxPicHeight:lastRow;
for(int j = 0; j < lastRow - firstRow; j++){
for(int i = 0; i < mCol; i++){
QRgb rgb = image.pixel(i,j + firstRow);
if((rgb&0x80000000)){ //判断alpha
if((rgb & 0xffffff) == 0xff0000){
mDat[ i* j + firstRow]=0;
}
}
}
}
}
void PicEdit::on_pushButtonCharSpace_pressed ()
{ //QScrollBar mScrollBar;
dialogLineSpace->setValue (ui->widgetPic->charPara.LineSpace,ui->widgetPic->charPara.FontGap);
if(dialogLineSpace->exec() == QDialog::Accepted ){
dialogLineSpace->getValue (&lineSpace,&charSpace);
if(charSpace<1)charSpace=1;
ui->widgetPic->charPara.FontGap=charSpace;
ui->widgetPic->charPara.LineSpace= lineSpace;
ui->widgetPic->charPara.LineHeight = ui->widgetPic->charPara.CharHeight +ui->widgetPic->charPara.LineSpace;
}
}
void PicEdit::DrawInit(bool mode)
{
if( mode)
{
ui->widgetPic->initWidget(ui->widgetPic->drawPara.width,ui->widgetPic->drawPara.height);
openedFileName = "";
ui->labelFileName->setText("");
ui->labelScaleLeval->setText(tr("放大倍数:%1").arg(ui->widgetPic->getScaleValue()));
VarNum=0;
ui->widgetPic->zkEditEn=false;
memset(var,0,sizeof(var));
ui->widgetPic->charPara.CurrentEn =1;
//ui->spinBoxWidth->show();
//ui->labWidth->show();
//ui->pushButtonInsertVari->hide();
ui->widgetPic->charPara.DrawEn=1;
}
else
{
ui->pushButtonInsertVari->show();
ui->widgetPic->charPara.DrawEn=0;
emit on_pushButtonNew_pressed();
}
}
void PicEdit::printThisFileNow(QString fileName)
{
if( ui->widgetPic->charPara.DrawEn)
{
DrawInit(0);
return ;
}
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) {
emit openCurrentFile(fileName,false);
emit setMainTabNow(0);
}
}
void PicEdit::EditCurrFile(QString fileName)
{
ui->widgetPic->loadImage(fileName,forcePicWidgetSize);
openedFileName = fileName;
ui->labelFileName->setText(tr("文件名:")+QFileInfo( fileName).fileName());
ui->labelScaleLeval->setText(tr("放大倍数:%1").arg(ui->widgetPic->getScaleValue()));
ui->pushButtonSave->setEnabled(true);
VarNum=0;
}
void PicEdit::onChangeFont(int n)
{//
//char font[]={5,7,9,12,16,24,24,32};
int i=0;
if(n>24) i=6;
else if(n>16) i=5;
else if(n>12) i=4;
else if(n>9) i=3;
else if(n>7) i=2;
else if(n>5) i=1;
else i=0;
ui->comboBoxLattice->setCurrentIndex(i);
//qDebug()<<i<<" EDIT";
//emit on_comboBoxLattice_currentIndexChanged(i);
//
}
void PicEdit::on_pushButtonInsertMode_pressed()
{
ui->widgetPic->charPara.insertMode =!ui->widgetPic->charPara.insertMode;
ui->labInserMode->setText((ui->widgetPic->charPara.insertMode)?tr("插入模式"):tr("修改模式"));
}
void PicEdit::cursorFlash()
{
static int n=0;
static int m=0;
// static bool r_DrawEn=0;
if(sysPara==NULL) return;
if(sysPara->para.EditMode==TXTFILE){
ui->widgetPic->pEditMode=0;
return;
}
else if(sysPara->para.EditMode==PICFILE)
ui->widgetPic->pEditMode=1;
// r_DrawEn = char
if(isActiveWindow()){
if(n<31)n++;else n=0;
if(n==10){
ui->label_Note->setText(tr("按回车键(Enter)可增加新行. 选择字体,光栅会自动调整"));
ui->labelNote2->setText((m%2)?tr("选择[字体]可改变光标大小."):tr("选择[绘图]方式,可以绘制任意图形"));
// qDebug()<<"n:"<<n;
}
else if(n==20){
ui->label_Note->setText(tr("光标不匹配时,不能输入或删除."));
ui->labelNote2->setText((m%2)?tr("点击空白处可关闭键盘."):tr("通过[字库编辑]功能,用户可以自定义新字符"));
m++;m=m&0xff;
// qDebug()<<"n:"<<n;
}
else if(n==30){
ui->label_Note->setText(tr("选择[文本模式]可切换到主界面编辑方式."));
ui->labelNote2->setText((m%2)?tr("点击光栅可打开键盘,点击空白处关闭键盘"):tr("使用[字库编辑]功能,用户可自己修改字形"));
// q
}
//qDebug()<<"n:"<<n;
}
}
void PicEdit::toggleVirtualKeyboard()
{
QInputMethod *inputMethod = QGuiApplication::inputMethod();
if (inputMethod->isVisible()) {
inputMethod->hide();
} else {
inputMethod->show();
}
}
/*
bool PicEdit::event(QEvent *event) {
if (event->type() == QEvent::InputMethod) {
QInputMethodEvent *ime = static_cast<QInputMethodEvent *>(event);
// 处理虚拟键盘输入
if (!ime->commitString().isEmpty()) {
// 模拟按键事件
QKeyEvent keyEvent(QEvent::KeyPress, Qt::Key_unknown, Qt::NoModifier, ime->commitString());
keyPressEvent(&keyEvent);
return true;
}
}
return QWidget::event(event);
}
*/