]> mj.ucw.cz Git - moe.git/blobdiff - submit/contest
Renamed desktop icons.
[moe.git] / submit / contest
index 29b046e5d8ea5c60e2c11e86c45b1a9c5746dbe8..7d5445663a099bcfd3d0ccc0dbf7d8b1c6170935 100755 (executable)
@@ -258,6 +258,7 @@ sub refresh()
        if (!$conn->is_connected && !$force_refresh) {
                # Retry
                $conn->log("Retrying");
+               $force_refresh = 1;
                refresh();
        }
 }
@@ -270,6 +271,7 @@ my $subwin_vbox;
 my $subwin_label;
 my $bbutton_box;
 my $submitting_label;
+my $text_frame;
 my $status_label;
 my $check_only;
 my $submit_filename;
@@ -315,7 +317,7 @@ sub run_submit() {
 
        if (defined $conn->{"History"}) {
                busy("Submitting locally to " . $conn->{"History"});
-               my $err = $conn->local_submit($task, $part, $submit_extension, $submit_filename);
+               my $err = $conn->write_history($task, $part, $submit_extension, $submit_filename);
                if (defined $err) {
                        submit_failed("Recording to local history failed\n($err)");
                        return;
@@ -372,10 +374,40 @@ sub run_submit() {
        submit_ok();
 }
 
+sub checks_ok() {
+       if ($check_only) {
+               $status_label->set_markup("<span size='large'>Checked successfully</span>");
+               $submitting_label->set_markup("<span size='large'>The task has passed the checks.</span>");
+               finish_submit();
+               return;
+       }
+
+       $status_label->set_markup("<span size='large'>Submitting</span>");
+       $subwin->show_all;
+
+       # Continue when everything is displayed
+       Glib::Idle->add(sub {
+               $window->Gtk2::Gdk::flush;
+               run_submit();
+               return 0;
+       });
+}
+
+sub checks_override() {
+       $submitting_label = Gtk2::Label->new("Please wait...");
+       $subwin_vbox->pack_start_defaults($submitting_label);
+
+       $subwin->window->set_cursor($busy_cursor);
+       $bbutton_box->destroy;
+       $text_frame->destroy;
+       checks_ok();
+}
+
 sub checks_failed($) {
        my ($msg) = @_;
 
        $status_label->set_markup("<span size='large'>Check failed</span>");
+       $submitting_label->destroy;
 
        my $text_buffer = Gtk2::TextBuffer->new;
        $text_buffer->set_text($msg);
@@ -388,34 +420,31 @@ sub checks_failed($) {
        $text_scroll->set_policy("automatic", "automatic");
        $text_scroll->add($text_view);
 
-       my $text_frame = Gtk2::Frame->new("Checker log");
+       $text_frame = Gtk2::Frame->new("Checker log");
        $text_frame->add($text_scroll);
 
-       $submitting_label->destroy;
        $subwin_vbox->pack_start_defaults($text_frame);
 
-       finish_submit();
-}
-
-sub checks_ok() {
-       if ($check_only) {
-               $status_label->set_markup("<span size='large'>Checked successfully</span>");
-               $submitting_label->set_markup("<span size='large'>The task has passed the checks.</span>");
+       if ($check_only || !$conn->{"AllowOverride"}) {
                finish_submit();
                return;
        }
 
-       ### FIXME: Record to local history here
+       my $close_button = Gtk2::Button->new_from_stock('gtk-close');
+       $close_button->signal_connect(clicked => sub { end_submit(1) });
 
-       $status_label->set_markup("<span size='large'>Submitting</span>");
-       $subwin->show_all;
+       my $anyway_button = Gtk2::Button->new('Submit anyway');
+       $anyway_button->signal_connect(clicked => \&checks_override);
 
-       # Continue when everything is displayed
-       Glib::Idle->add(sub {
-               $window->Gtk2::Gdk::flush;
-               run_submit();
-               return 0;
-       });
+       $bbutton_box = Gtk2::HButtonBox->new;
+       $bbutton_box->pack_start_defaults($anyway_button);
+       $bbutton_box->pack_start_defaults($close_button);
+       $bbutton_box->set_border_width(5);
+       $subwin_vbox->pack_start($bbutton_box, 0, 0, 10);
+
+       ready("Ready");
+       $subwin->show_all;
+       $subwin->window->set_cursor(undef);
 }
 
 sub run_checks() {