| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 | 
							- #include "scintillahexeditview.h"
 
- #include "styleset.h"
 
- #include "ccnotepad.h"
 
- #include <stdexcept>
 
- #include <QMimeData>
 
- // initialize the static variable
 
- bool ScintillaHexEditView::_SciInit = false;
 
- #define DEFAULT_FONT_NAME "Courier New"
 
- ScintillaHexEditView::ScintillaHexEditView(QWidget *parent):QsciScintilla(parent), m_NoteWin(nullptr)
 
- {
 
- 	init();
 
- }
 
- ScintillaHexEditView::~ScintillaHexEditView()
 
- {
 
- }
 
- void ScintillaHexEditView::setNoteWidget(QWidget * win)
 
- {
 
- 	m_NoteWin = win;
 
- }
 
- sptr_t ScintillaHexEditView::execute(quint32 Msg, uptr_t wParam, sptr_t lParam) const {
 
- 	try {
 
- 		return (m_pScintillaFunc) ? m_pScintillaFunc(m_pScintillaPtr, Msg, wParam, lParam) : -1;
 
- 	}
 
- 	catch (...)
 
- 	{
 
- 		return -1;
 
- 	}
 
- };
 
- void ScintillaHexEditView::init()
 
- {
 
- 	if (!_SciInit)
 
- 	{
 
- 		_SciInit = true;
 
- 	}
 
- 	m_pScintillaFunc = (SCINTILLA_FUNC)this->SendScintillaPtrResult(SCI_GETDIRECTFUNCTION);
 
- 	m_pScintillaPtr = (SCINTILLA_PTR)this->SendScintillaPtrResult(SCI_GETDIRECTPOINTER);
 
- 	if (!m_pScintillaFunc)
 
- 	{
 
- 		throw std::runtime_error("ScintillaEditView::init : SCI_GETDIRECTFUNCTION message failed");
 
- 	}
 
- 	if (!m_pScintillaPtr)
 
- 	{
 
- 		throw std::runtime_error("ScintillaEditView::init : SCI_GETDIRECTPOINTER message failed");
 
- 	}
 
- 	//设置字体
 
- #if defined (Q_OS_MAC)
 
-     QFont font(DEFAULT_FONT_NAME, 12, QFont::Normal);
 
- #else
 
- 	QFont font(DEFAULT_FONT_NAME, 11, QFont::Normal);
 
- #endif
 
- 	setFont(font);
 
- 	setMarginsFont(font);
 
- 	setMarginsBackgroundColor(StyleSet::marginsBackgroundColor);
 
- 	execute(SCI_SETTABWIDTH, 4);
 
- 	setPaper(QColor(0xfc, 0xfc, 0xfc));
 
- }
 
- void ScintillaHexEditView::dragEnterEvent(QDragEnterEvent* event)
 
- {
 
- 	//if (event->mimeData()->hasFormat("text/uri-list")) //只能打开文本文件
 
- 	//{
 
- 	//	event->accept(); //可以在这个窗口部件上拖放对象
 
- 	//}
 
- 	//else
 
- 	//{
 
- 	//	event->ignore();
 
- 	//}
 
- 	event->accept();
 
- 	}
 
- void ScintillaHexEditView::dropEvent(QDropEvent* e)
 
- {
 
- 	QList<QUrl> urls = e->mimeData()->urls();
 
- 	if (urls.isEmpty())
 
- 		return;
 
- 	CCNotePad* pv = dynamic_cast<CCNotePad*>(m_NoteWin);
 
- 	if (pv != nullptr)
 
- 		pv->receiveEditDrop(e);
 
- 	//qDebug() << ui.leftSrc->geometry() << ui.rightSrc->geometry() << QCursor::pos() << this->mapFromGlobal(QCursor::pos());
 
- }
 
 
  |