Skip to content

Commit 20eaf86

Browse files
author
Alexander B
committed
add resources.qrc
fix nautilus extension add demangle for std::string::const_iterator add extend title for parametrised call add custom monospace font
1 parent 4aced3f commit 20eaf86

File tree

21 files changed

+180
-44
lines changed

21 files changed

+180
-44
lines changed

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ set(SOURCES
3737
finfdialog.cpp
3838
finfdialog.h
3939
finfdialog.ui
40+
resources/resources.qrc
4041
)
4142
target_sources(Qldd PRIVATE ${SOURCES})
4243

CPackLinuxDeployQt.cmake.in

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
execute_process(COMMAND ${CMAKE_MAKE_PROGRAM} DESTDIR=${CPACK_PACKAGE_DIRECTORY}/_CPack_Packages/Linux/External/AppImage install
22
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
3-
execute_process(COMMAND "${LINUXDEPLOYQT_EXECUTABLE}" ${CPACK_PACKAGE_DIRECTORY}/_CPack_Packages/Linux/External/AppImage${CMAKE_INSTALL_PREFIX}/share/applications/example.desktop -bundle-non-qt-libs -qmake=${_qmake_executable}
3+
execute_process(COMMAND "${LINUXDEPLOYQT_EXECUTABLE}" ${CPACK_PACKAGE_DIRECTORY}/_CPack_Packages/Linux/External/AppImage${CMAKE_INSTALL_PREFIX}/share/applications/qldd.desktop -bundle-non-qt-libs -qmake=${_qmake_executable}
44
# hot fix for a known issue for libnss3 and libnssutils3.
55
COMMAND ${CMAKE_COMMAND} -E copy_directory ${NSS3_PLUGIN_PATH} ${CPACK_PACKAGE_DIRECTORY}/_CPack_Packages/Linux/External/AppImage${CMAKE_INSTALL_PREFIX}/lib/
6-
COMMAND "${LINUXDEPLOYQT_EXECUTABLE}" ${CPACK_PACKAGE_DIRECTORY}/_CPack_Packages/Linux/External/AppImage${CMAKE_INSTALL_PREFIX}/share/applications/example.desktop -appimage -qmake=${_qmake_executable}
6+
COMMAND "${LINUXDEPLOYQT_EXECUTABLE}" ${CPACK_PACKAGE_DIRECTORY}/_CPack_Packages/Linux/External/AppImage${CMAKE_INSTALL_PREFIX}/share/applications/qldd.desktop -appimage -qmake=${_qmake_executable}
77
WORKING_DIRECTORY ${CPACK_PACKAGE_DIRECTORY}
88
)
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
set(CMAKE_CXX_COMPILER "/usr/bin/g++")
2+
set(CMAKE_CXX_COMPILER_ARG1 "")
3+
set(CMAKE_CXX_COMPILER_ID "GNU")
4+
set(CMAKE_CXX_COMPILER_VERSION "11.3.0")
5+
set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "")
6+
set(CMAKE_CXX_COMPILER_WRAPPER "")
7+
set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "17")
8+
set(CMAKE_CXX_EXTENSIONS_COMPUTED_DEFAULT "ON")
9+
set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20;cxx_std_23")
10+
set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters")
11+
set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates")
12+
set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates")
13+
set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17")
14+
set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20")
15+
set(CMAKE_CXX23_COMPILE_FEATURES "cxx_std_23")
16+
17+
set(CMAKE_CXX_PLATFORM_ID "Linux")
18+
set(CMAKE_CXX_SIMULATE_ID "")
19+
set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "")
20+
set(CMAKE_CXX_SIMULATE_VERSION "")
21+
22+
23+
24+
25+
set(CMAKE_AR "/usr/bin/ar")
26+
set(CMAKE_CXX_COMPILER_AR "/usr/bin/gcc-ar-11")
27+
set(CMAKE_RANLIB "/usr/bin/ranlib")
28+
set(CMAKE_CXX_COMPILER_RANLIB "/usr/bin/gcc-ranlib-11")
29+
set(CMAKE_LINKER "/usr/bin/ld")
30+
set(CMAKE_MT "")
31+
set(CMAKE_COMPILER_IS_GNUCXX 1)
32+
set(CMAKE_CXX_COMPILER_LOADED 1)
33+
set(CMAKE_CXX_COMPILER_WORKS TRUE)
34+
set(CMAKE_CXX_ABI_COMPILED TRUE)
35+
36+
set(CMAKE_CXX_COMPILER_ENV_VAR "CXX")
37+
38+
set(CMAKE_CXX_COMPILER_ID_RUN 1)
39+
set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;mpp;CPP;ixx;cppm)
40+
set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC)
41+
42+
foreach (lang C OBJC OBJCXX)
43+
if (CMAKE_${lang}_COMPILER_ID_RUN)
44+
foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS)
45+
list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension})
46+
endforeach()
47+
endif()
48+
endforeach()
49+
50+
set(CMAKE_CXX_LINKER_PREFERENCE 30)
51+
set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1)
52+
53+
# Save compiler ABI information.
54+
set(CMAKE_CXX_SIZEOF_DATA_PTR "8")
55+
set(CMAKE_CXX_COMPILER_ABI "ELF")
56+
set(CMAKE_CXX_BYTE_ORDER "LITTLE_ENDIAN")
57+
set(CMAKE_CXX_LIBRARY_ARCHITECTURE "x86_64-linux-gnu")
58+
59+
if(CMAKE_CXX_SIZEOF_DATA_PTR)
60+
set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}")
61+
endif()
62+
63+
if(CMAKE_CXX_COMPILER_ABI)
64+
set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}")
65+
endif()
66+
67+
if(CMAKE_CXX_LIBRARY_ARCHITECTURE)
68+
set(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu")
69+
endif()
70+
71+
set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "")
72+
if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX)
73+
set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}")
74+
endif()
75+
76+
77+
78+
79+
80+
set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "/usr/include/c++/11;/usr/include/x86_64-linux-gnu/c++/11;/usr/include/c++/11/backward;/usr/lib/gcc/x86_64-linux-gnu/11/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include")
81+
set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;m;gcc_s;gcc;c;gcc_s;gcc")
82+
set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/11;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib")
83+
set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
set(CMAKE_HOST_SYSTEM "Linux-5.19.0-32-generic")
2+
set(CMAKE_HOST_SYSTEM_NAME "Linux")
3+
set(CMAKE_HOST_SYSTEM_VERSION "5.19.0-32-generic")
4+
set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
5+
6+
7+
8+
set(CMAKE_SYSTEM "Linux-5.19.0-32-generic")
9+
set(CMAKE_SYSTEM_NAME "Linux")
10+
set(CMAKE_SYSTEM_VERSION "5.19.0-32-generic")
11+
set(CMAKE_SYSTEM_PROCESSOR "x86_64")
12+
13+
set(CMAKE_CROSSCOMPILING "FALSE")
14+
15+
set(CMAKE_SYSTEM_LOADED 1)
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
// This file is autogenerated. Changes will be overwritten.
2+
#include "EWIEGA46WW/moc_finfdialog.cpp"
3+
#include "EWIEGA46WW/moc_mainwindow.cpp"

