[PATCH v2] track#532 : abrt does not build with 'make installed' libreport & btparser
by Jakub Filak
Hi folks,
I've decided to include the libreport headers explicitly with prefix
'libreport/'. I know that this way requires changes in more files but the
previous version of this patch brings an ugly line "#include <client.h>" in
file 'abrt/include/plugins/http-utils.h'. I guess, 'client.h' is highly used
name. In order to keep LIBREPORT_CFLAGS variable as simple as possible the
style of includes must be uniform. Therefore all libreport includes must (or
must not) have 'libreport/' prefix.
The mixed style requires the following type of CFLAGS:
LIBREPORT_CFLAGS="-I${DESTDIR}/libreport/include -
I${DESTDIR}/libreport/include/libreport -I/usr/include/glib-2.0 -
I/usr/lib64/glib-2.0/include"
I hope you share my enthusiasm for simple variables and verbose includes :)
Best regards
Jakub
11 years, 11 months
[PATCH] track#532 : abrt does not buid with 'make installed' libreport & btparser
by Jakub Filak
Signed-off-by: Jakub Filak <jfilak(a)redhat.com>
---
src/plugins/Makefile.am | 3 ++-
src/plugins/https-utils.h | 4 +++-
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/src/plugins/Makefile.am b/src/plugins/Makefile.am
index 0410a04..fbebae3 100644
--- a/src/plugins/Makefile.am
+++ b/src/plugins/Makefile.am
@@ -189,7 +189,7 @@ abrt_action_generate_core_backtrace_CPPFLAGS = \
-DLOCALSTATEDIR='"$(localstatedir)"' \
$(GLIB_CFLAGS) \
$(LIBREPORT_CFLAGS) \
- $(LIBREPORT_CFLAGS) \
+ $(BTPARSER_CFLAGS) \
-D_GNU_SOURCE \
-Wall -Wwrite-strings -Werror
abrt_action_generate_core_backtrace_LDADD = \
@@ -204,6 +204,7 @@ abrt_action_analyze_backtrace_CPPFLAGS = \
-I$(srcdir)/../lib \
$(GLIB_CFLAGS) \
$(LIBREPORT_CFLAGS) \
+ $(BTPARSER_CFLAGS) \
-D_GNU_SOURCE \
-Wall -Wwrite-strings -Werror
abrt_action_analyze_backtrace_LDADD = \
diff --git a/src/plugins/https-utils.h b/src/plugins/https-utils.h
index 1479f48..6561699 100644
--- a/src/plugins/https-utils.h
+++ b/src/plugins/https-utils.h
@@ -20,7 +20,9 @@
#ifndef ABRT_HTTPS_UTILS_H_
#define ABRT_HTTPS_UTILS_H_
-#include <libreport/client.h>
+/* libreport/client.h */
+#include <client.h>
+
#include <nspr.h>
#include <nss.h>
#include <pk11pub.h>
--
1.7.7.6
11 years, 11 months
Introduction of the Secrets Service API
by Jakub Filak
Hello,
this patch replaces direct usage of Gnome Keyring. The Gnome Keyring is
replaced by a general service available through DBus. The service implements
the Secret Service API [1].
A benefit of this change is that KDE users will not be bothered by Gnome
Keyring anymore.
I tested the implementation against the latest versions of Gnome Keyring and
ksecrets which are available on F16.
I look forward to your comments.
Any comments are appreciated. (this is my first C code after long time)
Do not hesitate to torture me!
Regards
Jakub
1 : http://standards.freedesktop.org/secret-service/
11 years, 11 months
[PATCH v2] bugzilla: make buzilla version comparable
by Nikola Pajkovsky
Signed-off-by: Nikola Pajkovsky <npajkovs(a)redhat.com>
---
src/plugins/reporter-bugzilla.c | 6 ++----
src/plugins/rhbz.c | 27 ++++++++++++++++++++++-----
src/plugins/rhbz.h | 6 ++++--
3 files changed, 28 insertions(+), 11 deletions(-)
diff --git a/src/plugins/reporter-bugzilla.c b/src/plugins/reporter-bugzilla.c
index 3b6d168..9746301 100644
--- a/src/plugins/reporter-bugzilla.c
+++ b/src/plugins/reporter-bugzilla.c
@@ -168,10 +168,9 @@ int main(int argc, char **argv)
int all_bugs_size = rhbz_array_size(all_bugs);
if (all_bugs_size > 0)
{
- char *rhbz_ver = rhbz_version(client);
+ size_t rhbz_ver = rhbz_version(client);
int bug_id = rhbz_bug_id(all_bugs, rhbz_ver);
printf("%i", bug_id);
- free(rhbz_ver);
}
exit(EXIT_SUCCESS);
@@ -359,11 +358,10 @@ int main(int argc, char **argv)
}
else
{
- char *rhbz_ver = rhbz_version(client);
+ size_t rhbz_ver = rhbz_version(client);
int bug_id = rhbz_bug_id(all_bugs, rhbz_ver);
xmlrpc_DECREF(all_bugs);
bz = rhbz_bug_info(client, bug_id);
- free(rhbz_ver);
}
}
else
diff --git a/src/plugins/rhbz.c b/src/plugins/rhbz.c
index df2838f..6888c30 100644
--- a/src/plugins/rhbz.c
+++ b/src/plugins/rhbz.c
@@ -244,7 +244,7 @@ int rhbz_array_size(xmlrpc_value *xml)
}
-char *rhbz_version(struct abrt_xmlrpc *ax)
+size_t rhbz_version(struct abrt_xmlrpc *ax)
{
func_entry();
@@ -258,11 +258,28 @@ char *rhbz_version(struct abrt_xmlrpc *ax)
xmlrpc_DECREF(result);
}
- return version;
+ strchrnul(version, '-')[0] = '\0';
+
+ /* format must be x.y.z */
+ char *vp;
+ int i = 0, v[3] = {0, 0, 0};
+
+ for (vp = version; i < 3; vp = NULL, ++i)
+ {
+ char *tok = strtok(vp, ".");
+ if (!tok)
+ break;
+
+ v[i] = strtoul(tok, NULL, 10);
+ }
+
+ free(version);
+
+ return BUGZILLA_VERSION(v[0], v[1], v[2]);
}
/* die or return bug id; each bug must have bug id otherwise xml is corrupted */
-int rhbz_bug_id(xmlrpc_value* xml, const char *ver)
+int rhbz_bug_id(xmlrpc_value* xml, size_t ver)
{
func_entry();
@@ -277,8 +294,8 @@ int rhbz_bug_id(xmlrpc_value* xml, const char *ver)
if (env.fault_occurred)
abrt_xmlrpc_die(&env);
- char *id;
- if (!prefixcmp(ver, "4.2"))
+ const char *id;
+ if (ver >= BUGZILLA_VERSION(4,2,0))
id = "id";
else
id = "bug_id";
diff --git a/src/plugins/rhbz.h b/src/plugins/rhbz.h
index 85bcca1..84e0ba0 100644
--- a/src/plugins/rhbz.h
+++ b/src/plugins/rhbz.h
@@ -30,6 +30,8 @@
extern "C" {
#endif
+#define BUGZILLA_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
+
enum {
RHBZ_MANDATORY_MEMB = (1 << 0),
RHBZ_READ_STR = (1 << 1),
@@ -97,7 +99,7 @@ xmlrpc_value *rhbz_get_member(const char *member, xmlrpc_value *xml);
int rhbz_array_size(xmlrpc_value *xml);
-int rhbz_bug_id(xmlrpc_value *xml, const char *ver);
+int rhbz_bug_id(xmlrpc_value *xml, size_t ver);
int rhbz_new_bug(struct abrt_xmlrpc *ax, problem_data_t *problem_data,
const char *release);
@@ -120,7 +122,7 @@ struct bug_info *rhbz_bug_info(struct abrt_xmlrpc *ax, int bug_id);
struct bug_info *rhbz_find_origin_bug_closed_duplicate(struct abrt_xmlrpc *ax,
struct bug_info *bi);
-char *rhbz_version(struct abrt_xmlrpc *ax);
+size_t rhbz_version(struct abrt_xmlrpc *ax);
#ifdef __cplusplus
}
--
1.7.10.1
11 years, 11 months
[PATCH] rhbz: die if missing mandatory member
by Nikola Pajkovsky
Signed-off-by: Nikola Pajkovsky <npajkovs(a)redhat.com>
---
src/plugins/rhbz.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/plugins/rhbz.c b/src/plugins/rhbz.c
index df2838f..0a3f84d 100644
--- a/src/plugins/rhbz.c
+++ b/src/plugins/rhbz.c
@@ -221,6 +221,8 @@ xmlrpc_value *rhbz_get_member(const char *member, xmlrpc_value *xml)
xmlrpc_struct_find_value(&env, xml, member, &value);
if (env.fault_occurred)
abrt_xmlrpc_error(&env);
+ if (!value)
+ error_msg_and_die("fatal: There is no member named '%s'", member);
return value;
}
--
1.7.10
11 years, 11 months
[PATCH] move to gtk3
by Jiri Moskovcak
---
abrt.spec.in | 2 +-
configure.ac | 7 +------
src/gui-gtk/main.c | 20 +++++++++++++-------
3 files changed, 15 insertions(+), 14 deletions(-)
diff --git a/abrt.spec.in b/abrt.spec.in
index efe4eb6..b23de78 100644
--- a/abrt.spec.in
+++ b/abrt.spec.in
@@ -31,7 +31,7 @@ Group: Applications/System
URL: https://fedorahosted.org/abrt/
Source: https://fedorahosted.org/released/%{name}/%{name}-%{version}.tar.gz
BuildRequires: dbus-devel
-BuildRequires: gtk2-devel
+BuildRequires: gtk3-devel
BuildRequires: rpm-devel >= 4.6
BuildRequires: desktop-file-utils
BuildRequires: libnotify-devel
diff --git a/configure.ac b/configure.ac
index 8456f26..3eb156e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -20,11 +20,6 @@ AC_ARG_ENABLE(debug,
[Enable debug information])],
[CFLAGS="$CFLAGS -DDEBUG -ggdb -g"])
-AC_ARG_ENABLE(gtk3,
- [AC_HELP_STRING([--enable-gtk3],
- [Use gtk3 instead of gtk2])],
- [GTK_VER="gtk+-3.0"],[GTK_VER="gtk+-2.0"])
-
dnl ****** INTERNATIONALIZATION **********************
GETTEXT_PACKAGE=abrt
AC_SUBST(GETTEXT_PACKAGE)
@@ -61,7 +56,7 @@ AC_PATH_PROG([XMLTO], [xmlto], [no])
[exit 1]
[fi]
-PKG_CHECK_MODULES([GTK], [$GTK_VER])
+PKG_CHECK_MODULES([GTK], [gtk+-3.0])
PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.21])
PKG_CHECK_MODULES([DBUS], [dbus-1])
PKG_CHECK_MODULES([LIBXML], [libxml-2.0])
diff --git a/src/gui-gtk/main.c b/src/gui-gtk/main.c
index b356c59..3678a7c 100644
--- a/src/gui-gtk/main.c
+++ b/src/gui-gtk/main.c
@@ -304,6 +304,9 @@ static void sanitize_cursor(GtkTreePath *preferred_path)
static void deactivate_selection(GtkTreeView *tv)
{
+ if (!GTK_IS_TREE_VIEW(tv))
+ return;
+
GtkTreeSelection *selection = gtk_tree_view_get_selection(tv);
if (selection)
{
@@ -339,7 +342,9 @@ static gboolean on_select_cursor_row_cb(
gpointer user_data)
{
//log("SELECT_ROW:%p/%p", treeview, user_data);
- deactivate_selection(GTK_TREE_VIEW(user_data));
+ if (GTK_IS_TREE_VIEW(user_data))
+ deactivate_selection(GTK_TREE_VIEW(user_data));
+
return false; /* propagate the event further */
}
@@ -351,7 +356,8 @@ static gboolean on_cursor_changed_cb(
gpointer user_data)
{
//log("cursor-changed:%p/%p", treeview, user_data);
- deactivate_selection(GTK_TREE_VIEW(user_data));
+ if (GTK_IS_TREE_VIEW(user_data))
+ deactivate_selection(GTK_TREE_VIEW(user_data));
/* Without this, only <tab>ing to treeview sets s_active_treeview.
* Thus, selecting a row with mouse and clicking [Open] with mouse
@@ -686,7 +692,7 @@ static void on_menu_report_cb(GtkMenuItem *menuitem, gpointer unused)
s_report_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(s_report_window), _("Problem description"));
gtk_window_set_default_size(GTK_WINDOW(s_report_window), 400, 400);
- GtkWidget *vbox = gtk_vbox_new(false, 0);
+ GtkWidget *vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
GtkWidget *button_send = gtk_button_new_with_label(_("Send"));
GtkWidget *tev = gtk_text_view_new();
g_signal_connect(button_send, "clicked", G_CALLBACK(on_button_send_cb), tev);
@@ -906,13 +912,13 @@ static GtkWidget *create_main_window(void)
gtk_window_set_title(GTK_WINDOW(g_main_window), _("Automatic Bug Reporting Tool"));
gtk_window_set_default_icon_name("abrt");
- GtkWidget *main_vbox = gtk_vbox_new(false, 0);
+ GtkWidget *main_vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
/* add menu */
gtk_box_pack_start(GTK_BOX(main_vbox), create_menu(), false, false, 0);
- GtkWidget *not_subm_vbox = gtk_vbox_new(false, 0);
+ GtkWidget *not_subm_vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
gtk_container_set_border_width(GTK_CONTAINER(not_subm_vbox), 10);
- GtkWidget *subm_vbox = gtk_vbox_new(false, 0);
+ GtkWidget *subm_vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
gtk_container_set_border_width(GTK_CONTAINER(subm_vbox), 10);
/* Scrolled region for not reported problems inside main window*/
@@ -1015,7 +1021,7 @@ static GtkWidget *create_main_window(void)
GtkWidget *btn_delete = gtk_button_new_from_stock(GTK_STOCK_DELETE);
- GtkWidget *hbox_report_delete = gtk_hbox_new(true, 0);
+ GtkWidget *hbox_report_delete = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
gtk_box_pack_start(GTK_BOX(hbox_report_delete), btn_delete, true, true, 0);
gtk_box_pack_start(GTK_BOX(hbox_report_delete), btn_report, true, true, 10);
--
1.7.10.1
11 years, 11 months
[PATCH] bugzilla: make buzilla version comparable
by Nikola Pajkovsky
Signed-off-by: Nikola Pajkovsky <npajkovs(a)redhat.com>
---
src/plugins/reporter-bugzilla.c | 6 ++----
src/plugins/rhbz.c | 26 +++++++++++++++++++++-----
src/plugins/rhbz.h | 6 ++++--
3 files changed, 27 insertions(+), 11 deletions(-)
diff --git a/src/plugins/reporter-bugzilla.c b/src/plugins/reporter-bugzilla.c
index 3b6d168..9746301 100644
--- a/src/plugins/reporter-bugzilla.c
+++ b/src/plugins/reporter-bugzilla.c
@@ -168,10 +168,9 @@ int main(int argc, char **argv)
int all_bugs_size = rhbz_array_size(all_bugs);
if (all_bugs_size > 0)
{
- char *rhbz_ver = rhbz_version(client);
+ size_t rhbz_ver = rhbz_version(client);
int bug_id = rhbz_bug_id(all_bugs, rhbz_ver);
printf("%i", bug_id);
- free(rhbz_ver);
}
exit(EXIT_SUCCESS);
@@ -359,11 +358,10 @@ int main(int argc, char **argv)
}
else
{
- char *rhbz_ver = rhbz_version(client);
+ size_t rhbz_ver = rhbz_version(client);
int bug_id = rhbz_bug_id(all_bugs, rhbz_ver);
xmlrpc_DECREF(all_bugs);
bz = rhbz_bug_info(client, bug_id);
- free(rhbz_ver);
}
}
else
diff --git a/src/plugins/rhbz.c b/src/plugins/rhbz.c
index df2838f..c685ef2 100644
--- a/src/plugins/rhbz.c
+++ b/src/plugins/rhbz.c
@@ -244,7 +244,7 @@ int rhbz_array_size(xmlrpc_value *xml)
}
-char *rhbz_version(struct abrt_xmlrpc *ax)
+size_t rhbz_version(struct abrt_xmlrpc *ax)
{
func_entry();
@@ -258,11 +258,27 @@ char *rhbz_version(struct abrt_xmlrpc *ax)
xmlrpc_DECREF(result);
}
- return version;
+ strchrnul(version, '-')[0] = '\0';
+
+ /* format must be x.y.z */
+ char *vp, *tmp = version;
+ int i = 0, v[3];
+ for ( ; i < 2 ; ++i)
+ {
+ vp = strchr(tmp, '.');
+ *vp++ = '\0';
+ v[i] = strtoul(tmp, NULL, 10);
+ tmp = vp;
+ }
+ v[i] = strtoul(tmp, NULL, 10);
+
+ free(version);
+
+ return BUGZILLA_VERSION(v[0], v[1], v[2]);
}
/* die or return bug id; each bug must have bug id otherwise xml is corrupted */
-int rhbz_bug_id(xmlrpc_value* xml, const char *ver)
+int rhbz_bug_id(xmlrpc_value* xml, size_t ver)
{
func_entry();
@@ -277,8 +293,8 @@ int rhbz_bug_id(xmlrpc_value* xml, const char *ver)
if (env.fault_occurred)
abrt_xmlrpc_die(&env);
- char *id;
- if (!prefixcmp(ver, "4.2"))
+ const char *id;
+ if (ver >= BUGZILLA_VERSION(4,2,0))
id = "id";
else
id = "bug_id";
diff --git a/src/plugins/rhbz.h b/src/plugins/rhbz.h
index 85bcca1..84e0ba0 100644
--- a/src/plugins/rhbz.h
+++ b/src/plugins/rhbz.h
@@ -30,6 +30,8 @@
extern "C" {
#endif
+#define BUGZILLA_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
+
enum {
RHBZ_MANDATORY_MEMB = (1 << 0),
RHBZ_READ_STR = (1 << 1),
@@ -97,7 +99,7 @@ xmlrpc_value *rhbz_get_member(const char *member, xmlrpc_value *xml);
int rhbz_array_size(xmlrpc_value *xml);
-int rhbz_bug_id(xmlrpc_value *xml, const char *ver);
+int rhbz_bug_id(xmlrpc_value *xml, size_t ver);
int rhbz_new_bug(struct abrt_xmlrpc *ax, problem_data_t *problem_data,
const char *release);
@@ -120,7 +122,7 @@ struct bug_info *rhbz_bug_info(struct abrt_xmlrpc *ax, int bug_id);
struct bug_info *rhbz_find_origin_bug_closed_duplicate(struct abrt_xmlrpc *ax,
struct bug_info *bi);
-char *rhbz_version(struct abrt_xmlrpc *ax);
+size_t rhbz_version(struct abrt_xmlrpc *ax);
#ifdef __cplusplus
}
--
1.7.10.1
11 years, 11 months
[PATCH] moved to gtk3
by Jiri Moskovcak
- dropped gtk2 compatibility
---
configure.ac | 7 +-
libreport.spec.in | 2 +-
src/gtk-helpers/event_config_dialog.c | 13 ++-
src/gui-wizard-gtk/main.c | 4 +-
src/gui-wizard-gtk/wizard.c | 208 +++++++++++++++++----------------
src/gui-wizard-gtk/wizard.glade | 15 ++-
6 files changed, 130 insertions(+), 119 deletions(-)
diff --git a/configure.ac b/configure.ac
index 459db9c..7dfc449 100644
--- a/configure.ac
+++ b/configure.ac
@@ -20,11 +20,6 @@ AC_ARG_ENABLE(debug,
[Enable debug information])],
[CFLAGS="$CFLAGS -DDEBUG -ggdb -g"])
-AC_ARG_ENABLE(gtk3,
- [AC_HELP_STRING([--enable-gtk3],
- [Use gtk3 instead of gtk2])],
- [GTK_VER="gtk+-3.0"],[GTK_VER="gtk+-2.0"])
-
AC_ARG_ENABLE([bodhi],
AC_HELP_STRING([--disable-bodhi], [do not use bodhi plugin]))
@@ -65,7 +60,7 @@ AC_PATH_PROG([XMLTO], [xmlto], [no])
[exit 1]
[fi]
-PKG_CHECK_MODULES([GTK], [$GTK_VER])
+PKG_CHECK_MODULES([GTK], [gtk+-3.0])
PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.21])
PKG_CHECK_MODULES([DBUS], [dbus-1])
PKG_CHECK_MODULES([LIBXML], [libxml-2.0])
diff --git a/libreport.spec.in b/libreport.spec.in
index 01f4158..f65c87d 100644
--- a/libreport.spec.in
+++ b/libreport.spec.in
@@ -11,7 +11,7 @@ Group: System Environment/Libraries
URL: https://fedorahosted.org/abrt/
Source: https://fedorahosted.org/released/abrt/%{name}-%{version}.tar.gz
BuildRequires: dbus-devel
-BuildRequires: gtk2-devel
+BuildRequires: gtk3-devel
BuildRequires: curl-devel
BuildRequires: desktop-file-utils
BuildRequires: xmlrpc-c-devel
diff --git a/src/gtk-helpers/event_config_dialog.c b/src/gtk-helpers/event_config_dialog.c
index 6bd47a9..5a564fe 100644
--- a/src/gtk-helpers/event_config_dialog.c
+++ b/src/gtk-helpers/event_config_dialog.c
@@ -236,8 +236,13 @@ static void on_event_row_activated_cb(GtkTreeView *treeview, GtkTreePath *path,
static void on_event_row_changed_cb(GtkTreeView *treeview, gpointer user_data)
{
- event_config_t *ec = get_event_config(get_event_name_from_row(treeview));
- gtk_widget_set_sensitive(GTK_WIDGET(user_data), ec->options != NULL);
+ const char *event_name = get_event_name_from_row(treeview);
+
+ if (event_name)
+ {
+ event_config_t *ec = get_event_config(event_name);
+ gtk_widget_set_sensitive(GTK_WIDGET(user_data), ec->options != NULL);
+ }
}
static void add_event_to_liststore(gpointer key, gpointer value, gpointer user_data)
@@ -472,7 +477,7 @@ void show_events_list_dialog(GtkWindow *parent)
gtk_window_get_icon_name(parent));
}
- GtkWidget *main_vbox = gtk_vbox_new(0, 0);
+ GtkWidget *main_vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
GtkWidget *events_scroll = gtk_scrolled_window_new(NULL, NULL);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(events_scroll),
GTK_POLICY_NEVER,
@@ -527,7 +532,7 @@ void show_events_list_dialog(GtkWindow *parent)
GtkWidget *close_btn = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
g_signal_connect(close_btn, "clicked", G_CALLBACK(on_close_event_list_cb), g_event_list_window);
- GtkWidget *btnbox = gtk_hbutton_box_new();
+ GtkWidget *btnbox = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL);
gtk_box_pack_end(GTK_BOX(btnbox), close_btn, false, false, 0);
gtk_box_pack_end(GTK_BOX(btnbox), configure_event_btn, false, false, 0);
diff --git a/src/gui-wizard-gtk/main.c b/src/gui-wizard-gtk/main.c
index b3c942b..05d01e9 100644
--- a/src/gui-wizard-gtk/main.c
+++ b/src/gui-wizard-gtk/main.c
@@ -143,12 +143,12 @@ int main(int argc, char **argv)
load_event_config_data_from_keyring();
load_user_settings("report-gtk");
+ reload_problem_data_from_dump_dir();
+
create_assistant();
g_custom_logger = &show_error_as_msgbox;
- reload_problem_data_from_dump_dir();
-
update_gui_state_from_problem_data();
/* Enter main loop */
diff --git a/src/gui-wizard-gtk/wizard.c b/src/gui-wizard-gtk/wizard.c
index 823093e..440c8bf 100644
--- a/src/gui-wizard-gtk/wizard.c
+++ b/src/gui-wizard-gtk/wizard.c
@@ -45,7 +45,11 @@ static pid_t g_event_child_pid = 0;
static bool g_expert_mode;
-static GtkAssistant *g_assistant;
+static GtkNotebook *g_assistant;
+static GtkWindow *g_wnd_assistant;
+static GtkBox *g_box_assistant;
+static GtkWidget *g_next_btn;
+
static GtkBox *g_box_events;
/* List of event_gui_data's */
@@ -265,13 +269,13 @@ static void show_event_opt_error_dialog(const char *event_name)
"reporting will probably fail if you continue "
"with the current configuration."),
ec->screen_name);
- GtkWidget *wrong_settings = g_top_most_window = gtk_message_dialog_new(GTK_WINDOW(g_assistant),
+ GtkWidget *wrong_settings = g_top_most_window = gtk_message_dialog_new(GTK_WINDOW(g_wnd_assistant),
GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_WARNING,
GTK_BUTTONS_CLOSE,
message);
- gtk_window_set_transient_for(GTK_WINDOW(wrong_settings), GTK_WINDOW(g_assistant));
+ gtk_window_set_transient_for(GTK_WINDOW(wrong_settings), GTK_WINDOW(g_wnd_assistant));
gtk_message_dialog_set_markup(GTK_MESSAGE_DIALOG(wrong_settings),
markup_message);
free(message);
@@ -299,7 +303,7 @@ static void update_window_title(void)
const char *reason = get_problem_item_content_or_NULL(g_cd, FILENAME_REASON);
char *title = xasprintf("%s - %s", (reason ? reason : g_dump_dir_name),
(prgname ? prgname : "report"));
- gtk_window_set_title(GTK_WINDOW(g_assistant), title);
+ gtk_window_set_title(g_wnd_assistant, title);
free(title);
}
@@ -325,7 +329,7 @@ struct dump_dir *steal_if_needed(struct dump_dir *dd)
if (!ask_steal_dir || strcmp(ask_steal_dir, "no"))
{
- GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(g_assistant),
+ GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(g_wnd_assistant),
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_QUESTION,
GTK_BUTTONS_OK_CANCEL,
@@ -380,7 +384,7 @@ struct dump_dir *steal_if_needed(struct dump_dir *dd)
void show_error_as_msgbox(const char *msg)
{
- GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(g_assistant),
+ GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(g_wnd_assistant),
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_WARNING,
GTK_BUTTONS_CLOSE,
@@ -508,6 +512,10 @@ static struct problem_item *get_current_problem_item_or_NULL(GtkTreeView *tree_v
GtkTreeModel *model;
GtkTreeIter iter;
GtkTreeSelection* selection = gtk_tree_view_get_selection(tree_view);
+
+ if (selection == NULL)
+ return NULL;
+
if (!gtk_tree_selection_get_selected(selection, &model, &iter))
return NULL;
@@ -518,7 +526,6 @@ static struct problem_item *get_current_problem_item_or_NULL(GtkTreeView *tree_v
if (!*pp_item_name) /* paranoia, should never happen */
return NULL;
struct problem_item *item = get_problem_data_item_or_NULL(g_cd, *pp_item_name);
-
return item;
}
@@ -548,7 +555,7 @@ static void tv_details_row_activated(
if (exitcode != EXIT_SUCCESS)
{
GtkWidget *dialog = gtk_dialog_new_with_buttons(_("View/edit a text file"),
- GTK_WINDOW(g_assistant),
+ GTK_WINDOW(g_wnd_assistant),
GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
NULL, NULL);
GtkWidget *vbox = gtk_dialog_get_content_area(GTK_DIALOG(dialog));
@@ -589,10 +596,23 @@ static void tv_details_cursor_changed(
GtkTreeView *tree_view,
gpointer user_data_UNUSED)
{
- gchar *item_name;
+ /* I see this being called on window "destroy" signal when the tree_view is
+ not a tree view anymore (or destroyed?) causing this error msg:
+ (abrt:12804): Gtk-CRITICAL **: gtk_tree_selection_get_selected: assertion `GTK_IS_TREE_SELECTION (selection)' failed
+ (abrt:12804): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject'
+ (abrt:12804): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed
+ */
+ if (!GTK_IS_TREE_VIEW(tree_view))
+ return;
+
+ gchar *item_name = NULL;
struct problem_item *item = get_current_problem_item_or_NULL(tree_view, &item_name);
g_free(item_name);
+ /* happens when closing the wizard by clicking 'X' */
+ if (!item)
+ return;
+
gboolean editable = (item
/* With this, copying of non-editable fields are more difficult */
//&& (item->flags & CD_FLAG_ISEDITABLE)
@@ -750,16 +770,8 @@ static event_gui_data_t *add_event_buttons(GtkBox *box,
gtk_misc_set_alignment(GTK_MISC(lbl), /*x*/ 0.0, /*y*/ 0.0);
make_label_autowrap_on_resize(GTK_LABEL(lbl));
gtk_box_pack_start(box, lbl, /*expand*/ true, /*fill*/ false, /*padding*/ 0);
- gtk_assistant_set_page_complete(g_assistant,
- pages[PAGENO_EVENT_SELECTOR].page_widget,
- false
- );
return NULL;
}
- gtk_assistant_set_page_complete(g_assistant,
- pages[PAGENO_EVENT_SELECTOR].page_widget,
- true
- );
event_gui_data_t *first_button = NULL;
event_gui_data_t *active_button = NULL;
@@ -1106,7 +1118,7 @@ void update_gui_state_from_problem_data(void)
/* We can't just do gtk_widget_show_all once in main:
* We created new widgets (buttons). Need to make them visible.
*/
- gtk_widget_show_all(GTK_WIDGET(g_assistant));
+ gtk_widget_show_all(GTK_WIDGET(g_wnd_assistant));
}
@@ -1311,7 +1323,7 @@ static gboolean consume_cmd_output(GIOChannel *source, GIOCondition condition, g
{
skip_chars = alert_prefix_len;
- GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(g_assistant),
+ GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(g_wnd_assistant),
GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_WARNING,
GTK_BUTTONS_CLOSE,
@@ -1327,7 +1339,7 @@ static gboolean consume_cmd_output(GIOChannel *source, GIOCondition condition, g
{
skip_chars = ask_prefix_len;
- GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(g_assistant),
+ GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(g_wnd_assistant),
GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_QUESTION,
GTK_BUTTONS_OK_CANCEL,
@@ -1363,7 +1375,7 @@ static gboolean consume_cmd_output(GIOChannel *source, GIOCondition condition, g
{
skip_chars = ask_password_prefix_len;
- GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(g_assistant),
+ GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(g_wnd_assistant),
GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_QUESTION,
GTK_BUTTONS_OK_CANCEL,
@@ -1400,7 +1412,7 @@ static gboolean consume_cmd_output(GIOChannel *source, GIOCondition condition, g
{
skip_chars = ask_yes_no_prefix_len;
- GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(g_assistant),
+ GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(g_wnd_assistant),
GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_QUESTION,
GTK_BUTTONS_YES_NO,
@@ -1757,18 +1769,12 @@ static void check_bt_rating_and_allow_send(void)
}
}
}
-
- gtk_assistant_set_page_complete(g_assistant,
- pages[PAGENO_EDIT_ELEMENTS].page_widget,
- send);
+ gtk_widget_set_sensitive(GTK_WIDGET(g_box_assist_nav), send);
}
static void on_bt_approve_toggle(GtkToggleButton *togglebutton, gpointer user_data)
{
- gtk_assistant_set_page_complete(g_assistant,
- pages[PAGENO_REVIEW_DATA].page_widget,
- gtk_toggle_button_get_active(g_tb_approve_bt)
- );
+ gtk_widget_set_sensitive(g_next_btn, gtk_toggle_button_get_active(g_tb_approve_bt));
}
static void toggle_eb_comment(void)
@@ -1782,7 +1788,7 @@ static void toggle_eb_comment(void)
|| gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(g_cb_no_comment));
/* Allow next page only when the comment has at least 10 chars */
- gtk_assistant_set_page_complete(g_assistant, pages[PAGENO_EDIT_COMMENT].page_widget, good);
+ gtk_widget_set_sensitive(g_next_btn, good);
/* And show the eventbox with label */
if (good)
@@ -1804,7 +1810,7 @@ static void on_no_comment_toggled(GtkToggleButton *togglebutton, gpointer user_d
static void on_show_event_list_cb(GtkWidget *button, gpointer user_data)
{
- show_events_list_dialog(GTK_WINDOW(g_assistant));
+ show_events_list_dialog(GTK_WINDOW(g_wnd_assistant));
}
#if 0
@@ -1936,22 +1942,9 @@ static void highlight_forbidden(void)
list_free_with_free(forbidden_words);
}
-
-/* Page navigation handlers */
-
-/* Called _only_ by "Apply" button, not by "Forward" btn! */
-static void next_page(GtkAssistant *assistant, gpointer user_data)
-{
- /* page_no is actually the previous page, because this
- * function is called before assistant goes to the next page
- */
- int page_no = gtk_assistant_get_current_page(assistant);
- VERB2 log("page_no:%d", page_no);
-}
-
static gint select_next_page_no(gint current_page_no, gpointer data);
-static void on_page_prepare(GtkAssistant *assistant, GtkWidget *page, gpointer user_data)
+static void on_page_prepare(GtkNotebook *assistant, GtkWidget *page, gpointer user_data)
{
//int page_no = gtk_assistant_get_current_page(g_assistant);
//log_ready_state();
@@ -1975,7 +1968,7 @@ static void on_page_prepare(GtkAssistant *assistant, GtkWidget *page, gpointer u
/* Skip intro screen */
int n = select_next_page_no(pages[PAGENO_SUMMARY].page_no, NULL);
VERB2 log("switching to page_no:%d", n);
- gtk_assistant_set_current_page(assistant, n);
+ gtk_notebook_set_current_page(assistant, n);
return;
}
}
@@ -2010,12 +2003,16 @@ static void on_page_prepare(GtkAssistant *assistant, GtkWidget *page, gpointer u
if (pages[PAGENO_REVIEW_DATA].page_widget == page)
{
+ gtk_widget_set_sensitive(g_next_btn, gtk_toggle_button_get_active(g_tb_approve_bt));
update_ls_details_checkboxes();
}
}
if (pages[PAGENO_EDIT_COMMENT].page_widget == page)
+ {
+ gtk_widget_set_sensitive(g_next_btn, false);
on_comment_changed(gtk_text_view_get_buffer(g_tv_comment), NULL);
+ }
//log_ready_state();
if (pages[PAGENO_EVENT_PROGRESS].page_widget == page)
@@ -2049,7 +2046,7 @@ static gint select_next_page_no(gint current_page_no, gpointer data)
if (g_report_only)
{
/* In only-report mode, we only need to wrap back at the end */
- page = gtk_assistant_get_nth_page(g_assistant, current_page_no);
+ page = gtk_notebook_get_nth_page(g_assistant, current_page_no);
if (page == pages[PAGENO_EVENT_DONE].page_widget)
current_page_no = 0;
else
@@ -2061,7 +2058,7 @@ static gint select_next_page_no(gint current_page_no, gpointer data)
again:
VERB1 log("%s: current_page_no:%d", __func__, current_page_no);
current_page_no++;
- page = gtk_assistant_get_nth_page(g_assistant, current_page_no);
+ page = gtk_notebook_get_nth_page(g_assistant, current_page_no);
if (pages[PAGENO_EVENT_SELECTOR].page_widget == page)
{
@@ -2259,7 +2256,7 @@ static void on_btn_add_file(GtkButton *button)
{
GtkWidget *dialog = gtk_file_chooser_dialog_new(
"Attach File",
- GTK_WINDOW(g_assistant),
+ GTK_WINDOW(g_wnd_assistant),
GTK_FILE_CHOOSER_ACTION_OPEN,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
@@ -2327,13 +2324,13 @@ static void on_btn_add_file(GtkButton *button)
if (message)
{
show_msgbox: ;
- GtkWidget *dlg = gtk_message_dialog_new(GTK_WINDOW(g_assistant),
+ GtkWidget *dlg = gtk_message_dialog_new(GTK_WINDOW(g_wnd_assistant),
GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_WARNING,
GTK_BUTTONS_CLOSE,
message);
free(message);
- gtk_window_set_transient_for(GTK_WINDOW(dlg), GTK_WINDOW(g_assistant));
+ gtk_window_set_transient_for(GTK_WINDOW(dlg), GTK_WINDOW(g_wnd_assistant));
gtk_dialog_run(GTK_DIALOG(dlg));
gtk_widget_destroy(dlg);
}
@@ -2400,6 +2397,15 @@ static gint on_key_press_event_in_item_list(GtkTreeView *treeview, GdkEventKey *
/* wizard.glade file as a string WIZARD_GLADE_CONTENTS: */
#include "wizard_glade.c"
+static void on_next_btn_cb(GtkWidget *btn, gpointer user_data)
+{
+ gint next_page_no = select_next_page_no(
+ gtk_notebook_get_current_page(g_assistant),
+ NULL
+ );
+ gtk_notebook_set_current_page(g_assistant, next_page_no);
+}
+
static void add_pages(void)
{
GError *error = NULL;
@@ -2448,18 +2454,7 @@ static void add_pages(void)
GtkWidget *page = GTK_WIDGET(gtk_builder_get_object(builder, page_names[i]));
pages[i].page_widget = page;
pages[i].page_no = page_no++;
- gtk_assistant_append_page(g_assistant, page);
- /* If we set all pages to complete the wizard thinks there is nothing
- * to do and shows the button "Last" which allows user to skip all pages
- * so we need to set them all as incomplete and complete them one by one
- * on proper place - on_page_prepare() ?
- */
- gtk_assistant_set_page_complete(g_assistant, page, true);
- gtk_assistant_set_page_title(g_assistant, page, pages[i].title);
- if (not_reportable && i == 0)
- gtk_assistant_set_page_type(g_assistant, page, GTK_ASSISTANT_PAGE_SUMMARY);
- else
- gtk_assistant_set_page_type(g_assistant, page, pages[i].type);
+ gtk_notebook_append_page(g_assistant, page, gtk_label_new(pages[i].title));
VERB1 log("added page: %s", page_names[i]);
}
free(not_reportable);
@@ -2492,12 +2487,6 @@ static void add_pages(void)
gtk_widget_modify_font(GTK_WIDGET(g_tv_event_log), monospace_font);
fix_all_wrapped_labels(GTK_WIDGET(g_assistant));
- if (pages[PAGENO_REVIEW_DATA].page_widget != NULL)
- {
- gtk_assistant_set_page_complete(g_assistant, pages[PAGENO_REVIEW_DATA].page_widget,
- gtk_toggle_button_get_active(g_tb_approve_bt));
- }
-
/* Configure btn on select analyzers page */
GtkWidget *config_btn = GTK_WIDGET(gtk_builder_get_object(builder, "button_cfg1"));
if (config_btn)
@@ -2516,25 +2505,6 @@ static void add_pages(void)
g_signal_connect(G_OBJECT(g_ev_search_down), "leave-notify-event", G_CALLBACK(unhighlight_widget), NULL);
g_signal_connect(G_OBJECT(g_ev_search_down), "button-press-event", G_CALLBACK(search_down), NULL);
- GtkWidget *w;
-
- /* Align "Close" button to left */
- w = gtk_alignment_new(0.0, 0.0, 1.0, 1.0);
- gtk_assistant_add_action_widget(g_assistant, w);
- /* Keep pointer to the button box so we can set sensitivity later */
- g_box_assist_nav = GTK_BOX(gtk_widget_get_parent(w));
- gtk_box_set_child_packing(g_box_assist_nav, w, /*expand:*/ TRUE, /*fill:*/ FALSE, /*padding:*/ 0, GTK_PACK_END);
- gtk_widget_show(w);
-
- /* Add "Close" button */
- if (!not_reportable)
- {
- w = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
- gtk_assistant_add_action_widget(g_assistant, w);
- gtk_widget_show(w);
- g_signal_connect(w, "clicked", G_CALLBACK(gtk_main_quit), NULL);
- }
-
//TODO: have [Stop event] button here, not inside log window?
// w = gtk_button_new_from_stock(GTK_STOCK_STOP);
// gtk_assistant_add_action_widget(g_assistant, w);
@@ -2542,9 +2512,6 @@ static void add_pages(void)
// gtk_widget_show(w);
// g_signal_connect(w, "clicked", G_CALLBACK(on_btn_cancel_event), NULL);
- /* and hide "Cancel" button - "Close" is a better name for what we want */
- gtk_assistant_commit(g_assistant);
-
/* Set color of the comment evenbox */
GdkColor color;
gdk_color_parse("#CC3333", &color);
@@ -2651,25 +2618,61 @@ void create_assistant(void)
builder = gtk_builder_new();
- g_assistant = GTK_ASSISTANT(gtk_assistant_new());
+ g_assistant = GTK_NOTEBOOK(gtk_notebook_new());
+ gtk_notebook_set_show_tabs(g_assistant, false);
+ VERB1 gtk_notebook_set_show_tabs(g_assistant, true);
+
+ g_box_assistant = GTK_BOX(gtk_box_new(GTK_ORIENTATION_VERTICAL, 0));
+
+
+ GtkWidget *close_btn = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
+ g_signal_connect(G_OBJECT(close_btn), "clicked", G_CALLBACK(gtk_main_quit), NULL);
+ g_box_assist_nav = GTK_BOX(gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0));
- gtk_assistant_set_forward_page_func(g_assistant, select_next_page_no, NULL, NULL);
- GtkWindow *wnd_assistant = GTK_WINDOW(g_assistant);
- gtk_window_set_default_size(wnd_assistant, DEFAULT_WIDTH, DEFAULT_HEIGHT);
+ gtk_box_pack_start(GTK_BOX(g_box_assist_nav), close_btn, false, false, 5);
+
+ GtkWidget *w;
+ /* Align "Close" button to left */
+ w = gtk_alignment_new(0.0, 0.0, 1.0, 1.0);
+ gtk_box_pack_start(GTK_BOX(g_box_assist_nav), w, true, true, 5);
+
+ g_next_btn = gtk_button_new_from_stock(GTK_STOCK_GO_FORWARD);
+ g_signal_connect(G_OBJECT(g_next_btn), "clicked", G_CALLBACK(on_next_btn_cb), NULL);
+
+ gtk_box_pack_start(GTK_BOX(g_box_assist_nav), g_next_btn, false, false, 5);
+
+ gtk_widget_show_all(GTK_WIDGET(g_box_assist_nav));
+
+#if 0
+ /* Add "Close" button */
+ if (!not_reportable)
+ {
+ close_btn = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
+ //gtk_box_pack_start(g_assistant, w, GTK_PACK_START);
+ gtk_box_pack_start(GTK_BOX(g_box_assist_nav), w, false, false, 0);
+ gtk_widget_show(w);
+ g_signal_connect(w, "clicked", G_CALLBACK(gtk_main_quit), NULL);
+ }
+#endif
+
+ gtk_box_pack_start(g_box_assistant, GTK_WIDGET(g_assistant), true, true, 5);
+ gtk_box_pack_start(g_box_assistant, GTK_WIDGET(g_box_assist_nav), false, false, 5);
+
+ g_wnd_assistant = GTK_WINDOW(gtk_window_new(GTK_WINDOW_TOPLEVEL));
+ gtk_container_add(GTK_CONTAINER(g_wnd_assistant), GTK_WIDGET(g_box_assistant));
+ gtk_window_set_default_size(g_wnd_assistant, DEFAULT_WIDTH, DEFAULT_HEIGHT);
/* set_default sets icon for every windows used in this app, so we don't
* have to set the icon for those windows manually
*/
gtk_window_set_default_icon_name("abrt");
- GObject *obj_assistant = G_OBJECT(g_assistant);
- g_signal_connect(obj_assistant, "cancel", G_CALLBACK(gtk_main_quit), NULL);
- g_signal_connect(obj_assistant, "close", G_CALLBACK(gtk_main_quit), NULL);
- g_signal_connect(obj_assistant, "apply", G_CALLBACK(next_page), NULL);
- g_signal_connect(obj_assistant, "prepare", G_CALLBACK(on_page_prepare), NULL);
+ g_signal_connect(G_OBJECT(g_wnd_assistant), "destroy", G_CALLBACK(gtk_main_quit), NULL);
add_pages();
+ g_signal_connect(G_OBJECT(g_assistant), "switch-page", G_CALLBACK(on_page_prepare), NULL);
+
create_details_treeview();
g_signal_connect(g_tb_approve_bt, "toggled", G_CALLBACK(on_bt_approve_toggle), NULL);
@@ -2678,4 +2681,7 @@ void create_assistant(void)
g_signal_connect(g_btn_add_file, "clicked", G_CALLBACK(on_btn_add_file), NULL);
g_signal_connect(g_search_entry_bt, "changed", G_CALLBACK(search_timeout), NULL);
+
+ /* switch to right starting page */
+ on_page_prepare(g_assistant, gtk_notebook_get_nth_page(g_assistant, 0), NULL);
}
diff --git a/src/gui-wizard-gtk/wizard.glade b/src/gui-wizard-gtk/wizard.glade
index 53ed5a6..9c2f54f 100644
--- a/src/gui-wizard-gtk/wizard.glade
+++ b/src/gui-wizard-gtk/wizard.glade
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
- <requires lib="gtk+" version="2.16"/>
- <!-- interface-naming-policy toplevel-contextual -->
+ <!-- interface-requires gtk+ 3.0 -->
<object class="GtkWindow" id="window0">
<property name="can_focus">False</property>
<child>
@@ -160,6 +159,7 @@
<child>
<object class="GtkCheckButton" id="cb_no_comment">
<property name="label" translatable="yes">I don't know what caused this problem</property>
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
@@ -205,6 +205,7 @@
<child>
<object class="GtkButton" id="button_cfg1">
<property name="label">gtk-preferences</property>
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
@@ -318,7 +319,7 @@
</child>
</object>
<packing>
- <property name="expand">True</property>
+ <property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
@@ -352,7 +353,7 @@
</child>
</object>
<packing>
- <property name="expand">True</property>
+ <property name="expand">False</property>
<property name="fill">False</property>
<property name="padding">1</property>
<property name="position">2</property>
@@ -361,7 +362,7 @@
</object>
<packing>
<property name="expand">True</property>
- <property name="fill">True</property>
+ <property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
@@ -510,6 +511,7 @@
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
+ <property name="y_options">GTK_FILL</property>
</packing>
</child>
</object>
@@ -541,6 +543,7 @@
<child>
<object class="GtkButton" id="btn_add_file">
<property name="label" translatable="yes">Attach a file</property>
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
@@ -565,6 +568,7 @@
<child>
<object class="GtkCheckButton" id="cb_approve_bt">
<property name="label" translatable="yes">I reviewed the data and _agree with submitting it</property>
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
@@ -659,6 +663,7 @@
<child>
<object class="GtkButton" id="btn_cancel_event">
<property name="label">gtk-stop</property>
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
--
1.7.10.1
11 years, 11 months
[PATCH] use gtk3 instead of gtk2
by Jiri Moskovcak
Attached migrates the code to gtk3. It should apply on the latest git, I
run tested the following scenarios:
1. report from gui
2. run the advanced mode wizard
3. try report without credentials (asks for it in the process)
Known problems:
- some parts looks ugly and needs re-allign
- some texts don't wrap which makes the gui to change it's width
- some texts wrap even if they they should not (event config dialog)
-- I don't consider these ^ to be commit blockers
- there is a XDG migration patch pushed in the libreport git (my fault
:-/), but the abrt part is not pushed yet, which makes the latest abrt
to work only for crashes which are already moved to $HOME/.abrt/spool
-- this is a problem, but not connected to the gtk3 transition
Please test&review,
Jirka
11 years, 11 months