Use a fixed estimate of the amount of space needed for each column
and then if there is extra space, consider adding the Branch and
Topic columns to the change list.
Change-Id: I90ee7f3e1953468a9e81cc508c2c444e1af50efc
When possible, try to shorten the screen title to the shortest
length possible while still being descriptive enough to help
the user navigate.
Also, make the space for the ellipses available for use for
titles that do not need them.
Change-Id: I82e08ac60451e81c2e5a51f8595fb19234f23859
Gertty uses WidgetWraps around the LineBox widget for popup widgets. Add
LineBoxTitlePropertyMixin which adds property and setter for title attribute,
accessing the underlying title_widget on the wrapped LineBox widget.
We use the popup method in the controller to display these dialogs. It uses an
Overlay widget to display our dialog widget on top of the current view. If the
widget to be displayed by the Overlay widget has title attribute, copy it to
the Overlay widget.
Change-Id: I4c6ecbc7ed87867cd67cd93c1125384dd5d4b9af
This change adds a navigational breadcrumb trail to the bottom of the interface
to allow the user to easily keep track of their location in Gertty.
Change-Id: I40de19084bf66d095c14ac7a4a901f293b30b9be
This is basically just so a developer can turn down the chatty
sync operations that are normally going on and just see the
minimum interactive sync operations. It's not something that
should be used normally (reviews may not be uploaded, etc).
Change-Id: I9b891366783a18c2896ac759ed4cb855beff906b
If a change is opened by id and already exists locally, perform
a high-priority background sync of the change to make sure it's
up to date. This should help avoid the problem where a user
returns to a change in an unsubscribed project and it appears out
of date.
If the change doesn't exist locally, it is synced in the foreground
so that case is already covered.
Change-Id: Idb5daa4309b712e39eb7cde56afcb94fdb41f179
When a foreground sync is happening (because of a search for
a specific change number, including via "gertty --open") display
a message telling the user what's going on.
Change-Id: I4c12c73ec92cba8a8b3f3d69f036d1442323787e
If you run "gertty --open <URL>" it will instruct a running
Gertty to open the change at that URL.
Change-Id: Ie82aa53f497717e7355646d6d6fd12473ececad0
In environments without py27, gertty was unable to run. This patch
addresses all the Py3K issues discovered when getting gertty running in
a py34-only environment.
Change-Id: I32a06f9768bdeaf8e95ddf9a9e54c79059fbaa2f
So that the project list page is more responsive, cache counts of
open and unreviewed changes for projects.
Change-Id: I270f4009d6c7cca9d9868a181db94f779662b643
Create a global app kill ring and a custom edit widget that can
kill and yank from it. Also, add Emacs beginning/end of line
keys to the default keymap.
Change-Id: I18d8d47694c89ede4dcec7eaf5d3fb2210ef4438
Exherbo has a setup where gerrit is at
https://galileo.mailstation.de/gerrit/ and jenkins is at
https://galileo.mailstation.de/jenkins/. gertty falsely thinks that the
jenkins link is a change and when clicked it weirdly starts to sync
random projects for 10 minutes before telling me that the change is not
found. This patch fixes it by matching on the full url.
Change-Id: I4261fce74d6cfaec736e478747592b001d82400d
Being able to refine a search query is useful, but so is being able
to quickly open a specific change from anywhere. Separate these
commands. C-o opens a blank search input; M-o opens a search input
pre-filled with th ecurrent query in list view.
Change-Id: I49d0f076354322a2652de515d476548926a99182
After launching a browser child process, gertty's display may no
longer be current (e.g., when using a console-based browser).
Redisplay the screen contents following browser execution as a
prophylactic measure.
Note: you can test this by invoking `BROWSER=lynx gertty` with lynx
installed (but really, can you call it a computer if it doesn't have
lynx installed?!?).
Change-Id: I929e6ec4252b3e4c7c8c425a87cc8be7c0434828
When opening the search dialog from a change list, use the current
query as the default value. This lets you iterate on a query
without needing to type or copy it repeatedly. However, it does
mean that you need to clear out the field if you want a completely
different query.
Change-Id: I1f31db1cde0b86c5a7b214866f1df686dd901c7c
I commented on a review while offline yesterday. When I came online,
someone had provided a -2. Being a more-negative comment than mine, this
held my change, and added a warning in the top-right to tell me I had a
held change.
However, I couldn't *see* the held change in held-changes view, because
it only shows me open changes - and this particular change was abandoned
after the -2.
This change makes held-changes view show all held changes,not just open
held changes.
An alternative here might be to not warn the user about held changes if
they have been abandoned; but that could be confusing if my comment had
been "I think this shouldn't be abandoned because"....
Change-Id: I5165f50af30b51ae29f2639dd5fd4185b02aa1fa
The Database and SearchParser classes didn't really need the app object.
They just needed to use some of its properties. Instead those properties
are just being passed in.
Change-Id: Iabdd0072a8f74e6b9346fe03c15cfa00810e1c4a
The getRepo method really doesn't have much to do with the application
object. Since it's really a utiltiy method for dealing with git repos
I've moved it to gertty.gitrepo.
Change-Id: Ic3349430c456ee184bbf57b6e5b7de4f940b4cc1
Add a process mark to the change list so that multiple changes may
be selected at once for further operations. Allow multiple changes
to be reviwed at once by selecting them with the process mark and
then pressing the usual review command key. The categories are
simply taken from the first change in the list for simplicity.
This should be fine most of the time, but if the changes have
different categories available to them, or the user has different
access levels, this may not behave as intended.
Change-Id: I04a790d91b27b270cf1269c7bcb39c12d857ab32
The release version string from PBR indicates if you're running a
non-tagged commit by adding post (for older PBR releases) or dev
components to the version. Use it for clarity.
Change-Id: Icb39543cf4f0ac69737c1e5d8f8a4a8ef1e7d716
This commit fixes the following flake8 issues:
F821 undefined name 'name'
F841 local variable 'name' is assigned to but never used
It also silences the false-positives caused by parser.py and
tokenizer.py.
Change-Id: Icdc42f47f5f1f383054d8dfdeed6509fc478637b
To facilitate escaping from a deep stack of screens, add a key
to clear the history and return to the main project list. Bind
this to meta-home by default.
Change-Id: Ic98e47d7a3a17271bf21230ec4bac184f691ced3
A user may want to bring up a dashboard to search for a change
during the process of reviewing one or more changes. Therefore,
do not assume that the screen history should be cleared when
displaying a dashboard. This way the user may resume their
previous task.
Change-Id: Iffdd56fedae2b20ebd680c41c3086d7558e1ba0b
Support copy/pasting a URL into the search box, if it matches the
hostname of the Gerrit server, parse it and extract the change
number and open that change.
Change-Id: I0b74b4783742e909db4a2d8d3317061a67201ee8
Add the checkout and cherry-pick commands directly to the change
list. This is motivated by a desire to be able to re-base and
create patch series quickly directly from a list of changes.
Change-Id: I22d3014673479db4381daad715b1c4ced3bcf340
This feature detects when Gertty is about to upload a review with
a positive vote after someone else has left a negative vote while
Gertty was offline. This prevents a situation where it appears
a user is ignoring negative feedback from others. The local user
is alerted and has the option to re-evaluate their review before
proceeding.
Change-Id: I838acaae6d12a2f8557bfd5a16837784c97c031a
The current requests module issues InsecurePlatformWarning on what
seems like every request. Perform duplicate suppresion on all
warning messages. Additionally, never display this message to the
user because there is almost nothing the user can do about it,
and annoying them is not going to help. Log the message once.
Also move the InsecureRequestWarning suppression to use the same
new system. Log it once if ssl verification is disabled. Display
the warning if it is not disabled.
Change-Id: Icc84596dbc5f0e36a1af5c56215380b0f405613f
Rather than having them write to stderr uncontrolled, display
warnings (ie, from the python module "warnings") in a popup.
Change-Id: I17f4754d357efbe47943851d7d9aa162d0e61800
Accept the full change id in addition to the change number as a
simple search query. Also be more lenient about leading or trailing
whitespace (which is useful when copy/pasting change ids when
searching).
Change-Id: If8e6186e3487a468ef945408fe46bd8c57875a3b
By default, display times using the local timezone. Add timezone
info to time displays where space permits. Add an option to restore
the current behavior where times are displayed in UTC.
Change-Id: I6035b6277dc49774537a762b2946c56a3b8dec17
Co-Authored-By: Bradley Jones <jones.bradley@me.com>
On my terminal, opening a web browser link always produces the output
"GLib-CRITICAL **: g_slice_set_config: assertion `sys_page_size == 0' failed"
This is apparently a bug in mozilla:
https://bugzilla.mozilla.org/show_bug.cgi?id=833117
However, the python webbrowser module could mask it by redirecting outputs.
In fact, it does so for some types of browsers, but apparently not xdg-open.
Create a new webbrowser subclass that redirects output and register it as
the appropriate way to use xdg-open so that the message is hidden.
Change-Id: I018673a2773a3bc21d7d7c1facccba91eafe1174
Simply adds a new -v/--verbose CLI option which configures logging at
the INFO log level. Also changes the debug logging in sync.get() to log
a non-200 HTTP return code, which fixes the Storyboard story 2000084,
where a ValueError was being raised by trying to JSON-decode a non-200
response body.
Change-Id: Ieabc606e0570ddf3d3af67bb926cad79b0e87591
Closes-story: 2000084
When going back a screen, always refresh the screen since something
may have changed while it was not displayed. Also, refactor the
refresh methods to indicate whether something is of interest so
that if there is more than one refresh triggering event queued, we
still only refresh the screen once (if it is interested).
This should correct the problem where if you review a change and
go back to the change or project listings, the displayed numbers
are incorrect.
Change-Id: I97875831c4bd47f5e38992c38302b47809c785d5
When sync events produce results that modify the local db state,
record those events and have the screen widgets use that info
to decide whether to refresh (if relevant data are updated).
In practice this should mean far fewer screen refreshes (which
require costly db queries and manifest as UI pauses).
Change-Id: Iefca75ef3d727236b8e4d1199fd4301d25822fef