main.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#include "mainwindow.h"
22
#include <QApplication>
33
#include <QCommandLineParser>
4+
#include <QFileInfo>
45

56
int main(int argc, char *argv[]) {
67
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
@@ -25,7 +26,13 @@ int main(int argc, char *argv[]) {
2526
}
2627

2728
MainWindow w(fName);
28-
w.setWindowTitle("DependencyViewer");
29+
QString title = "DependencyViewer";
30+
if (!fName.isEmpty()) {
31+
QFileInfo fi(fName);
32+
auto s = QString(" - %1").arg(fi.fileName());
33+
title.append(s);
34+
}
35+
w.setWindowTitle(title);
2936
w.show();
3037

3138
return app.exec();

mainwindow.cpp

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,10 @@
44
#include <QFileDialog>
55
#include <QShortcut>
66
#include <QMessageBox>
7+
#include <QClipboard>
8+
#include <QFontDatabase>
79
#include "finfdialog.h"
810

9-
#ifdef __APPLE__
10-
#define FIXED_FONT "Menlo"
11-
#else
12-
#define FIXED_FONT "Monospace"
13-
#endif
14-
1511
MainWindow::MainWindow(const QString &fileName, QWidget *parent)
1612
: QMainWindow(parent),
1713
ui(new Ui::MainWindow),
@@ -25,8 +21,9 @@ MainWindow::MainWindow(const QString &fileName, QWidget *parent)
2521
exitAct(nullptr) {
2622
ui->setupUi(this);
2723

28-
QFont fixedFont(FIXED_FONT);
29-
fixedFont.setStyleHint(QFont::Monospace);
24+
int id = QFontDatabase::addApplicationFont(":/monofont.ttf");
25+
QString family = QFontDatabase::applicationFontFamilies(id).at(0);
26+
fixedFont = QFont(family);
3027

3128
ui->listWidgetExportTable->setFont(fixedFont);
3229
ui->treeWidget->setFont(fixedFont);
@@ -108,8 +105,8 @@ void MainWindow::open() {
108105
void MainWindow::about() {
109106
QMessageBox::about(this,
110107
tr("About Application"),
111-
tr("DependencyViewer shows all dependent libraries of a "
112-
"given executable or dynamic library on Linux. It is a GUI replacement for the ldd, file and nm command."));
108+
tr("DependencyViewer shows all dependecies of a "
109+
"given executable or dynamic library. It is a GUI wrapper for the ldd, file and nm command."));
113110
}
114111

115112
void MainWindow::find() {
@@ -154,8 +151,31 @@ void MainWindow::createMenus() {
154151
helpMenu = menuBar()->addMenu(tr("&Help"));
155152
helpMenu->addAction(aboutAct);
156153
helpMenu->addAction(aboutQtAct);
154+
155+
ui->listWidgetExportTable->setContextMenuPolicy(Qt::CustomContextMenu);
156+
connect(ui->listWidgetExportTable, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(showContextMenu(QPoint)));
157+
}
158+
159+
void MainWindow::showContextMenu(const QPoint &pos) {
160+
// Handle global position
161+
QPoint globalPos = ui->listWidgetExportTable->mapToGlobal(pos);
162+
// Create menu and insert some actions
163+
QMenu myMenu;
164+
myMenu.addAction("Copy", this, SLOT(copyExportItem()));
165+
// Show context menu at handling position
166+
myMenu.exec(globalPos);
157167
}
158168

169+
void MainWindow::copyExportItem() {
170+
QClipboard *clipboard = qApp->clipboard();
171+
// If multiple selection is on, we need to erase all selected items
172+
for (int i = 0; i < ui->listWidgetExportTable->selectedItems().size(); ++i) {
173+
// Get curent item on selected row
174+
QListWidgetItem *item = ui->listWidgetExportTable->item(ui->listWidgetExportTable->currentRow());
175+
// And copy text from it
176+
clipboard->setText(item->text());
177+
}
178+
}
159179
void MainWindow::on_checkBoxOwnerRead_clicked(bool checked) { ui->checkBoxOwnerRead->setChecked(!checked); }
160180

161181
void MainWindow::on_checkBoxOwnerWrite_clicked(bool checked) { ui->checkBoxOwnerWrite->setChecked(!checked); }

mainwindow.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ class MainWindow : public QMainWindow {
2323
void find();
2424
void myClose();
2525

26+
void showContextMenu(const QPoint &pos);
27+
28+
void copyExportItem();
29+
2630
void on_checkBoxOwnerRead_clicked(bool checked);
2731

2832
void on_checkBoxOwnerWrite_clicked(bool checked);
@@ -59,6 +63,7 @@ class MainWindow : public QMainWindow {
5963
QAction *aboutAct;
6064
QAction *aboutQtAct;
6165
QAction *exitAct;
66+
QFont fixedFont;
6267
};
6368

6469
#endif // MAINWINDOW_H
Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,27 @@
11
import os, os.path
2-
import urllib
2+
import urllib.parse
33

4-
from gi.repository import Nautilus, GObject, GConf
4+
from gi.repository import Nautilus, GObject
55

66
QLDD_KEY = '/usr/bin/Qldd'
77

8-
9-
class OpenQlddExtension(Nautilus.MenuProvider, GObject.GObject):
8+
class OpenQlddExtension(GObject.GObject, Nautilus.MenuProvider):
109
def __init__(self):
1110
pass
1211

1312
def _open_qldd(self, file):
14-
filename = urllib.unquote(file.get_uri()[7:])
13+
filename = urllib.parse.unquote(file.get_uri()[7:])
1514
qldd = QLDD_KEY
1615
os.system('%s %s &' % (qldd, filename))
1716

18-
def menu_activate_cb(self, menu, file):
19-
self._open_qldd(file)
17+
def menu_activate_cb(self, menu, files):
18+
for file in files:
19+
self._open_qldd(file)
2020

2121
def get_file_items(self, window, files):
22-
if len(files) != 1:
23-
return
24-
25-
file = files[0]
26-
if file.is_directory() or file.get_uri_scheme() != 'file':
27-
return
28-
29-
item = Nautilus.MenuItem(name='NautilusPython::openqldd_file_item',
30-
label='View dependencies',
31-
tip='View dependencies of %s' % file.get_name())
32-
item.connect('activate', self.menu_activate_cb, file)
22+
item = Nautilus.MenuItem(
23+
name='Qldd',
24+
label='View dependencies',
25+
icon='/usr/share/icons/qldd/Qldd.png')
26+
item.connect('activate', self.menu_activate_cb, files)
3327
return item,

qldd.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ QString QLdd::getHumanReadableDataSize() const {
7676
i++;
7777
}
7878
char buf[512] = {0};
79-
sprintf(buf, "%.*f %s", i, size, units[i]);
79+
snprintf(buf, sizeof(buf), "%.*f %s", i, size, units[i]);
8080
return QString::fromLocal8Bit(buf);
8181
}
8282

@@ -170,6 +170,7 @@ void QLdd::fillExportTable(QListWidget &listWidget, const QString &filter) {
170170
demangled.replace(":__1:", "");
171171
demangled.replace(":__cxx11:", "");
172172
demangled.replace("std::basic_string<char, std::char_traits<char>, std::allocator<char> >", "std::string");
173+
demangled.replace("__gnu_cxx::__normal_iterator<char const*, std::string >", "std::string::const_iterator");
173174
}
174175
std::unique_ptr<QListWidgetItem> item(new QListWidgetItem(info.at(0) + " " + demangled));
175176
item->setToolTip(demangled);

0 commit comments

Comments
 (0)