commit 4513fe62e4517057374091092073e0940584ebe2 Author: Tobias Doerffel Date: Mon Jun 29 12:05:49 2009 +0200 Port GUI to Qt4 diff --git a/configure.in b/configure.in index 6f684a0..883a7ad 100644 --- a/configure.in +++ b/configure.in @@ -131,7 +131,7 @@ ORIG_X_SAVE_LIBS="$LIBS" LIBS="$X_PRE_LIBS $LIBS $X_LIBS -lX11 $X_EXTRA_LIBS" X_LIBS="$LIBS" AC_SUBST(X_LIBS) -QT_DO_IT_ALL +QT4_DO_IT_ALL LIBS="$ORIG_X_SAVE_LIBS" dnl enable pch for c++ @@ -155,7 +155,7 @@ AC_SUBST(POPT_LIBS) # do NOT put tests here, they will fail in the case X is not installed ! -AM_CONDITIONAL(have_qt, test -n "$QT_LIB") +AM_CONDITIONAL(have_qt, test -n "$QT4_LIB") AX_CFLAGS_OPTION(OP_CFLAGS,[-W]) AX_CXXFLAGS_OPTION(OP_CXXFLAGS,[-W]) @@ -258,7 +258,6 @@ AC_OUTPUT(Makefile \ opjitconv/Makefile \ pp/Makefile \ gui/Makefile \ - gui/ui/Makefile \ module/Makefile \ module/x86/Makefile \ module/ia64/Makefile \ @@ -268,8 +267,8 @@ AC_OUTPUT(Makefile \ AX_COPY_IF_CHANGE(doc/xsl/catalog-1.xml, doc/xsl/catalog.xml) -if test -z "$QT_LIB"; then - echo "Warning: a working Qt not found; no GUI will be built" +if test -z "$QT4_LIB"; then + echo "Warning: a working Qt4 not found; no GUI will be built" fi if test "`getent passwd oprofile 2>/dev/null`" == "" || \ diff --git a/gui/Makefile.am b/gui/Makefile.am index ba5e27c..69e01dd 100644 --- a/gui/Makefile.am +++ b/gui/Makefile.am @@ -1,5 +1,3 @@ -SUBDIRS = ui - dist_sources = \ oprof_start.cpp \ oprof_start_config.cpp \ @@ -14,7 +12,7 @@ EXTRA_DIST = $(dist_sources) if have_qt AM_CPPFLAGS = \ - @QT_INCLUDES@ \ + @QT4_INCLUDES@ \ -I ${top_srcdir}/libop \ -I ${top_srcdir}/libutil++ \ -I ${top_srcdir}/libutil @@ -25,19 +23,22 @@ bin_PROGRAMS = oprof_start oprof_start_SOURCES = $(dist_sources) nodist_oprof_start_SOURCES = oprof_start.moc.cpp +BUILT_SOURCES = ui_oprof_start.base.h oprof_start_LDADD = \ ../libutil++/libutil++.a \ ../libop/libop.a \ ../libutil/libutil.a \ - ui/liboprof_start.a \ - @QT_LDFLAGS@ \ - @QT_LIB@ \ + @QT4_LDFLAGS@ \ + @QT4_LIB@ -lQt3Support \ @X_LIBS@ oprof_start.moc.cpp: ${top_srcdir}/gui/oprof_start.h - $(MOC) -o $@ ${top_srcdir}/gui/oprof_start.h + $(MOC4) -o $@ ${top_srcdir}/gui/oprof_start.h + +ui_oprof_start.base.h: ${top_srcdir}/gui/ui/oprof_start.base.ui + $(UIC4) -o $@ $< clean-local: - rm -f oprof_start.moc.cpp + rm -f oprof_start.moc.cpp ui_oprof_start.base.h endif diff --git a/gui/oprof_start.cpp b/gui/oprof_start.cpp index 0387136..615c8d7 100644 --- a/gui/oprof_start.cpp +++ b/gui/oprof_start.cpp @@ -23,7 +23,6 @@ #include #include #include -#include #include #include #include @@ -32,7 +31,8 @@ #include #include #include -#include +#include +#include #include "config.h" #include "oprof_start.h" @@ -106,12 +106,15 @@ op_event_descr::op_event_descr() oprof_start::oprof_start() : - oprof_start_base(0, 0, false, 0), + QDialog(0), + oprof_start_base(), event_count_validator(new QIntValidator(event_count_edit)), current_event(0), cpu_speed(op_cpu_frequency()), total_nr_interrupts(0) { + setupUi( this ); + green_pixmap = new QPixmap(green_xpm); red_pixmap = new QPixmap(red_xpm); vector args; @@ -124,7 +127,7 @@ oprof_start::oprof_start() op_nr_counters = op_get_nr_counters(cpu_type); if (cpu_type == CPU_TIMER_INT) { - setup_config_tab->removePage(counter_setup_page); + setup_config_tab->removeTab(setup_config_tab->indexOf(counter_setup_page)); } else { fill_events(); } @@ -268,12 +271,12 @@ void oprof_start::fill_events() namespace { /// find the first item with the given text in column 0 or return NULL -QListViewItem * findItem(QListView * view, char const * name) +Q3ListViewItem * findItem(Q3ListView * view, char const * name) { - // Qt 2.3.1 does not have QListView::findItem() - QListViewItem * item = view->firstChild(); + // Qt 2.3.1 does not have Q3ListView::findItem() + Q3ListViewItem * item = view->firstChild(); - while (item && strcmp(item->text(0).latin1(), name)) + while (item && strcmp(item->text(0).toLatin1().constData(), name)) item = item->nextSibling(); return item; @@ -292,7 +295,7 @@ void oprof_start::setup_default_event() event_cfgs[descr.name].user_ring_count = 1; event_cfgs[descr.name].os_ring_count = 1; - QListViewItem * item = findItem(events_list, descr.name); + Q3ListViewItem * item = findItem(events_list, descr.name); if (item) item->setSelected(true); } @@ -349,7 +352,7 @@ void oprof_start::read_set_events() event_cfgs[ev_name].os_ring_count = 1; } - QListViewItem * item = findItem(events_list, ev_name.c_str()); + Q3ListViewItem * item = findItem(events_list, ev_name.c_str()); if (item) item->setSelected(true); } @@ -436,7 +439,7 @@ void oprof_start::fill_events_listbox() for (vector::reverse_iterator cit = v_events.rbegin(); cit != v_events.rend(); ++cit) { - new QListViewItem(events_list, cit->name.c_str()); + new Q3ListViewItem(events_list, cit->name.c_str()); } setUpdatesEnabled(true); @@ -467,7 +470,7 @@ void oprof_start::display_event(op_event_descr const & descr) } -bool oprof_start::is_selectable_event(QListViewItem * item) +bool oprof_start::is_selectable_event(Q3ListViewItem * item) { if (item->isSelected()) return true; @@ -486,7 +489,7 @@ bool oprof_start::is_selectable_event(QListViewItem * item) void oprof_start::draw_event_list() { - QListViewItem * cur; + Q3ListViewItem * cur; for (cur = events_list->firstChild(); cur; cur = cur->nextSibling()) { if (is_selectable_event(cur)) cur->setPixmap(0, *green_pixmap); @@ -500,9 +503,9 @@ bool oprof_start::alloc_selected_events() const { vector events; - set::const_iterator it; + set::const_iterator it; for (it = selected_events.begin(); it != selected_events.end(); ++it) - events.push_back(find_event_by_name((*it)->text(0).latin1(),0,0)); + events.push_back(find_event_by_name((*it)->text(0).toLatin1().constData(),0,0)); size_t * map = map_event_to_counter(&events[0], events.size(), cpu_type); @@ -520,24 +523,24 @@ void oprof_start::event_selected() // (de)selected item so we record a set of selected items and diff // it in the appropriate way with the previous list of selected items. - set current_selection; - QListViewItem * cur; + set current_selection; + Q3ListViewItem * cur; for (cur = events_list->firstChild(); cur; cur = cur->nextSibling()) { if (cur->isSelected()) current_selection.insert(cur); } // First remove the deselected item. - vector new_deselected; + vector new_deselected; set_difference(selected_events.begin(), selected_events.end(), current_selection.begin(), current_selection.end(), back_inserter(new_deselected)); - vector::const_iterator it; + vector::const_iterator it; for (it = new_deselected.begin(); it != new_deselected.end(); ++it) selected_events.erase(*it); // Now try to add the newly selected item if enough HW resource exists - vector new_selected; + vector new_selected; set_difference(current_selection.begin(), current_selection.end(), selected_events.begin(), selected_events.end(), back_inserter(new_selected)); @@ -554,26 +557,26 @@ void oprof_start::event_selected() draw_event_list(); if (current_event) - display_event(locate_event(current_event->text(0).latin1())); + display_event(locate_event(current_event->text(0).toLatin1().constData())); } -void oprof_start::event_over(QListViewItem * item) +void oprof_start::event_over(Q3ListViewItem * item) { - op_event_descr const & descr = locate_event(item->text(0).latin1()); + op_event_descr const & descr = locate_event(item->text(0).toLatin1().constData()); string help_str = descr.help_str.c_str(); if (!is_selectable_event(item)) { help_str += " conflicts with:"; - set::const_iterator it; + set::const_iterator it; for (it = selected_events.begin(); it != selected_events.end(); ) { - QListViewItem * temp = *it; + Q3ListViewItem * temp = *it; selected_events.erase(it++); if (is_selectable_event(item)) { help_str += " "; - help_str += temp->text(0).latin1(); + help_str += temp->text(0).toLatin1().constData(); } selected_events.insert(temp); } @@ -586,7 +589,7 @@ void oprof_start::event_over(QListViewItem * item) /// select the kernel image filename void oprof_start::choose_kernel_filename() { - string name = kernel_filename_edit->text().latin1(); + string name = kernel_filename_edit->text().toLatin1().constData(); string result = do_open_file_or_dir(name, false); if (!result.empty()) @@ -601,7 +604,7 @@ void oprof_start::record_selected_event_config() if (!current_event) return; - string name(current_event->text(0).latin1()); + string name(current_event->text(0).toLatin1().constData()); event_setting & cfg = event_cfgs[name]; op_event_descr const & curr = locate_event(name); @@ -617,7 +620,7 @@ void oprof_start::record_selected_event_config() // are not sufficient to do the validation) bool oprof_start::record_config() { - config.kernel_filename = kernel_filename_edit->text().latin1(); + config.kernel_filename = kernel_filename_edit->text().toLatin1().constData(); config.no_kernel = no_vmlinux->isChecked(); uint temp = buffer_size_edit->text().toUInt(); @@ -824,7 +827,7 @@ uint oprof_start::max_perf_count() const } -void oprof_start::on_flush_profiler_data() +void oprof_start::flush_profiler_data() { vector args; args.push_back("--dump"); @@ -837,14 +840,14 @@ void oprof_start::on_flush_profiler_data() // user is happy of its setting. -void oprof_start::on_start_profiler() +void oprof_start::start_profiler() { // save the current settings record_selected_event_config(); bool one_enable = false; - QListViewItem * cur; + Q3ListViewItem * cur; for (cur = events_list->firstChild(); cur; cur = cur->nextSibling()) { if (!cur->isSelected()) continue; @@ -852,9 +855,9 @@ void oprof_start::on_start_profiler() // the missing reference is intended: gcc 2.91.66 can compile // "op_event_descr const & descr = ..." w/o a warning op_event_descr const descr = - locate_event(cur->text(0).latin1()); + locate_event(cur->text(0).toLatin1().constData()); - event_setting & cfg = event_cfgs[cur->text(0).latin1()]; + event_setting & cfg = event_cfgs[cur->text(0).toLatin1().constData()]; one_enable = true; @@ -909,7 +912,7 @@ void oprof_start::on_start_profiler() return; // this flush profiler data also. - on_stop_profiler(); + stop_profiler(); } vector args; @@ -946,15 +949,15 @@ bool oprof_start::save_config() vector tmpargs; tmpargs.push_back("--setup"); - QListViewItem * cur; + Q3ListViewItem * cur; for (cur = events_list->firstChild(); cur; cur = cur->nextSibling()) { if (!cur->isSelected()) continue; - event_setting & cfg = event_cfgs[cur->text(0).latin1()]; + event_setting & cfg = event_cfgs[cur->text(0).toLatin1().constData()]; op_event_descr const & descr = - locate_event(cur->text(0).latin1()); + locate_event(cur->text(0).toLatin1().constData()); one_enabled = true; @@ -1016,7 +1019,7 @@ bool oprof_start::save_config() // flush and stop the profiler if it was started. -void oprof_start::on_stop_profiler() +void oprof_start::stop_profiler() { vector args; args.push_back("--shutdown"); @@ -1030,13 +1033,13 @@ void oprof_start::on_stop_profiler() } -void oprof_start::on_separate_kernel_cb_changed(int state) +void oprof_start::separate_kernel_cb_changed(int state) { if (state == 2) separate_lib_cb->setChecked(true); } -void oprof_start::on_reset_sample_files() +void oprof_start::reset_sample_files() { int ret = QMessageBox::warning(this, 0, "Are you sure you want to " "reset your last profile session ?", "Yes", "No", 0, 0, 1); diff --git a/gui/oprof_start.h b/gui/oprof_start.h index c2910ee..a2c5eb5 100644 --- a/gui/oprof_start.h +++ b/gui/oprof_start.h @@ -16,13 +16,16 @@ #include #include -#include "ui/oprof_start.base.h" +#include +class QColorGroup; + +#include "ui_oprof_start.base.h" #include "oprof_start_config.h" #include "op_events.h" class QIntValidator; -class QListViewItem; +class Q3ListViewItem; class QTimerEvent; /// a struct describing a particular event type @@ -43,7 +46,7 @@ struct op_event_descr { uint min_count; }; -class oprof_start : public oprof_start_base +class oprof_start : public QDialog, public Ui::oprof_start_base { Q_OBJECT @@ -54,19 +57,19 @@ protected slots: /// select the kernel image filename void choose_kernel_filename(); /// flush profiler - void on_flush_profiler_data(); + void flush_profiler_data(); /// start profiler - void on_start_profiler(); + void start_profiler(); /// stop profiler - void on_stop_profiler(); + void stop_profiler(); /// events selection change void event_selected(); /// the mouse is over an event - void event_over(QListViewItem *); + void event_over(Q3ListViewItem *); /// state of separate_kernel_cb changed - void on_separate_kernel_cb_changed(int); + void separate_kernel_cb_changed(int); /// reset sample files - void on_reset_sample_files(); + void reset_sample_files(); /// close the dialog void accept(); @@ -121,7 +124,7 @@ private: void draw_event_list(); /// return true if item is selectable or already selected - bool is_selectable_event(QListViewItem * item); + bool is_selectable_event(Q3ListViewItem * item); /// try to alloc counters for the selected_events bool alloc_selected_events() const; @@ -139,8 +142,8 @@ private: /// The currently selected events. We must track this because /// with multiple selection listbox QT doesn't allow to know /// what is the last selected item. events_selected() update it - std::set selected_events; - QListViewItem * current_event; + std::set selected_events; + Q3ListViewItem * current_event; /// current config config_setting config; diff --git a/gui/oprof_start_main.cpp b/gui/oprof_start_main.cpp index 44da5de..4930d9a 100644 --- a/gui/oprof_start_main.cpp +++ b/gui/oprof_start_main.cpp @@ -19,7 +19,7 @@ int main(int argc, char* argv[]) oprof_start* dlg = new oprof_start(); - a.setMainWidget(dlg); + a.setActiveWindow(dlg); dlg->show(); diff --git a/gui/oprof_start_util.cpp b/gui/oprof_start_util.cpp index d293431..17359ae 100644 --- a/gui/oprof_start_util.cpp +++ b/gui/oprof_start_util.cpp @@ -293,17 +293,16 @@ string const do_open_file_or_dir(string const & base_dir, bool dir_only) QString result; if (dir_only) { - result = QFileDialog::getExistingDirectory(base_dir.c_str(), 0, - "open_file_or_dir", "Get directory name", true); + result = QFileDialog::getExistingDirectory(NULL, "Get directory name", + base_dir.c_str(), QFileDialog::ShowDirsOnly); } else { - result = QFileDialog::getOpenFileName(base_dir.c_str(), 0, 0, - "open_file_or_dir", "Get filename"); + result = QFileDialog::getOpenFileName(NULL, "Get filename", base_dir.c_str()); } if (result.isNull()) return string(); else - return result.latin1(); + return result.toLatin1().constData(); } /** diff --git a/gui/ui/oprof_start.base.ui b/gui/ui/oprof_start.base.ui index 4fcc43f..b882656 100644 --- a/gui/ui/oprof_start.base.ui +++ b/gui/ui/oprof_start.base.ui @@ -1,1190 +1,1055 @@ - -oprof_start_base - - QDialog - - name - oprof_start_base - - - geometry - - 0 - 0 - 625 - 735 - - - - caption - Start profiler - - - sizeGripEnabled - true - - - - margin - 11 - - - spacing - 6 - - - QTabWidget - - name - setup_config_tab + + + oprof_start_base + + + + 0 + 0 + 625 + 735 + + + + Start profiler + + + true + + + + 6 + + + 11 + + + + + + &Setup + + + + 6 + + + 11 + + + + + Events + + + + 6 + + + 11 + + + + + 6 - - QWidget - - name - counter_setup_page + + 0 + + + + + + 250 + 0 + + + + Available events + + + Q3ListView::Multi + + + + Removedincode + + + false + + + true + + + + + + + + 6 + + + 0 + + + + + Profile kernel code - - title - &Setup - - - - margin - 11 - - - spacing - 6 - - - QGroupBox - - name - counter_group - - - title - Events - - - - margin - 11 - - - spacing - 6 - - - QLayoutWidget - - name - Layout10 - - - - margin - 0 - - - spacing - 6 - - - QListView - - - text - Removedincode - - - clickable - false - - - resizeable - true - - - - name - events_list - - - minimumSize - - 250 - 0 - - - - selectionMode - Multi - - - toolTip - Available events - - - - QLayoutWidget - - name - Layout9 - - - - margin - 0 - - - spacing - 6 - - - QCheckBox - - name - os_ring_count_cb - - - text - Profile &kernel - - - toolTip - Profile kernel code - - - - QCheckBox - - name - user_ring_count_cb - - - text - Profile &user binaries - - - toolTip - Profile user libraries and applications - - - - QLayoutWidget - - name - Layout16 - - - - margin - 0 - - - spacing - 6 - - - QLabel - - name - TextLabel1_2 - - - text - C&ount - - - buddy - event_count_edit - - - - QLineEdit - - name - event_count_edit - - - sizePolicy - - 1 - 0 - - - - toolTip - Set the count value - - - - - name - Spacer13_2 - - - orientation - Horizontal - - - sizeType - Expanding - - - sizeHint - - 20 - 20 - - - - - - - QButtonGroup - - name - unit_mask_group - - - sizePolicy - - 1 - 5 - - - - title - Unit mask - - - toolTip - Unit mask settings for this event - - - - margin - 11 - - - spacing - 6 - - - QCheckBox - - name - check0 - - - text - check0 - - - - QCheckBox - - name - check1 - - - text - check1 - - - - QCheckBox - - name - check2 - - - text - check2 - - - - QCheckBox - - name - check3 - - - text - check3 - - - - QCheckBox - - name - check4 - - - text - check4 - - - - QCheckBox - - name - check5 - - - text - check5 - - - - QCheckBox - - name - check6 - - - text - check6 - - - - QCheckBox - - name - check7 - - - text - check7 - - - - - name - Spacer14 - - - orientation - Vertical - - - sizeType - Expanding - - - sizeHint - - 20 - 20 - - - - - QCheckBox - - name - check11 - - - text - check11 - - - - QCheckBox - - name - check13 - - - text - check13 - - - - QCheckBox - - name - check15 - - - text - check15 - - - - QCheckBox - - name - check10 - - - text - check10 - - - - QCheckBox - - name - check14 - - - text - check14 - - - - QCheckBox - - name - check9 - - - text - check9 - - - - QCheckBox - - name - check8 - - - text - check8 - - - - QCheckBox - - name - check12 - - - text - check12 - - - - - - - - - - QLabel - - name - event_help_label - - - enabled - true - - - sizePolicy - - 1 - 1 - - - - frameShape - WinPanel - - - frameShadow - Sunken - - - text - - - - - - - - - QWidget - - name - configuration_page + + Profile &kernel - - title - &Configuration - - - - margin - 11 - - - spacing - 6 - - - QLayoutWidget - - name - Layout11 - - - - margin - 0 - - - spacing - 6 - - - QLabel - - name - TextLabel1 - - - text - &Kernel image file - - - buddy - kernel_filename_edit - - - - QLineEdit - - name - kernel_filename_edit - - - toolTip - The vmlinux file of the running kernel - - - - QToolButton - - name - kernel_filename_tb - - - text - ... - - - - QCheckBox - - name - no_vmlinux - - - text - No kernel image - - - toolTip - No kernel image available. Disables kernel profiling. - - - - - - QLayoutWidget - - name - Layout12 - - - - margin - 0 - - - spacing - 6 - - - QLayoutWidget - - name - Layout11 - - - - margin - 0 - - - spacing - 6 - - - QLineEdit - - name - buffer_size_edit - - - toolTip - The size of the profiler's buffers - - - - QLineEdit - - name - note_table_size_edit - - - - QLabel - - name - cpu_buffer_size_label - - - text - Cpu buffer size - - - buddy - cpu_buffer_size_edit - - - - QLineEdit - - name - cpu_buffer_size_edit - - - - QLabel - - name - buffer_size_label - - - text - &Buffer size - - - buddy - buffer_size_edit - - - - QLabel - - name - note_table_size_label - - - text - Note Size - - - buddy - note_table_size_edit - - - - QLineEdit - - name - buffer_watershed_edit - - - - QLabel - - name - buffer_watershed_label - - - text - Buffer watershed - - - buddy - buffer_watershed_edit - - - - - - - name - Spacer11 - - - orientation - Horizontal - - - sizeType - Expanding - - - sizeHint - - 20 - 20 - - - - - - - QLayoutWidget - - name - Layout36 - - - - margin - 0 - - - spacing - 6 - - - QLayoutWidget - - name - Layout34 - - - - margin - 0 - - - spacing - 6 - - - QCheckBox - - name - verbose - - - text - &Verbose - - - toolTip - Very verbose output in log file - - - - QCheckBox - - name - separate_lib_cb - - - text - Per-application profiles - - - toolTip - Separate samples for each shared library. This increases the time and space overhead of OProfile. - - - - QCheckBox - - name - separate_kernel_cb - - - text - Per-application profiles, including kernel - - - toolTip - Separate samples for each shared library and kernel samples. This increases the time and space overhead of OProfile. - - - - QCheckBox - - name - separate_cpu_cb - - - text - Per-CPU profiles - - - toolTip - Separate samples for each shared library and kernel samples. This increases the time and space overhead of OProfile. - - - - QCheckBox - - name - separate_thread_cb - - - text - Per-thread/task profiles - - - toolTip - Separate samples for each shared library and kernel samples. This increases the time and space overhead of OProfile. - - - - QLayoutWidget - - name - Layout33 - - - - margin - 0 - - - spacing - 6 - - - QLabel - - name - callgraph_depth_label - - - text - callgraph depth, zero to disable - - - buddy - callgraph_depth_edit - - - - QLineEdit - - name - callgraph_depth_edit - - - - - - - - - name - Spacer12 - - - orientation - Horizontal - - - sizeType - Expanding - - - sizeHint - - 20 - 20 - - - - - - - - name - Spacer9 - - - orientation - Vertical - - - sizeType - Expanding - - - sizeHint - - 20 - 20 - - - - - - - - QLabel - - name - daemon_label + + + + + + Profile user libraries and applications + + + Profile &user binaries + + + + + + + 6 + + + 0 + + + + + C&ount + + + false + + + event_count_edit + + + + + + + + 0 + 0 + + + + Set the count value + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 20 + 20 + + + + + + + + + + + 0 + 0 + + + + Unit mask settings for this event + + + Unit mask + + + + 11 + + + 6 + + + + + check0 + + + + + + + + + + check1 + + + + + + + + + + check2 + + + + + + + + + + check3 + + + + + + + + + + check4 + + + + + + + + + + check5 + + + + + + + + + + check6 + + + + + + + + + + check7 + + + + + + + + + + Qt::Vertical + + + QSizePolicy::Expanding + + + + 20 + 20 + + + + + + + + check11 + + + + + + + + + + check13 + + + + + + + + + + check15 + + + + + + + + + + check10 + + + + + + + + + + check14 + + + + + + + + + + check9 + + + + + + + + + + check8 + + + + + + + + + + check12 + + + + + + + + + + + + + + + + + true - - frameShape - Panel + + + 0 + 0 + - - frameShadow - Sunken + + QFrame::Panel - - text - + + QFrame::Sunken - - toolTip - Current daemon status + + - - - QLayoutWidget - - name - Layout37 + + false - - - margin - 0 - - - spacing - 6 - - - QPushButton - - name - start_profiler_btn - - - text - St&art - - - - QPushButton - - name - flush_profiler_data_btn - - - text - &Flush - - - - QPushButton - - name - stop_profiler_btn - - - text - Stop - - - - - name - Spacer5 - - - orientation - Horizontal - - - sizeType - Expanding - - - sizeHint - - 20 - 20 - - - - - QPushButton - - name - reset_sample_files_btn - - - text - Reset sample files - - - - QPushButton - - name - quit_and_save_btn - - - text - Save and &quit - - - autoDefault - true - - - + + + - - - - - start_profiler_btn - clicked() - oprof_start_base - on_start_profiler() - - - stop_profiler_btn - clicked() - oprof_start_base - on_stop_profiler() - - - flush_profiler_data_btn - clicked() - oprof_start_base - on_flush_profiler_data() - - - quit_and_save_btn - clicked() - oprof_start_base - accept() - - - kernel_filename_tb - clicked() - oprof_start_base - choose_kernel_filename() - - - no_vmlinux - toggled(bool) - kernel_filename_tb - setDisabled(bool) - - - no_vmlinux - toggled(bool) - kernel_filename_edit - setDisabled(bool) - - - no_vmlinux - toggled(bool) - TextLabel1 - setDisabled(bool) - - - separate_kernel_cb - stateChanged(int) - oprof_start_base - on_separate_kernel_cb_changed(int) - - - reset_sample_files_btn - clicked() - oprof_start_base - on_reset_sample_files() - - - events_list - selectionChanged() - oprof_start_base - event_selected() - - - events_list - currentChanged(QListViewItem*) - oprof_start_base - event_over(QListViewItem *) - - - events_list - onItem(QListViewItem*) - oprof_start_base - event_over(QListViewItem *) - - choose_kernel_filename() - event_over(QListViewItem *) - event_selected() - on_reset_sample_files() - on_flush_profiler_data() - on_separate_kernel_cb_changed(int) - on_start_profiler() - on_stop_profiler() - - - setup_config_tab - events_list - os_ring_count_cb - user_ring_count_cb - event_count_edit - check0 - check1 - check2 - check3 - check4 - check5 - check6 - check7 - check8 - check9 - check10 - check11 - check12 - check13 - check14 - check15 - start_profiler_btn - flush_profiler_data_btn - stop_profiler_btn - reset_sample_files_btn - quit_and_save_btn - kernel_filename_edit - no_vmlinux - buffer_size_edit - note_table_size_edit - buffer_watershed_edit - verbose - separate_lib_cb - separate_kernel_cb - separate_cpu_cb - separate_thread_cb - callgraph_depth_edit - - + + + + + + &Configuration + + + + 6 + + + 11 + + + + + 6 + + + 0 + + + + + &Kernel image file + + + false + + + kernel_filename_edit + + + + + + + The vmlinux file of the running kernel + + + + + + + ... + + + + + + + No kernel image available. Disables kernel profiling. + + + No kernel image + + + + + + + + + 6 + + + 0 + + + + + 0 + + + 6 + + + + + The size of the profiler's buffers + + + + + + + + + + Cpu buffer size + + + false + + + cpu_buffer_size_edit + + + + + + + + + + &Buffer size + + + false + + + buffer_size_edit + + + + + + + Note Size + + + false + + + note_table_size_edit + + + + + + + + + + Buffer watershed + + + false + + + buffer_watershed_edit + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 20 + 20 + + + + + + + + + + 0 + + + 6 + + + + + 6 + + + 0 + + + + + Very verbose output in log file + + + &Verbose + + + + + + + Separate samples for each shared library. This increases the time and space overhead of OProfile. + + + Per-application profiles + + + + + + + Separate samples for each shared library and kernel samples. This increases the time and space overhead of OProfile. + + + Per-application profiles, including kernel + + + + + + + Separate samples for each shared library and kernel samples. This increases the time and space overhead of OProfile. + + + Per-CPU profiles + + + + + + + Separate samples for each shared library and kernel samples. This increases the time and space overhead of OProfile. + + + Per-thread/task profiles + + + + + + + 6 + + + 0 + + + + + callgraph depth, zero to disable + + + false + + + callgraph_depth_edit + + + + + + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 20 + 20 + + + + + + + + + + Qt::Vertical + + + QSizePolicy::Expanding + + + + 20 + 20 + + + + + + + + + + + + Current daemon status + + + QFrame::Panel + + + QFrame::Sunken + + + + + + false + + + + + + + 6 + + + 0 + + + + + St&art + + + + + + + &Flush + + + + + + + Stop + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 20 + 20 + + + + + + + + Reset sample files + + + + + + + Save and &quit + + + true + + + + + + + + qPixmapFromMimeSource + + + Q3GroupBox + QGroupBox +
Qt3Support/Q3GroupBox
+ 1 +
+ + Q3Frame + QFrame +
Qt3Support/Q3Frame
+ 1 +
+ + Q3ButtonGroup + Q3GroupBox +
Qt3Support/Q3ButtonGroup
+ 1 +
+ + Q3ListView + Q3Frame +
q3listview.h
+
+
+ + setup_config_tab + events_list + os_ring_count_cb + user_ring_count_cb + event_count_edit + check0 + check1 + check2 + check3 + check4 + check5 + check6 + check7 + check8 + check9 + check10 + check11 + check12 + check13 + check14 + check15 + start_profiler_btn + flush_profiler_data_btn + stop_profiler_btn + reset_sample_files_btn + quit_and_save_btn + kernel_filename_edit + no_vmlinux + buffer_size_edit + note_table_size_edit + buffer_watershed_edit + verbose + separate_lib_cb + separate_kernel_cb + separate_cpu_cb + separate_thread_cb + callgraph_depth_edit + + + + + start_profiler_btn + clicked(bool) + oprof_start_base + start_profiler() + + + 20 + 20 + + + 20 + 20 + + + + + stop_profiler_btn + clicked(bool) + oprof_start_base + stop_profiler() + + + 20 + 20 + + + 20 + 20 + + + + + flush_profiler_data_btn + clicked(bool) + oprof_start_base + flush_profiler_data() + + + 20 + 20 + + + 20 + 20 + + + + + quit_and_save_btn + clicked(bool) + oprof_start_base + accept() + + + 20 + 20 + + + 20 + 20 + + + + + kernel_filename_tb + clicked(bool) + oprof_start_base + choose_kernel_filename() + + + 20 + 20 + + + 20 + 20 + + + + + no_vmlinux + toggled(bool) + kernel_filename_tb + setDisabled(bool) + + + 20 + 20 + + + 20 + 20 + + + + + no_vmlinux + toggled(bool) + kernel_filename_edit + setDisabled(bool) + + + 20 + 20 + + + 20 + 20 + + + + + no_vmlinux + toggled(bool) + TextLabel1 + setDisabled(bool) + + + 20 + 20 + + + 20 + 20 + + + + + separate_kernel_cb + stateChanged(int) + oprof_start_base + separate_kernel_cb_changed(int) + + + 20 + 20 + + + 20 + 20 + + + + + reset_sample_files_btn + clicked(bool) + oprof_start_base + reset_sample_files() + + + 20 + 20 + + + 20 + 20 + + + + + events_list + selectionChanged() + oprof_start_base + event_selected() + + + 20 + 20 + + + 20 + 20 + + + + + events_list + currentChanged(Q3ListViewItem*) + oprof_start_base + event_over(Q3ListViewItem*) + + + 20 + 20 + + + 20 + 20 + + + + + events_list + onItem(Q3ListViewItem*) + oprof_start_base + event_over(Q3ListViewItem*) + + + 20 + 20 + + + 20 + 20 + + + + + diff --git a/m4/qt.m4 b/m4/qt.m4 deleted file mode 100644 index b0e30ef..0000000 --- a/m4/qt.m4 +++ /dev/null @@ -1,217 +0,0 @@ -dnl find a binary in the path -AC_DEFUN([QT_FIND_PATH], -[ - AC_MSG_CHECKING([for $1]) - AC_CACHE_VAL(qt_cv_path_$1, - [ - qt_cv_path_$1="NONE" - if test -n "$$2"; then - qt_cv_path_$1="$$2"; - else - dirs="$3" - qt_save_IFS=$IFS - IFS=':' - for dir in $PATH; do - dirs="$dirs $dir" - done - IFS=$qt_save_IFS - - for dir in $dirs; do - if test -x "$dir/$1"; then - if test -n "$5"; then - evalstr="$dir/$1 $5 2>&1 " - if eval $evalstr; then - qt_cv_path_$1="$dir/$1" - break - fi - else - qt_cv_path_$1="$dir/$1" - break - fi - fi - done - fi - ]) - - if test -z "$qt_cv_path_$1" || test "$qt_cv_path_$1" = "NONE"; then - AC_MSG_RESULT(not found) - $4 - else - AC_MSG_RESULT($qt_cv_path_$1) - $2=$qt_cv_path_$1 - fi -]) - -dnl Find the uic compiler on the path or in qt_cv_dir -AC_DEFUN([QT_FIND_UIC], -[ - QT_FIND_PATH(uic, ac_uic, $qt_cv_dir/bin) - if test -z "$ac_uic" -a "$FATAL" = 1; then - AC_MSG_ERROR([uic binary not found in \$PATH or $qt_cv_dir/bin !]) - fi -]) - -dnl Find the right moc in path/qt_cv_dir -AC_DEFUN([QT_FIND_MOC], -[ - QT_FIND_PATH(moc2, ac_moc2, $qt_cv_dir/bin) - QT_FIND_PATH(moc, ac_moc1, $qt_cv_dir/bin) - - if test -n "$ac_moc1" -a -n "$ac_moc2"; then - dnl found both. Prefer Qt3's if it exists else moc2 - $ac_moc1 -v 2>&1 | grep "Qt 3" >/dev/null - if test "$?" = 0; then - ac_moc=$ac_moc1; - else - ac_moc=$ac_moc2; - fi - else - if test -n "$ac_moc1"; then - ac_moc=$ac_moc1; - else - ac_moc=$ac_moc2; - fi - fi - - if test -z "$ac_moc" -a "$FATAL" = 1; then - AC_MSG_ERROR([moc binary not found in \$PATH or $qt_cv_dir/bin !]) - fi -]) - -dnl check a particular libname -AC_DEFUN([QT_TRY_LINK], -[ - SAVE_LIBS="$LIBS" - LIBS="$LIBS $1" - AC_TRY_LINK([ - #include - #include - ], - [ - QString s("mangle_failure"); - #if (QT_VERSION < 221) - break_me_(\\\); - #endif - ], - qt_cv_libname=$1, - ) - LIBS="$SAVE_LIBS" -]) - -dnl check we can do a compile -AC_DEFUN([QT_CHECK_COMPILE], -[ - AC_MSG_CHECKING([for Qt library name]) - - AC_CACHE_VAL(qt_cv_libname, - [ - AC_LANG_CPLUSPLUS - SAVE_CXXFLAGS=$CXXFLAGS - CXXFLAGS="$CXXFLAGS $QT_INCLUDES $QT_LDFLAGS" - - for libname in -lqt-mt -lqt3 -lqt2 -lqt; - do - QT_TRY_LINK($libname) - if test -n "$qt_cv_libname"; then - break; - fi - done - - CXXFLAGS=$SAVE_CXXFLAGS - ]) - - if test -z "$qt_cv_libname"; then - AC_MSG_RESULT([failed]) - if test "$FATAL" = 1 ; then - AC_MSG_ERROR([Cannot compile a simple Qt executable. Check you have the right \$QTDIR !]) - fi - else - AC_MSG_RESULT([$qt_cv_libname]) - fi -]) - -dnl get Qt version we're using -AC_DEFUN([QT_GET_VERSION], -[ - AC_CACHE_CHECK([Qt version],lyx_cv_qtversion, - [ - AC_LANG_CPLUSPLUS - SAVE_CPPFLAGS=$CPPFLAGS - CPPFLAGS="$CPPFLAGS $QT_INCLUDES" - - cat > conftest.$ac_ext < -"%%%"QT_VERSION_STR"%%%" -EOF - lyx_cv_qtversion=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \ - grep '^"%%%"' 2>/dev/null | \ - sed -e 's/"%%%"//g' -e 's/"//g'` - rm -f conftest.$ac_ext - CPPFLAGS=$SAVE_CPPFLAGS - ]) - - QT_VERSION=$lyx_cv_qtversion - AC_SUBST(QT_VERSION) -]) - -dnl start here -AC_DEFUN([QT_DO_IT_ALL], -[ - dnl Please leave this alone. I use this file in - dnl oprofile. - FATAL=0 - - AC_ARG_WITH(qt-dir, [ --with-qt-dir where the root of Qt is installed ], - [ qt_cv_dir=`eval echo "$withval"/` ]) - - AC_ARG_WITH(qt-includes, [ --with-qt-includes where the Qt includes are. ], - [ qt_cv_includes=`eval echo "$withval"` ]) - - AC_ARG_WITH(qt-libraries, [ --with-qt-libraries where the Qt library is installed.], - [ qt_cv_libraries=`eval echo "$withval"` ]) - - dnl pay attention to $QTDIR unless overridden - if test -z "$qt_cv_dir"; then - qt_cv_dir=$QTDIR - fi - - dnl derive inc/lib if needed - if test -n "$qt_cv_dir"; then - if test -z "$qt_cv_includes"; then - qt_cv_includes=$qt_cv_dir/include - fi - if test -z "$qt_cv_libraries"; then - qt_cv_libraries=$qt_cv_dir/lib - fi - fi - - dnl flags for compilation - QT_INCLUDES= - QT_LDFLAGS= - if test -n "$qt_cv_includes"; then - QT_INCLUDES="-isystem $qt_cv_includes" - fi - if test -n "$qt_cv_libraries"; then - QT_LDFLAGS="-L$qt_cv_libraries" - fi - AC_SUBST(QT_INCLUDES) - AC_SUBST(QT_LDFLAGS) - - QT_FIND_MOC - MOC=$ac_moc - AC_SUBST(MOC) - QT_FIND_UIC - UIC=$ac_uic - AC_SUBST(UIC) - - QT_CHECK_COMPILE - - QT_LIB=$qt_cv_libname; - AC_SUBST(QT_LIB) - - if test -n "$qt_cv_libname"; then - QT_GET_VERSION - fi -]) diff --git a/m4/qt4.m4 b/m4/qt4.m4 new file mode 100644 index 0000000..0df96f7 --- /dev/null +++ b/m4/qt4.m4 @@ -0,0 +1,211 @@ +dnl check a particular libname +AC_DEFUN([QT4_TRY_LINK], +[ + SAVE_LIBS="$LIBS" + LIBS="$LIBS $1" + AC_TRY_LINK([ + #include + #include + ], + [ + QString s("mangle_failure"); + #if (QT_VERSION < 400) + break_me_(\\\); + #endif + ], + qt4_cv_libname=$1, + ) + LIBS="$SAVE_LIBS" +]) + +dnl check we can do a compile +AC_DEFUN([QT4_CHECK_COMPILE], +[ + AC_MSG_CHECKING([for Qt 4 library name]) + + AC_CACHE_VAL(qt4_cv_libname, + [ + AC_LANG_CPLUSPLUS + SAVE_CXXFLAGS=$CXXFLAGS + CXXFLAGS="$CXXFLAGS $QT4_INCLUDES $QT4_LDFLAGS" + for libname in -lQtCore -lQtCore4 + do + QT4_TRY_LINK($libname) + if test -n "$qt4_cv_libname"; then + QT4_CORE_LIB="$qt4_cv_libname" + break; + fi + done + qt4_cv_libname= + for libname in '-lQtCore -lQtGui' \ + '-lQtCore4 -lQtGui4' + do + QT4_TRY_LINK($libname) + if test -n "$qt4_cv_libname"; then + break; + fi + done + CXXFLAGS=$SAVE_CXXFLAGS + ]) + + if test -z "$qt4_cv_libname"; then + AC_MSG_RESULT([failed]) + if test "$FATAL" = 1 ; then + AC_MSG_ERROR([Cannot compile a simple Qt 4 executable. Check you have the right \$QT4DIR !]) + fi + else + AC_MSG_RESULT([$qt4_cv_libname]) + fi +]) + +dnl get Qt version we're using +AC_DEFUN([QT4_GET_VERSION], +[ + AC_CACHE_CHECK([Qt 4 version],lyx_cv_qt4version, + [ + AC_LANG_CPLUSPLUS + SAVE_CPPFLAGS=$CPPFLAGS + CPPFLAGS="$CPPFLAGS $QT4_INCLUDES" + + cat > conftest.$ac_ext < +"%%%"QT_VERSION_STR"%%%" +EOF + lyx_cv_qt4version=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \ + grep '^"%%%"' 2>/dev/null | \ + sed -e 's/"%%%"//g' -e 's/"//g'` + rm -f conftest.$ac_ext + CPPFLAGS=$SAVE_CPPFLAGS + ]) + + QT4_VERSION=$lyx_cv_qt4version + AC_SUBST(QT4_VERSION) +]) + +dnl start here +AC_DEFUN([QT4_DO_IT_ALL], +[ + dnl this variable is precious + AC_ARG_VAR(QT4DIR, [the place where the Qt 4 files are, e.g. /usr/lib/qt4]) + + dnl Please leave this alone. I use this file in + dnl oprofile. + FATAL=0 + + AC_ARG_WITH(qt4-dir, [ --with-qt4-dir where the root of Qt 4 is installed ], + [ qt4_cv_dir=`eval echo "$withval"/` ]) + + AC_ARG_WITH(qt4-includes, [ --with-qt4-includes where the Qt 4 includes are. ], + [ qt4_cv_includes=`eval echo "$withval"` ]) + + AC_ARG_WITH(qt4-libraries, [ --with-qt4-libraries where the Qt 4 library is installed.], + [ qt4_cv_libraries=`eval echo "$withval"` ]) + + dnl pay attention to $QT4DIR unless overridden + if test -z "$qt4_cv_dir"; then + qt4_cv_dir=$QT4DIR + fi + + dnl derive inc/lib if needed + if test -n "$qt4_cv_dir"; then + if test -z "$qt4_cv_includes"; then + qt4_cv_includes=$qt4_cv_dir/include + fi + if test -z "$qt4_cv_libraries"; then + qt4_cv_libraries=$qt4_cv_dir/lib + fi + fi + + dnl compute the binary dir too + if test -n "$qt4_cv_dir"; then + qt4_cv_bin=$qt4_cv_dir/bin + fi + + dnl Preprocessor flags + QT4_CPPFLAGS="-DQT_NO_STL -DQT_NO_KEYWORDS" + case ${host} in + *mingw*) QT4_CPPFLAGS="-DQT_DLL $QT4_CPPFLAGS";; + esac + AC_SUBST(QT4_CPPFLAGS) + + dnl Check if it possible to do a pkg-config + PKG_PROG_PKG_CONFIG + if test -n "$PKG_CONFIG" ; then + QT4_DO_PKG_CONFIG + fi + if test "$pkg_failed" != "no" ; then + QT4_DO_MANUAL_CONFIG + fi + AC_PATH_PROGS(MOC4, [moc-qt4 moc],[],$qt4_cv_bin:$PATH) + AC_PATH_PROGS(UIC4, [uic-qt4 uic],[],$qt4_cv_bin:$PATH) + AC_PATH_PROGS(RCC4, [rcc-qt4 rcc],[],$qt4_cv_bin:$PATH) +]) + +AC_DEFUN([QT4_DO_PKG_CONFIG], +[ + dnl tell pkg-config to look also in $qt4_cv_dir/lib. + save_PKG_CONFIG_PATH=$PKG_CONFIG_PATH + if test -n "$qt4_cv_dir" ; then + PKG_CONFIG_PATH=$qt4_cv_dir/lib:$qt4_cv_dir/lib/pkgconfig:$PKG_CONFIG_PATH + export PKG_CONFIG_PATH + fi + PKG_CHECK_MODULES(QT4_CORE, QtCore,,[:]) + if test "$pkg_failed" = "no" ; then + QT4_CORE_INCLUDES=$QT4_CORE_CFLAGS + AC_SUBST(QT4_CORE_INCLUDES) + QT4_CORE_LDFLAGS=`$PKG_CONFIG --libs-only-L QtCore` + AC_SUBST(QT4_CORE_LDFLAGS) + QT4_CORE_LIB=`$PKG_CONFIG --libs-only-l QtCore` + AC_SUBST(QT4_CORE_LIB) + fi + PKG_CHECK_MODULES(QT4_FRONTEND, QtCore QtGui,,[:]) + if test "$pkg_failed" = "no" ; then + QT4_INCLUDES=$QT4_FRONTEND_CFLAGS + dnl QT4_LDFLAGS=$QT4_FRONTEND_LIBS + QT4_LDFLAGS=`$PKG_CONFIG --libs-only-L QtCore QtGui` + AC_SUBST(QT4_INCLUDES) + AC_SUBST(QT4_LDFLAGS) + QT4_VERSION=`$PKG_CONFIG --modversion QtCore` + AC_SUBST(QT4_VERSION) + QT4_LIB=`$PKG_CONFIG --libs-only-l QtCore QtGui` + AC_SUBST(QT4_LIB) + LIBS="$LIBS `$PKG_CONFIG --libs-only-other QtCore QtGui`" + fi + PKG_CONFIG_PATH=$save_PKG_CONFIG_PATH +]) + +AC_DEFUN([QT4_DO_MANUAL_CONFIG], +[ + dnl flags for compilation + QT4_INCLUDES= + QT4_LDFLAGS= + QT4_CORE_INCLUDES= + QT4_CORE_LDFLAGS= + if test -n "$qt4_cv_includes"; then + QT4_INCLUDES="-I$qt4_cv_includes" + for i in Qt QtCore QtGui; do + QT4_INCLUDES="$QT4_INCLUDES -I$qt4_cv_includes/$i" + done + QT4_CORE_INCLUDES="-I$qt4_cv_includes -I$qt4_cv_includes/QtCore" + fi + if test -n "$qt4_cv_libraries"; then + QT4_LDFLAGS="-L$qt4_cv_libraries" + QT4_CORE_LDFLAGS="-L$qt4_cv_libraries" + fi + AC_SUBST(QT4_INCLUDES) + AC_SUBST(QT4_CORE_INCLUDES) + AC_SUBST(QT4_LDFLAGS) + AC_SUBST(QT4_CORE_LDFLAGS) + + QT4_CHECK_COMPILE + + QT4_LIB=$qt4_cv_libname; + AC_SUBST(QT4_LIB) + AC_SUBST(QT4_CORE_LIB) + + if test -n "$qt4_cv_libname"; then + QT4_GET_VERSION + fi +])