Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F4324569
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Size
12 KB
Referenced Files
None
Subscribers
None
View Options
diff --git a/trunk/dlgreportviewer.cpp b/trunk/dlgreportviewer.cpp
index 9eaf6f4..21e58d5 100644
--- a/trunk/dlgreportviewer.cpp
+++ b/trunk/dlgreportviewer.cpp
@@ -1,88 +1,88 @@
/*******************************************************************************
* fred Copyright (c) 2011 by Gillen Daniel <gillen.dan@pinguin.lu> *
* *
* Forensic Registry EDitor (fred) is a cross-platform M$ registry hive editor *
* with special feautures useful during forensic analysis. *
* *
* This program is free software: you can redistribute it and/or modify it *
* under the terms of the GNU General Public License as published by the Free *
* Software Foundation, either version 3 of the License, or (at your option) *
* any later version. *
* *
* This program is distributed in the hope that it will be useful, but WITHOUT *
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or *
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for *
* more details. *
* *
* You should have received a copy of the GNU General Public License along with *
* this program. If not, see <http://www.gnu.org/licenses/>. *
*******************************************************************************/
#include "dlgreportviewer.h"
#include "ui_dlgreportviewer.h"
#include <QPrinter>
#include <QPrintDialog>
DlgReportViewer::DlgReportViewer(QString &report_data, QWidget *p_parent)
- : QMainWindow(p_parent,Qt::Dialog), ui(new Ui::DlgReportViewer)
+ : QMainWindow(p_parent,Qt::Dialog | Qt::Popup), ui(new Ui::DlgReportViewer)
{
// Init local vars
ui->setupUi(this);
this->p_local_event_loop=NULL;
// Set report content
this->ui->WebView->setHtml(report_data);
// Set dialog title based on report content title
QString report_title=this->ui->WebView->title();
if(report_title.isEmpty()) this->setWindowTitle("Report Viewer");
else this->setWindowTitle(report_title.prepend("Report Viewer : "));
}
DlgReportViewer::~DlgReportViewer() {
delete ui;
if(this->p_local_event_loop!=NULL) this->p_local_event_loop->exit();
}
void DlgReportViewer::changeEvent(QEvent *e) {
QMainWindow::changeEvent(e);
switch(e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
void DlgReportViewer::closeEvent(QCloseEvent *event) {
// Make sure we exit the local event loop on exit
if(this->p_local_event_loop!=NULL) {
this->p_local_event_loop->exit();
this->p_local_event_loop=NULL;
}
event->accept();
}
void DlgReportViewer::exec() {
// Create local event loop
this->p_local_event_loop=new QEventLoop(this);
// Show window and enter loop
this->show();
this->p_local_event_loop->exec();
}
void DlgReportViewer::on_action_Print_triggered() {
// Print report
QPrinter printer;
QPrintDialog *p_dlg_print=new QPrintDialog(&printer);
if(p_dlg_print->exec()==QDialog::Accepted) {
this->ui->WebView->print(&printer);
}
delete p_dlg_print;
}
void DlgReportViewer::on_action_Close_triggered() {
this->close();
}
diff --git a/trunk/hivex/lib/byte_conversions.h b/trunk/hivex/lib/byte_conversions.h
index aa4ffe6..2e4cafe 100644
--- a/trunk/hivex/lib/byte_conversions.h
+++ b/trunk/hivex/lib/byte_conversions.h
@@ -1,87 +1,87 @@
/* Useful byte conversion macros, not available on all platforms.
* Copyright (C) 2009-2010 Red Hat Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*/
#ifndef hivex_byteorder_h
#define hivex_byteorder_h
#ifdef HAVE_ENDIAN_H
#include <endian.h>
#endif
#include <byteswap.h>
#if __BYTE_ORDER == __LITTLE_ENDIAN
#ifndef be32toh
-#define be32toh(x) __bswap_32 (x)
+#define be32toh(x) bswap_32 (x)
#endif
#ifndef htobe32
-#define htobe32(x) __bswap_32 (x)
+#define htobe32(x) bswap_32 (x)
#endif
#ifndef be64toh
-#define be64toh(x) __bswap_64 (x)
+#define be64toh(x) bswap_64 (x)
#endif
#ifndef htobe64
-#define htobe64(x) __bswap_64 (x)
+#define htobe64(x) bswap_64 (x)
#endif
#ifndef le16toh
#define le16toh(x) (x)
#endif
#ifndef htole16
#define htole16(x) (x)
#endif
#ifndef le32toh
#define le32toh(x) (x)
#endif
#ifndef htole32
#define htole32(x) (x)
#endif
#ifndef le64toh
#define le64toh(x) (x)
#endif
#ifndef htole64
#define htole64(x) (x)
#endif
#else /* __BYTE_ORDER == __BIG_ENDIAN */
#ifndef be32toh
#define be32toh(x) (x)
#endif
#ifndef htobe32
#define htobe32(x) (x)
#endif
#ifndef be64toh
#define be64toh(x) (x)
#endif
#ifndef htobe64
#define htobe64(x) (x)
#endif
#ifndef le16toh
-#define le16toh(x) __bswap_16 (x)
+#define le16toh(x) bswap_16 (x)
#endif
#ifndef htole16
-#define htole16(x) __bswap_16 (x)
+#define htole16(x) bswap_16 (x)
#endif
#ifndef le32toh
-#define le32toh(x) __bswap_32 (x)
+#define le32toh(x) bswap_32 (x)
#endif
#ifndef htole32
-#define htole32(x) __bswap_32 (x)
+#define htole32(x) bswap_32 (x)
#endif
#ifndef le64toh
-#define le64toh(x) __bswap_64 (x)
+#define le64toh(x) bswap_64 (x)
#endif
#ifndef htole64
-#define htole64(x) __bswap_64 (x)
+#define htole64(x) bswap_64 (x)
#endif
#endif /* __BYTE_ORDER == __BIG_ENDIAN */
#endif /* hivex_byteorder_h */
diff --git a/trunk/hivex_patches/byte_conversions.patch b/trunk/hivex_patches/byte_conversions.patch
new file mode 100644
index 0000000..467a35d
--- /dev/null
+++ b/trunk/hivex_patches/byte_conversions.patch
@@ -0,0 +1,54 @@
+diff --git a/lib/byte_conversions.h b/lib/byte_conversions.h
+index aa4ffe6..2e4cafe 100644
+--- a/lib/byte_conversions.h
++++ b/lib/byte_conversions.h
+@@ -22,16 +22,16 @@
+
+ #if __BYTE_ORDER == __LITTLE_ENDIAN
+ #ifndef be32toh
+-#define be32toh(x) __bswap_32 (x)
++#define be32toh(x) bswap_32 (x)
+ #endif
+ #ifndef htobe32
+-#define htobe32(x) __bswap_32 (x)
++#define htobe32(x) bswap_32 (x)
+ #endif
+ #ifndef be64toh
+-#define be64toh(x) __bswap_64 (x)
++#define be64toh(x) bswap_64 (x)
+ #endif
+ #ifndef htobe64
+-#define htobe64(x) __bswap_64 (x)
++#define htobe64(x) bswap_64 (x)
+ #endif
+ #ifndef le16toh
+ #define le16toh(x) (x)
+@@ -65,22 +65,22 @@
+ #define htobe64(x) (x)
+ #endif
+ #ifndef le16toh
+-#define le16toh(x) __bswap_16 (x)
++#define le16toh(x) bswap_16 (x)
+ #endif
+ #ifndef htole16
+-#define htole16(x) __bswap_16 (x)
++#define htole16(x) bswap_16 (x)
+ #endif
+ #ifndef le32toh
+-#define le32toh(x) __bswap_32 (x)
++#define le32toh(x) bswap_32 (x)
+ #endif
+ #ifndef htole32
+-#define htole32(x) __bswap_32 (x)
++#define htole32(x) bswap_32 (x)
+ #endif
+ #ifndef le64toh
+-#define le64toh(x) __bswap_64 (x)
++#define le64toh(x) bswap_64 (x)
+ #endif
+ #ifndef htole64
+-#define htole64(x) __bswap_64 (x)
++#define htole64(x) bswap_64 (x)
+ #endif
+ #endif /* __BYTE_ORDER == __BIG_ENDIAN */
+
diff --git a/trunk/registrykeytable.cpp b/trunk/registrykeytable.cpp
index 68fe059..ad65f73 100644
--- a/trunk/registrykeytable.cpp
+++ b/trunk/registrykeytable.cpp
@@ -1,128 +1,129 @@
/*******************************************************************************
* fred Copyright (c) 2011 by Gillen Daniel <gillen.dan@pinguin.lu> *
* *
* Forensic Registry EDitor (fred) is a cross-platform M$ registry hive editor *
* with special feautures useful during forensic analysis. *
* *
* This program is free software: you can redistribute it and/or modify it *
* under the terms of the GNU General Public License as published by the Free *
* Software Foundation, either version 3 of the License, or (at your option) *
* any later version. *
* *
* This program is distributed in the hope that it will be useful, but WITHOUT *
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or *
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for *
* more details. *
* *
* You should have received a copy of the GNU General Public License along with *
* this program. If not, see <http://www.gnu.org/licenses/>. *
*******************************************************************************/
#include "registrykeytable.h"
#include <QHeaderView>
#include <QApplication>
#include <QClipboard>
RegistryKeyTable::RegistryKeyTable(QWidget *p_parent) : QTableView(p_parent) {
// Configure widget
this->setSelectionMode(QAbstractItemView::SingleSelection);
this->setSelectionBehavior(QAbstractItemView::SelectRows);
this->setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel);
this->verticalHeader()->setHidden(true);
+ this->setTextElideMode(Qt::ElideNone);
// Create context menu
this->p_menu_copy=new QMenu(tr("Copy"),this);
this->p_action_copy_key_name=new QAction(tr("Key name"),
this->p_menu_copy);
this->p_menu_copy->addAction(this->p_action_copy_key_name);
this->connect(this->p_action_copy_key_name,
SIGNAL(triggered()),
this,
SLOT(SlotCopyKeyName()));
this->p_action_copy_key_value=new QAction(tr("Key value"),
this->p_menu_copy);
this->p_menu_copy->addAction(this->p_action_copy_key_value);
this->connect(this->p_action_copy_key_value,
SIGNAL(triggered()),
this,
SLOT(SlotCopyKeyValue()));
}
RegistryKeyTable::~RegistryKeyTable() {
// Delete context menu
delete this->p_action_copy_key_name;
delete this->p_action_copy_key_value;
delete this->p_menu_copy;
}
void RegistryKeyTable::setModel(QAbstractItemModel *p_model) {
QTableView::setModel(p_model);
// Resize table rows / columns to fit data
this->resizeColumnsToContents();
this->resizeRowsToContents();
this->horizontalHeader()->stretchLastSection();
}
/*
void RegistryKeyTable::selectRow(QString key_name) {
int i;
this->clearSelection();
for(i=0;i<this->model()->rowCount();i++) {
if(this->model())
}
}
*/
int RegistryKeyTable::sizeHintForColumn(int column) const {
int size_hint=-1;
int i=0;
int item_width=0;
QFontMetrics fm(this->fontMetrics());
QModelIndex idx;
if(this->model()==NULL) return -1;
// Find string that needs the most amount of space
idx=this->model()->index(i,column);
while(idx.isValid()) {
item_width=fm.width(this->model()->data(idx).toString())+10;
if(item_width>size_hint) size_hint=item_width;
idx=this->model()->index(++i,column);
}
return size_hint;
}
void RegistryKeyTable::contextMenuEvent(QContextMenuEvent *p_event) {
// Only show context menu when a row is selected
if(this->selectedIndexes().count()!=3) return;
// Only show context menu when user clicked on selected row
if(!(this->indexAt(p_event->pos())==this->selectedIndexes().at(0) ||
this->indexAt(p_event->pos())==this->selectedIndexes().at(1) ||
this->indexAt(p_event->pos())==this->selectedIndexes().at(2)))
{
return;
}
// Emit a click signal
emit(this->clicked(this->indexAt(p_event->pos())));
// Create context menu and add actions
QMenu context_menu(this);
context_menu.addMenu(this->p_menu_copy);
context_menu.exec(p_event->globalPos());
}
void RegistryKeyTable::SlotCopyKeyName() {
QApplication::clipboard()->
setText(this->selectedIndexes().at(0).data().toString(),
QClipboard::Clipboard);
}
void RegistryKeyTable::SlotCopyKeyValue() {
QApplication::clipboard()->
setText(this->selectedIndexes().at(2).data().toString(),
QClipboard::Clipboard);
}
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Tue, Dec 24, 3:06 AM (1 d, 3 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1176968
Default Alt Text
(12 KB)
Attached To
Mode
rFRED fred
Attached
Detach File
Event Timeline
Log In to Comment