| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
|
|
|
|
| |
Live environments have their own way of rebooting, and anaconda doesn't need
to interfere with that.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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.
|
|
|
|
|
| |
- 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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
It looks a little silly to have it sitting there and stopped.
|
|
|
|
|
| |
This is a hint that we're still doing something, even if an individual step
takes a long time.
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
| |
It will automatically cycle the image every 60 seconds. Similarly to how
it all used to work, we will check for images in directories both containing
a language-specific component and not.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
With the previous code, I could never get the UI to be redrawn to reflect the
changes, even though the changes appeared to have taken effect.
This new code instead uses a message queue for communication between the thread
doing all the hard work and the main thread that handles GTK stuff. The storage
code will shove messages into that queue when it does something like create a
filesystem, and the main thread watches in the idle loop for messages.
I've also provided yet another context manager to make all this code simpler.
|
|
|
|
|
|
|
| |
First, it means we can move the special run behavior into the run method
directly instead of the roundabout way it was being done. Second, it
provides a place to make sure the thread gets removed from the threadMgr's
list when it terminates.
|
|
|
|
|
| |
Otherwise, small int/bigger int = 0, which means the progress bar will always
be stuck.
|
|
|
|
|
|
|
| |
There's nothing particularly clever about this. It just calls the ksdata
execute methods linearly, makes partitions, and installs packages. Error
handling is not yet in good shape and neither is progress reporting.
However, an autopart setup will actually make partitions.
|
|
|
|
|
|
|
| |
We need to be able to update the progress bar and the message independently.
The message should be updated when an action begins so you know what's
taking so long, and the progress bar should be updated when an action ends
so you know how far you are through now.
|
|
|
|
|
|
| |
We're going to need to do this for the advanced partitioning stuff anyway,
and now it looks like we'll need a Storage to do a reset on the base repo
when it's changed in the source spoke. Might as well make the change now.
|
|
|
|
|
|
|
|
|
|
|
| |
Once again, we're doing something in a pattern:
Gdk.threads_enter()
do something
Gdk.threads_leave()
This is another perfect example of the sort of thing the context manager can
really help clean up.
|
| |
|
| |
|
|
|
|
|
|
|
| |
It consists of a very basic ProgressReporter class and singleton that serves
as a wrapper around the UI implementation so anaconda doesn't need to know
what kind of interface is running, and then a couple methods in the existing
GUI progress bar class to set things up.
|
|
|
|
|
| |
I think that's a better description of what the method actually does. Hopefully
I'll be able to keep everything straight.
|
|
Of course, right now there is no progress to report on so all you can do is
reboot. But, it's a start.
|