From 6a773a48d6289a117c2267f39168406ff8e6e472 Mon Sep 17 00:00:00 2001 From: Christian Stadelmann Date: Tue, 26 Apr 2016 15:46:49 +0200 Subject: [PATCH 01/18] Sanitize pane size defaults Adds minimum sizes for GtkPaned in Groups and History view --- src/yumex.ui | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/yumex.ui b/src/yumex.ui index df44ff1..11f2fe1 100644 --- a/src/yumex.ui +++ b/src/yumex.ui @@ -1200,6 +1200,8 @@ start Yum Extender True + 200 + 250 True True in @@ -1209,11 +1211,13 @@ start Yum Extender False - True + False + 350 + 250 True True in @@ -1223,7 +1227,7 @@ start Yum Extender True - True + False @@ -1252,6 +1256,8 @@ start Yum Extender 250 + 200 + 250 True True in @@ -1261,11 +1267,13 @@ start Yum Extender False - True + False + 350 + 250 True True in @@ -1275,7 +1283,7 @@ start Yum Extender True - True + False From 8ab51cd96767ea183f2f3e494cf194982bee63e5 Mon Sep 17 00:00:00 2001 From: Christian Stadelmann Date: Tue, 26 Apr 2016 16:37:15 +0200 Subject: [PATCH 02/18] Use halign instead of xalign --- src/yumex.ui | 34 +++++++++++++--------------------- 1 file changed, 13 insertions(+), 21 deletions(-) diff --git a/src/yumex.ui b/src/yumex.ui index 11f2fe1..7258858 100644 --- a/src/yumex.ui +++ b/src/yumex.ui @@ -97,8 +97,8 @@ False Use the toolbar in the header of the window standard when using GNOME + start Show toolbar in window headerbar - 0 0 @@ -160,8 +160,8 @@ standard when using GNOME False Select all available updates when Yum Extender is started + start Select updates at startup - 0 0 @@ -214,7 +214,6 @@ Yum Extender is started start True Start update checker at user login - 0 0 @@ -250,7 +249,6 @@ Yum Extender is started start True Update check interval (minutes) - 0 0 @@ -332,8 +330,8 @@ active when Yum Extender starts True False + start Cleanup Old Installonly packages - 0 0 @@ -356,10 +354,10 @@ active when Yum Extender starts True False + start 25 25 Number of installonly packages to keep - 0 0 @@ -555,6 +553,7 @@ active when Yum Extender starts True False + start 10 10 10 @@ -562,7 +561,6 @@ active when Yum Extender starts 6 6 Repositories used in current session - 0 @@ -614,7 +612,7 @@ start Yum Extender True True False - 0 + start True @@ -702,10 +700,10 @@ start Yum Extender True False + start 6 <b>Package Versions</b> True - 0 0 @@ -717,10 +715,10 @@ start Yum Extender True False + start 6 <b>Archs</b> True - 0 0 @@ -769,8 +767,8 @@ start Yum Extender True False Show only the latest package versions + start 12 - 0 True @@ -1082,8 +1080,8 @@ start Yum Extender True False + start Updates - 0 @@ -1099,8 +1097,8 @@ start Yum Extender True False + start Installed - 0 @@ -1116,8 +1114,8 @@ start Yum Extender True False + start Available - 0 @@ -1133,8 +1131,8 @@ start Yum Extender True False + start All - 0 @@ -1665,7 +1663,6 @@ start Yum Extender True False Package names starting with search key - 0 True True @@ -1681,7 +1678,6 @@ start Yum Extender True False Package names containing search key - 0 True sch_opt_prefix @@ -1697,7 +1693,6 @@ start Yum Extender True False Specified package fields containing search keys. - 0 True sch_opt_prefix @@ -1725,7 +1720,6 @@ start Yum Extender True False Package name - 0 True @@ -1740,7 +1734,6 @@ start Yum Extender True False Package summary - 0 True @@ -1755,7 +1748,6 @@ start Yum Extender True False Package description - 0 True From 245c9fe9518e2e04f099768146df29e9a3d16e1f Mon Sep 17 00:00:00 2001 From: Christian Stadelmann Date: Tue, 26 Apr 2016 16:40:07 +0200 Subject: [PATCH 03/18] Unify preferences dialog child properties --- src/yumex.ui | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/src/yumex.ui b/src/yumex.ui index 7258858..ec62cb3 100644 --- a/src/yumex.ui +++ b/src/yumex.ui @@ -85,7 +85,6 @@ True False - start 6 10 6 @@ -125,7 +124,6 @@ standard when using GNOME False The interval in hour, when the DNF cache will be expired and updated (0 = disabled) start - start Cache expire interval (hours) end @@ -190,7 +188,6 @@ Yum Extender is started True False - start 6 6 @@ -211,7 +208,6 @@ Yum Extender is started False Autostart the Yum Extender update checker at user login start - start True Start update checker at user login @@ -246,7 +242,6 @@ Yum Extender is started False How often the update checker will run start - start True Update check interval (minutes) @@ -267,7 +262,6 @@ Yum Extender is started True False - start 6 6 @@ -278,7 +272,6 @@ Yum Extender starts. Will show only latest version of available packages start - start True Show newest only @@ -305,7 +298,6 @@ packages Erase unused requirement option is active when Yum Extender starts start - start True Erase Unused Requirements @@ -402,7 +394,6 @@ active when Yum Extender starts True False start - start True Color for installed packages @@ -417,7 +408,6 @@ active when Yum Extender starts True False start - start True Color for available updates @@ -432,7 +422,6 @@ active when Yum Extender starts True False start - start True Color for available packages @@ -447,7 +436,6 @@ active when Yum Extender starts True False start - start True Color for obsoleted packages @@ -462,7 +450,6 @@ active when Yum Extender starts True False start - start True Color for available downgrades From df11977d73f43cbd58742e83ad7e3f3e20022809 Mon Sep 17 00:00:00 2001 From: Christian Stadelmann Date: Tue, 26 Apr 2016 16:42:33 +0200 Subject: [PATCH 04/18] Remove some Gtk+ 3.x warnings Removes some warnings caused by API changes. Require 3.18 since GtkTextView:top-margin and :bottom-margin require it. --- src/yumex.ui | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/yumex.ui b/src/yumex.ui index ec62cb3..67117fc 100644 --- a/src/yumex.ui +++ b/src/yumex.ui @@ -1,7 +1,7 @@ - + 10 900 @@ -77,10 +77,7 @@ True False - 12 - 12 - 6 - 7 + 6 True @@ -875,7 +872,6 @@ start Yum Extender True True True - immediate False @@ -895,11 +891,11 @@ start Yum Extender True False - 6 False True + 8 2 From 21921c2674d16885c5a972c762d8ff0da1285640 Mon Sep 17 00:00:00 2001 From: Tim Lauridsen Date: Tue, 26 Apr 2016 17:04:39 +0200 Subject: [PATCH 05/18] update Makefile --- Makefile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Makefile b/Makefile index e49d223..2ef703e 100644 --- a/Makefile +++ b/Makefile @@ -73,6 +73,9 @@ release-publish: @$(MAKE) rpm release-cleanup: + @git checkout develop + @git merge --no-ff release-${VERSION} -m "merge ${APPNAME}-${VERSION} release" + @git push origin @git branch -D release-${VERSION} test-cleanup: From 84e411b1aaea6b3178a2f540a6c7d91d80758077 Mon Sep 17 00:00:00 2001 From: Christian Stadelmann Date: Wed, 27 Apr 2016 19:24:10 +0200 Subject: [PATCH 06/18] Delete old_init.py --- src/yumex/old_init.py | 1375 ----------------------------------------- 1 file changed, 1375 deletions(-) delete mode 100644 src/yumex/old_init.py diff --git a/src/yumex/old_init.py b/src/yumex/old_init.py deleted file mode 100644 index 5007431..0000000 --- a/src/yumex/old_init.py +++ /dev/null @@ -1,1375 +0,0 @@ -# -*- coding: iso-8859-1 -*- -# Yum Exteder (yumex) - A graphic package management tool -# Copyright (C) 2013 Tim Lauridsen < timlaufedoraprojectorg > -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version..Win -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to -# the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -from __future__ import absolute_import - -from gi.repository import Gtk -from gi.repository import Gdk -from gi.repository import Gio -from yumex.misc import doGtkEvents, _, CONFIG, ExceptionHandler,\ - QueueEmptyError, TransactionBuildError, \ - TransactionSolveError, dbus_statusicon, dbus_dnfsystem,\ - get_style_color, color_to_hex - -import argparse -import logging -import datetime -import subprocess -import sys -import os.path -import re -import yumex.const as const -import yumex.status -import yumex.dnf_backend -import yumex.gui.dialogs as dialogs -import yumex.gui.views as views -import yumex.gui.widgets as widgets - -logger = logging.getLogger('yumex') - - -class BaseWindow(Gtk.ApplicationWindow): - """ Common Yumex Base window """ - - def __init__(self, app, status): - Gtk.ApplicationWindow.__init__( - self, title='Yum Extender - Powered by DNF', application=app) - self.set_position(Gtk.WindowPosition.CENTER) - self.app = app - self.status = status - icon = Gtk.IconTheme.get_default().load_icon('yumex-dnf', 128, 0) - self.set_icon(icon) - self.connect('delete_event', self.on_delete_event) - - self._root_backend = None - self._root_locked = False - self.is_working = False - self.pid = app.pid - - # setup GtkBuilder - self.ui = Gtk.Builder() - self.ui.set_translation_domain('yumex-dnf') - try: - self.ui.add_from_file(const.DATA_DIR + '/yumex.ui') - except: - raise - dialogs.show_information( - self, 'GtkBuilder ui file not found : ' + - const.DATA_DIR + '/yumex.ui') - sys.exit() - - # transaction result dialog - self.transaction_result = dialogs.TransactionResult(self) - - def set_working(self, state, insensitive=False): - """Set the working state.""" - self.is_working = state - - def _check_cache_expired(self, cache_type): - time_fmt = '%Y-%m-%d %H:%M' - now = datetime.datetime.now() - refresh_period = datetime.timedelta(hours=CONFIG.conf.refresh_interval) - if cache_type == 'session': - last_refresh = datetime.datetime.strptime( - CONFIG.conf.session_refresh, time_fmt) - period = now - last_refresh - if period > refresh_period: - return True - else: - return False - elif cache_type == 'system': - last_refresh = datetime.datetime.strptime( - CONFIG.conf.system_refresh, time_fmt) - period = now - last_refresh - if period > refresh_period: - return True - else: - return False - - def _set_cache_refreshed(self, cache_type): - time_fmt = '%Y-%m-%d %H:%M' - now = datetime.datetime.now() - now_str = now.strftime(time_fmt) - if cache_type == 'session': - CONFIG.conf.session_refresh = now_str - CONFIG.write() - elif cache_type == 'system': - CONFIG.conf.system_refresh = now_str - CONFIG.write() - - @property - def backend(self): - return self.get_root_backend() - - @ExceptionHandler - def get_root_backend(self): - """Get the current root backend. - - if it is not setup yet, the create it - if it is not locked, then lock it - """ - if self._root_backend is None: - self._root_backend = yumex.dnf_backend.DnfRootBackend(self) - if self._root_locked is False: - logger.debug('Lock the DNF root daemon') - locked, msg = self._root_backend.setup() - if locked: - self._root_locked = True - if self._check_cache_expired('system'): - logger.debug('Refresh system cache') - self.set_working(True, True) - self.infobar.info(_('Refreshing Repository Metadata')) - rc = self._root_backend.ExpireCache() - self.set_working(False) - if rc: - self._set_cache_refreshed('system') - else: - dialogs.show_information( - self, _('Could not refresh the DNF cache (root)')) - else: - logger.critical("can't get root backend lock") - if msg == 'not-authorized': # user canceled the polkit dialog - errmsg = _( - 'DNF root backend was not authorized.\n' - 'Yum Extender will exit') - # DNF is locked by another process - elif msg == 'locked-by-other': - errmsg = _( - 'DNF is locked by another process.\n\n' - 'Yum Extender will exit') - dialogs.show_information(self, errmsg) - # close down and exit yum extender - self.status.SetWorking(False) # reset working state - self.status.SetYumexIsRunning(self.pid, False) - sys.exit(1) - return self._root_backend - - @ExceptionHandler - def release_root_backend(self, quit=False): - """Release the current root backend, if it is setup and locked.""" - if self._root_backend is None: - return - if self._root_locked is True: - logger.debug('Unlock the DNF root daemon') - self._root_backend.Unlock() - self._root_locked = False - if quit: - logger.debug('Exit the DNF root daemon') - self._root_backend.Exit() - - def exception_handler(self, e): - """Called if exception occours in methods with the - @ExceptionHandler decorator. - """ - close = True - msg = str(e) - logger.error('BASE EXCEPTION : %s ' % msg) - err, errmsg = self._parse_error(msg) - logger.debug('BASE err: [%s] - msg: %s' % (err, errmsg)) - if err == 'LockedError': - errmsg = 'DNF is locked by another process.\n' - '\nYum Extender will exit' - close = False - elif err == 'NoReply': - errmsg = 'DNF D-Bus backend is not responding.\n' - '\nYum Extender will exit' - close = False - if errmsg == '': - errmsg = msg - dialogs.show_information(self, errmsg) - # try to exit the backends, ignore errors - if close: - try: - self.release_root_backend(quit=True) - except: - pass - self.status.SetWorking(False) # reset working state - self.status.SetYumexIsRunning(self.pid, False) - sys.exit(1) - - def _parse_error(self, value): - """Parse values from a DBus releated exception.""" - res = const.DBUS_ERR_RE.match(str(value)) - if res: - err = res.groups()[0] - err = err.split('.')[-1] - msg = res.groups()[1] - return err, msg - return '', '' - - -class YumexInstallWindow(BaseWindow): - """Simple ui windows class for doing actions from the command line.""" - def __init__(self, app, status): - BaseWindow.__init__(self, app, status) - self.set_default_size(600, 80) - - # Setup the main window ui - vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) - self.add(vbox) - # infobar revealer - infobar = self.ui.get_object('infobar') - vbox.pack_start(infobar, False, False, 0) - self.add(vbox) - vbox.show() - self.infobar = yumex.gui.widgets.InfoProgressBar(self.ui) - self.infobar.show_all() - info_spinner = self.ui.get_object('info_spinner') - info_spinner.set_from_file(const.PIX_DIR + '/spinner-small.gif') - self.system_backend_refreshed = True # dont refresh metadata - - def on_delete_event(self, *args): - if CONFIG.conf.hide_on_close or self.is_working: - self.hide() - return True - else: - self.app.on_quit() - - @ExceptionHandler - def process_actions(self, action, package, always_yes): - """Process the pending actions from the command line. - - :param action: action to perform (install/remove) - :param package: package to work on - :param always_yes: ask the user or default to yes/ok to all questions - """ - self.status.SetWorking(True) - if action == 'install': - self.infobar.info(_('Installing package: %s') % package) - self.infobar.info_sub(package) - txmbrs = self.backend.Install(package) - logger.debug('txmbrs: %s' % str(txmbrs)) - elif action == 'remove': - self.infobar.info(_('Removing package: %s') % package) - self.infobar.info_sub(package) - txmbrs = self.backend.Remove(package) - logger.debug('txmbrs: %s' % str(txmbrs)) - elif action == 'update': - self.infobar.info(_('Updating all available updates')) - txmbrs = self.backend.Update('*') - self.infobar.info(_('Searching for dependencies')) - rc, result = self.backend.BuildTransaction() - self.infobar.info(_('Dependencies resolved')) - if rc: - self.transaction_result.populate(result, '') - if not always_yes: - ok = self.transaction_result.run() - else: - ok = True - if ok: # Ok pressed - self.infobar.info(_('Applying changes to the system')) - self.backend.RunTransaction() - self.release_root_backend() - self.hide() - if not always_yes: - dialogs.show_information( - self, - _('Changes was successfully applied to the system')) - else: - dialogs.show_information( - self, _('Error(s) in search for dependencies'), - '\n'.join(result)) - self.release_root_backend(quit=True) - self.status.SetWorking(False) - self.app.quit() - - -class YumexWindow(BaseWindow): - """Main application window class.""" - def __init__(self, app, status): - BaseWindow.__init__(self, app, status) - self.set_name('YumexMainWindow') - width = CONFIG.conf.win_width - height = CONFIG.conf.win_height - self.set_default_size(width, height) - if CONFIG.conf.win_maximized: - self.maximize() - self.connect('configure-event', self.on_window_changed) - self.connect('window-state-event', self.on_window_state) - - # load custom styling from current theme - self.load_custom_styling() - - # init vars - self.cur_height = 0 # current window height - self.cur_width = 0 # current windows width - self.cur_maximized = False - self.last_search = None - self.current_filter = None - self._root_backend = None - self._root_locked = False - self.search_type = 'prefix' - self.last_search_pkgs = [] - self.current_filter_search = None - if CONFIG.conf.archs: - self.active_archs = CONFIG.conf.archs - else: - self.active_archs = list(const.PLATFORM_ARCH) - self._grps = None # Group and Category cache - self.active_page = None # Active content page - self.search_fields = CONFIG.conf.search_fields - self.add_accel_group(self.ui.get_object('main_accelgroup')) - - vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) - # setup the main gui - if CONFIG.conf.headerbar: - self.hb = widgets.YumexHeaderBar(self.ui) - self.set_titlebar(self.hb) - self.hb.show() - else: - toolbar = widgets.YumexToolBar(self.ui) - toolbar.show() - vbox.pack_start(toolbar, False, False, 0) - - # Setup the main window ui - self.add(vbox) - # infobar revealer - infobar = self.ui.get_object('infobar') - vbox.pack_start(infobar, False, False, 0) - # content Stack - self.stack = Gtk.Stack() - self.stack.set_transition_type(Gtk.StackTransitionType.CROSSFADE) - self.stack.set_transition_duration(500) - for name in ['packages', 'groups', 'history', 'queue']: - page = self.ui.get_object('page_%s' % name) - self.stack.add_named(page, name) - vbox.pack_start(self.stack, True, True, 0) - self.stack.show() - vbox.show() - - # Setup package filters - for name in ['updates', 'installed', 'available', 'all']: - rb = self.ui.get_object('filter_' + name) - rb.connect('toggled', self.on_pkg_filter, name) - - # set default value for clean_instonly - CONFIG.session.clean_instonly = CONFIG.conf.clean_instonly - - # Connect menu radio buttons to handler - for name in ['newest_only', 'clean_unused', 'clean_instonly']: - rb = self.ui.get_object('option_' + name) - rb.set_active(getattr(CONFIG.session, name)) - rb.connect('toggled', self.on_options, name) - - # build the search_conf widget - # Connect menu radio buttons to handler - # setup search type option - for key in ['prefix', 'key', 'fields']: - wid = self.ui.get_object('search_%s' % key) - if key == CONFIG.conf.search_default: - wid.set_active(True) - wid.connect('toggled', self.on_search_config, key) - self.search_type = CONFIG.conf.search_default - - self.set_fields_active(CONFIG.conf.search_default == 'fields') - - # setup search fields - for field in ['name', 'summary', 'description']: - wid = self.ui.get_object('field_%s' % field) - if field in CONFIG.conf.search_fields: - wid.set_active(True) - else: - wid.set_active(False) - wid.connect('toggled', self.on_search_field, field) - - # Setup search entry - self.search_entry = self.ui.get_object('search') - self.search_entry.connect('activate', self.on_search_changed) - self.search_entry.connect('icon-press', self.on_search_icon) - - # setup the package/queue/history views - self.setup_main_content() - - # Get the theme default TreeView text color - color_normal = get_style_color(self.package_view) - CONFIG.conf.color_normal = color_to_hex(color_normal) - logger.debug('theme color : %s' % color_to_hex(color_normal)) - - # spinner - self.spinner = self.ui.get_object('progress_spinner') - self.info_spinner = self.ui.get_object('info_spinner') - self.info_spinner.set_from_file(const.PIX_DIR + '/spinner-small.gif') - self.spinner.hide() - - # infobar - self.infobar = yumex.gui.widgets.InfoProgressBar(self.ui) - self.infobar.hide() - - # preferences dialog - - self.preferences = dialogs.Preferences(self) - - # setup actions - - wid = self.ui.get_object('main_pref') - wid.connect('activate', self.on_pref) - wid = self.ui.get_object('main_packages') - wid.set_active(True) - wid.connect('activate', self.on_packages) - wid = self.ui.get_object('main_groups') - wid.connect('activate', self.on_groups) - wid = self.ui.get_object('main_actions') - wid.connect('activate', self.on_queue) - wid = self.ui.get_object('main_history') - wid.connect('activate', self.on_history) - wid = self.ui.get_object('main_about') - wid.connect('activate', self.on_about) - wid = self.ui.get_object('main_doc') - wid.connect('activate', self.on_docs) - wid = self.ui.get_object('header_execute') - wid.connect('clicked', self.on_apply_changes) - - if not self.app.args.minimized: - self.show_now() - - # setup the package manager backend - # get the default enabled repos - if CONFIG.conf.repo_saved: - CONFIG.session.enabled_repos = CONFIG.conf.repo_enabled - else: - CONFIG.session.enabled_repos = self.backend.get_repo_ids('enabled') - - # get the arch filter - self.arch_filter = self.backend.get_filter('arch') - self.arch_filter.set_active(True) - self.arch_filter.change(self.active_archs) - - # setup default selections - self.ui.get_object('filter_updates').set_active(True) - # self.ui.get_object('search_keyword').set_active(True) - if CONFIG.conf.auto_select_updates: - self.package_view.on_section_header_clicked(None) - if self.app.args.minimized: - self.iconify() - - def load_custom_styling(self): - """Load custom .css styling from current theme.""" - css_fn = None - theme = Gtk.Settings.get_default().props.gtk_theme_name - css_postfix = '%s/apps/yumex.css' % theme - for css_prefix in [os.path.expanduser('~/.themes'), - '/usr/share/themes']: - fn = os.path.join(css_prefix, css_postfix) - logger.debug('looking for %s', fn) - if os.path.exists(fn): - css_fn = fn - break - if css_fn: - screen = Gdk.Screen.get_default() - css_provider = Gtk.CssProvider() - css_provider.load_from_path(css_fn) - context = Gtk.StyleContext() - context.add_provider_for_screen(screen, css_provider, - Gtk.STYLE_PROVIDER_PRIORITY_USER) - logger.debug('loading custom styling : %s', css_fn) - - def set_fields_active(self, state=True): - """Set search fields active/inactive.""" - for field in ['name', 'summary', 'description']: - wid = self.ui.get_object('field_%s' % field) - wid.set_sensitive(state) - - def on_window_state(self, widget, event): - # save window current maximized state - self.cur_maximized = event.new_window_state & \ - Gdk.WindowState.MAXIMIZED != 0 - - def on_window_changed(self, widget, data): - self.cur_height = data.height - self.cur_width = data.width - - def on_delete_event(self, *args): - if CONFIG.conf.hide_on_close or self.is_working: - self.hide() - return True - else: - self.app.on_quit() - - def _is_url(self, url): - """Check for a legal web URL.""" - urls = re.findall( - '^http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+~]' - '|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', url) - if urls: - return True - else: - return False - - def _open_url(self, url): - """Open URL in default browser.""" - if self._is_url(url): # just to be sure and prevent shell injection - rc = subprocess.call('xdg-open %s' % url, shell=True) - # failover to gtk.show_uri, if xdg-open fails or is not installed - if rc != 0: - Gtk.show_uri(None, url, Gdk.CURRENT_TIME) - else: - dialogs.show_information('%s is not an url' % url) - - def on_about(self, widget): - """ Main Menu: Help -> About """ - dialog = dialogs.AboutDialog() - dialog.run() - dialog.destroy() - - def on_docs(self, widget): - """ Main Menu: Help -> Documentation""" - self._open_url('http://yumex-dnf.readthedocs.org/en/latest/') - pass - - def on_search_field(self, widget, field): - if widget.get_active(): - if not field in self.search_fields: - self.search_fields.append(field) - else: - if field in self.search_fields: - self.search_fields.remove(field) - CONFIG.conf.search_fields = self.search_fields - - def on_status_icon_clicked(self, force=False): - """Left click on statusicon callback. - - hide/show the window, based on current state - """ - if force or not self.is_active(): - self.show() - self.present() - else: - self.iconify() - - def setup_main_content(self): - """Setup the main content - - Setup the package, history and queue views pages - """ - # Package Page - queue_menu = self.ui.get_object('queue_menu') - self.queue_view = views.QueueView(queue_menu) - arch_menu_widget = self.ui.get_object('arch_menu') - self.arch_menu = yumex.gui.widgets.ArchMenu(arch_menu_widget, - const.PLATFORM_ARCH) - self.arch_menu.connect('arch-changed', self.on_arch_changed) - self.package_view = views.PackageView(self.queue_view, self.arch_menu) - self.package_view.connect( - 'pkg_changed', self.on_pkg_view_selection_changed) - sw = self.ui.get_object('package_sw') - sw.add(self.package_view) - # setup info view - info = self.ui.get_object('info_box') - self.info = yumex.gui.widgets.PackageInfo(self, self) - info.pack_start(self.info, True, True, 0) - self.info.show_all() - # Queue Page - sw = self.ui.get_object('queue_sw') - sw.add(self.queue_view) - # History Page - self.setup_history_page() - # Groups - sw = self.ui.get_object('groups_sw') - hb = Gtk.Box() - hb.set_direction(Gtk.Orientation.HORIZONTAL) - self.groups = views.GroupView(self.queue_view, self) - self.groups.connect('group-changed', self.on_group_changed) - #hb.pack_start(self.groups, True, True, 0) - # sw.add(hb) - sw.add(self.groups) - sw = self.ui.get_object('group_pkg_sw') - self.group_package_view = views.PackageView( - self.queue_view, self.arch_menu, group_mode=True) - #self.group_package_view.connect('arch-changed', self.on_arch_changed) - self.group_package_view.connect( - 'pkg_changed', self.on_group_pkg_view_selection_changed) - sw.add(self.group_package_view) - info = self.ui.get_object('group_pkg_info_sw') - self.group_info = yumex.gui.widgets.PackageInfo(self, self) - info.add(self.group_info) - self.info.show_all() - self.stack.show_all() - - def setup_history_page(self): - # History elements / packages views - hb = Gtk.Box() - hb.set_direction(Gtk.Orientation.HORIZONTAL) - self.history_view = views.HistoryView(self) - hb.pack_start(self.history_view, False, False, 0) - hb.pack_start(self.history_view.pkg_view, True, True, 0) - sw = self.ui.get_object('history_sw') - sw.add(hb) - # setup history buttons - undo = self.ui.get_object('history_undo') - undo.connect('clicked', self.on_history_undo) - - def set_content_page(self, page): - """Set the visible content page. - - :param page: active page (PAGE_PACKAGES, PAGE_QUEUE, PAGE_HISTORY) - """ - self.active_page = page - self.stack.set_visible_child_name(page) - - def exception_handler(self, e): - """Called if exception occours in methods with the - @ExceptionHandler decorator. - """ - close = True - msg = str(e) - logger.error('EXCEPTION : %s ' % msg) - err, errmsg = self._parse_error(msg) - logger.debug('err: [%s] - msg: %s' % (err, errmsg)) - if err == 'LockedError': - errmsg = 'dnf is locked by another process \n' \ - '\nYum Extender will exit' - close = False - elif err == 'AccessDeniedError': - errmsg = "Root backend was not authorized and can't continue" - close = True - elif err == 'FatalError': - errmsg = 'Fatal error in yumex backend' - close = False - elif err == 'NoReply': - errmsg = 'DNF Dbus backend is not responding \n'\ - '\nYum Extender will exit' - close = False - if errmsg == '': - errmsg = msg - dialogs.show_information(self, errmsg) - # try to exit the backends, ignore errors - if close: - try: - self.release_root_backend(quit=True) - except: - pass - self.status.SetWorking(False) # reset working state - self.status.SetYumexIsRunning(self.pid, False) - Gtk.main_quit() - sys.exit(1) - - def set_working(self, state, insensitive=False): - """Set the working state. - - - show/hide the progress spinner - - show busy/normal mousepointer - - make gui insensitive/sensitive - - set/unset the woring state in the status icon - based on the state. - """ - self.is_working = state - if state: - self.spinner.show() - self.status.SetWorking(True) - self._set_busy_cursor(insensitive) - else: - self.spinner.hide() - self.infobar.hide() - self.status.SetWorking(False) - self._set_normal_cursor() - - def check_for_updates(self, widget=None): - """Check for updates in status icon callback.""" - self.backend.reload() # Reload backend - widget = self.ui.get_object('filter_updates') - if widget.get_active(): - self.on_pkg_filter(widget, 'updates') - else: - self.ui.get_object('filter_updates').set_active(True) - - def _set_busy_cursor(self, insensitive=False): - """Set busy cursor in main window and - make it insensitive if selected. - """ - win = self.get_window() - if win is not None: - win.set_cursor(Gdk.Cursor(Gdk.CursorType.WATCH)) - if insensitive: - for widget in const.WIDGETS_INSENSITIVE: - self.ui.get_object(widget).set_sensitive(False) - self.stack.set_sensitive(False) - doGtkEvents() - - def _set_normal_cursor(self): - """Set Normal cursor in main window and make it sensitive.""" - win = self.get_window() - if win is not None: - win.set_cursor(None) - for widget in const.WIDGETS_INSENSITIVE: - self.ui.get_object(widget).set_sensitive(True) - self.stack.set_sensitive(True) - doGtkEvents() - -# -# Callback handlers -# - def on_history_undo(self, widget): - tid = self.history_view.get_selected() - logger.debug('History Undo : %s', tid) - rc, messages = self.backend.HistoryUndo(tid) - if rc: - self.process_actions(from_queue=False) - else: - msg = "Can't undo history transaction :\n%s" % \ - ("\n".join(messages)) - logger.debug(msg) - dialogs.show_information( - self, _('Error in undo history transaction'), - "\n".join(messages)) - - def on_pkg_view_selection_changed(self, widget, pkg): - """Package selected in the view callback.""" - self.info.set_package(pkg) - - def on_group_pkg_view_selection_changed(self, widget, pkg): - """Package selected in the group view callback.""" - self.group_info.set_package(pkg) - - def on_packages(self, action, data=None): - """Switching to package page callback.""" - self.set_content_page(const.PAGE_PACKAGES) - self.hide_search_buttons(hide=False) - - def set_search_focus(self): - """Set focus on search entry and move cursor to end of text.""" - self.search_entry.grab_focus() - self.search_entry.emit( - 'move-cursor', Gtk.MovementStep.BUFFER_ENDS, 1, False) - - def on_search_config(self, widget, data): - """Search config callback.""" - self.search_type = data - CONFIG.conf.search_default = data - if data == 'fields': - self.set_fields_active(True) - else: - self.set_fields_active(False) - if self.last_search: - self.last_search = None - # send an active signal from the search entry & grap focus & place - # cursor - self.search_entry.emit('activate') - self.set_search_focus() - - def on_pkg_filter(self, widget, data): - """Switching package filter callback.""" - if widget.get_active(): - self.on_packages(None, None) - if data in ['installed', 'available', 'updates', 'all']: - self.infobar.info(const.PACKAGE_LOAD_MSG[data]) - self.set_working(True, True) - if self.last_search: # we are searching - self.current_filter_search = (widget, data) - pkgs = self.filter_search_pkgs(data) - else: # normal package filter - self.current_filter = (widget, data) - pkgs = self.backend.get_packages(data) - if data == 'updates': - if CONFIG.session.newest_only: - pkgs = self.backend.get_packages(data) - else: - pkgs = self.backend.get_packages('updates_all') - obs_pkgs = self.backend.get_packages('obsoletes') - pkgs.extend(obs_pkgs) - else: - pkgs = self.backend.get_packages(data) - self.status.SetUpdateCount(len(pkgs)) - self.info.set_package(None) - self.infobar.info(_('Adding packages to view')) - self.package_view.populate(pkgs) - self.set_working(False) - self.infobar.hide() - if data == 'updates': - self.package_view.set_header_click(True) - else: - self.package_view.set_header_click(False) - self.set_search_focus() - - def on_arch_changed(self, widget, data): - """Arch changed in arch menu callback.""" - self.active_archs = data.split(',') - logger.debug('arch-changed : %s' % self.active_archs) - self.arch_filter.change(self.active_archs) - self.refresh_search() - - def refresh_search(self): - if self.last_search: - self.last_search = None - self.on_search_changed(self.search_entry) - elif self.active_page == const.PAGE_PACKAGES and self.current_filter: - widget, flt = self.current_filter - self.on_pkg_filter(widget, flt) - - def on_search_icon(self, widget, icon_pos, event): - """Search entry callback.""" - #print(icon_pos) - # clear icon pressed - if icon_pos == Gtk.EntryIconPosition.SECONDARY: - widget.set_text('') - widget.emit('activate') - - def on_search_changed(self, widget): - """Search entry callback.""" - data = widget.get_text() - if data == '': # revert to the current selected filter - self.last_search = None - self.last_search_pkgs = [] - self.current_filter_search = None - if self.current_filter: - widget, flt = self.current_filter - state = widget.get_active() - if not state: - widget.set_active(True) - else: - self.on_pkg_filter(widget, flt) - else: - if self.search_type == 'key': - flt = '*%s*' - self._search_name(data, flt) - elif self.search_type == 'prefix': - flt = '%s*' - self._search_name(data, flt) - elif self.search_type == 'fields': - self._search_keys(self.search_fields, data) - - def filter_search_pkgs(self, flt): - """Get filtered search results. - - :param flt: filter (updates, install or all) - """ - if flt == 'updates': # get update only - pkgs = [ - po for po in self.last_search_pkgs if po.action in ('u', 'o')] - return pkgs - elif flt == 'installed': # get installed only - pkgs = [po for po in self.last_search_pkgs if po.installed] - return pkgs - elif flt == 'available': - pkgs = [po for po in self.last_search_pkgs if po.action == 'i'] - return pkgs - else: # get all - return self.last_search_pkgs - - def _search_name(self, data, search_flt): - """Search package name for keyword with wildcards.""" - # only search for word larger than 3 chars - if len(data) >= 3 and data != self.last_search: - self.last_search = data - self.set_working(True) - newest_only = CONFIG.session.newest_only - self.last_search_pkgs = self.backend.get_packages_by_name( - search_flt % data, newest_only) - logger.debug('Packages found : %d' % len(self.last_search_pkgs)) - self.info.set_package(None) - self.set_working(False) - if self.current_filter_search: - widget, flt = self.current_filter_search - self.on_pkg_filter(widget, flt) - else: - self._set_available_active() - - def _search_keys(self, fields, data): - """Search given package attributes for given keywords.""" - self.last_search = data - self.set_working(True, True) - newest_only = CONFIG.session.newest_only - self.last_search_pkgs = self.backend.search( - fields, data.split(' '), True, newest_only, True) - self.on_packages(None, None) # switch to package view - self.info.set_package(None) - self.set_working(False) - if self.current_filter_search: - widget, flt = self.current_filter_search - self.on_pkg_filter(widget, flt) - else: - self._set_available_active() - - def _set_available_active(self): - """Make the 'available' filter active, by selecting 'updates' and - the back to 'available'""" - widget = self.ui.get_object('filter_updates') - widget.set_active(True) - widget = self.ui.get_object('filter_all') - widget.set_active(True) - - def on_groups(self, widget): - """Group page selected callback.""" - if widget.get_active(): - self.set_content_page(const.PAGE_GROUPS) - self.hide_search_buttons() - if not self._grps: - logger.debug('getting group and categories') - self._grps = self.backend.get_groups() - self.groups.populate(self._grps) - - def on_group_changed(self, widget, grp_id): - """ Group changed callback - - called when a new group is selected and the group package view - shall be updated with the packages in the group - - :param widget: - :param grp_id: group id to show packages for. - """ - logger.debug('on_group_changed : %s ' % grp_id) - self.set_working(True, True) - pkgs = self.backend.get_group_packages(grp_id, 'all') - self.group_package_view.populate(pkgs) - self.set_working(False) - - def hide_search_buttons(self, hide=True): - """Hide search releated button, only shown on package page.""" - for widget in ['header_filters', 'header_search_options', 'search']: - self.ui.get_object(widget).set_sensitive(not hide) - - def on_history(self, widget): - """History page selected callback""" - if widget.get_active(): - if not self.history_view.is_populated: - result = self.backend.GetHistoryByDays( - 0, CONFIG.conf.history_days) - self.history_view.populate(result) - self.set_content_page(const.PAGE_HISTORY) - self.hide_search_buttons() - else: - self.release_root_backend() - - def on_queue(self, widget): - """Queue page selected callback.""" - if widget.get_active(): - self.set_content_page(const.PAGE_QUEUE) - self.hide_search_buttons() - - def on_info(self, action, parameter): - """Package info page radiobuttons callback.""" - widget = self.ui.get_object(action.get_name()) - if widget.get_active(): - self.info.clear() - self.info.write(action.get_name()) - - def on_apply_changes(self, widget): - """Apply Changes button callback.""" - self.process_actions() - - def on_options(self, widget, option): - """Options menu callback. - - Set the CONFIG parameter values based on the menu checkbox states - """ - state = widget.get_active() - setattr(CONFIG.session, option, state) - logger.debug('session option : %s = %s' % - (option, getattr(CONFIG.session, option))) - if option in ['newest_only']: # search again - self.refresh_search() - if option in ['clean_instonly', 'clean_unused']: - self.reset_on_error() - - def on_pref(self, widget): - """Preferences selected callback.""" - need_reset = self.preferences.run() - if need_reset: - self.reset() - - def _populate_transaction(self): - self.backend.ClearTransaction() - errors = 0 - error_msgs = set() - for action in const.QUEUE_PACKAGE_TYPES: - pkgs = self.queue_view.queue.get(action) - for pkg in pkgs: - if action == 'do': - logger.debug('adding: %s %s' % - (const.QUEUE_PACKAGE_TYPES[action], - pkg.pkg_id)) - rc, trans = self.backend.AddTransaction( - pkg.pkg_id, - const.QUEUE_PACKAGE_TYPES[action]) - if not rc: - logger.debug('result : %s: %s' % (rc, pkg)) - errors += 1 - error_msgs.add('%s : %s' % - (const.QUEUE_PACKAGE_TYPES[action], pkg)) - else: - logger.debug('adding: %s %s' % - (const.QUEUE_PACKAGE_TYPES[action], - pkg.pkg_id)) - rc, trans = self.backend.AddTransaction( - pkg.pkg_id, const.QUEUE_PACKAGE_TYPES[action]) - if not rc: - logger.debug('result: %s: %s' % (rc, pkg)) - errors += 1 - error_msgs.add('%s : %s' % - (const.QUEUE_PACKAGE_TYPES[action], pkg)) - for grp_id, action in self.queue_view.queue.get_groups(): - if action == 'i': - rc, trans = self.backend.GroupInstall(grp_id) - else: - rc, trans = self.backend.GroupRemove(grp_id) - if not rc: - errors += 1 - error_msgs.add('group : %s : %s ' % (action, grp_id)) - logger.debug(' add transaction errors : %d', errors) - if errors > 0: - raise TransactionBuildError(error_msgs) - - def _check_protected(self, trans): - """Check for deletion protected packages in transaction""" - protected = [] - for action, pkgs in trans: - if action == 'remove': - for id, size, replaces in pkgs: - (n, e, v, r, a, repo_id) = str(id).split(',') - if n in CONFIG.conf.protected: - protected.append(n) - return protected - - def _build_from_queue(self): - """Populate transaction from queue and resolve deps.""" - # switch to queue view - if self.queue_view.queue.total() == 0: - raise QueueEmptyError - widget = self.ui.get_object('main_actions') - widget.set_active(True) - self.set_content_page(const.PAGE_QUEUE) - self._populate_transaction() - self.infobar.info(_('Searching for dependencies')) - rc, result = self.backend.BuildTransaction() - self.infobar.info(_('Dependencies resolved')) - if not rc: - raise TransactionSolveError(result) - return result - - def _get_transaction(self): - """Get current transaction.""" - rc, result = self.backend.GetTransaction() - if not rc: - raise TransactionSolveError(result) - return result - - def _run_transaction(self): - """Run the current transaction.""" - self.infobar.info(_('Applying changes to the system')) - self.set_working(True, True) - rc, result = self.backend.RunTransaction() - # This can happen more than once (more gpg keys to be - # imported) - while rc == 1: - # get info about gpgkey to be comfirmed - values = self.backend._gpg_confirm - if values: # There is a gpgkey to be verified - (pkg_id, userid, hexkeyid, keyurl, timestamp) = values - logger.debug('GPGKey : %s' % repr(values)) - ok = dialogs.ask_for_gpg_import(self, values) - if ok: - # tell the backend that the gpg key is confirmed - self.backend.ConfirmGPGImport(hexkeyid, True) - # rerun the transaction - # FIXME: It should not be needed to populate - # the transaction again - self._populate_transaction() - rc, result = self.backend.BuildTransaction() - rc, result = self.backend.RunTransaction() - else: - break - else: # error in signature verification - dialogs.show_information( - self, _('Error checking package signatures\n'), - '\n'.join(result)) - break - - if rc == 4: # Download errors - dialogs.show_information( - self, _('Downloading error(s)\n'), - '\n'.join(result)) - self.reset_on_cancel() - return - elif rc != 0: # other transaction errors - dialogs.show_information( - self, _('Error in transaction\n'), - '\n'.join(result)) - self.reset() - return - - @ExceptionHandler - def process_actions(self, from_queue=True): - """Process the current actions in the queue. - - - setup the Dnf transaction - - resolve dependencies - - ask user for confirmation on result of depsolve - - run the transaction - """ - self.set_working(True, True) - self.infobar.info(_('Preparing system for applying changes')) - try: - if from_queue: - result = self._build_from_queue() - else: - result = self._get_transaction() - self.set_working(False) - # check for protected packages - check = self._check_protected(result) - if check: - dialogs.show_information( - self, _("Can't remove protected package(s)"), - '\n'.join(check)) - self.reset_on_cancel() - return - # transaction confirmation dialog - self.transaction_result.populate(result, '') - ok = self.transaction_result.run() - if ok: # Ok pressed - self._run_transaction() - else: # user cancelled transaction - self.reset_on_cancel() - return - except QueueEmptyError: # Queue is empty - self.set_working(False) - dialogs.show_information(self, _('No pending actions in queue')) - self.reset_on_cancel() - except TransactionBuildError as e: # Error in building transaction - dialogs.show_information( - self, _('Error(s) in building transaction'), - '\n'.join(e.msgs)) - self.reset_on_cancel() - except TransactionSolveError as e: - dialogs.show_information( - self, _('Error(s) in search for dependencies'), - '\n'.join(e.msgs)) - self.reset_on_error() - - def reset_on_cancel(self): - """Reset gui on user cancel""" - self.set_working(True) - self.infobar.hide() - self.set_working(False) - - def reset_on_error(self): - """Reset gui on transaction errors.""" - self.set_working(True) - self.infobar.hide() - self.release_root_backend() - self.set_working(False) - - @ExceptionHandler - def reset(self): - """Reset the gui to inital state. - - Used after a transaction is completted. - """ - self.set_working(True) - self.infobar.hide() - self.release_root_backend() - self.backend.reload() - # clear the package queue - self.queue_view.queue.clear() - self.queue_view.refresh() - # clear search entry - self.last_search = None - self.current_filter_search = None - self.search_entry.set_text('') - # reset groups - self._grps = self.backend.get_groups() - self.groups.populate(self._grps) - self.group_package_view.populate([]) - self.set_working(False) - # switch to package page - widget = self.ui.get_object('main_packages') - widget.set_active(True) - self.set_content_page(const.PAGE_PACKAGES) - # show updates - widget = self.ui.get_object('filter_updates') - widget.set_active(True) - self.on_pkg_filter(widget, 'updates') - - -class YumexApplication(Gtk.Application): - """Main Gtk.Application class.""" - - def __init__(self): - Gtk.Application.__init__( - self, - flags=Gio.ApplicationFlags.HANDLES_COMMAND_LINE) - self.args = None - self.status = None - self.save_win_size = False # save windows size flag - self.win = None # main window - self.pid = 0 - - def do_activate(self): - """Gtk.Application activate callback.""" - logger.debug('do_activate') - if self.args.install: - self.install = YumexInstallWindow(self, self.status) - self.install.show() - self.install.process_actions( - 'install', self.args.install, self.args.yes) - elif self.args.remove: - self.install = YumexInstallWindow(self, self.status) - self.install.show() - self.install.process_actions( - 'remove', self.args.remove, self.args.yes) - elif self.args.updateall: - self.install = YumexInstallWindow(self, self.status) - self.install.show() - self.install.process_actions( - 'update', '*', self.args.yes) - - else: - self.save_win_size = True # normal app mode - self.win = YumexWindow(self, self.status) - self.win.connect('delete_event', self.on_quit) - self.win.show() - - def do_startup(self): - """Gtk.Application startup callback.""" - logger.debug('do_startup') - Gtk.Application.do_startup(self) - # Setup actions - self._create_action('quit', self.on_quit) - - def _create_action(self, name, callback, para=None): - """Create and Gio.Action and connect it to a callback handler - handles app. actions defined in GtkBuilder ui file. - """ - action = Gio.SimpleAction.new(name, para) - action.connect('activate', callback) - self.add_action(action) - - def on_quit(self, action=None, parameter=None): - """Quit callback.""" - # If we quit from the StatusIcon, then quit the status icon also - if action is None: - self.keep_icon_running = False - self.quit() # quit the application - - def do_command_line(self, args): - """Gtk.Application command line callback. - - Called if Gio.ApplicationFlags.HANDLES_COMMAND_LINE is set. - must call the self.do_activate() to get the application up and running. - """ - Gtk.Application.do_command_line(self, args) - parser = argparse.ArgumentParser(prog='yumex') - parser.add_argument('-d', '--debug', action='store_true') - parser.add_argument( - '-y', '--yes', action='store_true', - help='Answer yes/ok to all questions') - parser.add_argument( - '--icononly', action='store_true', - help='Start only the status icon') - parser.add_argument('--exit', action='store_true', - help='tell session dbus services used by yumex to exit') - parser.add_argument( - '-I', '--install', type=str, metavar='PACKAGE', - help='Install Package') - parser.add_argument( - '-R', '--remove', type=str, metavar='PACKAGE', - help='Remove Package') - parser.add_argument( - '--updateall', action='store_true', - help='apply all available updates') - parser.add_argument( - '--minimized', action='store_true', - help='start Yum Extender mimimized') - self.args = parser.parse_args(args.get_arguments()[1:]) - if self.args.debug: - self.doTextLoggerSetup(loglvl=logging.DEBUG) - # setup log handler for yumdaemon API - self.doTextLoggerSetup( - logroot='yumdaemon', - logfmt='%(asctime)s: [%(name)s] - %(message)s', - loglvl=logging.DEBUG) - else: - self.doTextLoggerSetup() - logger.debug('cmdline : %s ' % repr(self.args)) - if self.args.exit: - dbus_statusicon('Exit') - dbus_dnfsystem('Exit') - sys.exit(0) - # Start the StatusIcon dbus client - self.status = yumex.status.StatusIcon(self) - if not self.status.is_started: - msg = self.status.last_err + _('\n\nYum Extender will close') - dialogs.show_information(None, - _('Error in starting notification icon'), - msg) - sys.exit(0) - self.status.Start() # Show the icon - if self.args.icononly: # Only start the icon and exit - sys.exit(0) - # Check if yumex is running already - self.pid = os.getpid() - run_pid = self.status.GetYumexIsRunning() - if run_pid > 0: # yumex is allready running - if dialogs.yes_no_dialog(None, 'Yum Extender is already running', - '\nprocess-id : %d' % run_pid + - '\nDo you want to quit it'): - if not self.status.GetYumexIsWorking(): - dbus_statusicon('QuitYumex') # no, quit the running yumex - else: - dbus_statusicon('ShowYumex') # yes, show the running yumex - else: # user answered no to quit - dbus_statusicon('ShowYumex') # show the running yumex - sys.exit(0) - else: # not running, - if self.status.SetYumexIsRunning(self.pid, True): - self.do_activate() - else: - msg = _('Yum Extender will close') - dialogs.show_information(None, - _('Error in locking notification icon'), - msg) - sys.exit(1) - - return 0 - - def do_shutdown(self): - """Gtk.Application shutdown callback. - - Do clean up before the application is closed. - """ - Gtk.Application.do_shutdown(self) - if self.status: - if self.status.GetYumexIsRunning() == self.pid: - self.status.SetYumexIsRunning(self.pid, False) - if not CONFIG.conf.autostart and \ - not CONFIG.conf.autocheck_updates: - self.status.Exit() - # if windows object exist, unlock and exit backends - if self.win: - # don't save windows size in install mode - if self.save_win_size: - if self.win.cur_maximized: - CONFIG.conf.win_maximized = True - else: - CONFIG.conf.win_width = self.win.cur_width - CONFIG.conf.win_height = self.win.cur_height - CONFIG.conf.win_maximized = False - self.win.release_root_backend(quit=True) - logger.info('Saving config on exit') - CONFIG.write() - - def doTextLoggerSetup(self, logroot='yumex', - logfmt='%(asctime)s: %(message)s', - loglvl=logging.INFO): - """Setup Python logging.""" - logger = logging.getLogger(logroot) - logger.setLevel(loglvl) - formatter = logging.Formatter(logfmt, '%H:%M:%S') - handler = logging.StreamHandler() - handler.setFormatter(formatter) - handler.propagate = False - logger.addHandler(handler) From e94743b67db15b71f1c14e98032e03204df65914 Mon Sep 17 00:00:00 2001 From: Christian Stadelmann Date: Wed, 27 Apr 2016 20:33:14 +0200 Subject: [PATCH 07/18] InfoBar: remove custom colors and code Rely on Gtk theme for coloring the info bar. Use a GtkInfoBar. This will fix #87. --- src/yumex.ui | 81 +++++++++++++++++++++++----------------- src/yumex/gui/widgets.py | 54 +++++++++++++-------------- 2 files changed, 74 insertions(+), 61 deletions(-) diff --git a/src/yumex.ui b/src/yumex.ui index 67117fc..87768e0 100644 --- a/src/yumex.ui +++ b/src/yumex.ui @@ -871,8 +871,8 @@ start Yum Extender True True - True False + True True @@ -905,43 +905,53 @@ start Yum Extender False True - 1 + 2 - + True + True False - - - True + 5 + + + False + 6 + end + + + + + + + + + + + + False + False + 0 + + + + False - 6 - 6 - 5 - 5 - 6 - 6 - 0 - in True False - 6 - 6 True 6 + 5 True False start - 6 - 6 6 10 - True label @@ -956,27 +966,22 @@ start Yum Extender True False - 12 - 12 10 10 True - 0 + 1 1 - 2 False start - 20 - 10 + 16 20 10 - True label @@ -984,36 +989,44 @@ start Yum Extender - 0 + 1 2 - 2 True False - 12 - 6 True 0 0 + 3 - - - + + False + True + 1 + + + False + False + 0 + + + + False True - 2 + 0 diff --git a/src/yumex/gui/widgets.py b/src/yumex/gui/widgets.py index b354933..fbfec60 100644 --- a/src/yumex/gui/widgets.py +++ b/src/yumex/gui/widgets.py @@ -47,44 +47,42 @@ class InfoProgressBar: def __init__(self, ui): self.ui = ui self.infobar = ui.get_object("infobar") # infobar revealer - frame = ui.get_object("info_frame") - new_bg = Gdk.RGBA() - if yumex.misc.check_dark_theme(): - new_bg.parse("rgb(0,0,0)") - else: - new_bg.parse("rgb(255,255,255)") - frame.override_background_color(Gtk.StateFlags.NORMAL, new_bg) self.label = ui.get_object("infobar_label") self.sublabel = ui.get_object("infobar_sublabel") self.progress = ui.get_object("infobar_progress") + self.spinner = ui.get_object("info_spinner") def _show_infobar(self, show=True): - self.infobar.set_reveal_child(show) + if show: + self.infobar.show() + self.spinner.start() + else: + self.spinner.stop() + self.infobar.hide() + self.label.hide() + self.sublabel.hide() + self.progress.hide() + self.progress.set_show_text(False) def show_progress(self, state): if state: self.show_label() else: - self.hide() + self._show_infobar(False) def hide(self): - self.label.hide() - self.sublabel.hide() - self.progress.hide() self._show_infobar(False) - self.progress.set_text("") - #self.progress.set_show_text (False) def hide_sublabel(self): self.sublabel.hide() - def show_label(self): + def show_label(self, msg=""): + self.label.set_text(msg) self.label.show() - self.label.set_text("") - def show_sublabel(self): + def show_sublabel(self, msg=""): + self.sublabel.set_text(msg) self.sublabel.show() - self.sublabel.set_text("") def show_all(self): self.show_label() @@ -93,25 +91,27 @@ def show_all(self): def info(self, msg): self._show_infobar(True) - self.show_label() - self.label.set_text(msg) + self.show_label(msg) def info_sub(self, msg): self._show_infobar(True) - self.show_sublabel() - self.sublabel.set_text(msg) + self.show_sublabel(msg) def set_progress(self, frac, label=None): if label: self.progress.set_text(label) + self.progress.set_show_text(True) + else: + self.progress.set_show_text(False) + if frac >= 0.0 and frac <= 1.0: - self.infobar.show() + self._show_infobar() self.progress.show() self.progress.set_fraction(frac) - # make sure that the main label is shown, else the progres - # looks bad. this is normally happen when changlog - # or filelist info is needed for at package - # and it will trigger the yum daemon to download the need metadata. + # make sure that the main label is shown, else the progress + # looks bad. this normally happens when changlog or filelist info + # is needed for a package and it will trigger the yum daemon to + # download the need metadata. if not self.label.get_property('visible'): self.info(_("Getting Package Metadata")) From 09a48c5beba2ce1e64cb37fc2ecf440c1b6d69e5 Mon Sep 17 00:00:00 2001 From: Christian Stadelmann Date: Wed, 27 Apr 2016 21:30:04 +0200 Subject: [PATCH 08/18] Delete spinner-small.gif --- gfx/spinner-small.gif | Bin 847 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 gfx/spinner-small.gif diff --git a/gfx/spinner-small.gif b/gfx/spinner-small.gif deleted file mode 100644 index b1833fa8afbf6c6558267bb28f53f14c8dd7839b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 847 zcmZ?wbhEHb6krfw_`<;O|NsB6p6kDU|E*qnf9>(tk$uA5x~?T5{m! z%$?8PeEPNP!n+$!zP7G;)VJvg11Ui9KewN2NU*bGfUA+70W%{|ui`%`=c3falGGH1 z^30M9g~Y7Hik$q!6ur#6w0s7|pDdhQKvg;*TR@IvU=2`E=u63*x70u+M^URKVb$6h zBF835nKpc2yV=nY-OFObl-U|EQJ|HvvvpD58cm%B&!``ZRFXdI@|ZNiqGg4tnrua< zX|{rmu*j!M*`x3Kov>Mwp`g&^eyJxzOX}!@6)PN6Tx$;;IC$+S6GzXKhSUrZA)bQ= z6dVM(d=4~xNDg#wW^&r{bX$Pw3!u-kC5G#KzjvRP>Ha<(fgVzWE}=tJet6Etp#cxZ7Q2@v7bUD9s&-nfy=%K5aR z_ZE+qriW}EdNWjRZmeYB5ZHI|4C{?7ZoS5E7l%81kqnCrJUGQ#bqxBPu5k5b3wS+y z%M)sETF%T;qms=Vqsh=_!j zGwqw8?Al~edazEi@Z=R(^J4R(Pp7853g=NdW^%iI(bJs2W_XK*y;nl9PO znB?NIg^gj=&cq}gu0GX<0%Nh{Bgz}pfAGFhVmC1}4^Y#J&~MP_=~cmMX*|?Y51_|5 zmN}R(9NKiuQOR>6$A(!86FBVhT3I~}R5~Pj<-E-|@p|a6AMDgEY1V3Lc9jwlSaMkR sV#11!gab@J1q?emBsNTU=;w1b&*0EEWJzO<(d_O~Q)I9PB~LH_0A9-x5dZ)H From 78da7561b1de38145f8473906dfdf59bf879c932 Mon Sep 17 00:00:00 2001 From: Christian Stadelmann Date: Wed, 27 Apr 2016 21:30:22 +0200 Subject: [PATCH 09/18] Delete spinner.gif --- gfx/spinner.gif | Bin 7661 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 gfx/spinner.gif diff --git a/gfx/spinner.gif b/gfx/spinner.gif deleted file mode 100644 index e1f00794107fd5e8bc655e2285c4edbc49e80d75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7661 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 Date: Wed, 27 Apr 2016 21:36:18 +0200 Subject: [PATCH 10/18] Remove tray icons Remove tray icons and references to it in Makefile. Makefile: Don't create empty directory any more. --- gfx/Makefile | 4 ---- gfx/tray-error.png | Bin 5006 -> 0 bytes gfx/tray-info.png | Bin 5200 -> 0 bytes gfx/tray-no-updates.png | Bin 5145 -> 0 bytes gfx/tray-updates.png | Bin 4242 -> 0 bytes gfx/tray-working.png | Bin 5636 -> 0 bytes 6 files changed, 4 deletions(-) delete mode 100644 gfx/tray-error.png delete mode 100644 gfx/tray-info.png delete mode 100644 gfx/tray-no-updates.png delete mode 100644 gfx/tray-updates.png delete mode 100644 gfx/tray-working.png diff --git a/gfx/Makefile b/gfx/Makefile index 1d05a70..6c51b79 100644 --- a/gfx/Makefile +++ b/gfx/Makefile @@ -8,11 +8,7 @@ clean: echo "Nothing to do" install: - mkdir -p $(DESTDIR)$(DATADIR)/$(APPNAME)/gfx mkdir -p $(DESTDIR)$(DATADIR)/icons/hicolor/scalable/apps mkdir -p $(DESTDIR)$(DATADIR)/icons/hicolor/48x48/apps install -m644 yumex-icon.svg $(DESTDIR)$(DATADIR)/icons/hicolor/scalable/apps/$(APPNAME).svg install -m644 yumex-icon.png $(DESTDIR)$(DATADIR)/icons/hicolor/48x48/apps/$(APPNAME).png - install -m644 tray*.png $(DESTDIR)$(DATADIR)/$(APPNAME)/gfx/. - install -m644 spinner*.gif $(DESTDIR)$(DATADIR)/$(APPNAME)/gfx/. - diff --git a/gfx/tray-error.png b/gfx/tray-error.png deleted file mode 100644 index ed365a9022ba5f48044f67eaaa2fefc5c0b12709..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5006 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
    j81prOeMtMNV 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 KMNUMnLSTYZJf;!= diff --git a/gfx/tray-no-updates.png b/gfx/tray-no-updates.png deleted file mode 100644 index d088ae6e394848024643536cfe03ae16cfc23d34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5145 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 Hu0mjf4wj#5 diff --git a/gfx/tray-updates.png b/gfx/tray-updates.png deleted file mode 100644 index 908cb5f0b479da985c4fdfe5682dd41fa76f6eaf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4242 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 diff --git a/gfx/tray-working.png b/gfx/tray-working.png deleted file mode 100644 index f5b441f81b2ff9ddc4e4aa1253fa11744c181318..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5636 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 e@yGUuZT}z7|96XS?h9c60000 Date: Thu, 28 Apr 2016 09:57:42 +0200 Subject: [PATCH 11/18] Revert "move extra filters to headerbar" This reverts commit ddd0d1e44884515908b4ebe2af934a75b0d49c1e. --- src/yumex.ui | 54 +++++++++++++++++++++------------------- src/yumex/__init__.py | 4 +-- src/yumex/gui/widgets.py | 3 --- 3 files changed, 30 insertions(+), 31 deletions(-) diff --git a/src/yumex.ui b/src/yumex.ui index 87768e0..f9a6d87 100644 --- a/src/yumex.ui +++ b/src/yumex.ui @@ -1059,6 +1059,33 @@ start Yum Extender True False vertical + + + True + False + icons + 2 + + + True + False + More filtering options + True + view-list-symbolic + + + False + False + + + + + False + False + end + 0 + + 120 @@ -1521,33 +1548,10 @@ start Yum Extender False True - - True - False - - - True - True - True - Extra filtering options - - - True - False - view-list-symbolic - - - - - False - True - 0 - - - + - + True False 24 diff --git a/src/yumex/__init__.py b/src/yumex/__init__.py index bb18032..81ab4c5 100644 --- a/src/yumex/__init__.py +++ b/src/yumex/__init__.py @@ -321,7 +321,7 @@ def set_working(self, state, insensitive=True): def _disable_buttons(self, state): WIDGETS_INSENSITIVE = ['left_buttons', 'right_buttons', - 'package_sidebar', 'center_buttons'] + 'package_sidebar'] for widget in WIDGETS_INSENSITIVE: self.ui.get_object(widget).set_sensitive(state) @@ -1008,11 +1008,9 @@ def on_page_changed(self, widget, page): """Handle content page is changed.""" if page == 'packages': self._search_toggle.set_sensitive(True) - self.extra_filters.set_sensitive(True) self.search_bar.show() self.info.show() else: - self.extra_filters.set_sensitive(False) self._search_toggle.set_sensitive(False) self.search_bar.hide() self.info.show(False) diff --git a/src/yumex/gui/widgets.py b/src/yumex/gui/widgets.py index fbfec60..4ddabf4 100644 --- a/src/yumex/gui/widgets.py +++ b/src/yumex/gui/widgets.py @@ -777,9 +777,6 @@ def __init__(self, win): def popup(self): self._on_button(self._button) - def set_sensitive(self, state): - self._button.set_sensitive(state) - def _on_button(self, button): self._popover.show_all() From b338a2b7408199e818c23263dffd0d2997eb0e9c Mon Sep 17 00:00:00 2001 From: Tim Lauridsen Date: Thu, 28 Apr 2016 12:34:38 +0200 Subject: [PATCH 12/18] fix issue with get_tags() (fixes #94) --- src/yumex/gui/widgets.py | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/src/yumex/gui/widgets.py b/src/yumex/gui/widgets.py index 4ddabf4..78a9ecc 100644 --- a/src/yumex/gui/widgets.py +++ b/src/yumex/gui/widgets.py @@ -453,19 +453,23 @@ def on_mouse_motion(self, widget, event, data=None): # convert coords to TextBuffer coords x, y = widget.window_to_buffer_coords(Gtk.TextWindowType.TEXT, x, y) # Get the tags on current pointer location - tags = widget.get_iter_at_location(x, y).get_tags() - # Remove underline and hand mouse pointer - if self.underlined_url: - self.underlined_url.set_property("underline", Pango.Underline.NONE) - widget.get_window(Gtk.TextWindowType.TEXT).set_cursor(None) - self.underlined_url = None - for tag in tags: - if tag in self.url_tags: - # underline the tags and change mouse pointer to hand - tag.set_property("underline", Pango.Underline.SINGLE) - widget.get_window(Gtk.TextWindowType.TEXT).set_cursor( - Gdk.Cursor(Gdk.CursorType.HAND2)) - self.underlined_url = tag + itr = widget.get_iter_at_location(x, y) + if isinstance(itr, tuple): + itr = itr[1] + tags = itr.get_tags() + # Remove underline and hand mouse pointer + if self.underlined_url: + self.underlined_url.set_property("underline", + Pango.Underline.NONE) + widget.get_window(Gtk.TextWindowType.TEXT).set_cursor(None) + self.underlined_url = None + for tag in tags: + if tag in self.url_tags: + # underline the tags and change mouse pointer to hand + tag.set_property("underline", Pango.Underline.SINGLE) + widget.get_window(Gtk.TextWindowType.TEXT).set_cursor( + Gdk.Cursor(Gdk.CursorType.HAND2)) + self.underlined_url = tag return False def add_url(self, text, url, newline=False): From 7d2cf9ddd98b4dd386409d4af3c24e4b10476977 Mon Sep 17 00:00:00 2001 From: Tim Lauridsen Date: Thu, 28 Apr 2016 13:16:07 +0200 Subject: [PATCH 13/18] Make info progress behave under gtk 3.20 --- src/yumex.ui | 252 ++++++++++++++++++++------------------- src/yumex/gui/widgets.py | 9 +- 2 files changed, 132 insertions(+), 129 deletions(-) diff --git a/src/yumex.ui b/src/yumex.ui index f9a6d87..6d49ec6 100644 --- a/src/yumex.ui +++ b/src/yumex.ui @@ -843,6 +843,135 @@ start Yum Extender True False vertical + + + True + False + none + True + + + True + True + False + 5 + warning + + + False + 6 + end + + + + + + False + False + 0 + + + + + False + + + True + False + True + 6 + 5 + + + True + False + start + 6 + 10 + 6 + 10 + label + + + + + + 1 + 0 + + + + + True + False + 10 + 10 + 10 + 10 + True + + + 1 + 1 + + + + + False + start + 20 + 10 + 20 + 10 + label + + + + + + + 1 + 2 + + + + + True + False + True + + + 0 + 0 + 3 + + + + + False + True + 1 + + + + + False + False + 0 + + + + + + + + + + False + True + 0 + + True @@ -905,128 +1034,7 @@ start Yum Extender False True - 2 - - - - - True - True - False - 5 - - - False - 6 - end - - - - - - - - - - - - False - False - 0 - - - - - False - - - True - False - True - 6 - 5 - - - True - False - start - 6 - 10 - label - - - - - - 1 - 0 - - - - - True - False - 10 - 10 - True - - - 1 - 1 - - - - - False - start - 16 - 20 - 10 - label - - - - - - - 1 - 2 - - - - - True - False - True - - - 0 - 0 - 3 - - - - - False - True - 1 - - - - - False - False - 0 - - - - - - - - False - True - 0 + 1 diff --git a/src/yumex/gui/widgets.py b/src/yumex/gui/widgets.py index 78a9ecc..b904c8d 100644 --- a/src/yumex/gui/widgets.py +++ b/src/yumex/gui/widgets.py @@ -46,13 +46,14 @@ class InfoProgressBar: def __init__(self, ui): self.ui = ui - self.infobar = ui.get_object("infobar") # infobar revealer + self.infobar = ui.get_object("info_revealer") # infobar revealer self.label = ui.get_object("infobar_label") self.sublabel = ui.get_object("infobar_sublabel") self.progress = ui.get_object("infobar_progress") self.spinner = ui.get_object("info_spinner") def _show_infobar(self, show=True): + self.infobar.set_reveal_child(show) if show: self.infobar.show() self.spinner.start() @@ -98,12 +99,6 @@ def info_sub(self, msg): self.show_sublabel(msg) def set_progress(self, frac, label=None): - if label: - self.progress.set_text(label) - self.progress.set_show_text(True) - else: - self.progress.set_show_text(False) - if frac >= 0.0 and frac <= 1.0: self._show_infobar() self.progress.show() From 34946c5c0343a741f03803d55a69547e29aca99b Mon Sep 17 00:00:00 2001 From: Tim Lauridsen Date: Thu, 28 Apr 2016 16:54:36 +0200 Subject: [PATCH 14/18] Add custom error dialog fixes #90 --- src/yumex.ui | 100 +++++++++++++++++++++++++++++++++++++++ src/yumex/__init__.py | 24 +++++----- src/yumex/gui/dialogs.py | 20 ++++++++ 3 files changed, 132 insertions(+), 12 deletions(-) diff --git a/src/yumex.ui b/src/yumex.ui index 6d49ec6..b74da65 100644 --- a/src/yumex.ui +++ b/src/yumex.ui @@ -675,6 +675,106 @@ start Yum Extender True False + + + False + 400 + 400 + dialog + False + + + False + vertical + 2 + + + False + end + + + + + + OK + True + True + True + + + True + True + 1 + + + + + False + False + 0 + + + + + True + False + vertical + + + True + False + Error + + + + + + + False + True + 0 + + + + + True + True + in + + + 350 + True + True + False + 5 + 5 + 5 + 5 + False + error_buffer + True + + + + + True + True + 1 + + + + + True + True + 1 + + + + + + error_ok + + True False diff --git a/src/yumex/__init__.py b/src/yumex/__init__.py index 81ab4c5..32251ad 100644 --- a/src/yumex/__init__.py +++ b/src/yumex/__init__.py @@ -132,7 +132,7 @@ def get_root_backend(self): errmsg = _( 'DNF is locked by another process.\n\n' 'Yum Extender will exit') - dialogs.show_information(self, errmsg) + self.error_dialog.show(errmsg) # close down and exit yum extender #self.status.SetWorking(False) # reset working state #self.status.SetYumexIsRunning(self.pid, False) @@ -171,7 +171,8 @@ def exception_handler(self, e): close = False if errmsg == '': errmsg = msg - dialogs.show_information(self, errmsg) + self.error_dialog.show(errmsg) + # try to exit the backends, ignore errors if close: try: @@ -216,6 +217,7 @@ def __init__(self, app): sys.exit() # transaction result dialog self.transaction_result = dialogs.TransactionResult(self) + self.error_dialog = dialogs.ErrorDialog(self) def get_ui(self, widget_name): return self.ui.get_object(widget_name) @@ -289,7 +291,7 @@ def exception_handler(self, e): close = False if errmsg == '': errmsg = msg - dialogs.show_information(self, errmsg) + self.error_dialog.show(errmsg) # try to exit the backends, ignore errors if close: try: @@ -879,9 +881,8 @@ def _process_actions(self, from_queue=True): # check for protected packages check = self._check_protected(result) if check: - dialogs.show_information( - self, _("Can't remove protected package(s)"), - '\n'.join(check)) + self.error_dialog.show( + _("Can't remove protected package(s)") + '\n'.join(check)) self._reset_on_cancel() return # transaction confirmation dialog @@ -897,14 +898,13 @@ def _process_actions(self, from_queue=True): dialogs.show_information(self, _('No pending actions in queue')) self._reset_on_cancel() except misc.TransactionBuildError as e: # Error in building transaction - dialogs.show_information( - self, _('Error(s) in building transaction'), - '\n'.join(e.msgs)) + self.error_dialog.show( + _('Error(s) in building transaction') + '\n'.join(e.msgs)) self._reset_on_cancel() except misc.TransactionSolveError as e: - dialogs.show_information( - self, _('Error(s) in search for dependencies'), - '\n'.join(e.msgs)) + self.error_dialog.show( + _('Error(s) in search for dependencies') + + '\n'.join(e.msgs)) self._reset_on_error() ############################################################################### diff --git a/src/yumex/gui/dialogs.py b/src/yumex/gui/dialogs.py index a26bb34..16f9285 100644 --- a/src/yumex/gui/dialogs.py +++ b/src/yumex/gui/dialogs.py @@ -168,6 +168,26 @@ def handle_setting(self, option, state): os.unlink(const.USER_DESKTOP_FILE) +class ErrorDialog: + + def __init__(self, base): + self.base = base + self.dialog = self.base.ui.get_object("error_dialog") + self.dialog.set_transient_for(base) + self._buffer = self.base.ui.get_object('error_buffer') + + def show(self, txt): + self._set_text(txt) + self.dialog.show_all() + rc = self.dialog.run() + self.dialog.hide() + self._buffer.set_text('') + return rc == 1 + + def _set_text(self, txt): + self._buffer.set_text(txt) + + class TransactionResult: def __init__(self, base): From b6621c01070b0f5b088c6a4067220488b67e0250 Mon Sep 17 00:00:00 2001 From: Tim Lauridsen Date: Fri, 29 Apr 2016 15:14:50 +0200 Subject: [PATCH 15/18] fix the error dialog, look & feel --- src/yumex.ui | 32 ++++++++++---------------------- 1 file changed, 10 insertions(+), 22 deletions(-) diff --git a/src/yumex.ui b/src/yumex.ui index b74da65..05afdf9 100644 --- a/src/yumex.ui +++ b/src/yumex.ui @@ -678,10 +678,13 @@ start Yum Extender False - 400 - 400 + 5 + Errors + center-on-parent + 600 + 260 + True dialog - False False @@ -702,7 +705,7 @@ start Yum Extender True - True + False True 1 @@ -710,7 +713,8 @@ start Yum Extender False - False + True + end 0 @@ -719,22 +723,6 @@ start Yum Extender True False vertical - - - True - False - Error - - - - - - - False - True - 0 - - True @@ -759,7 +747,7 @@ start Yum Extender True True - 1 + 0 From 76ed3b79c78d18b73bd0166ad66b869e8b29be04 Mon Sep 17 00:00:00 2001 From: Tim Lauridsen Date: Fri, 29 Apr 2016 16:33:37 +0200 Subject: [PATCH 16/18] Add python based ChangeLog generation without email addrs --- ChangeLog | 3172 +++++++---------------------------------------- Makefile | 7 +- tools/git2cl | 308 ----- tools/git2cl.py | 130 ++ 4 files changed, 596 insertions(+), 3021 deletions(-) delete mode 100755 tools/git2cl create mode 100644 tools/git2cl.py diff --git a/ChangeLog b/ChangeLog index d895630..476f512 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,2914 +1,668 @@ -2016-04-26 Tim Lauridsen +2016-04-28 Tim Lauridsen - * setup.py, src/yumex/const.py, yumex-dnf.spec: bumped version to - 4.3.2 + * Add custom error dialog fixes #90 + * Make info progress behave under gtk 3.20 -2016-04-26 Tim Lauridsen +2016-04-27 Christian Stadelmann - Merge pull request #99 from genodeftest/devel-paned Fix main - GtkPaned being to small + * Remove tray icons Remove tray icons and references to it in Makefile. + Makefile: Don't create empty directory any more. + * InfoBar: remove custom colors and code Rely on Gtk theme for coloring the + info bar. Use a GtkInfoBar. This will fix #87. -2016-04-26 Tim Lauridsen +2016-04-26 Tim Lauridsen - Merge pull request #100 from genodeftest/devel-transactiondialog - Fix transaction dialog not expanding properly + * bumped version to 4.3.2 -2016-04-26 Christian Stadelmann +2015-12-17 Tim Lauridsen - * src/yumex.ui: Fix transaction dialog not expanding properly + * move extra filters to headerbar -2016-04-26 Christian Stadelmann +2015-12-15 Tim Lauridsen - * src/yumex.ui: Fix main GtkPaned being to small Without this fix, - the GtkPaned could be resized in a way that one of its child widgets - partially or completely got hidden. + * Add **Refresh Metadata** to main menu (#84) + * Added keyboard shortcut Alt-X to Extra filters (#14) + * Add Extra Filters menu with archs and package version filters (#85) -2015-12-17 Tim Lauridsen +2015-12-11 Tim Lauridsen - * src/yumex/gui/widgets.py: Extra filter popover should default - positon to bottom + * add action handler + * Remove options from main menu -2015-12-17 Tim Lauridsen +2015-12-09 Tim Lauridsen - * src/yumex/gui/widgets.py: make fields sensitive if search type is - fields + * bumped version to 4.3.1 -2015-12-17 Tim Lauridsen +2015-12-05 Tim Lauridsen - * src/yumex.ui, src/yumex/__init__.py, src/yumex/gui/widgets.py: - move extra filters to headerbar + * Transfix pull, *.po update -2015-12-16 Tim Lauridsen +2015-12-03 Tim Lauridsen - * src/yumex.ui: change the icon of Extra filters button + * added keyboard shortcuts (#14) * Ctrl - Q = Quit * F1 = Open docs in + browser * Ctrl 1 - 4 (Select filter in package view) -2015-12-15 Tim Lauridsen +2015-12-02 Tim Lauridsen - * Makefile: build: use a relative build dir + * used paned for history view for more consistent look + * save search options #74 + * remove hide on close #74 + * Transfix push, yumex-dnf.pot update + * Transfix pull, *.po update + * rebuild .pot file + * use a popover menu for main menu #74 -2015-12-15 Tim Lauridsen +2015-12-01 Tim Lauridsen - * src/yumex/__init__.py, src/yumex/gui/widgets.py: Add **Refresh - Metadata** to main menu (#84) + * The apply pending actions button only sensitive when there is something in + the pending action queue + * fix: flickering when changing package info type + * change version to 4.3.0, to use un-even version for development and even + for a stable release in the future. + * ui updates * Rename **Actions** to **Pending Actions** * Remove pages from + main-menu (#74) + * fix: handling of legacy autostart .desktop files + * fix: autostart dir calc and make quit work + * rename autostart update checker .desktop file + * make minimize on quit work again -2015-12-15 Tim Lauridsen +2015-11-30 Tim Lauridsen - * .gitignore: update .gitignore to dont include build/ + * move package filter listbox to ui file -2015-12-15 Tim Lauridsen +2015-11-26 Tim Lauridsen - * README.md: update README + * Show notification instead of dialog when the user have performed an action + from the commandline + * cleanup update checker options + * Remove unused dk.yumex.StatusIcon files * Add install code for + yumex-dnf-updatechecker * make autostart start yumex-dnf-updatechecker -2015-12-15 Tim Lauridsen +2015-11-25 Tim Lauridsen - * Makefile: build rpms in source tree ($pwd/build) + * Add initial parts for new update checker + * adjust margins in pkg info view -2015-12-15 Tim Lauridsen +2015-11-24 Tim Lauridsen - * src/yumex/__init__.py, src/yumex/gui/widgets.py: Added keyboard - shortcut Alt-X to Extra filters (#14) + * cleanup debug print statements + * save main_paned position between session + * rework the Package Info widget * created a new look for package info + selection * only one package info widget (packages + groups) * move filter + selector into package page. + * minor ui tweaks (info radiobutton) + * Make it possible to disable dnf cache handling by setting refresh interval + to 0. (#76) + * Make the filter sidebar better + * Move filters into a sidebar -2015-12-15 Tim Lauridsen +2015-11-20 Christian Stadelmann - Add reworked option and extra filters (#85) + * Improve readability, remove hard-coded font sizes -2015-12-15 Tim Lauridsen +2015-11-20 Tim Lauridsen - * src/yumex.ui, src/yumex/__init__.py, src/yumex/gui/views.py, - src/yumex/gui/widgets.py: Add Extra Filters menu with archs and - package version filters (#85) + * Add separate toolbar to filters -2015-12-14 Tim Lauridsen +2015-11-17 Tim Lauridsen - * src/yumex/__init__.py: show gui before the need to setup the - backend (#88) + * Integrate all the new UI parts in the right places + * add keyboard shortcuts Alt 1-4 for selecting primary pages. Alt S for + opening/closing search on package page + * Add preferences + * add logging * enable arch filter * fix issue with backend locked when some + options is changed + * Handle page change events in main window. * load groups info * more + refactoring -2015-12-11 Tim Lauridsen +2015-11-16 Tim Lauridsen - * src/yumex.ui, src/yumex/__init__.py: add action handler + * add stack switcher to show main pages + * cleanup spinners + * make buttons insensitive when working + * make search work in the new gui reworked the search option (popover) -2015-12-11 Tim Lauridsen +2015-11-13 Tim Lauridsen - * src/yumex.ui: add button for more filters + * make setting the default filter smarter + * Added the basic parts for using a redesigned UI -2015-12-11 Tim Lauridsen +2015-10-08 Tim Lauridsen - * src/yumex.ui, src/yumex/__init__.py, src/yumex/gui/widgets.py: - Remove options from main menu + * Use text color from theme (#63) -2015-12-11 Tim Lauridsen +2015-09-30 Tim Lauridsen - * src/yumex.ui: Added new preferences dialog + * bumped version to 4.1.4 -2015-12-10 Tim Lauridsen +2015-06-09 Tim Lauridsen - * Makefile: change Makefile for new release workflow + * add show available updates, when newest only is unchecked. -2015-12-09 Tim Lauridsen +2015-06-01 Tim Lauridsen - * src/yumex.ui: minor ui adjustment + * Added API version check for statusicon (#43) + * Add dnfdaemon service not started handling in statusicon + * added check for we have the need version of dnfdaemon API (#43) -2015-12-09 Tim Lauridsen +2015-05-27 Tim Lauridsen - * src/yumex/__init__.py: make search button insensitive, don't hide - (#74) + * bumped version to 4.1.3 + * i18n: translation updates -2015-12-09 Tim Lauridsen +2015-05-22 Tim Lauridsen - * src/yumex.ui: UI adjustments (#74) * Renamed 'Pending Action' to - 'Queue' in headerbar * Added comments for translators for headerbar - page buttons * Removed space between searchbar and search options - button. + * fix: RunTransaction api change, no more max_err parameter Removed + max_dnl_err yumex.conf option, not used any more -2015-12-09 Tim Lauridsen +2015-05-20 Tim Lauridsen - * ChangeLog: updated ChangeLog + * all statusicon -> yumex signal has pid + * refactor: move gpg confirmation dialog to gui.dialogs pep8: cleanup + * fix: yumex already running, is always stopping running version refactor: + dbus-send shell commands -2015-12-09 Tim Lauridsen +2015-05-19 Tim Lauridsen - * setup.py, src/yumex/const.py, yumex-dnf.spec: bumped version to - 4.3.1 + * make the status-icon daemon store the pid of the caller So we can + difference callers + * refactor: process actions and use exception instead of return codes -2015-12-07 Tim Lauridsen +2015-05-18 Tim Lauridsen - * src/yumex/__init__.py: Alt+A : Apply pending actions (#14) + * Add basics for history undo (#7) -2015-12-07 Tim Lauridsen +2015-05-14 Tim Lauridsen - * src/yumex/__init__.py: Ctrl-A toggle selection of all packages in - package view (#14) Same action as clicking the column header. + * make clean unused requirement work pep8 cleanup don't reset everything + when changing session option + * fix: make clean_instonly work when default on at launch + * Add option to set number of installonly packages to keep, when + clean_instonly is set. (#24) + * Add support of removing old version of install only pkgs (#24) -2015-12-05 Tim Lauridsen +2015-05-12 Tim Lauridsen - * po/ar.po, po/bg.po, po/bn_IN.po, po/cmn.po, po/cs.po, po/da.po, - po/de.po, po/el.po, po/es.po, po/es_ES.po, po/fa.po, po/fr.po, - po/gu.po, po/hu.po, po/id.po, po/it.po, po/ja.po, po/ko.po, - po/ky.po, po/nl.po, po/pl.po, po/pt.po, po/pt_BR.po, po/ru.po, - po/sk.po, po/sr.po, po/sr@latin.po, po/tr_TR.po, po/uk.po, - po/zh_CN.po, po/zh_TW.po: Transfix pull, *.po update + * refactor: move pkg_id convertion fn into lib + * add package requirement page to package info (#8) -2015-12-03 Tim Lauridsen +2015-05-10 Tim Lauridsen - * src/yumex/updater.py: updater: always launch /usr/bin/yumex-dnf + * Translation update (transifex) -2015-12-03 Tim Lauridsen +2015-05-06 Tim Lauridsen - * src/yumex/__init__.py: Added more keyboard shortcuts (#14) * - Return open preferences * N toggle Newest only option - * E toggle Erase unused requirements option * C toggle - Cleanup old instonly packages option + * bumped version to 4.1.2 + * protect against removing yumex-dnf and req. (#29) -2015-12-05 Tim Lauridsen +2015-04-30 Tim Lauridsen - Merge pull request #83 from rbuj/Catalan add Catalan language + * fix: yumex notification icon launch fails if no yumex.conf (RhBug: + 1217165) + * make the saved arch filter work on first start (#28) + * fix: better handling of errors starting notification icon (RhBug: 1217241) + * remember arch menu selections between sessions (#28) -2015-12-04 Robert Antoni Buj Gelonch +2015-04-29 Tim Lauridsen - * po/ca.po: add Catalan language tx pull -l ca + * Remove skipbroken option, not used by dnf + * load custom styling from current theme (#26) Add '--minimized' cmd option + to start yumex (#27) -2015-12-03 Tim Lauridsen +2015-04-28 Tim Lauridsen - * src/yumex.ui, src/yumex/__init__.py, src/yumex/gui/widgets.py: - added keyboard shortcuts (#14) * Ctrl - Q = Quit * F1 = Open docs - in browser * Ctrl 1 - 4 (Select filter in package view) + * set styling name to toolbar & packageview (#26) -2015-12-02 Tim Lauridsen +2015-04-27 Tim Lauridsen - * src/yumex/gui/views.py: expand the latest history entry (#67) + * fix: make downgrades work (#16) -2015-12-02 Tim Lauridsen +2015-04-26 Tim Lauridsen - * src/yumex/gui/views.py: add numbers of actions in history pkg view - (#69) + * bumped version to 4.1.1 -2015-12-02 Tim Lauridsen +2015-04-26 Piotr DrÄ…g - * src/yumex.ui, src/yumex/__init__.py: used paned for history view - for more consistent look + * Improve some strings -2015-12-02 Tim Lauridsen +2015-04-26 Tim Lauridsen - * src/yumex.ui: fix: add "Remove Selected" to queue menu + * Added --updateall there will apply all pending updates * make apply from + status icon notification launch yumex with --updateall * fix: hide status + icon when no updates is found (#23) + * move all status icon setting to a separate page in pref. added + notification on update to pref. added show only icon when updates to pref + added Makefile targets to test statusicon dbus daemon (#23) -2015-12-02 Tim Lauridsen +2015-04-25 Tim Lauridsen - * src/yumex/__init__.py: fix: when refresh_interval=0, don't refresh - dnf metadata + * Add configurable notification on update -2015-12-02 Tim Lauridsen +2015-04-24 Tim Lauridsen - * src/yumex/__init__.py, src/yumex/gui/widgets.py, - src/yumex/misc.py: save search options #74 + * save selected repositories, if "save selected repositories" is enabled + (RhBug: 1214062) -2015-12-02 Tim Lauridsen +2015-04-23 Tim Lauridsen - * src/yumex.ui, src/yumex/__init__.py, src/yumex/gui/dialogs.py, - src/yumex/misc.py: remove hide on close #74 + * Added support of showing update information about fedora updates (Fixes #5 + & RhBug: 1121946) requires dnfdaemon >= 0.3.7 for supplying update + information + * Added option to auto select all available updates at startup (Fixes #22 & + RhBug: 1214052) + * refactor: move HeaderBar and ToolBar to gui/widgets + * save window size and maximize state between sessions (fixes #18 & RhBug: + 1214047) -2015-12-02 Tim Lauridsen +2015-04-22 Tim Lauridsen - * src/yumex/__init__.py: fix: Ctrl-F should open/close searchbar all - the time #74 + * Strech searchbox to use available space (fixes #19 & RhBug: 1214059) + * save search option between session (fixes #20 & RhBug: 1214057) + * set search defaults from config settings -2015-12-02 Tim Lauridsen +2015-04-14 Tim Lauridsen - * po/yumex-dnf.pot, src/yumex/gui/widgets.py: Transfix push, - yumex-dnf.pot update + * doc: update info about yumex is already running Add faq entry about + selecting all updates -2015-12-02 Tim Lauridsen +2015-04-13 Tim Lauridsen - * po/ar.po, po/bg.po, po/bn_IN.po, po/cmn.po, po/cs.po, po/da.po, - po/de.po, po/el.po, po/es.po, po/es_ES.po, po/fa.po, po/fr.po, - po/gu.po, po/hu.po, po/id.po, po/it.po, po/ja.po, po/ko.po, - po/ky.po, po/nl.po, po/pl.po, po/pt.po, po/pt_BR.po, po/ru.po, - po/sk.po, po/sr.po, po/sr@latin.po, po/tr_TR.po, po/uk.po, - po/zh_CN.po, po/zh_TW.po, src/yumex/__init__.py: Transfix pull, *.po - update + * update translations -2015-12-02 Tim Lauridsen +2015-04-12 Tim Lauridsen - * po/POTFILES.in, po/yumex-dnf.pot: rebuild .pot file + * bumped version to 4.1.0 -2015-12-02 Tim Lauridsen +2015-04-11 Tim Lauridsen - * src/yumex.ui, src/yumex/__init__.py, src/yumex/gui/widgets.py, - src/yumex/misc.py: use a popover menu for main menu #74 + * fix review issues + * update fsf address -2015-12-02 Tim Lauridsen +2015-04-09 Tim Lauridsen - * src/yumex/misc.py: better GNOME detection + * add custom gtk styling + * bumped version to 4.0.10 + * Make yumex already running better + * show yumex ui always if started again an working in the background + * make better handling of yumex is started twice -2015-12-01 Tim Lauridsen +2015-04-07 Tim Lauridsen - * src/yumex/__init__.py, src/yumex/gui/views.py: The apply pending - actions button only sensitive when there is something in the pending - action queue + * bumped version to 4.0.9 + * Make toolbar in headerbar an config option. Enabled by default in gnome, + and disabled in other DE's -2015-12-01 Tim Lauridsen +2014-10-21 Tim Lauridsen - * src/yumex/__init__.py, src/yumex/gui/widgets.py: fix: flickering - when changing package info type + * bumped version to 4.0.8 -2015-12-01 Tim Lauridsen +2014-10-11 Tim Lauridsen - * src/yumex/const.py, yumex-dnf.spec: change version to 4.3.0, to - use un-even version for development and even for a stable release in - the future. + * fix: only show fedora packages links for packages in fedora repos -2015-12-01 Tim Lauridsen +2014-10-02 Tim Lauridsen - * src/yumex.ui, src/yumex/gui/widgets.py: ui updates * Rename - **Actions** to **Pending Actions** * Remove pages from main-menu - (#74) + * Use FRENZY Software Manager icons -2015-12-01 Tim Lauridsen +2014-09-25 Tim Lauridsen - * src/yumex/__init__.py, src/yumex/const.py: fix: handling of legacy - autostart .desktop files + * ui: use standard gtk+ spinner + * fix: make main menu quit work -2015-12-01 Tim Lauridsen +2014-09-24 Tim Lauridsen - * src/yumex/__init__.py, src/yumex/const.py, - src/yumex/gui/dialogs.py: fix: autostart dir calc and make quit work + * ui: added progress for package verify after transaction is completted +2014-09-21 Tim Lauridsen -2015-12-01 Tim Lauridsen + * bumped version to 4.0.7 + * cleanup: gtk 3.12 deprecated ui - * src/yumex/gui/dialogs.py: fix typo +2014-09-05 Tim Lauridsen -2015-12-01 Tim Lauridsen + * cleanup: deprecated Gtk + * fix: better exception handling when Dbus backend dies + * fix: deprecated Gtk stuff - * src/yumex/misc.py: cleanup legacy unused code +2014-09-02 Tim -2015-12-01 Tim Lauridsen + * bumped version to 4.0.6 - * misc/Makefile, misc/yumex-dnf-autostart.desktop, - misc/yumex-dnf-updater.desktop, src/yumex/const.py, - src/yumex/gui/dialogs.py: rename autostart update checker .desktop - file +2014-06-21 Tim Lauridsen -2015-12-01 Tim Lauridsen + * Fix the language setup, so Gtk.builder get translated + * i18n: updated translations + * Set translation domain for GtkBuilder, use right translation domain for + notification domain - * src/yumex.ui, src/yumex/__init__.py: make minimize on quit work - again +2014-06-08 Tim Lauridsen -2015-11-30 Tim Lauridsen + * Adjust headerbar - * src/yumex/__init__.py: Setup session based config vars from the - default from preferences +2014-06-06 Tim Lauridsen -2015-11-30 Tim Lauridsen + * bumped version to 4.0.5 - * src/yumex.ui: Add more tooltips +2014-06-03 Tim Lauridsen -2015-11-30 Tim Lauridsen + * added fedora packages links to package info - * src/yumex.ui: add tooltips to filters +2014-05-12 Tim Lauridsen -2015-11-30 Tim Lauridsen + * cleanup: doc strings and minor refactoring + * cleanup imports - * src/yumex.ui, src/yumex/gui/widgets.py: move package filter - listbox to ui file +2014-05-09 Tim Lauridsen -2015-11-30 Tim Lauridsen + * use new dnfdaemon GetPackges, the works with attrs + * bumped version to 4.0.4 + * adjust to dnfdaemon code changes - * src/yumex.ui: Add tooltips to package info buttons +2014-05-03 Tim Lauridsen -2015-11-27 Tim Lauridsen + * bumped version to 4.0.3 - * src/yumex/misc.py: always return 0 as 00 (hex) in color code +2014-04-25 Tim Lauridsen -2015-11-27 Tim Lauridsen + * code cleanup - * src/yumex/misc.py: fix problem with color to hex convertion (#81) +2014-04-10 Tim Lauridsen + * fix: typo in appdata file + * cleanup: PEP8 issues + * fix. use absolute imports in all modules + * pull translations from transifex + * fix: split up appdata translation in more elements -2015-11-27 Tim Lauridsen +2014-04-09 Tim Lauridsen - * src/yumex/misc.py: workaround for changes in Gtk 3.19.x - https://blogs.gnome.org/mclasen/2015/11/20/a-gtk-update/ + * add appdata file + * cleanup: make the code follow PEP8 -2015-11-27 Tim Lauridsen +2014-04-02 Tim Lauridsen - * src/yumex/misc.py: Cleanup old instonly packages is enabled by - default + * refactor: split yumex.widget into yumex.gui.views, dialogs, widgets -2015-11-27 Tim Lauridsen +2014-04-01 Tim Lauridsen - * src/yumex/__init__.py: PEP8 cleanup + * bumped version to 4.0.2 + * update .pot & pull po from transifex + * add: added code for installing and removing groups + * refactor: group should be reprecented as python objects in group view, to + make it possible to unselect the group, when remove from the queue view. -2015-11-26 Tim Lauridsen +2014-03-31 Tim Lauridsen - * yumex-dnf.spec: include all bins to spec + * translation: rename yum to dnf in strings & rebuild .pot file doc: added + link to translation page at transifex + * add: added Help to main menu, with About Dialog & Online docs + * doc: added debug info to FAQ + * doc: added FAQ and updated doc -2015-11-26 Tim Lauridsen +2014-03-30 Tim Lauridsen - * yumex-dnf.spec: remove dbus services from spec + * fix: pending queue right click menu not shown + * doc: Added docs -2015-11-26 Tim Lauridsen +2014-03-29 Tim Lauridsen - * yumex-dnf.spec: bunp spec version + * bumped version to 4.0.1 -2015-11-26 Tim Lauridsen +2014-03-28 Tim Lauridsen - * src/yumex/__init__.py: Add support for running action from - commandline when yumex-dnf is already started and idle (#80) + * cleanup: remove unsued code + * add: always use the dnf root backend, to avoid the mess with 2 caches, + there can be different + * add: Use Gtk.Stack for main content and Gtk.Revealer from Gtk 3.10, to show + animations, when changing pages and let the infobar slide down. -2015-11-26 Tim Lauridsen +2014-03-27 Tim Lauridsen - * src/main.py, src/yumex/__init__.py, src/yumex/misc.py: Show - notification instead of dialog when the user have performed an - action from the commandline + * add: make prefix the default search type + * optimize: make search faster by using new dnfdeamon API to get attributes + with the search results -2015-11-26 Tim Lauridsen +2014-03-26 Tim Lauridsen - * src/yumex/__init__.py: Added support for execute action from the - commandline in a minimal UI. * added --install PACKAGE * added - --remove PACKAGE * added --updateall * added --yes + * add: add new yumex ui -2015-11-26 Tim Lauridsen +2014-03-21 Tim Lauridsen - * src/yumex/__init__.py: cleanup yumex.misc import + * fix: show information is dnf cache can't be refreshed -2015-11-26 Tim Lauridsen +2014-03-20 Tim Lauridsen - * src/yumex.ui: remove ident for update checker interval in - preferences + * add: add ui for setting the expire cache interval in perferences + * add: make time between cache expire a number of hours -2015-11-26 Tim Lauridsen +2014-03-19 Tim Lauridsen - * src/yumex/updater.py: impromvement to update-checker * Clicking - "Not Now" on notification will show a new notification for a - period of 10x check interval. * Don't show a new notification until - the number of updates changes or the user has closed the previous - one. + * add: only expire dnf cache once every day + * cleanup: fix typos + * removed unused repo build tools, we use Copr now + * remove .mo binary translation files + * Added support for translation files from transifex + * updated translation source -2015-11-26 Tim Lauridsen +2014-03-18 Tim Lauridsen - * src/yumex.ui, src/yumex/__init__.py, src/yumex/gui/dialogs.py, - src/yumex/misc.py: cleanup update checker options + * fix: show obsletes af fullname, not pkg_id -2015-11-26 Tim Lauridsen +2014-03-15 Tim Lauridsen - * Makefile, dbus/Makefile, dbus/dbus_status.py, - dbus/dk.yumex.StatusIcon.service, misc/yumex-dnf-autostart.desktop, - setup.py, src/yumex/status.py: Remove unused dk.yumex.StatusIcon - files * Add install code for yumex-dnf-updatechecker * make - autostart start yumex-dnf-updatechecker + * cleanup: remove some unused code -2015-11-26 Tim Lauridsen +2014-03-13 Tim Lauridsen - * src/yumex/updater.py: Use Gio.Application + * Updated README and Makefile cleanup -2015-11-26 Tim Lauridsen +2014-03-12 Tim Lauridsen - * src/yumex/updater.py: make it possible to stop the updater by - running update.py --exit + * group packages optimizations + * Remove skip-broken option, dont exist in dnf + * Refresh dnf metadata on startup -2015-11-25 Tim Lauridsen +2014-03-11 Tim Lauridsen - * src/update.py, src/yumex/__init__.py, src/yumex/misc.py, - src/yumex/updater.py: Add initial parts for new update checker + * yumex-nextgen -> yumex-dnf rename + * Use the dnfdaemon for packaging action -2015-11-25 Tim Lauridsen +2014-02-18 Tim Lauridsen - * src/yumex.ui: Make package info TextView ReadOnly + * Change the default window close action to exit yumex add at setting in + preferences to change the window close action to just hide the window -2015-11-25 Tim Lauridsen +2013-10-24 Tim Lauridsen - * src/yumex.ui, src/yumex/gui/widgets.py: adjust margins in pkg info - view + * Changed the way yumex is build - use setup.py - use Makefile in subdirs -2015-11-25 Tim Lauridsen +2013-10-23 Tim Lauridsen - * src/yumex/__init__.py: Make the --exit option work in both first - and second run + * - Show project url in package description (Issue #169 - clean rpms before + upload to repo -2015-11-24 Tim Lauridsen +2013-10-16 Tim Lauridsen - * src/yumex.ui: minor ui tweak + * Add package filtering (updates, installed) on search results -2015-11-24 Tim Lauridsen +2013-10-14 Tim Lauridsen - * src/yumex/__init__.py, src/yumex/gui/widgets.py: cleanup debug - print statements + * Added new mock_build target and build helper -2015-11-24 Tim Lauridsen +2013-10-13 Tim Lauridsen - * src/yumex/gui/widgets.py: only send signal if we have valid - selection + * add mock-build target to Makefile added script to build repo and upload to + fedorapeople.org -2015-11-24 Tim Lauridsen +2013-10-11 Tim Lauridsen - * src/yumex.ui, src/yumex/__init__.py, src/yumex/misc.py: save - main_paned position between session + * better handling of locked and not authorized error when getting the root + backend + * Added Right Click + * Make the arch menu entries reflect the current system -2015-11-24 Tim Lauridsen +2013-10-10 Tim Lauridsen - * src/yumex.ui: center the page switcher on the headerbar + * set archs based on current system arch + * - minor toolbar button rearrange - adjusted debug logging - Added GPG key + import support -2015-11-24 Tim Lauridsen +2013-10-09 Tim Lauridsen - * src/yumex.ui, src/yumex/__init__.py, src/yumex/gui/views.py, - src/yumex/gui/widgets.py: rework the Package Info widget * created - a new look for package info selection * only one package info widget - (packages + groups) * move filter selector into package page. + * - minor toolbar button rearrange - adjusted debug logging + * Store colors in hex, the rgb(R,G,B) notation dont work with markup like + foreground="...." -2015-11-24 Tim Lauridsen +2013-10-07 Tim Lauridsen - * src/yumex/gui/views.py: Make the info view font a little smaller - then the default Monospace size + * change the search entry so it only does auto search when searching only in + package names, when searching a wider scope, then first do the search when + return is pressed. + * Click on selection column header in group view, will switch between: - + install all packages in group (not already install) - remove all packages + already installed in group - back to initial selection Click on selection + column header in package view (updates only) will switch between: - select + all updates. - deselect all updates. - back to initial selection Added + '--exit' command line option to exit session based dbus services started by a + yumex (Status icon & YumReadonlyBackend) -2015-11-24 Tim Lauridsen +2013-10-04 Tim Lauridsen - * src/yumex.ui, src/yumex/gui/widgets.py: minor ui tweaks (info - radiobutton) + * - Added group and category content - reworked package view to use signals - + extracted archmenu into ArchMenu object - made a package info widget, so it + can be reused for group view -2015-11-24 Tim Lauridsen +2013-10-03 Tim Lauridsen - * src/yumex/misc.py: increase default window width + * Inital support for groups (not complete yet) + * Add .desktop file for installation of local rpms Updated requirments in + .spec Add COPYING to be GPL complient + * changed po/Makefile to add .ui files with [type: gettext/glade] prefix + rebuild .pot and POTFILES.in + * Show a main label when downloading extra metadata (changelog, filelists + etc.) Minor ui adjustments to info progress bar -2015-11-24 Tim Lauridsen +2013-10-02 Tim Lauridsen - * src/yumex/gui/widgets.py: Show updates on start + * Updated README and minor Makefile adjustments + * Added schduled update checker in status icon Added update check interval + and and startup delay to preferences + * Added 'Start Yum Extender' to status icon added '--icononly' option to + yumex, it will only start the status icon change autostart option in pref to + start status icon only -2015-11-24 Tim Lauridsen +2013-10-01 Tim Lauridsen - * src/yumex.ui, src/yumex/__init__.py: Make it possible to disable - dnf cache handling by setting refresh interval to 0. (#76) + * Send signals from the status icon on actions and listen and do the right + action in the client. + * Added DBus based Status Icon + * Added command line install & remove support using --install package or + --install package. Using a smaller ui (only info progress bar) -y/--yes + command line option will disable questions and info dialogs when running + actions from the command line. Added small spinner to info progress bar. -2015-11-24 Tim Lauridsen +2013-09-30 Tim Lauridsen - * src/yumex.ui, src/yumex/__init__.py, src/yumex/gui/widgets.py: - Make the filter sidebar better + * Better progress infomation when downloading metadata + * - minor ui adjustments - use the right yumex-nextgen icon + * Better info/progress bar look & feel Changed progress strings. minor code + clean up -2015-11-24 Tim Lauridsen +2013-09-29 Tim Lauridsen - * src/yumex.ui, src/yumex/__init__.py, src/yumex/gui/widgets.py: - Move filters into a sidebar + * Added arch filtering, click on the header of the arch column to select to + archs to show -2015-11-20 Tim Lauridsen +2013-09-28 Tim Lauridsen - Merge pull request #77 from genodeftest/font-sizes Font sizes + * Change bg color of progress infobar to very light gray + * minor ui cleanup added accelerator (dont work ) + * make we always set the active repos in the root backend -2015-11-20 Tim Lauridsen +2013-09-27 Tim Lauridsen - * src/yumex/__init__.py: Add auto gnome detection + * Make changes to enabled repositories work both in root and non-root backend -2015-11-20 Tim Lauridsen - - * src/yumex.ui: Add some tooltips and other UI tweaks - -2015-11-20 Christian Stadelmann - - * src/yumex/const.py, src/yumex/gui/views.py: Improve readability, - remove hard-coded font sizes - -2015-11-20 Christian Stadelmann - - * src/yumex.ui: infobar_sublabel: Fix visibility, use relative font - Without this change infobar_sublabel is visible by default. It uses - an absolute font which is not required but might interfere with - users choosing their own custom font size. - -2015-11-20 Tim Lauridsen - - * src/yumex.ui, src/yumex/__init__.py: Add separate toolbar to - filters - -2015-11-20 Tim Lauridsen - - * src/yumex.ui: cleanup margins in preferences - -2015-11-18 Tim Lauridsen - - * src/yumex/gui/widgets.py: fix possible traceback RhBug: 1253630 - -2015-11-18 Tim Lauridsen - - * dbus/dbus_status.py: don't use deprecated GObject.SIGNAL_RUN_FIRST - - -2015-11-18 Tim Lauridsen - - * yumex-dnf.spec: add libnotify requirement RhBug: 1279992 - -2015-11-18 Tim Lauridsen - - * src/yumex/status.py: don't act on statusicon dbus signals, if - there is no window - -2015-11-18 Tim Lauridsen - - * dbus/dbus_status.py: fix gi warnings - -2015-11-17 Tim Lauridsen - - * src/yumex/gui/widgets.py: Set direction on the search option - popover - -2015-11-17 Tim Lauridsen - - * src/main.py, src/new-main.py, src/yumex-new.ui, src/yumex.ui, - src/yumex/__init__.py, src/yumex/const.py, - src/yumex/gui/new_widgets.py, src/yumex/gui/widgets.py, - src/yumex/old_init.py: Integrate all the new UI parts in the right - places - -2015-11-17 Tim Lauridsen - - Add the new redesigned yumex ui to master - -2015-11-17 Tim Lauridsen - - * src/new-main.py: Added Transactions processing parts - -2015-11-17 Tim Lauridsen - - * src/new-main.py, src/yumex/gui/new_widgets.py: add keyboard - shortcuts Alt 1-4 for selecting primary pages. Alt S for - opening/closing search on package page - -2015-11-17 Tim Lauridsen - - * src/new-main.py, src/yumex/gui/new_widgets.py: Add preferences - -2015-11-17 Tim Lauridsen - - * src/new-main.py, src/yumex/gui/new_widgets.py: add logging * - enable arch filter * fix issue with backend locked when some options - is changed - -2015-11-17 Tim Lauridsen - - * src/new-main.py: handle option changes - -2015-11-17 Tim Lauridsen - - * src/new-main.py: load and populate history information - -2015-11-17 Tim Lauridsen - - * src/new-main.py, src/yumex/gui/new_widgets.py: Handle page change - events in main window. * load groups info * more refactoring - -2015-11-17 Tim Lauridsen - - * src/new-main.py: Refactor code and add better doc strings - -2015-11-17 Tim Lauridsen - - * src/yumex/gui/new_widgets.py: add docstrings/comments - -2015-11-17 Tim Lauridsen - - * src/yumex-new.ui: stack should expand - -2015-11-16 Tim Lauridsen - - * src/yumex-new.ui, src/yumex/gui/new_widgets.py: add stack switcher - to show main pages - -2015-11-16 Tim Lauridsen - - * src/new-main.py, src/yumex-new.ui, src/yumex/gui/new_widgets.py: - cleanup spinners - -2015-11-16 Tim Lauridsen - - * src/yumex-new.ui: minor adj. to spinner - -2015-11-16 Tim Lauridsen - - * src/yumex-new.ui: adjust ui margins to look better - -2015-11-16 Tim Lauridsen - - * src/new-main.py, src/yumex-new.ui, src/yumex/gui/new_widgets.py: - make buttons insensitive when working - -2015-11-16 Tim Lauridsen - - * src/new-main.py, src/yumex-new.ui, src/yumex/gui/new_widgets.py: - make search work in the new gui reworked the search option (popover) - - -2015-11-13 Tim Lauridsen - - * src/new-main.py, src/yumex/gui/new_widgets.py: make setting the - default filter smarter - -2015-11-13 Tim Lauridsen - - * src/new-main.py, src/yumex-new.ui, src/yumex/gui/new_widgets.py: - Added the basic parts for using a redesigned UI - -2015-11-04 Tim Lauridsen - - * src/yumex/gui/widgets.py: adjust toolbar margins - -2015-11-04 Tim Lauridsen - - * src/main.py: use gi.require_version('Gtk', '3.0') - -2015-11-04 Tim Lauridsen - - Merge pull request #73 from timlau/revert-72-patch-2 Revert - 99091b39c5639df2f7ea331465cb3f8e6c30cf3f - -2015-11-04 Tim Lauridsen - - * src/main.py: Revert 99091b39c5639df2f7ea331465cb3f8e6c30cf3f - -2015-11-04 Tim Lauridsen - - Merge pull request #72 from genodeftest/patch-2 Require Gtk - version 3.10 - -2015-11-03 Christian Stadelmann - - * src/main.py: Require Gtk version 3.10 This fixes some warnings - from gi. I chose Gtk 3.10 since yumex-dnf uses `GtkHeaderBar`s which - require 3.10. - -2015-10-20 Tim Lauridsen - - Merge pull request #66 from genodeftest/patch-1 Unify page - borders/margins - -2015-10-20 Christian Stadelmann - - * src/yumex.ui: Unify page borders/margins - -2015-10-09 Tim Lauridsen - - * src/yumex/gui/views.py: Wrap text in Package Info view (#62) - -2015-10-08 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/misc.py: Use text color from - theme (#63) - -2015-10-08 Tim Lauridsen - - * src/yumex/misc.py: add helper to get default color for a widget - -2015-10-08 Tim Lauridsen - - * src/yumex/misc.py: cleanup: more PEP8 fixes - -2015-10-08 Tim Lauridsen - - * src/yumex/gui/views.py: cleanup: PEP8 fixes - -2015-10-06 Tim Lauridsen - - * src/yumex/misc.py: check_dark theme is a function - -2015-10-06 Tim Lauridsen - - * src/yumex/gui/views.py: Make repoview column header click work - fixes RhBug: #1233376 - -2015-10-06 Tim Lauridsen - - * src/main.py: remove -tt from python3 shebang - -2015-10-06 Tim Lauridsen - - * src/yumex/__init__.py: Fix traceback on errors in building group - transaction (RhBug: 1262879) - -2015-10-05 Tim Lauridsen - - Merge pull request #49 from tamimym/master Change font colors - if using dark theme - -2015-10-05 Tim Lauridsen - - Merge pull request #56 from - genodeftest/genodeftest-patch-trayicon Fix a warning when - rightclick-opening a tray popup menu - -2015-10-02 Tim Lauridsen - - Merge pull request #58 from - genodeftest/genodeftest-patch-pythonargs Remove deprecated python - option `-tt` - -2015-10-02 Christian Stadelmann - - * dbus/dbus_status.py: Remove deprecated python option `-tt` The - `-t` option was removed in python3. It has no effect any more and is - ignored. It can be safely removed. See - https://bugzilla.redhat.com/show_bug.cgi?id=1268262 - -2015-10-02 Christian Stadelmann - - * dbus/dbus_status.py: Fix a warning when rightclick-opening a tray - popup menu Currently on F22 when opening a popup menu on yumex's - status icon I get this message on stderr: `TypeError: pos() takes 2 - positional arguments but 4 were given` This is caused by an API - break in Gtk3's GObject/Python bindings, see - https://github.com/lazka/pgi-docgen/issues/92 for details. This - change fixes the issue for me on F22/Gtk+ 3.16. Needs testing on - 3.18 and 3.14, I can't do that right now. If this change doesn't - work on all supported Gtk versions, another idea can be found in - https://github.com/exaile/exaile/pull/112 - -2015-10-01 Tim Lauridsen - - * src/main.py: Handle SIGINT, So Ctrl-C will not leave yumex-dnf in - limbo (#55) - -2015-09-30 Tim Lauridsen - - * ChangeLog: updated ChangeLog - -2015-09-30 Tim Lauridsen - - * src/yumex/const.py, yumex-dnf.spec: bumped version to 4.1.4 - -2015-07-28 tamimym - - * src/yumex/gui/widgets.py: Checks for dark GTK theme when setting - background color of InfoBar - -2015-07-28 tamimym - - * src/yumex/gui/views.py: Checks for dark GTK theme and set colors - in PackageInfoView and of url - -2015-07-28 tamimym - - * src/yumex/misc.py: Added check_dark_theme function and changed - default font colors if using dark GTK theme - -2015-06-09 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/const.py, - src/yumex/dnf_backend.py: add show available updates, when newest - only is unchecked. - -2015-06-01 Tim Lauridsen - - * src/yumex/__init__.py: don't reset queue on download errors (#41) - - -2015-06-01 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/const.py, src/yumex/status.py: - Added API version check for statusicon (#43) - -2015-06-01 Tim Lauridsen - - * src/yumex/__init__.py: cleanup: pep8 fixes - -2015-06-01 Tim Lauridsen - - * dbus/dbus_status.py: show the full error msg, when status icon - can't launch dnfdaemon - -2015-06-01 Tim Lauridsen - - * dbus/dbus_status.py, src/yumex/dnf_backend.py: Add dnfdaemon - service not started handling in statusicon - -2015-06-01 Tim Lauridsen - - * src/yumex/const.py, src/yumex/dnf_backend.py: added check for we - have the need version of dnfdaemon API (#43) - -2015-05-31 Tim Lauridsen - - * src/yumex/dnf_backend.py: fix: show download size in bytes, not - bits (RhBug: 1226572) - -2015-05-31 Tim Lauridsen - - * src/yumex/const.py: fix: support reinstall in rpm progress strings - (RhBug: 1226617) - -2015-05-28 Tim Lauridsen - - * src/yumex/gui/dialogs.py: fix: create autostart dir if it don't - exists (RhBug: 1225518) - -2015-05-27 Tim Lauridsen - - * ChangeLog: updated ChangeLog - -2015-05-27 Tim Lauridsen - - * ChangeLog, setup.py, src/yumex/const.py, yumex-dnf.spec: bumped - version to 4.1.3 - -2015-05-27 Tim Lauridsen - - * .tx/config, po/ar.po, po/bg.po, po/bn_IN.po, po/cmn.po, po/cs.po, - po/da.po, po/de.po, po/el.po, po/es.po, po/es_ES.po, po/fa.po, - po/fr.po, po/gu.po, po/hu.po, po/id.po, po/it.po, po/ja.po, - po/ko.po, po/ky.po, po/nl.po, po/pl.po, po/pt.po, po/pt_BR.po, - po/ru.po, po/sk.po, po/sr.po, po/sr@latin.po, po/tr_TR.po, - po/uk.po, po/yumex-dnf.pot, po/zh_CN.po, po/zh_TW.po: i18n: - translation updates - -2015-05-22 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/misc.py: fix: RunTransaction api - change, no more max_err parameter Removed max_dnl_err yumex.conf - option, not used any more - -2015-05-20 Tim Lauridsen - - * dbus/dbus_status.py, src/yumex/__init__.py, src/yumex/status.py: - all statusicon -> yumex signal has pid - -2015-05-20 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/const.py, - src/yumex/gui/dialogs.py, src/yumex/gui/widgets.py, - src/yumex/misc.py, src/yumex/status.py: refactor: move gpg - confirmation dialog to gui.dialogs pep8: cleanup - -2015-05-20 Tim Lauridsen - - * src/yumex/__init__.py: doc: added some comments - -2015-05-20 Tim Lauridsen - - * Makefile: build: add some extra Makefile targets - -2015-05-20 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/misc.py: fix: yumex already - running, is always stopping running version refactor: dbus-send - shell commands - -2015-05-19 Tim Lauridsen - - * dbus/dbus_status.py, src/yumex/__init__.py, src/yumex/status.py: - make the status-icon daemon store the pid of the caller So we can - difference callers - -2015-05-19 Tim Lauridsen - - * src/yumex.ui: cleanup: GtkButton:xalign is deprecated - -2015-05-19 Tim Lauridsen - - * src/yumex.ui: cleanup: margin_left/right -> margin_begin/end - -2015-05-19 Tim Lauridsen - - * src/yumex/__init__.py: fix: populate_transaction don't return - anything - -2015-05-19 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/misc.py: refactor: process - actions and use exception instead of return codes - -2015-05-19 Tim Lauridsen - - * src/yumex/__init__.py: fix: don't show 2 dialogs, when queue is - empty - -2015-05-19 Tim Lauridsen - - * src/yumex/__init__.py: fix: traceback when group is empty - -2015-05-19 Tim Lauridsen - - * src/yumex/__init__.py: make history undo work (#7) - -2015-05-18 Tim Lauridsen - - * src/yumex.ui, src/yumex/__init__.py, src/yumex/gui/views.py: Add - basics for history undo (#7) - -2015-05-14 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/dnf_backend.py, - src/yumex/misc.py: make clean unused requirement work pep8 cleanup - don't reset everything when changing session option - -2015-05-14 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/dnf_backend.py: fix: make - clean_instonly work when default on at launch - -2015-05-14 Tim Lauridsen - - * src/yumex.ui, src/yumex/dnf_backend.py, src/yumex/gui/dialogs.py, - src/yumex/misc.py: Add option to set number of installonly packages - to keep, when clean_instonly is set. (#24) - -2015-05-14 Tim Lauridsen - - * src/yumex.ui, src/yumex/__init__.py, src/yumex/dnf_backend.py, - src/yumex/gui/dialogs.py, src/yumex/misc.py: Add support of removing - old version of install only pkgs (#24) - -2015-05-13 Tim Lauridsen - - * src/yumex/__init__.py: fix: only show error in transaction dialog - on errors - -2015-05-13 Tim Lauridsen - - * src/yumex/dnf_backend.py: fix: misc. grammar errors (RhBug: - #1221155) - -2015-05-13 Tim Lauridsen - - * src/yumex/gui/views.py: fix: misc. grammar errors (RhBug: - #1221155) - -2015-05-13 Tim Lauridsen - - * src/yumex/__init__.py: fix: traceback in arch menu changes. - (RhBug #1220949) - -2015-05-12 Tim Lauridsen - - * src/main.py: add better exception handling (#36) - -2015-05-12 Tim Lauridsen - - * src/yumex/dnf_backend.py, src/yumex/misc.py: refactor: move pkg_id - convertion fn into lib - -2015-05-12 Tim Lauridsen - - * src/yumex/dnf_backend.py, src/yumex/gui/widgets.py, - src/yumex/misc.py: add package requirement page to package info (#8) - - -2015-05-12 Tim Lauridsen - - * src/yumex/__init__.py: separate gpg errors with other transaction - errors - -2015-05-12 Tim Lauridsen - - * src/yumex/__init__.py: show packages with problem when building - transaction - -2015-05-10 Tim Lauridsen - - * po/ar.po, po/bg.po, po/bn_IN.po, po/cmn.po, po/cs.po, po/da.po, - po/de.po, po/el.po, po/es.po, po/es_ES.po, po/fa.po, po/fr.po, - po/gu.po, po/hu.po, po/id.po, po/it.po, po/ja.po, po/ko.po, - po/ky.po, po/nl.po, po/pl.po, po/pt.po, po/pt_BR.po, po/ru.po, - po/sk.po, po/sr.po, po/sr@latin.po, po/tr_TR.po, po/uk.po, - po/yumex-dnf.pot, po/zh_CN.po, po/zh_TW.po: Translation update - (transifex) - -2015-05-06 Tim Lauridsen - - * ChangeLog: updated ChangeLog - -2015-05-06 Tim Lauridsen - - * dbus/dbus_status.py, setup.py, src/yumex/const.py, yumex-dnf.spec: - bumped version to 4.1.2 - -2015-05-06 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/misc.py: protect against removing - yumex-dnf and req. (#29) - -2015-05-06 Tim Lauridsen - - * src/yumex/__init__.py: refresh search when newest_only is - changed.(#30) - -2015-05-04 Tim Lauridsen - - * src/yumex/gui/widgets.py: Only active arch menu using left click - Right click makes strange problems (RhBug: 1217730) - -2015-04-30 Tim Lauridsen - - * dbus/dbus_status.py: dont show statusicon while working, if it is - disabed (#27) - -2015-04-30 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/misc.py: fix: yumex notification - icon launch fails if no yumex.conf (RhBug: 1217165) - -2015-04-30 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/const.py, - src/yumex/gui/widgets.py: make the saved arch filter work on first - start (#28) - -2015-04-30 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/status.py: fix: better handling - of errors starting notification icon (RhBug: 1217241) - -2015-04-30 Tim Lauridsen - - * src/yumex/const.py, src/yumex/gui/widgets.py, src/yumex/misc.py: - remember arch menu selections between sessions (#28) - -2015-04-29 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/misc.py: Remove skipbroken - option, not used by dnf - -2015-04-29 Tim Lauridsen - - * src/yumex/const.py: map ADVISORY_UNKNOWN to 'New Package' (RhBug: - 1216192) - -2015-04-29 Tim Lauridsen - - * src/yumex/__init__.py: changes locations where looking for custom - styling looking for ~/.themes/**name**/apps/yumex.css - /usr/share/themes/**name**/apps/yumex.css (#26) - -2015-04-29 Tim Lauridsen - - * dbus/dbus_status.py: statusicon should use system dnddaemon, to no - reloading all metadata in users context. - -2015-04-29 Tim Lauridsen - - * setup.py, src/gtk-style.css, src/yumex/__init__.py: load custom - styling from current theme (#26) Add '--minimized' cmd option to - start yumex (#27) - -2015-04-29 Tim Lauridsen - - * src/yumex/__init__.py: fix: show error dialog on gpg check errors - - -2015-04-28 Tim Lauridsen - - * src/yumex/gui/views.py: Make downgrade/reinstall work as expected - (#16) - -2015-04-28 Tim Lauridsen - - * src/yumex/gui/views.py, src/yumex/gui/widgets.py: set styling name - to toolbar & packageview (#26) - -2015-04-28 Tim Lauridsen - - * src/yumex/__init__.py: set styling name to main window (#26) - -2015-04-28 Tim Lauridsen - - * src/yumex.ui: ui adjustments - -2015-04-28 Tim Lauridsen - - * src/yumex.ui: change toolbar execute to GtkMenuButton - -2015-04-28 Tim Lauridsen - - * src/yumex/__init__.py: add 'apps.yumex-dnf' as application id - -2015-04-27 Tim Lauridsen - - * src/yumex/__init__.py: better debug output move ClearTransaction - -2015-04-27 Tim Lauridsen - - * src/yumex/gui/views.py: import downgrade/reinstall menu - -2015-04-27 Tim Lauridsen - - * src/yumex/gui/views.py: add package view right click menu with - reinstall & downgrade (#16) - -2015-04-27 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/gui/views.py: fix: make - downgrades work (#16) - -2015-04-27 Tim Lauridsen - - * src/yumex/__init__.py: Added support for handling of gpgkey - import. (#6, RhBug: 1215428) - -2015-04-26 Tim Lauridsen - - * po/yumex-dnf.pot: Transfix push, yumex-dnf.pot update - -2015-04-26 Tim Lauridsen - - Merge pull request #25 from piotrdrag/master Improve some - strings - -2015-04-26 Tim Lauridsen - - * ChangeLog: updated ChangeLog - -2015-04-26 Tim Lauridsen - - * src/yumex/const.py, yumex-dnf.spec: bumped version to 4.1.1 - -2015-04-26 Piotr DrÄ…g - - * dbus/dbus_status.py, misc/yumex-dnf.appdata.xml.in, - misc/yumex-dnf.desktop.in, src/yumex.ui, src/yumex/__init__.py, - src/yumex/const.py, src/yumex/dnf_backend.py, - src/yumex/gui/dialogs.py, src/yumex/gui/widgets.py: Improve some - strings - -2015-04-26 Tim Lauridsen - - * dbus/dbus_status.py: pep8: fixes - -2015-04-26 Tim Lauridsen - - * po/yumex-dnf.pot: Transfix push, yumex-dnf.pot update - -2015-04-26 Tim Lauridsen - - * dbus/dbus_status.py: Added translation wrappers - -2015-04-26 Tim Lauridsen - - * dbus/dbus_status.py: increase the update notification timeout to - 10s - -2015-04-26 Tim Lauridsen - - * dbus/dbus_status.py, src/yumex/__init__.py: Added --updateall - there will apply all pending updates * make apply from status icon - notification launch yumex with --updateall * fix: hide status icon - when no updates is found (#23) - -2015-04-26 Tim Lauridsen - - * Makefile, src/yumex.ui, src/yumex/gui/dialogs.py, - src/yumex/misc.py: move all status icon setting to a separate page - in pref. added notification on update to pref. added show only icon - when updates to pref added Makefile targets to test statusicon dbus - daemon (#23) - -2015-04-26 Tim Lauridsen - - * dbus/dbus_status.py: Add notifcation to statusicon update checker - and setting to hide icon if no updates. (#23) - -2015-04-25 Tim Lauridsen - - * dbus/Makefile, dbus/dbus_status.py, src/yumex/misc.py: Add - configurable notification on update - -2015-04-25 Tim Lauridsen - - * README.md: doc: update readme - -2015-04-24 Tim Lauridsen - - * src/yumex.ui, src/yumex/gui/dialogs.py: save selected - repositories, if "save selected repositories" is enabled (RhBug: - 1214062) - -2015-04-24 Tim Lauridsen - - * src/yumex/__init__.py: set enabled repos from config, if - repo_saved is set - -2015-04-24 Tim Lauridsen - - * src/yumex/misc.py: Add options to save enabled repositories - -2015-04-24 Tim Lauridsen - - * src/yumex.ui: added save checkbox to repo perferences Added more - and better tooltip to options in preferences - -2015-04-23 Tim Lauridsen - - * src/yumex/gui/widgets.py: enable package info file list view - supported in dnf-daemon by this commit - - https://github.com/timlau/dnf-daemon/commit/f2ee3eda585e4aab3de7bf6197359f04848a2c67 - -2015-04-23 Tim Lauridsen - - * src/yumex/gui/widgets.py: Don't show package info tabs for - changelog, filelist & requirement The dnfdaemon/dnf backend dont - support it yet - -2015-04-23 Tim Lauridsen - - * src/yumex/const.py, src/yumex/gui/widgets.py: Added support of - showing update information about fedora updates (Fixes #5 & RhBug: - 1121946) requires dnfdaemon >= 0.3.7 for supplying update - information - -2015-04-23 Tim Lauridsen - - * src/yumex/gui/views.py: fix: don't show hand cursor outside link - in package info (Fixes RhBug #1214050) - -2015-04-23 Tim Lauridsen - - * src/yumex/__init__.py: fix: arch_menu traceback (fixes RhBug: - 1214045) - -2015-04-23 Tim Lauridsen - - * src/yumex.ui, src/yumex/__init__.py, src/yumex/gui/dialogs.py, - src/yumex/misc.py: Added option to auto select all available updates - at startup (Fixes #22 & RhBug: 1214052) - -2015-04-23 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/gui/widgets.py: refactor: move - HeaderBar and ToolBar to gui/widgets - -2015-04-23 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/misc.py: save window size and - maximize state between sessions (fixes #18 & RhBug: 1214047) - -2015-04-22 Tim Lauridsen - - * src/yumex/__init__.py: fix: set right search type from config, not - just ui - -2015-04-22 Tim Lauridsen - - * src/yumex.ui, src/yumex/__init__.py: Strech searchbox to use - available space (fixes #19 & RhBug: 1214059) - -2015-04-22 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/config.py, src/yumex/misc.py: - save search option between session (fixes #20 & RhBug: 1214057) - -2015-04-22 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/misc.py: set search defaults from - config settings - -2015-04-22 Tim Lauridsen - - * src/yumex/__init__.py: add some padding below titlebar (Fixes #20 - & RhBug: 1214057) - -2015-04-16 Tim Lauridsen - - * yumex-dnf.spec: require latest dnfdaemon - -2015-04-16 Tim Lauridsen - - * src/yumex/gui/dialogs.py: make replaces look better in transaction - result dialog - -2015-04-16 Tim Lauridsen - - * src/yumex/__init__.py: Revert "dont show obsoletes as updates, - that gives strange results" This reverts commit - 11ab683ef9cd1a18c0dde1acedbe51871bbf615d. - -2015-04-16 Tim Lauridsen - - * src/yumex/const.py: Revert "support for showing obsoletes as own - category in transaction dialog" This reverts commit - 008065311b07a55ab3124a955c4c6b7306217598. - -2015-04-13 Tim Lauridsen - - * src/yumex/const.py: support for showing obsoletes as own category - in transaction dialog - -2015-04-14 Tim Lauridsen - - * docs/faq.rst, docs/img/error-running.png, docs/main.rst: doc: - update info about yumex is already running Add faq entry about - selecting all updates - -2015-04-13 Tim Lauridsen - - * .tx/config, po/ar.po, po/bg.po, po/bn_IN.po, po/cmn.po, po/cs.po, - po/da.po, po/de.po, po/el.po, po/es.po, po/es_ES.po, po/fa.po, - po/fr.po, po/gu.po, po/hu.po, po/id.po, po/it.po, po/ja.po, - po/ko.po, po/ky.po, po/nl.po, po/pl.po, po/pt.po, po/pt_BR.po, - po/ru.po, po/sk.po, po/sr.po, po/sr@latin.po, po/tr_TR.po, - po/uk.po, po/yumex-dnf.pot, po/zh_CN.po, po/zh_TW.po: update - translations - -2015-04-12 Tim Lauridsen - - * src/yumex/__init__.py: dont show obsoletes as updates, that gives - strange results - -2015-04-12 Tim Lauridsen - - * ChangeLog: updated ChangeLog - -2015-04-12 Tim Lauridsen - - * yumex-dnf.spec: bumped version to 4.1.0 - -2015-04-12 Tim Lauridsen - - * ChangeLog: updated ChangeLog - -2015-04-12 Tim Lauridsen - - * src/yumex/const.py, yumex-dnf.spec: bumped version to 4.1.0 - -2015-04-11 Tim Lauridsen - - * yumex-dnf.spec: fix more fedora review issues - -2015-04-11 Tim Lauridsen - - * src/yumex/misc.py: fix cut & paste error - -2015-04-11 Tim Lauridsen - - * README.md, yumex-dnf.spec: fix review issues - -2015-04-11 Tim Lauridsen - - * COPYING, dbus/dbus_status.py, src/main.py, src/yumex/__init__.py, - src/yumex/backend.py, src/yumex/config.py, src/yumex/const.py, - src/yumex/dnf_backend.py, src/yumex/gui/__init__.py, - src/yumex/gui/dialogs.py, src/yumex/gui/views.py, - src/yumex/gui/widgets.py, src/yumex/misc.py, src/yumex/status.py: - update fsf address - -2015-04-10 Tim Lauridsen - - * src/yumex/misc.py: check is GDMSESSION exits (Fixes #12) - -2015-04-09 Tim Lauridsen - - * src/yumex/gui/widgets.py: better requirement message - -2015-04-09 Tim Lauridsen - - * src/yumex.ui: make some tool tips better - -2015-04-09 Tim Lauridsen - - * src/gtk-style.css: fix gtk css stylling - -2015-04-09 Tim Lauridsen - - * src/yumex/gui/views.py: Use at text label, not an image in - selection column - -2015-04-09 Tim Lauridsen - - * setup.py, src/gtk-style.css, src/yumex/__init__.py, - src/yumex/gui/views.py: add custom gtk styling - -2015-04-09 Tim Lauridsen - - * ChangeLog: updated ChangeLog - -2015-04-09 Tim Lauridsen - - * src/yumex/const.py, yumex-dnf.spec: bumped version to 4.0.10 - -2015-04-09 Tim Lauridsen - - * dbus/dbus_status.py, src/yumex/__init__.py: Make yumex already - running better - -2015-04-09 Tim Lauridsen - - * src/yumex/misc.py: fix detection of gnome - -2015-04-09 Tim Lauridsen - - * dbus/dbus_status.py, src/yumex/__init__.py, src/yumex/status.py: - show yumex ui always if started again an working in the background - -2015-04-09 Tim Lauridsen - - * dbus/dbus_status.py, src/yumex/__init__.py, - src/yumex/gui/dialogs.py, src/yumex/status.py: make better handling - of yumex is started twice - -2015-04-08 Tim Lauridsen - - * src/yumex/gui/views.py: Add an icon to the selection column header - - -2015-04-07 Tim Lauridsen - - * ChangeLog: updated ChangeLog - -2015-04-07 Tim Lauridsen - - * yumex-dnf.spec: bumped version to 4.0.9 - -2015-04-07 Tim Lauridsen - - * ChangeLog: updated ChangeLog - -2015-04-07 Tim Lauridsen - - * src/yumex/const.py, yumex-dnf.spec: bumped version to 4.0.9 - -2015-04-07 Tim Lauridsen - - * src/yumex.ui, src/yumex/__init__.py, src/yumex/gui/dialogs.py, - src/yumex/misc.py: Make toolbar in headerbar an config option. - Enabled by default in gnome, and disabled in other DE's - -2014-10-21 Tim Lauridsen - - * ChangeLog: updated ChangeLog - -2014-10-21 Tim Lauridsen - - * src/yumex/const.py, yumex-dnf.spec: bumped version to 4.0.8 - -2014-10-15 Tim Lauridsen - - * yumex-dnf.spec: build: require python3-dnfdaemon - -2014-10-11 Tim Lauridsen - - * src/yumex/const.py, src/yumex/gui/widgets.py: fix: only show - fedora packages links for packages in fedora repos - -2014-10-06 Tim Lauridsen - - * Makefile: build: use dnf update for test-inst target, in dnf 6.2, - it will only do the action your ask for - -2014-10-03 Tim Lauridsen - - * src/yumex/__init__.py: add close button again - -2014-10-02 Tim Lauridsen - - * gfx/yumex-icon.png, gfx/yumex-icon.svg: Use FRENZY Software - Manager icons - -2014-09-25 Tim Lauridsen - - * src/yumex.ui: ui: minor headerbar adjustments - -2014-09-25 Tim Lauridsen - - * src/yumex.ui, src/yumex/__init__.py: ui: use standard gtk+ spinner - - -2014-09-25 Tim Lauridsen - - * src/yumex.ui, src/yumex/__init__.py: fix: make main menu quit work - - -2014-09-24 Tim Lauridsen - - * src/yumex/const.py, src/yumex/dnf_backend.py: ui: added progress - for package verify after transaction is completted - -2014-09-24 Tim Lauridsen - - * src/yumex/__init__.py: ui: add dummy quit menu handler - -2014-09-24 Tim Lauridsen - - * src/yumex/__init__.py: ui: don't show windows close in headerbar, - looks bad in non-gnome - -2014-09-23 Tim Lauridsen - - * src/yumex/__init__.py: fix: make search entry, undo icon work - -2014-09-23 Tim Lauridsen - - * src/yumex.ui: cleanup: remove deprecated Gtk - -2014-09-23 Tim Lauridsen - - * src/yumex/gui/dialogs.py: fix: only set transient_for if we have a - parent window - -2014-09-23 Tim Lauridsen - - * src/yumex/dnf_backend.py: fix: don't traceback when user cancel - PolicyKit dialog - -2014-09-23 Tim Lauridsen - - * src/yumex/__init__.py: fix: don't reset backend if user cancel the - transaction confirmation - -2014-09-23 Tim Lauridsen - - * src/yumex/gui/dialogs.py: cleanup: use transient_for instead of - deprecated parent - -2014-09-23 Tim Lauridsen - - * po/yumex-dnf.pot: i18n: updated .pot file - -2014-09-23 Tim Lauridsen - - * .tx/config: i18: updated and push .pot file to transifex - -2014-09-23 Tim Lauridsen - - * src/yumex/gui/widgets.py: ui: added tooltip to package info - buttons - -2014-09-22 Tim Lauridsen - - * src/yumex/gui/widgets.py: fix: url does not have correct target - -2014-09-21 Tim Lauridsen - - * ChangeLog: updated ChangeLog - -2014-09-21 Tim Lauridsen - - * src/yumex/const.py, yumex-dnf.spec: bumped version to 4.0.7 - -2014-09-21 Tim Lauridsen - - * src/yumex.ui, src/yumex/gui/widgets.py: cleanup: gtk 3.12 - deprecated ui - -2014-09-18 Tim Lauridsen - - * src/yumex.ui: gui adjustments - -2014-09-08 Tim Lauridsen - - * src/yumex.ui: cleanup: dont use deprecated GtkMisc pad & alignment - - -2014-09-05 Tim Lauridsen - - * src/yumex.ui, src/yumex/gui/views.py: cleanup: deprecated Gtk - -2014-09-05 Tim Lauridsen - - * src/yumex.ui: fix: load and save with glade 3.18.3 (Gtk 3.12) - -2014-09-05 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/backend.py, src/yumex/const.py, - src/yumex/dnf_backend.py: fix: better exception handling when Dbus - backend dies - -2014-09-05 Tim Lauridsen - - * src/yumex/gui/dialogs.py, src/yumex/gui/views.py: fix: deprecated - Gtk stuff - -2014-09-02 Tim - - * ChangeLog: updated ChangeLog - -2014-09-02 Tim - - * src/yumex/const.py, yumex-dnf.spec: bumped version to 4.0.6 - -2014-07-15 Tim Lauridsen - - * src/yumex/const.py: fix callback on downgrade message - -2014-06-21 Tim Lauridsen - - * src/yumex.ui, src/yumex/misc.py: Fix the language setup, so - Gtk.builder get translated - -2014-06-21 Tim Lauridsen - - * po/ar.po, po/bg.po, po/bn_IN.po, po/cmn.po, po/cs.po, po/da.po, - po/de.po, po/el.po, po/es.po, po/es_ES.po, po/fa.po, po/fr.po, - po/gu.po, po/hu.po, po/id.po, po/it.po, po/ja.po, po/ko.po, - po/ky.po, po/nl.po, po/pl.po, po/pt.po, po/pt_BR.po, po/ru.po, - po/sk.po, po/sr.po, po/sr@latin.po, po/tr_TR.po, po/uk.po, - po/yumex-dnf.pot, po/zh_CN.po, po/zh_TW.po: i18n: updated - translations - -2014-06-21 Tim Lauridsen - - * dbus/dbus_status.py, src/yumex/__init__.py: Set translation domain - for GtkBuilder, use right translation domain for notification domain - - -2014-06-09 Tim Lauridsen - - * src/yumex/misc.py: i18n: use the yumex-dnf translation domain - -2014-06-08 Tim Lauridsen - - * src/yumex.ui, src/yumex/__init__.py: Adjust headerbar - -2014-06-06 Tim Lauridsen - - * ChangeLog: updated ChangeLog - -2014-06-06 Tim Lauridsen - - * setup.py, src/yumex/const.py, yumex-dnf.spec: bumped version to - 4.0.5 - -2014-06-03 Tim Lauridsen - - * src/yumex/gui/widgets.py: encode package names with '-', when used - in url - -2014-06-03 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/const.py, - src/yumex/gui/views.py, src/yumex/gui/widgets.py: added fedora - packages links to package info - -2014-06-02 Tim Lauridsen - - * src/yumex/__init__.py: reset main menu selection on reload after - processed transaction - -2014-06-02 Tim Lauridsen - - * src/yumex/gui/views.py: reset group selection state when populated - - -2014-05-12 Tim Lauridsen - - * src/yumex/__init__.py: cleanup: docstring, single/double quotes, - remove unused code - -2014-05-12 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/dnf_backend.py, - src/yumex/gui/views.py: cleanup: doc strings and minor refactoring - -2014-05-12 Tim Lauridsen - - * src/yumex/gui/widgets.py: cleanup : imports - -2014-05-12 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/backend.py, src/yumex/config.py, - src/yumex/const.py, src/yumex/gui/dialogs.py, src/yumex/misc.py, - src/yumex/status.py: cleanup imports - -2014-05-12 Tim Lauridsen - - * src/yumex/dnf_backend.py: cleanup code (PEP8) and no wildcard - imports - -2014-05-09 Tim Lauridsen - - * src/yumex/dnf_backend.py, src/yumex/misc.py: use new dnfdaemon - GetPackges, the works with attrs - -2014-05-09 Tim Lauridsen - - * dbus/dbus_status.py: cleanup: fixed pep8 issues - -2014-05-09 Tim Lauridsen - - * ChangeLog: updated ChangeLog - -2014-05-09 Tim Lauridsen - - * dbus/dbus_status.py, src/yumex/const.py, yumex-dnf.spec: bumped - version to 4.0.4 - -2014-05-09 Tim Lauridsen - - * dbus/dbus_status.py, src/yumex/dnf_backend.py, - src/yumex/gui/widgets.py, src/yumex/misc.py: adjust to dnfdaemon - code changes - -2014-05-03 Tim Lauridsen - - * ChangeLog: updated ChangeLog - -2014-05-03 Tim Lauridsen - - * docs/conf.py, src/yumex/const.py, yumex-dnf.spec: bumped version - to 4.0.3 - -2014-04-25 Tim Lauridsen - - * src/yumex/config.py, src/yumex/misc.py: code cleanup - -2014-04-10 Tim Lauridsen - - * setup.py: cleanup: removed unused exports - -2014-04-10 Tim Lauridsen - - * .tx/config, misc/yumex-dnf.appdata.xml.in, po/yumex-dnf.pot: fix: - typo in appdata file - -2014-04-10 Tim Lauridsen - - * po/yumex-dnf.pot: i18n: update .pot file - -2014-04-10 Tim Lauridsen - - * src/yumex/backend.py, src/yumex/const.py, - src/yumex/dnf_backend.py, src/yumex/gui/dialogs.py, - src/yumex/gui/views.py, src/yumex/gui/widgets.py: cleanup: PEP8 - issues - -2014-04-10 Tim Lauridsen - - * src/main.py, src/yumex/__init__.py, src/yumex/backend.py, - src/yumex/config.py, src/yumex/const.py, src/yumex/dnf_backend.py, - src/yumex/misc.py: fix. use absolute imports in all modules - -2014-04-10 Tim Lauridsen - - * src/yumex/__init__.py: fix absolute imports - -2014-04-10 Tim Lauridsen - - * setup.py: build: install yumex.gui sub module - -2014-04-10 Tim Lauridsen - - * po/ar.po, po/bg.po, po/bn_IN.po, po/cmn.po, po/cs.po, po/da.po, - po/de.po, po/el.po, po/es.po, po/es_ES.po, po/fa.po, po/fr.po, - po/gu.po, po/hu.po, po/id.po, po/it.po, po/ja.po, po/ko.po, - po/ky.po, po/nl.po, po/pl.po, po/pt.po, po/pt_BR.po, po/ru.po, - po/sk.po, po/sr.po, po/sr@latin.po, po/tr_TR.po, po/uk.po, - po/zh_CN.po, po/zh_TW.po: pull translations from transifex - -2014-04-10 Tim Lauridsen - - * misc/yumex-dnf.appdata.xml.in, po/yumex-dnf.pot: fix: split up - appdata translation in more elements - -2014-04-09 Tim Lauridsen - - * misc/Makefile, misc/yumex-dnf.appdata.xml.in, po/Makefile, - po/POTFILES.in, po/yumex-dnf.pot, yumex-dnf.spec: add appdata file - -2014-04-09 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/backend.py, src/yumex/config.py, - src/yumex/const.py, src/yumex/dnf_backend.py, - src/yumex/gui/__init__.py, src/yumex/gui/dialogs.py, - src/yumex/gui/views.py, src/yumex/gui/widgets.py, - src/yumex/misc.py, src/yumex/status.py: cleanup: make the code - follow PEP8 - -2014-04-02 Tim Lauridsen - - * src/main.py, src/yumex/__init__.py, src/yumex/gui/__init__.py, - src/yumex/gui/dialogs.py, src/yumex/gui/views.py, - src/yumex/gui/widgets.py, src/yumex/misc.py, src/yumex/widgets.py: - refactor: split yumex.widget into yumex.gui.views, dialogs, widgets - - -2014-04-01 Tim Lauridsen - - * .tx/config: fix: only pull yumex-dnf translations from transiflex - - -2014-04-01 Tim Lauridsen - - * ChangeLog: updated ChangeLog - -2014-04-01 Tim Lauridsen - - * docs/conf.py, setup.py, src/yumex/const.py, yumex-dnf.spec: bumped - version to 4.0.2 - -2014-04-01 Tim Lauridsen - - * po/ar.po, po/bg.po, po/bn_IN.po, po/cmn.po, po/cs.po, po/da.po, - po/de.po, po/el.po, po/es.po, po/es_ES.po, po/fa.po, po/fr.po, - po/gu.po, po/hu.po, po/id.po, po/it.po, po/ja.po, po/ko.po, - po/ky.po, po/nl.po, po/pl.po, po/pt.po, po/pt_BR.po, po/ru.po, - po/sk.po, po/sr.po, po/sr@latin.po, po/tr_TR.po, po/uk.po, - po/yumex-dnf.pot, po/zh_CN.po, po/zh_TW.po: update .pot & pull po - from transifex - -2014-04-01 Tim Lauridsen - - * src/yumex/widgets.py: optimize: setting fixed heigt in TreeView - makes adding package 10x faster :) - -2014-04-01 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/widgets.py: add: added code for - installing and removing groups - -2014-04-01 Tim Lauridsen - - * src/yumex/widgets.py: add: group view: show group install state as - stared/non-started icon - -2014-04-01 Tim Lauridsen - - * src/yumex/dnf_backend.py, src/yumex/widgets.py: refactor: group - should be reprecented as python objects in group view, to make it - possible to unselect the group, when remove from the queue view. - -2014-03-31 Tim Lauridsen - - * src/yumex/widgets.py: add: groups are objects, add groups to - queue, not packages - -2014-03-31 Tim Lauridsen - - * docs/main.rst, po/POTFILES.in, po/yumex-dnf.pot, - src/yumex/__init__.py: translation: rename yum to dnf in strings & - rebuild .pot file doc: added link to translation page at transifex - -2014-03-31 Tim Lauridsen - - * src/yumex.ui, src/yumex/__init__.py, src/yumex/const.py, - src/yumex/widgets.py: add: added Help to main menu, with About - Dialog & Online docs - -2014-03-31 Tim Lauridsen - - * docs/faq.rst, docs/img/error-running.png: doc: added debug info to - FAQ - -2014-03-31 Tim Lauridsen - - * docs/index.rst: doc: remove indexes etc, this is not python api - docs. - -2014-03-31 Tim Lauridsen - - * docs/faq.rst, docs/index.rst, docs/main.rst: doc: added FAQ and - updated doc - -2014-03-30 Tim Lauridsen - - * src/yumex.ui, src/yumex/dnf_backend.py: fix: pending queue right - click menu not shown - -2014-03-30 Tim Lauridsen - - * .gitignore, docs/Makefile, docs/conf.py, docs/img/arch-menu.png, - docs/img/button-apply.png, docs/img/button-filters.png, - docs/img/button-main-menu.png, docs/img/button-search-options.png, - docs/img/button-search-options.svg, docs/img/filter-menu.png, - docs/img/filters.png, docs/img/groups.png, docs/img/history.png, - docs/img/main-menu.png, docs/img/options.png, - docs/img/package-info.png, docs/img/queue.png, - docs/img/search-bar.png, docs/img/search-options.png, - docs/img/search.png, docs/img/top-bar.png, - docs/img/updates-selection.png, docs/img/updates.png, - docs/index.rst, docs/main.rst: doc: Added docs - -2014-03-29 Tim Lauridsen - - * ChangeLog: updated ChangeLog - -2014-03-29 Tim Lauridsen - - * Makefile, dbus/dbus_status.py, src/yumex/const.py, yumex-dnf.spec: - bumped version to 4.0.1 - -2014-03-28 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/widgets.py: cleanup: remove - unsued code - -2014-03-28 Tim Lauridsen - - * src/yumex/misc.py: cleanup: removed unused conf option - -2014-03-28 Tim Lauridsen - - * src/yumex/__init__.py: fix: filtering of seach result - -2014-03-28 Tim Lauridsen - - * src/yumex/__init__.py: fix: clear search entry on reset & set - forcus on search entry when packages is loaded - -2014-03-28 Tim Lauridsen - - * src/yumex/dnf_backend.py: refactor: move attr to var - -2014-03-28 Tim Lauridsen - - * src/yumex/dnf_backend.py: fix; use DnfSystem.GetPackagesByName, - not DnfSystem.GetPackagesByNameWithAttr - -2014-03-28 Tim Lauridsen - - * src/yumex/dnf_backend.py: fix; use DnfSystem.Search, not - DnfSystem.SearchWithAttr - -2014-03-28 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/dnf_backend.py, - src/yumex/yum_backend.py: add: always use the dnf root backend, to - avoid the mess with 2 caches, there can be different - -2014-03-28 Tim Lauridsen - - * src/yumex.ui, src/yumex/__init__.py, src/yumex/const.py, - src/yumex/widgets.py: add: Use Gtk.Stack for main content and - Gtk.Revealer from Gtk 3.10, to show animations, when changing pages - and let the infobar slide down. - -2014-03-27 Tim Lauridsen - - * src/yumex.ui, src/yumex/__init__.py: add: make prefix the default - search type - -2014-03-27 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/yum_backend.py: optimize: make - search faster by using new dnfdeamon API to get attributes with the - search results - -2014-03-27 Tim Lauridsen - - * yumex-dnf.spec: build: we need python3-gobject >= 3.10, as we new - stuff from gtk-3.10 - -2014-03-26 Tim Lauridsen - - * .gitignore, src/yumex.ui, src/yumex/__init__.py, - src/yumex/const.py, src/yumex/widgets.py, src/yumex/yum_backend.py: - add: add new yumex ui - -2014-03-21 Tim Lauridsen - - * src/yumex/__init__.py: cleanup: change error message on download - errors to be more generic - -2014-03-21 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/misc.py: fix: show information is - dnf cache can't be refreshed - -2014-03-20 Tim Lauridsen - - * src/yumex/__init__.py: add: show download errors, if download - bails out - -2014-03-20 Tim Lauridsen - - * src/yumex.ui, src/yumex/widgets.py: add: add ui for setting the - expire cache interval in perferences - -2014-03-20 Tim Lauridsen - - * src/yumex/__init__.py: add: show if there is to many errors in - downloads - -2014-03-20 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/misc.py: add: make time between - cache expire a number of hours - -2014-03-20 Tim Lauridsen - - * src/yumex/__init__.py: refactor: cleanup the cache expire check - -2014-03-19 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/misc.py: add: only expire dnf - cache once every day - -2014-03-19 Tim Lauridsen - - * po/da.po, po/yumex-dnf.pot, src/yumex.ui, src/yumex/widgets.py: - cleanup: fix typos - -2014-03-19 Tim Lauridsen - - * tools/repo-build.py, tools/syncrepo.sh: removed unused repo build - tools, we use Copr now - -2014-03-19 Tim Lauridsen - - * .gitignore, po/da.mo: remove .mo binary translation files - -2014-03-19 Tim Lauridsen - - * .tx/config, Makefile: Added support for translation files from - transifex - -2014-03-19 Tim Lauridsen - - * po/POTFILES.in, po/da.po, po/yumex-dnf.pot: updated translation - source - -2014-03-18 Tim Lauridsen - - * src/yumex/widgets.py, src/yumex/yum_backend.py: fix: show obsletes - af fullname, not pkg_id - -2014-03-17 Tim Lauridsen - - * src/yumex/yum_backend.py: add: show number of files download in - progress - -2014-03-17 Tim Lauridsen - - * src/yumex/__init__.py: fix: make sure the gui is setup, before - setting up the dnf backend, so ww can show the progress - -2014-03-16 Tim Lauridsen - - * src/yumex/yum_backend.py: add: rpm progress logging in debug mode - - -2014-03-15 Tim Lauridsen - - * src/yumex/yum_backend.py: add: show package download in Mb,Kb ... - - -2014-03-15 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/misc.py, src/yumex/widgets.py, - src/yumex/yum_backend.py: cleanup: remove some unused code - -2014-03-14 Tim Lauridsen - - * yumex-dnf.spec: cleanup: remove used python2 requirements - -2014-03-14 Tim Lauridsen - - * dbus/dbus_status.py: refactor: convert yumex statusicon Dbus - service to python3 - -2014-03-14 Tim Lauridsen - - * src/yumex/const.py: cleanup: remove constants not used by - dnf-daemon - -2014-03-14 Tim Lauridsen - - * src/yumex/const.py: fix: support Downgrades in transaction result - dialog - -2014-03-14 Tim Lauridsen - - * src/yumex/__init__.py: fix: better handling af ui after - transaction is completed or aborted - -2014-03-14 Tim Lauridsen - - * src/yumex/const.py: fix: dont fail if there is obsoletes in search - result - -2014-03-14 Tim Lauridsen - - * src/yumex/__init__.py: fix: handling af depsolve errors - -2014-03-13 Tim Lauridsen - - * src/yumex/__init__.py: fix: close yumex nicely on lock error - -2014-03-13 Tim Lauridsen - - * src/yumex/__init__.py: fix: yumex-dnf --exit shoud close the - DnfSystem DBus service also - -2014-03-13 Tim Lauridsen - - * src/yumex/__init__.py: fix: cleanup cmdline install code to work - with dnf-daemon - -2014-03-13 Tim Lauridsen - - * src/yumex/__init__.py: fix: dont refresh metadata, when running - install from cmdline - -2014-03-13 Tim Lauridsen - - * Makefile: fix: update test-cleanup Makefile tag to use the new git - branch (master) - -2014-03-13 Tim Lauridsen - - * src/yumex/__init__.py: fix: AttributeError: 'YumexInstallWindow' - object has no attribute 'set_working' - -2014-03-13 Tim Lauridsen - - * Makefile, README.md: Updated README and Makefile cleanup - -2014-03-12 Tim Lauridsen - - * src/yumex/yum_backend.py: more debug info to logging cleanup some - unused code - -2014-03-12 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/yum_backend.py: group packages - optimizations - -2014-03-12 Tim Lauridsen - - * Makefile: use dnf for test-inst target in Makefile - -2014-03-12 Tim Lauridsen - - * .gitignore, src/yumex.ui, src/yumex/__init__.py, - src/yumex/const.py, src/yumex/widgets.py: Remove skip-broken option, - dont exist in dnf - -2014-03-12 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/yum_backend.py: Refresh dnf - metadata on startup - -2014-03-12 Tim Lauridsen - - * src/yumex/yum_backend.py: Added file download progress - -2014-03-11 Tim Lauridsen - - * Makefile, dbus/Makefile, dbus/dbus_status.py, - dbus/dk.yumex.StatusIcon.service, gfx/Makefile, misc/Makefile, - misc/yumex-dnf-autostart.desktop, misc/yumex-dnf-local.desktop.in, - misc/yumex-dnf.desktop.in, misc/yumex-nextgen-autostart.desktop, - misc/yumex-nextgen-local.desktop.in, misc/yumex-nextgen.desktop.in, - po/Makefile, po/POTFILES.in, po/da.mo, po/da.po, po/yumex-dnf.pot, - po/yumex-nextgen.pot, setup.py, src/yumex/__init__.py, - src/yumex/const.py, src/yumex/misc.py, src/yumex/status.py, - src/yumex/widgets.py, yumex-dnf.spec, yumex-nextgen.spec: - yumex-nextgen -> yumex-dnf rename - -2014-03-11 Tim Lauridsen - - * .gitignore, src/yumex/__init__.py, src/yumex/yum_backend.py: Use - the dnfdaemon for packaging action - -2014-02-18 Tim Lauridsen - - * src/yumex.ui: Add some tooltips - -2014-02-18 Tim Lauridsen - - * src/yumex.ui, src/yumex/__init__.py, src/yumex/misc.py, - src/yumex/widgets.py: Change the default window close action to exit - yumex add at setting in preferences to change the window close - action to just hide the window - -2013-11-15 Tim Lauridsen - - * Makefile: added python2-devel to get-builddeps - -2013-11-15 Tim Lauridsen - - * src/yumex/__init__.py: fix search is not working after a - transaction is performed - -2013-10-27 Tim Lauridsen - - * src/yumex/const.py: added 'i386' to arch filter, many 3 party pkgs - is i386 - -2013-10-24 Tim Lauridsen - - * Makefile, dbus/Makefile, dbus/dbus_status.py, gfx/Makefile, - misc/Makefile, po/Makefile, po/POTFILES.in, po/yumex-nextgen.pot, - setup.py, src/Makefile, src/dbus_status.py, src/yumex/Makefile, - yumex-nextgen.spec: Changed the way yumex is build - use setup.py - - use Makefile in subdirs - -2013-10-23 Tim Lauridsen - - * src/yumex/widgets.py, tools/repo-build.py: - Show project url in package description (Issue #169 - clean rpms - before upload to repo - -2013-10-23 Tim Lauridsen - - Merge pull request #17 from genodeftest/patch-1 remove typos: - "Used Requirment" -> "Unused Requirement" - -2013-10-22 Christian Stadelmann - - * src/yumex.ui: remove typos: "Used Requirment" -> "Unused - Requirement" - -2013-10-16 Tim Lauridsen - - * src/yumex/__init__.py: added docstrings - -2013-10-16 Tim Lauridsen - - * src/yumex/__init__.py: make sure view get updated, when we clear - the search entry and the previous pkg fliter is the same as the - current search pkg filter. - -2013-10-16 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/widgets.py: Add package filtering - (updates, installed) on search results - -2013-10-15 tim - - * src/yumex/widgets.py: make select column wider so check mark will - fit on adwaita gtk3 theme - -2013-10-15 Tim Lauridsen - - * tools/syncrepo.sh: fixed syncrepo delete old .rpms before upload - -2013-10-14 Tim Lauridsen - - * Makefile, tools/makerepo.sh, tools/repo-build.py, - tools/update-repo.sh: Added new mock_build target and build helper - -2013-10-13 Tim Lauridsen - - * Makefile, tools/makerepo.sh, tools/syncrepo.sh, - tools/update-repo.sh: add mock-build target to Makefile added script - to build repo and upload to fedorapeople.org - -2013-10-12 Tim Lauridsen - - * Makefile: make test-release should not remove the whole ~/rpmbuild - tree - -2013-10-12 Tim Lauridsen - - * src/yumex/__init__.py: tell user if queue is empty - -2013-10-11 Tim Lauridsen - - * src/yumex/__init__.py: - Make search entry insensitive on non package pages - minor - refactoring - -2013-10-11 Tim Lauridsen - - * src/yumex/__init__.py: reset group package view after transaction - is ended - -2013-10-11 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/yum_backend.py: better handling - of locked and not authorized error when getting the root backend - -2013-10-11 Tim Lauridsen - - * src/yumex/__init__.py: switch to group view, when processing - actions - -2013-10-11 Tim Lauridsen - - * src/yumex/const.py: Add support for armfp in arch menu - -2013-10-11 Tim Lauridsen - - * src/yumex/__init__.py: Also show obsoletes in update view - -2013-10-11 Tim Lauridsen - - * src/yumex.ui, src/yumex/__init__.py, src/yumex/widgets.py: Added - Right Click - -2013-10-11 Tim Lauridsen - - * src/yumex.ui, src/yumex/const.py, src/yumex/widgets.py: Make the - arch menu entries reflect the current system - -2013-10-11 Tim Lauridsen - - * src/yumex/const.py: don't blow up if we dont have an arch list for - this system, just use a default - -2013-10-11 Tim Lauridsen - - * src/yumex/const.py: rpm report arch to i386 on a 32 bit system - -2013-10-10 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/const.py: set archs based on - current system arch - -2013-10-10 Tim Lauridsen - - Merge branch 'future' of github.com:timlau/yumex into future - -2013-10-10 Tim Lauridsen - - * src/yumex.ui, src/yumex/__init__.py, src/yumex/backend.py, - src/yumex/widgets.py, src/yumex/yum_backend.py: - minor toolbar button rearrange - adjusted debug logging - Added - GPG key import support - -2013-10-09 Tim Lauridsen - - * src/yumex.ui, src/yumex/backend.py, src/yumex/widgets.py: - minor toolbar button rearrange - adjusted debug logging - -2013-10-09 Tim Lauridsen - - * src/yumex/misc.py, src/yumex/widgets.py: Store colors in hex, the - rgb(R,G,B) notation dont work with markup like foreground="...." - -2013-10-07 Tim Lauridsen - - * src/yumex/widgets.py: When group is remove from queue, then the - group packages is always unselected - -2013-10-07 Tim Lauridsen - - * README.md: remove downgrade instructions from readme, dont make - sense as we install in parallel with stable yumex - -2013-10-07 Tim Lauridsen - - * src/yumex/__init__.py: make sure we dont search for "" - -2013-10-07 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/widgets.py: change the search - entry so it only does auto search when searching only in package - names, when searching a wider scope, then first do the search when - return is pressed. - -2013-10-07 Tim Lauridsen - - * src/dbus_status.py: Start yumex when user click status icon and - there is available updates - -2013-10-07 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/widgets.py: Click on selection - column header in group view, will switch between: - install all - packages in group (not already install) - remove all packages - already installed in group - back to initial selection Click on - selection column header in package view (updates only) will switch - between: - select all updates. - deselect all updates. - back to - initial selection Added '--exit' command line option to exit - session based dbus services started by a yumex (Status icon & - YumReadonlyBackend) - -2013-10-07 Tim Lauridsen - - * src/yumex/widgets.py: added some extra logging - -2013-10-04 Tim Lauridsen - - * src/Makefile, src/yumex.ui, src/yumex/__init__.py, - src/yumex/widgets.py, src/yumex/yum_backend.py: - Added group and category content - reworked package view to use - signals - extracted archmenu into ArchMenu object - made a package - info widget, so it can be reused for group view - -2013-10-03 Tim Lauridsen - - * src/yumex.ui, src/yumex/__init__.py, src/yumex/const.py, - src/yumex/widgets.py, src/yumex/yum_backend.py: Inital support for - groups (not complete yet) - -2013-10-03 Tim Lauridsen - - * src/yumex/__init__.py: show package to install/remove using - command line handle local rpms special reset status icon working & - yumex is running on exception - -2013-10-03 Tim Lauridsen - - * COPYING, Makefile, misc/yumex-nextgen-local.desktop.in, - yumex-nextgen.spec: Add .desktop file for installation of local rpms - Updated requirments in .spec Add COPYING to be GPL complient - -2013-10-03 Tim Lauridsen - - * po/Makefile, po/POTFILES.in, po/yumex-nextgen.pot: changed - po/Makefile to add .ui files with [type: gettext/glade] prefix - rebuild .pot and POTFILES.in - -2013-10-03 Tim Lauridsen - - * src/yumex/__init__.py: Set working in status icon when running - --install / --remove actions from the command line - -2013-10-03 Tim Lauridsen - - * src/yumex.ui, src/yumex/widgets.py: Show a main label when - downloading extra metadata (changelog, filelists etc.) Minor ui - adjustments to info progress bar - -2013-10-03 Tim Lauridsen - - * Makefile: more PKGNAME -> APPNAME cleanup in Makefile - -2013-10-03 Tim Lauridsen - - * Makefile: fix wrong name in Makefile test-inst & test-reinst - -2013-10-02 Tim Lauridsen - - * Makefile, README.md: Updated README and minor Makefile adjustments - - -2013-10-02 Tim Lauridsen - - * src/yumex/__init__.py: If autostart and auto update checkis not - set then quitting, then exit the status icon else leave it running - -2013-10-02 Tim Lauridsen - - * src/dbus_status.py, src/yumex.ui, src/yumex/misc.py, - src/yumex/widgets.py: Added schduled update checker in status icon - Added update check interval and and startup delay to preferences - -2013-10-02 Tim Lauridsen - - * misc/yumex-nextgen-autostart.desktop, src/dbus_status.py, - src/yumex.ui, src/yumex/__init__.py: Added 'Start Yum Extender' to - status icon added '--icononly' option to yumex, it will only start - the status icon change autostart option in pref to start status icon - only - -2013-10-01 Tim Lauridsen - - * Makefile: Install small spinner icon - -2013-10-01 Tim Lauridsen - - * src/dbus_status.py, src/yumex/__init__.py, src/yumex/status.py: - Send signals from the status icon on actions and listen and do the - right action in the client. - -2013-10-01 Tim Lauridsen - - * Makefile, dbus/dk.yumex.StatusIcon.service, src/Makefile, - src/dbus_status.py, yumex-nextgen.spec: Added DBus based Status Icon - - -2013-10-01 Tim Lauridsen - - * gfx/spinner-small.gif, src/yumex.ui, src/yumex/__init__.py, - src/yumex/widgets.py, src/yumex/yum_backend.py: Added command line - install & remove support using --install package or --install - package. Using a smaller ui (only info progress bar) -y/--yes - command line option will disable questions and info dialogs when - running actions from the command line. Added small spinner to info - progress bar. - -2013-09-30 Tim Lauridsen - - * src/yumex/__init__.py: center window - -2013-09-30 Tim Lauridsen - - * src/yumex/widgets.py: Always show main label, when progress bar is - shown - -2013-09-30 Tim Lauridsen - - * src/yumex/yum_backend.py: Same progress output in non-root backend - as in root backend, when downloading metadata - -2013-09-30 Tim Lauridsen - - * src/yumex.ui, src/yumex/__init__.py, src/yumex/const.py, - src/yumex/yum_backend.py: Better progress infomation when - downloading metadata - -2013-09-30 Tim Lauridsen - - * .gitignore, misc/yumex-nextgen.desktop.in, src/yumex.ui, - src/yumex/__init__.py, src/yumex/widgets.py: - minor ui adjustments - use the right yumex-nextgen icon - -2013-09-30 Tim Lauridsen - - * src/yumex.ui, src/yumex/__init__.py, src/yumex/backend.py, - src/yumex/widgets.py, src/yumex/yum_backend.py: Better info/progress - bar look & feel Changed progress strings. minor code clean up - -2013-09-29 Tim Lauridsen - - * src/Makefile, src/yumex.ui, src/yumex/__init__.py, - src/yumex/backend.py, src/yumex/widgets.py, - src/yumex/yum_backend.py: Added arch filtering, click on the header - of the arch column to select to archs to show - -2013-09-28 Tim Lauridsen - - * src/yumex.ui, src/yumex/widgets.py: Change bg color of progress - infobar to very light gray - -2013-09-28 Tim Lauridsen - - * src/yumex.ui, src/yumex/__init__.py: minor ui cleanup added - accelerator (dont work ) - -2013-09-28 Tim Lauridsen - - * src/yumex/widgets.py: - Make click on repo view selection column work - add tool tip to - repoview selection column - -2013-09-28 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/yum_backend.py: make we always - set the active repos in the root backend - -2013-09-27 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/misc.py, src/yumex/widgets.py, - src/yumex/yum_backend.py: Make changes to enabled repositories work - both in root and non-root backend - -2013-09-27 Tim Lauridsen - - * src/yumex/__init__.py: Make buttons insensitive when running - transaction - -2013-09-26 Tim Lauridsen - - * src/yumex.ui, src/yumex/widgets.py: added repositories to - preferences - -2013-09-26 Tim Lauridsen - - * src/yumex/widgets.py, src/yumex/yum_backend.py: added repositories - to preferences - -2013-09-26 Tim Lauridsen - - * Makefile: Added test-inst & test-reinst target to Makefile - -2013-09-26 Tim Lauridsen - - * src/yumex.ui, src/yumex/misc.py, src/yumex/widgets.py, - src/yumex/yum_backend.py: - change colors of differnt package types in preferences - make - package view use the config colors - -2013-09-26 Tim Lauridsen - - * src/yumex.ui: Adjusted Settings page in preference dialog - -2013-09-26 Tim Lauridsen - - * Makefile, misc/yumex-nextgen-autostart.desktop, src/yumex.ui, - src/yumex/__init__.py, src/yumex/const.py, src/yumex/misc.py, - src/yumex/widgets.py: - Added autostart - create a blank yumex.conf if it dont exists - - install spinner & tray icons - added default values for options in - perferences - -2013-09-26 Tim Lauridsen - - * src/yumex.ui, src/yumex/__init__.py, src/yumex/config.py, - src/yumex/misc.py, src/yumex/widgets.py: - Add config classes from yum, migrated to python3 - Added inital - preference dialog - -2013-09-24 Tim Lauridsen - - Merge branch 'future' of github.com:timlau/yumex into future - -2013-09-24 Tim Lauridsen - - * src/yumex/__init__.py: fix show number of updates in status icon - -2013-09-23 Tim Lauridsen - - * src/yumex/__init__.py: fix error on exception - -2013-09-23 Tim Lauridsen - - * src/yumex.ui, src/yumex/yum_backend.py: updated tooltips for - search types - -2013-09-23 Tim Lauridsen - - * README.md, src/yumex/__init__.py, src/yumex/const.py, - src/yumex/yum_backend.py: search in pkgtags - -2013-09-23 Tim Lauridsen - - * src/yumex/widgets.py, src/yumex/yum_backend.py: show pkgtags in - description - -2013-09-23 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/yum_backend.py: - better output when showing packages under RPM Transaction - - removed used import - -2013-09-23 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/const.py: Added main content - notebook page enums. Added doc strings Check if window is created in - shutdown handler - -2013-09-23 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/yum_backend.py: more output to - logger - -2013-09-22 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/misc.py, src/yumex/widgets.py: - debug output to debug logger - -2013-09-22 Tim Lauridsen - - * src/yumex/__init__.py: added logger on -d option - -2013-09-22 Tim Lauridsen - - * src/yumex/__init__.py: Added command line handler - -2013-09-22 Tim Lauridsen - - * src/yumex/__init__.py: windows close only hides the window - -2013-09-22 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/backend.py, src/yumex/const.py, - src/yumex/widgets.py, src/yumex/yum_backend.py: code formatting - -2013-09-22 Tim Lauridsen - - * src/yumex/__init__.py: minor refactoring - -2013-09-22 Tim Lauridsen - - * gfx/tray-error.png, gfx/tray-info.png, gfx/tray-no-updates.png, - gfx/tray-updates.png, gfx/tray-working.png, src/yumex/__init__.py, - src/yumex/const.py, src/yumex/widgets.py: - Migrated StatusIcon from yumex3.0 and make it work with gtk3 - Set - windows icon - -2013-09-20 Tim Lauridsen - - * src/yumex.ui, src/yumex/__init__.py, src/yumex/misc.py, - src/yumex/widgets.py: - Added options to options menu - use newest_only option in search - - search again when search type is changed - -2013-09-20 Tim Lauridsen - - * src/yumex.ui, src/yumex/__init__.py, src/yumex/yum_backend.py: - adjusted toolbar and added menu to pref button - -2013-09-20 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/widgets.py: removed a lot of - debug print() statements - -2013-09-20 Tim Lauridsen - - * src/yumex/__init__.py: Show dialog message on problems in - transaction - -2013-09-20 Tim Lauridsen - - * src/yumex/__init__.py: select updates view by default after - transaction is completted - -2013-09-20 Tim Lauridsen - - * src/yumex/const.py, src/yumex/widgets.py, - src/yumex/yum_backend.py: Added better progress while performing - package actions and downloading meta data. - -2013-09-20 Tim Lauridsen - - * src/yumex/widgets.py: Added tooltip to selection column - -2013-09-20 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/widgets.py: - click on selection column header will select/deselect all when - showing updates - added right click handler on selection column - header (for future use) - removed some commented out code. - -2013-09-19 Tim Lauridsen - - * src/yumex/widgets.py: Set transaction confirmation dialog to be - transient from main window - -2013-09-19 Tim Lauridsen - - * src/yumex.ui, src/yumex/__init__.py: Add search config menu with 4 - kind of searches - -2013-09-19 Tim Lauridsen - - * src/yumex.ui, src/yumex/__init__.py: added search entry and - progress spinner inside toolbar - -2013-09-18 Tim Lauridsen - - * src/yumex/widgets.py: Make infobar messages bold - -2013-09-18 Tim Lauridsen - - * src/yumex.ui, src/yumex/__init__.py, src/yumex/const.py, - src/yumex/widgets.py, src/yumex/yum_backend.py: Added processing of - pending tasks - -2013-09-18 Tim Lauridsen - - * src/yumex/widgets.py: removed duplicated code - -2013-09-17 Tim Lauridsen - - * src/yumex/widgets.py, src/yumex/yum_backend.py: Added yum callback - handlers - -2013-09-17 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/widgets.py, - src/yumex/yum_backend.py: Added a dynamic root backend make the - history view use the root backend - -2013-09-16 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/const.py, src/yumex/misc.py, - src/yumex/widgets.py: Added History parts, but they dont work yet, - there need a root backend to work - -2013-09-16 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/widgets.py: self.builder -> - self.ui rename - -2013-09-16 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/const.py, src/yumex/misc.py, - src/yumex/widgets.py: - Added infobar mesages on fetching package list - i18n refactoring - - -2013-09-16 Tim Lauridsen - - * src/yumex.ui, src/yumex/__init__.py, src/yumex/widgets.py: Added - infobar - -2013-09-16 Tim Lauridsen - - * src/yumex/widgets.py: Add notice about SearchEntry widget - -2013-09-16 Tim Lauridsen - - * src/yumex.ui, src/yumex/__init__.py, src/yumex/widgets.py: - changed package info icons - added top margin to info view - -incressed windows default size - show progress spinner when - populating info view (filelist, changelog, updateinfo) - -2013-09-16 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/backend.py, src/yumex/const.py, - src/yumex/misc.py, src/yumex/widgets.py, src/yumex/yum_backend.py: - move constants to const,py - move misc helpers to misc.py - move - busy/normal_cursor methods to YumexWindow class - package view - population optimations - -2013-09-16 Tim Lauridsen - - * gfx/spinner-arrows.gif, gfx/spinner.gif, src/yumex.ui, - src/yumex/widgets.py: - New spinner icon - Process Gtk event while populating package view - - -2013-09-16 Tim Lauridsen - - * gfx/spinner-arrows.gif, gfx/spinner.gif, src/yumex.ui, - src/yumex/__init__.py, src/yumex/const.py: animated gif spinner - -2013-09-15 Tim Lauridsen - - * src/yumex.ui, src/yumex/__init__.py: Added progress spinner - -2013-09-15 Tim Lauridsen - - * src/yumex/__init__.py: search will search for *keyword* instead of - keyword* - -2013-09-15 Tim Lauridsen - - * .gitignore, src/yumex/__init__.py, src/yumex/widgets.py: - Reset package info on search and package filter change - Detach - package store from view, when clearing view - swich to package view - on search - -2013-09-15 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/backend.py, src/yumex/const.py, - src/yumex/misc.py, src/yumex/widgets.py, src/yumex/yum_backend.py: - Added GPL header and some code pylint based refactoring - -2013-09-15 Tim Lauridsen - - * src/yumex/Makefile, src/yumex/test_backend.py: remove unneeded - files and make Makefile clean __pycache__ dir - -2013-09-15 Tim Lauridsen - - * yumex-nextgen.spec: change .spec description - -2013-09-15 Tim Lauridsen - - * yumex-nextgen.spec: fix version, release, source0, url in .spec - -2013-09-15 Tim Lauridsen - - * misc/yumex-nextgen.desktop.in: Fix Exec= in .desktop file - -2013-09-15 Tim Lauridsen - - * yumex-nextgen.spec: add translation support to spec - -2013-09-15 Tim Lauridsen - - * po/da.po: Added da translation template - -2013-09-15 Tim Lauridsen - - * Makefile: include po in install - -2013-09-15 Tim Lauridsen - - * po/POTFILES.in, po/yumex-nextgen.pot: Make intltool include - translations from the .ui file - -2013-09-15 Tim Lauridsen - - * src/yumex/__init__.py, src/yumex/const.py: Use DATA_DIR for - Builder ui file - -2013-09-15 Tim Lauridsen - - * Makefile, po/Makefile, po/POTFILES.in, po/yumex-nextgen.pot: Added - translation files - -2013-09-15 Tim Lauridsen - - * Makefile, misc/yumex-nextgen.desktop, - misc/yumex-nextgen.desktop.in, yumex-nextgen.spec: fix .desktop - install - -2013-09-15 Tim Lauridsen - - * yumex-nextgen.spec: use the current fedora .desktop installation - routine - -2013-09-15 Tim Lauridsen - - * Makefile: Makefile fixed to swich back to future branch - -2013-09-15 Tim Lauridsen - - * ChangeLog: added changelog - -2013-09-15 Tim Lauridsen - - * Makefile, gfx/yumex-icon.png, gfx/yumex-icon.svg, - misc/yumex-nextgen.desktop, src/Makefile, src/yumex/Makefile, - tools/git2cl, yumex-nextgen.spec: Added Makefiles, .spec, icon, - .desktop - -2013-09-15 Tim Lauridsen - - * README.md: cleanup readme - -2013-09-15 Tim Lauridsen - - * README.md: cleanup readme - -2013-09-15 Tim Lauridsen - - * Inital commit of Yum Extender rewrite +2013-09-26 Tim Lauridsen + * added repositories to preferences + * added repositories to preferences + * - change colors of differnt package types in preferences - make package + view use the config colors + * - Added autostart - create a blank yumex.conf if it dont exists - install + spinner & tray icons - added default values for options in perferences + * - Add config classes from yum, migrated to python3 - Added inital + preference dialog + +2013-09-23 Tim Lauridsen + + * updated tooltips for search types + * search in pkgtags + * show pkgtags in description + * - better output when showing packages under RPM Transaction - removed used + import + * Added main content notebook page enums. Added doc strings Check if window + is created in shutdown handler + * more output to logger + +2013-09-22 Tim Lauridsen + + * debug output to debug logger + * code formatting + * - Migrated StatusIcon from yumex3.0 and make it work with gtk3 - Set + windows icon + +2013-09-20 Tim Lauridsen + + * - Added options to options menu - use newest_only option in search - search + again when search type is changed + * adjusted toolbar and added menu to pref button + * removed a lot of debug print() statements + * Added better progress while performing package actions and downloading meta + data. + * - click on selection column header will select/deselect all when showing + updates - added right click handler on selection column header (for future + use) - removed some commented out code. + +2013-09-19 Tim Lauridsen + + * Add search config menu with 4 kind of searches + * added search entry and progress spinner inside toolbar + +2013-09-18 Tim Lauridsen + + * Added processing of pending tasks + +2013-09-17 Tim Lauridsen + + * Added yum callback handlers + * Added a dynamic root backend make the history view use the root backend + +2013-09-16 Tim Lauridsen + + * Added History parts, but they dont work yet, there need a root backend to + work + * self.builder -> self.ui rename + * - Added infobar mesages on fetching package list - i18n refactoring + * Added infobar + * - changed package info icons - added top margin to info view -incressed + windows default size - show progress spinner when populating info view + (filelist, changelog, updateinfo) + * - move constants to const,py - move misc helpers to misc.py - move + busy/normal_cursor methods to YumexWindow class - package view population + optimations + * - New spinner icon - Process Gtk event while populating package view + * animated gif spinner + +2013-09-15 Tim Lauridsen + + * Added progress spinner + * - Reset package info on search and package filter change - Detach package + store from view, when clearing view - swich to package view on search + * Added GPL header and some code pylint based refactoring + * remove unneeded files and make Makefile clean __pycache__ dir + * Make intltool include translations from the .ui file + * Use DATA_DIR for Builder ui file + * Added translation files + * fix .desktop install + * Added Makefiles, .spec, icon, .desktop \ No newline at end of file diff --git a/Makefile b/Makefile index 2ef703e..b55ff06 100644 --- a/Makefile +++ b/Makefile @@ -40,7 +40,7 @@ clean: $(CLEAN_TARGETS) get-builddeps: - @sudo dnf install python3-devel python3-gobject perl-TimeDate gettext intltool transifex-client + @sudo dnf install python3-devel python3-gobject gettext intltool transifex-client archive: @rm -rf ${APPNAME}-${VERSION}.tar.gz @@ -50,9 +50,8 @@ archive: @rm -rf ${APPNAME}-${VERSION}.tar.gz @echo "The archive is in ${BUILDDIR}/SOURCES/${APPNAME}-$(VERSION).tar.gz" -# needs perl-TimeDate for git2cl changelog: - @git log --pretty --numstat --summary | tools/git2cl > ChangeLog + $(PYTHON) tools/git2cl.py upload: @scp ~/rpmbuild/SOURCES/${APPNAME}-${VERSION}.tar.gz yum-extender.org:public_html/dnl/yumex/source/. @@ -96,7 +95,7 @@ test-release: @cat ${APPNAME}.spec | sed -e 's/${VER_REGEX}/\1${BUMPED_MINOR}/' -e 's/\(^Release:\s*\)\([0-9]*\)\(.*\)./\10.1.${GITDATE}%{?dist}/' > ${APPNAME}-test.spec ; mv ${APPNAME}-test.spec ${APPNAME}.spec @git commit -a -m "bumped ${APPNAME} version ${NEW_VER}-${NEW_REL}" # Make Changelog - @git log --pretty --numstat --summary | ./tools/git2cl > ChangeLog + $(PYTHON) tools/git2cl.py @git commit -a -m "updated ChangeLog" # Make archive @rm -rf ${APPNAME}-${NEW_VER}.tar.gz diff --git a/tools/git2cl b/tools/git2cl deleted file mode 100755 index aa1e8c1..0000000 --- a/tools/git2cl +++ /dev/null @@ -1,308 +0,0 @@ -#!/usr/bin/perl - -# Copyright (C) 2007 Simon Josefsson. -# -# The functions mywrap, last_line_len, wrap_log_entry are derived from -# the cvs2cl tool, see : -# Copyright (C) 2001,2002,2003,2004 Martyn J. Pearce -# Copyright (C) 1999 Karl Fogel -# -# git2cl is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# git2cl is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with git2cl; see the file COPYING. If not, write to the Free -# Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -use strict; -use Date::Parse qw(strptime); -use POSIX qw(strftime); -use Text::Wrap qw(wrap); - -use constant EMPTY_LOG_MESSAGE => '*** empty log message ***'; - -sub mywrap { - my ($indent1, $indent2, @text) = @_; - # If incoming text looks preformatted, don't get clever - my $text = Text::Wrap::wrap($indent1, $indent2, @text); - if ( grep /^\s+/m, @text ) { - return $text; - } - my @lines = split /\n/, $text; - $indent2 =~ s!^((?: {8})+)!"\t" x (length($1)/8)!e; - $lines[0] =~ s/^$indent1\s+/$indent1/; - s/^$indent2\s+/$indent2/ - for @lines[1..$#lines]; - my $newtext = join "\n", @lines; - $newtext .= "\n" - if substr($text, -1) eq "\n"; - return $newtext; -} - -sub last_line_len { - my $files_list = shift; - my @lines = split (/\n/, $files_list); - my $last_line = pop (@lines); - return length ($last_line); -} - -# A custom wrap function, sensitive to some common constructs used in -# log entries. -sub wrap_log_entry { - my $text = shift; # The text to wrap. - my $left_pad_str = shift; # String to pad with on the left. - - # These do NOT take left_pad_str into account: - my $length_remaining = shift; # Amount left on current line. - my $max_line_length = shift; # Amount left for a blank line. - - my $wrapped_text = ''; # The accumulating wrapped entry. - my $user_indent = ''; # Inherited user_indent from prev line. - - my $first_time = 1; # First iteration of the loop? - my $suppress_line_start_match = 0; # Set to disable line start checks. - - my @lines = split (/\n/, $text); - while (@lines) # Don't use `foreach' here, it won't work. - { - my $this_line = shift (@lines); - chomp $this_line; - - if ($this_line =~ /^(\s+)/) { - $user_indent = $1; - } - else { - $user_indent = ''; - } - - # If it matches any of the line-start regexps, print a newline now... - if ($suppress_line_start_match) - { - $suppress_line_start_match = 0; - } - elsif (($this_line =~ /^(\s*)\*\s+[a-zA-Z0-9]/) - || ($this_line =~ /^(\s*)\* [a-zA-Z0-9_\.\/\+-]+/) - || ($this_line =~ /^(\s*)\([a-zA-Z0-9_\.\/\+-]+(\)|,\s*)/) - || ($this_line =~ /^(\s+)(\S+)/) - || ($this_line =~ /^(\s*)- +/) - || ($this_line =~ /^()\s*$/) - || ($this_line =~ /^(\s*)\*\) +/) - || ($this_line =~ /^(\s*)[a-zA-Z0-9](\)|\.|\:) +/)) - { - $length_remaining = $max_line_length - (length ($user_indent)); - } - - # Now that any user_indent has been preserved, strip off leading - # whitespace, so up-folding has no ugly side-effects. - $this_line =~ s/^\s*//; - - # Accumulate the line, and adjust parameters for next line. - my $this_len = length ($this_line); - if ($this_len == 0) - { - # Blank lines should cancel any user_indent level. - $user_indent = ''; - $length_remaining = $max_line_length; - } - elsif ($this_len >= $length_remaining) # Line too long, try breaking it. - { - # Walk backwards from the end. At first acceptable spot, break - # a new line. - my $idx = $length_remaining - 1; - if ($idx < 0) { $idx = 0 }; - while ($idx > 0) - { - if (substr ($this_line, $idx, 1) =~ /\s/) - { - my $line_now = substr ($this_line, 0, $idx); - my $next_line = substr ($this_line, $idx); - $this_line = $line_now; - - # Clean whitespace off the end. - chomp $this_line; - - # The current line is ready to be printed. - $this_line .= "\n${left_pad_str}"; - - # Make sure the next line is allowed full room. - $length_remaining = $max_line_length - (length ($user_indent)); - - # Strip next_line, but then preserve any user_indent. - $next_line =~ s/^\s*//; - - # Sneak a peek at the user_indent of the upcoming line, so - # $next_line (which will now precede it) can inherit that - # indent level. Otherwise, use whatever user_indent level - # we currently have, which might be none. - my $next_next_line = shift (@lines); - if ((defined ($next_next_line)) && ($next_next_line =~ /^(\s+)/)) { - $next_line = $1 . $next_line if (defined ($1)); - # $length_remaining = $max_line_length - (length ($1)); - $next_next_line =~ s/^\s*//; - } - else { - $next_line = $user_indent . $next_line; - } - if (defined ($next_next_line)) { - unshift (@lines, $next_next_line); - } - unshift (@lines, $next_line); - - # Our new next line might, coincidentally, begin with one of - # the line-start regexps, so we temporarily turn off - # sensitivity to that until we're past the line. - $suppress_line_start_match = 1; - - last; - } - else - { - $idx--; - } - } - - if ($idx == 0) - { - # We bottomed out because the line is longer than the - # available space. But that could be because the space is - # small, or because the line is longer than even the maximum - # possible space. Handle both cases below. - - if ($length_remaining == ($max_line_length - (length ($user_indent)))) - { - # The line is simply too long -- there is no hope of ever - # breaking it nicely, so just insert it verbatim, with - # appropriate padding. - $this_line = "\n${left_pad_str}${this_line}"; - } - else - { - # Can't break it here, but may be able to on the next round... - unshift (@lines, $this_line); - $length_remaining = $max_line_length - (length ($user_indent)); - $this_line = "\n${left_pad_str}"; - } - } - } - else # $this_len < $length_remaining, so tack on what we can. - { - # Leave a note for the next iteration. - $length_remaining = $length_remaining - $this_len; - - if ($this_line =~ /\.$/) - { - $this_line .= " "; - $length_remaining -= 2; - } - else # not a sentence end - { - $this_line .= " "; - $length_remaining -= 1; - } - } - - # Unconditionally indicate that loop has run at least once. - $first_time = 0; - - $wrapped_text .= "${user_indent}${this_line}"; - } - - # One last bit of padding. - $wrapped_text .= "\n"; - - return $wrapped_text; -} - -# main - -my @date; -my $author; -my @files; -my $comment; -my $merge; - -my $state; # 0-header 1-comment 2-files -my $done = 0; - -$state = 0; - -while (<>) { - #print STDERR "debug ($state, " . (@date ? (strftime "%Y-%m-%d", @date) : "") . "): `$_'\n"; - - if ($state == 0) { - if (m,^Author: (.*),) { - $author = $1; - } - if (m,^Date: (.*),) { - @date = strptime($1); - } - if (m,^Merge: (.*),) { - $merge = 1; - } - $state = 1 if (m,^$,); - } elsif ($state == 1) { - $state = 2 if (m,^$,); - s/^ //g; - s/\n/ /g; - $comment = $comment . $_; - } elsif ($state == 2 && $merge) { - $done = 1; - } elsif ($state == 2) { - if (m,^([-0-9]+)\t([-0-9]+)\t(.*)$,) { - push @files, $3; - } elsif (m,^[^ ],) { - # No file changes. - $done = 1; - } - $done = 1 if (m,^$,); - } - - if ($done && @date == ()) { - print STDERR "warning: could not parse entry\n"; - } elsif ($done) { - print (strftime "%Y-%m-%d $author\n\n", @date); - - my $files = join (", ", @files); - $files = mywrap ("\t", "\t", "* $files"), ": "; - - if (index($comment, EMPTY_LOG_MESSAGE) > -1 ) { - $comment = "[no log message]\n"; - } - - my $files_last_line_len = 0; - $files_last_line_len = last_line_len($files) + 1; - my $msg = wrap_log_entry($comment, "\t", 69-$files_last_line_len, 69); - - $msg =~ s/[ \t]+\n/\n/g; - - if ($merge) { - print "\t$msg\n"; - } else { - print "$files: $msg\n"; - } - - @date = (); - $author = ""; - @files = (); - $comment = ""; - $merge = 0; - - $state = 0; - $done = 0; - } -} - -if (@files) { - print (strftime "%Y-%m-%d $author\n\n", @date); - my $msg = wrap_log_entry($comment, "\t", 69, 69); - $msg =~ s/[ \t]+\n/\n/g; - print "\t* $msg\n"; -} diff --git a/tools/git2cl.py b/tools/git2cl.py new file mode 100644 index 0000000..965d3dd --- /dev/null +++ b/tools/git2cl.py @@ -0,0 +1,130 @@ +#!/usr/bin/python +# Copyright 2008 Marcus D. Hanwell +# Distributed under the terms of the GNU General Public License v2 or later + +from __future__ import absolute_import +from __future__ import print_function +import string, re, os + +# Execute git log with the desired command line options. +fin = os.popen('git log --summary --stat --no-merges --date=short', 'r') + +# Create a ChangeLog file in the current directory. +fout = open('ChangeLog', 'w') + +# Set up the loop variables in order to locate the blocks we want +authorFound = False +dateFound = False +messageFound = False +filesFound = False +message = "" +messageNL = False +files = "" +prevAuthorLine = "" + +# The main part of the loop +for line in fin: + # The commit line marks the start of a new commit object. + if line.find('commit') >= 0: + # Start all over again... + authorFound = False + dateFound = False + messageFound = False + messageNL = False + message = "" + filesFound = False + files = "" + continue + # Match the author line and extract the part we want + elif re.match('Author:', line): + authorList = re.split(': ', line, 1) + author = authorList[1] + author = author.split("<")[0] + author = author[0:len(author)-1] + authorFound = True + # Match the date line + elif re.match('Date:', line): + dateList = re.split(': ', line, 1) + date = dateList[1] + date = date[0:len(date)-1] + dateFound = True + # The svn-id lines are ignored + elif re.match(' git-svn-id:', line): + continue + # The sign off line is ignored too + elif re.search('Signed-off-by', line): + continue + # Extract the actual commit message for this commit + elif authorFound & dateFound & messageFound == False: + # Find the commit message if we can + if len(line) == 1: + if messageNL: + messageFound = True + else: + messageNL = True + elif len(line) == 4: + messageFound = True + else: + if len(message) == 0: + message = message + line.strip() + else: + message = message + " " + line.strip() + # If this line is hit all of the files have been stored for this commit + elif re.search('files changed', line): + filesFound = True + continue + # Collect the files for this commit. FIXME: Still need to add +/- to files + elif authorFound & dateFound & messageFound: + fileList = re.split(' \| ', line, 2) + if len(fileList) > 1: + if len(files) > 0: + pass +# files = files + ", " + fileList[0].strip() + else: + pass +# files = fileList[0].strip() + # All of the parts of the commit have been found - write out the entry + if authorFound & dateFound & messageFound & filesFound: + # First the author line, only outputted if it is the first for that + # author on this day + authorLine = date + " " + author + if len(prevAuthorLine) == 0: + fout.write(authorLine + "\n") + elif authorLine == prevAuthorLine: + pass + else: + fout.write("\n\n" + authorLine + "\n") + + # Assemble the actual commit message line(s) and limit the line length + # to 80 characters. + commitLine = "* " + message + i = 0 + commit = "" + while i < len(commitLine): + if len(commitLine) < i + 78: + commit = commit + "\n " + commitLine[i:len(commitLine)] + break + index = commitLine.rfind(' ', i, i+78) + if index > i: + commit = commit + "\n " + commitLine[i:index] + i = index+1 + else: + commit = commit + "\n " + commitLine[i:78] + i = i+79 + + # Write out the commit line + fout.write(commit) + + #Now reset all the variables ready for a new commit block. + authorFound = False + dateFound = False + messageFound = False + messageNL = False + message = "" + filesFound = False + files = "" + prevAuthorLine = authorLine + +# Close the input and output lines now that we are finished. +fin.close() +fout.close() From 763829cf04de7ac71ae9b6d0385d3215e4b56784 Mon Sep 17 00:00:00 2001 From: Tim Lauridsen Date: Wed, 11 May 2016 09:31:05 +0200 Subject: [PATCH 17/18] bumped version to 4.3.3 --- yumex-dnf.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/yumex-dnf.spec b/yumex-dnf.spec index 9cdcb4c..d83e584 100644 --- a/yumex-dnf.spec +++ b/yumex-dnf.spec @@ -1,7 +1,7 @@ %global appname yumex Name: %{appname}-dnf -Version: 4.3.2 +Version: 4.3.3 Release: 1%{?dist} Summary: Yum Extender graphical package management tool @@ -67,6 +67,9 @@ update-desktop-database %{_datadir}/applications &> /dev/null || : %changelog +* Wed May 11 2016 Tim Lauridsen 4.3.3-1 +- bumped release to 4.3.3 (dev) + * Tue Apr 26 2016 Tim Lauridsen 4.3.2-1 - bumped release to 4.3.2 (dev) From 4e51d1d723afcca2e057079a85485c00cc89d816 Mon Sep 17 00:00:00 2001 From: Tim Lauridsen Date: Wed, 11 May 2016 09:31:06 +0200 Subject: [PATCH 18/18] updated ChangeLog --- ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ChangeLog b/ChangeLog index 476f512..26e2d95 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2016-04-29 Tim Lauridsen + + * Add python based ChangeLog generation without email addrs + 2016-04-28 Tim Lauridsen * Add custom error dialog fixes #90