| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
This was just minor confusion. It's not the spoke being processed that
we need to be concerned about. It's all the ones that might get their
incompleteness checked.
|
| |
|
|
|
|
|
|
|
|
|
| |
This behaviour tries to minimize the "surprise factor" we have
in the installer. When the user entered spoke, changed any data
and then left the spoke, the installer gave him no chance for
review or correcting the entered values. With this patch applied
the Hub waits for a click on the continueButton if any user
interaction happened before all the spokes were ready+completed.
|
|
|
|
|
| |
This makes the spoke selectors on rows by theirselves much smaller. They
no longer extend all the way to the right edge of the screen.
|
| |
|
|
|
|
|
|
| |
It is not a GUI specific code, so it should live under pyanaconda/ui
instead of pyanaconda/ui/gui. Moreover from pyanaconda/ui/gui it cannot
be imported without X server running.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch adds two pieces to Spoke classes:
should_run(environment_id, data)
This method should return True if the spoke is to be displayed
in the environment (currently only "anaconda" and "firstboot"
are supported)
@property configured()
This property should return list of strings that will be
stored to a config file, which will be passed to firstboot and
GIE and will control whether spokes are to be displayed again
or not.
|
| |
|
| |
|
|
|
|
| |
categories
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
The idea here is that by adding a gradient up top, the "Done" button looks
more like it belongs with the header than with the widgets down in the
spoke. It also subtly makes the spoke look like a subpart of the hub.
Adding this required adding an additional internal widget, which means also
changing all existing glade files to include this internal widget. Make sure
to build new glade support and install locally (or use the proper makefile
targets) before editing.
|
| |
|
| |
|
|
|
|
|
| |
Except on the hub, which is special and is going to need special work done
for it.
|
|
|
|
|
| |
This saves us from having to type the same GTK constants again and again in
python land.
|
|
|
|
|
| |
Live environments have their own way of rebooting, and anaconda doesn't need
to interfere with that.
|
| |
|
| |
|
|
|
|
|
|
| |
We use PANGO_ELLIPSIZE_MIDDLE to show the status and one cannot
get the whole status. Also screen readers could probably work with
this.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
We were simluating the continue click before consuming all the messages
in the queue, which would cause the next hub to be in use, but we were
attempting to process messages for the previous hub. It would cause a
crash of anaconda, but not a backtrace that could be caught with our
autoreporter. The solution is to only continue when the queue is empty.
This also makes use of a property to see if we are ready to continue
instead of duplicating code.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Marks all methods containing mostly gtk calls as gtk_thread_wait
or gtk_thread_nowait
- Uses gtk_call_once instead of GLib.idle_add to make sure the
method is called only once (returns False)
- Removes some code from the threading locks, because it wasn´t
touching Gtk at all
This change was discussed in the mailinglist here:
https://www.redhat.com/archives/anaconda-devel-list/2012-October/msg00030.html
The main point was:
According to the Gtk team, the gdk_threads_enter/leave pair should
not be used at all (and they have apparently discouraged usage of
it since early releases of Gtk2). Moreover in the current Gdk docs
(http://developer.gnome.org/gdk3/stable/gdk3-Threads.html)
those functions are now marked as deprecated.
The preferred way (and now the only way) is to use g_idle_add
(GLib.idle_add) with a callback method to schedule GUI changes.
The callback method will then get called by the Gtk main loop so
no locking is needed (and GLib.idle_add performs none). But that
is also the reason why everything Gtk related must be done from
the mainloop thread either directly or via idle_add.
|
|
|
|
|
| |
We need this to quit when handling errors, since doing a sys.exit() from a
thread only kills the thread and not the main program.
|
|
|
|
|
| |
This is handled by glade, and the fact that the spinner doesn't spin right now
is due to a GTK bug.
|
|
|
|
|
| |
This provides room to display the personalization on the same screen as the
progress bar, which is what the mockups call for.
|
|
|
|
|
| |
- Splits doInstall to doInstall and doConfiguration
- Updates text and gui mode to use doConfiguration
|
| |
|
|
|
|
|
|
| |
Instead of constantly creating new Images and shoving them into a spot in
the notebook, I'm now just putting each rnote on its own page. Whether
it's better or not is up for debate, but at least this way works.
|
|
|
|
|
| |
Using GLib.idle_add for action that repeats means 100% CPU usage. So
let's use GLib.timeout_add with 250ms interval instead.
|
|
|
|
|
| |
This means you can't alt-tab away from the spoke and do stuff on the hub
and really confuse anaconda.
|
| |
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Modify the continueButton to exit (allowing the anaconda exitHandler to
take control) if it is the last action. The button is expected to be
setup so that it is clear to the user what will happen (eg. REBOOT).
This also fixes the display of the quitDialog when rebooting.
Add a click of the final button when kickstarting with reboot or
shutdown.
halt also works, but requires a new version of pykickstart. Previously
the halt command was not working, it would set action to KS_SHUTDOWN and
there was no way for KS_WAIT to be set.
|
| |
| |
| |
| |
| |
| | |
xgettext is dumb and only looks at file extensions. It has no way to let
you tell it what extension maps to what language on the command line. Thus,
out glade files must be .glade if they are to get translated.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This first fixes a bug where a spoke's apply and execute methods were being run
even when skipTo was set. In this case, we don't usually want apply to be run
because the user needs to do something else first. In particular, skipping from
the dep solving error dialog (still in progress) to the software selection
screen was resulting in problems.
Having fixed that, some spokes do actually need to have apply run even when
skipping. Storage is a prime example of that.
|
|/ |
|
|
|
|
| |
It looks a little silly to have it sitting there and stopped.
|
|
|
|
|
|
|
|
|
| |
If you're on a spoke when all other spokes become ready and complete, the
install will continue automatically when you hit back. If you're on the hub,
the install will continue automatically when all spokes are ready and
complete.
It's a little jarring, but that's just how it's gotta be.
|
|
|
|
|
|
|
| |
It can only be sensitive both if there's no incomplete spokes and no not
ready spokes. By not tracking not ready spokes, it's possible to hit
continue while things are still downloading. This can lead to very bad
situations, and it's only by accident that we've not hit this yet.
|
|
|
|
|
|
|
|
|
| |
This first requires splitting out the chunk that calls execute methods into its
own function, then adding an execute method to spokes, then making sure it gets
called from everywhere. I have also added a way to make sure the execute
methods do not get run when spokes are ready, since at least the storage check
function will set the spoke not ready and then ready again which will lead to
an infinite loop.
|
|
|
|
|
| |
This is a hint that we're still doing something, even if an individual step
takes a long time.
|
| |
|
|
|
|
|
|
| |
This way, it looks highlighted when you come back to the hub just like if
it was selected with the keyboard, and keyboard navigation will start on
the spoke that was just visited.
|
|
|
|
|
|
|
|
|
|
| |
The Queue poll inside the GLib idle state was causing 100% CPU usage, it
was being called multiple times per second. It would be more efficient
to be able to use a select() or poll() with the Queue, but that isn't
possible. So, run the Queue processing in a 1 second timeout. CPU usage
drops to almost nothing.
Also add a call to q.task_done() for unrecognized messages.
|
|
|
|
|
|
| |
Starting off with the "Preparing to install" message makes the pause up front
seem a little less weird, and moving the package installation message around
means there's less pause after the last filesystem is made.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The basic idea is that we skip any standalone spokes that are already filled out
by the input kickstart file, and that we only display the summary hub so that
something's being displayed while background processes work.
Any important spokes not filled out by the input kickstart file will get the
caution icon and the user will have to complete them before continuing. The
message at the bottom of the summary hub explains that.
This behavior leaves open the possibility that the user will be able to visit a
spoke while background processes work. In that case, we want to wait until the
user leaves that spoke before automatically continuing. The alternative is to
move as soon as anaconda is ready, which is really quite jarring.
|
| |
|