156 |
Gtk::ProgressBar progressBar; |
Gtk::ProgressBar progressBar; |
157 |
}; |
}; |
158 |
|
|
159 |
class Loader : public sigc::trackable { |
class LoaderSaverBase { |
160 |
public: |
public: |
|
Loader(const char* filename); |
|
161 |
void launch(); |
void launch(); |
162 |
Glib::Dispatcher& signal_progress(); |
Glib::Dispatcher& signal_progress(); |
163 |
Glib::Dispatcher& signal_finished(); ///< Finished successfully, without error. |
Glib::Dispatcher& signal_finished(); ///< Finished successfully, without error. |
168 |
Glib::ustring error_message; |
Glib::ustring error_message; |
169 |
gig::File* gig; |
gig::File* gig; |
170 |
|
|
171 |
|
protected: |
172 |
|
LoaderSaverBase(const Glib::ustring filename, gig::File* gig); |
173 |
|
|
174 |
private: |
private: |
175 |
Glib::Threads::Thread* thread; |
Glib::Threads::Thread* thread; |
176 |
void thread_function(); |
void thread_function(); |
177 |
|
virtual void thread_function_sub(gig::progress_t& progress) = 0; |
178 |
Glib::Dispatcher finished_dispatcher; |
Glib::Dispatcher finished_dispatcher; |
179 |
Glib::Dispatcher progress_dispatcher; |
Glib::Dispatcher progress_dispatcher; |
180 |
Glib::Dispatcher error_dispatcher; |
Glib::Dispatcher error_dispatcher; |
182 |
float progress; |
float progress; |
183 |
}; |
}; |
184 |
|
|
185 |
class Saver : public sigc::trackable { |
class Loader : public LoaderSaverBase { |
186 |
|
public: |
187 |
|
Loader(const char* filename); |
188 |
|
|
189 |
|
private: |
190 |
|
void thread_function_sub(gig::progress_t& progress); |
191 |
|
}; |
192 |
|
|
193 |
|
class Saver : public LoaderSaverBase { |
194 |
public: |
public: |
195 |
Saver(gig::File* file, Glib::ustring filename = ""); ///< one argument means "save", two arguments means "save as" |
Saver(gig::File* file, Glib::ustring filename = ""); ///< one argument means "save", two arguments means "save as" |
|
void launch(); |
|
|
Glib::Dispatcher& signal_progress(); |
|
|
Glib::Dispatcher& signal_finished(); ///< Finished successfully, without error. |
|
|
Glib::Dispatcher& signal_error(); |
|
|
void progress_callback(float fraction); |
|
|
float get_progress(); |
|
|
gig::File* gig; |
|
|
const Glib::ustring filename; |
|
|
Glib::ustring error_message; |
|
196 |
|
|
197 |
private: |
private: |
198 |
Glib::Threads::Thread* thread; |
void thread_function_sub(gig::progress_t& progress); |
|
void thread_function(); |
|
|
Glib::Dispatcher finished_dispatcher; |
|
|
Glib::Dispatcher progress_dispatcher; |
|
|
Glib::Dispatcher error_dispatcher; |
|
|
Glib::Threads::Mutex progressMutex; |
|
|
float progress; |
|
199 |
}; |
}; |
200 |
|
|
201 |
class MainWindow : public ManagedWindow { |
class MainWindow : public ManagedWindow { |