Giter Club home page Giter Club logo

hamster-gtk's People

Contributors

elbenfreund avatar jtojnar avatar requires avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hamster-gtk's Issues

Reimplement activity/category suggestions for 'EditFactDialog'

hamster.widgets.activityentry.ActivityEntry employed some some custom logic to collect a ranked list of relevant activities and presents them as a drop down in the raw fact entry (via the custom CompleteTree widget).

It may be feasible to delegate the "create ranked suggestions" method to hamster-lib.

'Tracking-screen' uses 'Stack' based approach.

Instead of using a simple gtk.Box as main layout container we can use a gtk.Stack but without the usually employed gtk.StackSwitcher. Instead the switch is goverend by our self._on_button ...
methods.

Benefits:

  • cleaner
  • allows for fancy transition effects

Notes:

  • Unlike with regular stacks where one want to keep individual stacks state, we need to make sure that we reset the old stack when switching.

Config changes are applied only after restart

version: 0.10.0

Changes to the preferences are only active after restarting hamster-gtk.

Whist the main apps config attribute is in fact changed right away, it is not possible to update the backend config at runtime as of now. Once hamster-lib has been improved this should be possible.

StackedBar should have 'click to show' label.

Right now overview_widgets.Totals tries to make sure there is a label hinting to the user there actually is something to be clicked in order to reveal the totals.
Besides the label often not shown due to wrong dimensions, the more general issue is that the StackedBar
should provide an optional label itself anyway.

Blocked by:

Provide a way to export CSV

We should provide a very rough and basic way to export a csv dump of all stored facts to a given location. For now this would not need to be fancy at all. This may be done in later iterations.

Make sure hamster-gtk comforms to gnome design guidelines.

Hamster should confirm with general gnome design/interface guidelines. In order to respect those, it would be great to have someone familiar with the relevant resources (provided below as reference).
This task does not really require any programming capabilities. Instead one would have to read into the guidelines and check where the hamster gui complies or conflicts them. Once this is documented, we can address those issues much more efficiently.

Reference:

Make sure we covered all relevant keybindings

People may got used to the existing keybindigs, make sure we stick to them where ever possible.
Particular POIs:

  • hamster.edit_activity
  • hamster.widgets.activityentry.ActivityEntry

Grouping facts fails under python 3 due to impossible hashing.

Related Error:

Traceback (most recent call last):
  File "/home/elbenfreund/projects/hamster-gtk/hamster_gtk/hamster_gtk.py", line 61, in _on_overview_button
    overview = OverviewScreen(self._parent._app, self._parent)
  File "/home/elbenfreund/projects/hamster-gtk/hamster_gtk/screens/overview.py", line 56, in __init__
    self._grouped_facts, self._totals = self._group_facts()
  File "/home/elbenfreund/projects/hamster-gtk/hamster_gtk/screens/overview.py", line 114, in _group_facts
    facts_by_activity[fact.activity].append(fact)
TypeError: unhashable type: 'Activity'

Under python 3, our hamsterlib instances which have a custom __eq__ method are no longer hashable without being given a custom __hash__ method. As a consequence building grouped dictionaries fails.

An issue with hamsterlib has been created.

Reference:

Add ``widgets.DayLine()`` widget to ``EditFactDialog``

The original edit dialog featured some eye candy representing the a particular date and its facts present so far. The widget itself utilizes Toms custom drawing widgets but should be possible to reimplement with custom GTK3 classes.

Optionally it appears tis widget used to be able (in hamster-applet) to be used to select (date?)times directly as opposed to just represent the date.

i18n and l10n

One basic core functionality has been implemented, we need to address i18n and l10n.
It is advisable not to postpone this for two long in order to minimize duplicate effort.

It appears we can not simply use gettext for direct GTK related translations. This needs to be investigated!

Task related to i18n:

  • Provide i18n for all GUI labels.
  • Decide on a solution for i18n within the logging.
  • Provide i18n setup for documentation.

Tasks related to i10n:

  • Localize datetime representation #41

Refactor project layout

Over time, there has been significant class- and method creep within various submodules of the package. Now that we start to get a clearer idea about the general application structure it seems important to address the project layout again before it will require even more work do adjust it.

Disable mandatory `isort` check.

It is recommended to call gi.require_version(...) before importing Gtk and such. This however is prevented/'corrected' by isort as it will move those calls after the actual imports. According to this this is known and a solution is being considered. For now, our best shot is to run isort localy to maintain some order but not force it as part of our CI.

Implement 'StackedBar'

We opted for reimplementing legacy hamsters custom widgets as proper gtk subclasses instead of recycling the old custom codebase. As part of that effort we need to reimplement the StackedBar class.

Migrate Box layouts to Grid based ones

According to the docs Gtk.Box whilst not deprecated is advised against in favor of all out Gtk.Grid based layouts. For migration tips refer to this.

This should not be a big deal and is of rather low priority right now, but should be done before the first proper release none the less.

Bring back 'docs' test

We disabled the docs testsuite on the CI server due to some unidentified SSL handshake issues that were not reproduceable localy. At the end of the day, those need to be reactivated of cause.

Can not open edit dialog if fact.category is None

version : 0.10.0

opening the edit dialog from within the overview fails if the fact to be edited has no category assigned.

Hamster-GTK started.
Traceback (most recent call last):
  File "/home/elbenfreund/.virtualenvs/hamster-gtk/local/lib/python2.7/site-packages/hamster_gtk/overview/widgets/fact_grid.py", line 105, in _on_activate
    edit_dialog = EditFactDialog(self.get_toplevel(), row.fact)
  File "/home/elbenfreund/.virtualenvs/hamster-gtk/local/lib/python2.7/site-packages/hamster_gtk/misc/dialogs.py", line 249, in __init__
    self._mainbox = self._get_main_box()
  File "/home/elbenfreund/.virtualenvs/hamster-gtk/local/lib/python2.7/site-packages/hamster_gtk/misc/dialogs.py", line 294, in _get_main_box
    self._raw_fact_widget = self._get_raw_fact_widget()
  File "/home/elbenfreund/.virtualenvs/hamster-gtk/local/lib/python2.7/site-packages/hamster_gtk/misc/dialogs.py", line 318, in _get_raw_fact_widget
    category=text_type(self._fact.category.name)
AttributeError: 'NoneType' object has no attribute 'name'

Provide helpfull hint to use on 'EditFactDialog'

Behind the scenes there is some logic involved in for when the user provides information in the raw fact entry as well as in dedicated attribute entry fields. It would be good to provide some optional elaboration to interested users.

Possible solutions:

  • Plain labels
  • Add icon to entry widgets and provide tooltips to those icons
  • Maybe tooltips can be connected to the entry widget itself?
  • A dedicated 'help' button

Evaluate 'Gtk.FileChooserNative'

The docs recommend so use Gtk.FileChooserNative for improved native look and feel.
We need to investigate if this class is indeed preferable and if there are any obvious downsides.
Once this is done and confirmed, it should be implemented accordingly.

Warn if closed with *ongoing fact*

When closing the client while still running an ongoing fact it may be preferable to warn the user.
This warning probably should be optional (set via preferences).

Re-enable 'autodocs' for sphinx

Initially autodocs failed as they could not import gi. Once we have setup proper sitepackages on the CI server this should not be an issue anymore.

Unable to identify format

Dear all,

I wanted to add a new time entry but it was refused as being in the wrong format.

Can someone please tell me why the following text entry is not valid?

Thankfully,

~Robert

image

Harmonize signal naming scheme

We should be consistent with our signal names. Right now there is tracking-stopped as well as facts_changed. Choose one style!

Evaluate releasing 'pytweener' on its own-

It seems reasonable to publish pytweener as a stand alone module instead of shipping our own custom version.

Benefits:

  • Centralized maintenance and issue tracking.
  • Transparent dependencies
  • Easier for legacy hamster to incorporate any improvements

Pre-requisites:

  • Double check that Toms version is actually superior to Bens.
  • Get in touch with tbaugis if he intends to release 'pytweener' as a stand alone package himself.

Resources:

Installable deb package for Ubuntu 16.04?

Dear all,

I would love to provide my feedback on the rebooted Hamster code base.

However, I am not able to build a deb package for an installation on Ubuntu 16.04 myself.

Has anyone already built package that he might want to share with me?

Thankfully,

~Robert

Connect issues to trackers

Some people may use the following pattern:
issue@project to log their work.
It would be a great luxuray feature if we could provide a way clickable links to the relevant issue tracker url.

Provide a way to edit existing facts.

hamster-time-tracker provides a dedicated edit dialog to change a Facts attributes.
This should be reimplemented.

Questions:
Is it desirable to use the raw_fact entry to modify the fact (but for the description?)
It strikes me as rather cumbersome. Wouldn't it be preferable to have dedicated widgets for each
fact attribute? What do you think @projecthamster/devs ?

EditFactDialog: Applying changes throws error

Version: 0.10.0

Clicking "Apply" in the editfact dialog gives the following:

Hamster-GTK started.
Traceback (most recent call last):
  File "/home/elbenfreund/.virtualenvs/hamster-gtk/local/lib/python2.7/site-packages/hamster_gtk/overview/widgets/fact_grid.py", line 112, in _on_activate
    self._update_fact(edit_dialog.updated_fact)
  File "/home/elbenfreund/.virtualenvs/hamster-gtk/local/lib/python2.7/site-packages/hamster_gtk/overview/widgets/fact_grid.py", line 120, in _update_fact
    helpers.show_error(self, message)
  File "/home/elbenfreund/.virtualenvs/hamster-gtk/local/lib/python2.7/site-packages/hamster_gtk/helpers.py", line 74, in show_error
    dialog = dialogs.ErrorDialog(parent, message)
  File "/home/elbenfreund/.virtualenvs/hamster-gtk/local/lib/python2.7/site-packages/hamster_gtk/dialogs.py", line 41, in __init__
    self.set_transient_for(parent)
TypeError: argument parent: Expected Gtk.Window, but got hamster_gtk.overview.widgets.fact_grid.FactListBox

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.