コード例 #1
0
ファイル: TextViewList.cs プロジェクト: prozum/cas.net
        // Adds command buttons to the widget, allowing it to be moved and removed.
        VBox AddCommandButtons(MovableCasTextView movableCasTextView)
        {
            Button ButtonMoveUp   = new Button("↑");
            Button ButtonMoveDown = new Button("↓");
            Button ButtonDelete   = new Button("X");
            Button ButtonAddNew   = new Button("+");

            VBox vbox = new VBox();

            if (user.privilege == 1 || (user.privilege <= 0 && movableCasTextView.textview.locked == false))
            {
                ButtonMoveUp.Clicked += delegate
                {
                    Move(movableCasTextView.id_, -1);
                };

                ButtonMoveDown.Clicked += delegate
                {
                    Move(movableCasTextView.id_, 1);
                };

                ButtonDelete.Clicked += delegate
                {
                    Delete(movableCasTextView.id_);
                };

                ButtonAddNew.Clicked += delegate
                {
                    AddNew(movableCasTextView);
                };

                HBox    hbox = new HBox();
                Toolbar tb   = new Toolbar();
                hbox.Add(ButtonMoveUp);
                hbox.Add(ButtonMoveDown);
                hbox.Add(ButtonDelete);
                hbox.Add(ButtonAddNew);
                vbox.PackStart(hbox, false, false, 2);
            }
            else if (user.privilege <= 0)
            {
                ButtonAddNew.Clicked += delegate
                {
                    AddNew(movableCasTextView);
                };

                vbox.PackStart(ButtonAddNew, false, false, 2);
            }

            return(vbox);
        }
コード例 #2
0
ファイル: TextViewList.cs プロジェクト: prozum/cas.net
        // Inserts a modified taskgenwidget, made for autogenerated tasks
        public void InsertTaskGenTextView(string TaskString)
        {
            MovableCasTextView movableCasTextView = new MovableCasTextView(TaskString);

            movableCasTextView.textview.LockTextView(true);

            movableCasTextView.Attach(AddLockCheckButton(movableCasTextView), 1, 100, 1, 1);
            movableCasTextView.Attach(AddCommandButtons(movableCasTextView), 100, 1, 1, 1);

            castextviews.Add(movableCasTextView);

            Clear();
            Redraw();
            ShowAll();
        }
コード例 #3
0
ファイル: TextViewList.cs プロジェクト: prozum/cas.net
        // Inserts a textview
        public void InsertTextView(string serializedString, bool locked, int pos)
        {
            MovableCasTextView movableCasTextView = new MovableCasTextView(serializedString, locked);

            movableCasTextView.textview.LockTextView(locked);

            movableCasTextView.Attach(AddLockCheckButton(movableCasTextView), 1, 100, 1, 1);
            movableCasTextView.Attach(AddCommandButtons(movableCasTextView), 100, 1, 1, 1);

            if (pos == -1)
            {
                castextviews.Add(movableCasTextView);
            }
            else
            {
                castextviews.Insert(pos, movableCasTextView);
            }

            Clear();
            Redraw();
            ShowAll();
        }
コード例 #4
0
ファイル: TextViewList.cs プロジェクト: prozum/cas.net
        // Adds a lock button for teachers, so that they can set id the student can edit the content of the widget
        CheckButton AddLockCheckButton(MovableCasTextView movableCasTextView)
        {
            if (user.privilege == 1)
            {
                CheckButton checkbutton = new CheckButton("Lock for students");

                if (movableCasTextView.textview.locked == true)
                {
                    checkbutton.Active = true;
                }

                checkbutton.Toggled += delegate
                {
                    movableCasTextView.textview.locked = !movableCasTextView.textview.locked;
                };

                return(checkbutton);
            }
            else
            {
                return(null);
            }
        }
コード例 #5
0
ファイル: SaveToolButton.cs プロジェクト: prozum/cas.net
        // Run when the button is pressed. Serializes the file, and saves it to the selected file
        public void SaveFile()
        {
            OperatingSystem os  = Environment.OSVersion;
            PlatformID      pid = os.Platform;

            List <MetaType> metaTypeList = new List <MetaType>();

            // Saves each widget in a list, before serializing it all into a single string
            foreach (Widget w in textviews)
            {
                if (w is MovableCasCalcView)
                {
                    MetaType           metaType = new MetaType();
                    MovableCasCalcView calcView = (MovableCasCalcView)w;
                    metaType.type       = typeof(MovableCasCalcView);
                    metaType.metastring = calcView.calcview.input.Text;
                    metaType.locked     = calcView.textview.locked;
                    metaTypeList.Add(metaType);
                }
                else if (w is MovableCasCalcMulitlineView)
                {
                    MetaType metaType = new MetaType();
                    MovableCasCalcMulitlineView calcview = (MovableCasCalcMulitlineView)w;
                    metaType.type       = typeof(MovableCasCalcMulitlineView);
                    metaType.metastring = calcview.calcview.SerializeCasTextView();
                    metaType.locked     = calcview.textview.locked;
                    metaTypeList.Add(metaType);
                }
                else if (w.GetType() == typeof(MovableCasResult))
                {
                    MetaType         metaType = new MetaType();
                    MovableCasResult result   = (MovableCasResult)w;
                    metaType.type       = typeof(MovableCasResult);
                    metaType.metastring = Export.Serialize(result.casresult.facitContainer);
                    metaType.locked     = result.casresult.correct;
                    metaTypeList.Add(metaType);
                }
                else if (w.GetType() == typeof(MovableCasTextView))
                {
                    MetaType           metaType = new MetaType();
                    MovableCasTextView textView = (MovableCasTextView)w;
                    metaType.type       = typeof(MovableCasTextView);
                    metaType.metastring = textView.textview.SerializeCasTextView();
                    metaType.locked     = textView.textview.locked;
                    metaTypeList.Add(metaType);
                }
            }

            string s = ImEx.Export.Serialize(metaTypeList);

            switch (pid)
            {
            case PlatformID.Win32S:
            case PlatformID.Win32Windows:
            case PlatformID.WinCE:
            case PlatformID.Win32NT:     // <- if one, this is the one we really need
            {
                var filechooser = new System.Windows.Forms.SaveFileDialog();

                filechooser.InitialDirectory = "c:\\";
                filechooser.Filter           = "cas files (*.cas)|*.cas";
                filechooser.FilterIndex      = 2;
                filechooser.RestoreDirectory = true;

                if (filechooser.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    System.IO.File.WriteAllText(filechooser.FileName, s);
                }

                break;
            }

            case PlatformID.Unix:
            case PlatformID.MacOSX:
            {
                Object[]          parameters  = { "Cancel", ResponseType.Cancel, "Save", ResponseType.Accept };
                FileChooserDialog filechooser = new FileChooserDialog("Save File...", null, FileChooserAction.Save, parameters);

                filechooser.Filter = new FileFilter();
                filechooser.Filter.AddPattern("*.cas");

                if (filechooser.Run() == (int)ResponseType.Accept)
                {
                    if (filechooser.Filename.ToLower().EndsWith(".cas"))
                    {
                        System.IO.File.WriteAllText(filechooser.Filename, s);
                    }
                    else
                    {
                        System.IO.File.WriteAllText(filechooser.Filename + ".cas", s);
                    }
                }

                filechooser.Destroy();

                break;
            }

            default:
            {
                break;
            }
            }
        }
コード例 #6
0
        // Constructor for teacheraddfeedbackwindow
        public TeacherAddFeedbackWindow(User user, TextViewList textviews, string Filename)
            : base("Add Feedback")
        {
            this.user      = user;
            this.textviews = textviews;
            this.Filename  = Filename;

            SetSizeRequest(300, 300);

            Grid grid = new Grid();

            Label labClass = new Label("Class:");
            Entry entClass = new Entry();

            entClass.Changed += (e, arg) => { className = entClass.Text; };

            Button buttonCancel = new Button("Cancel");

            buttonCancel.Clicked += delegate
            {
                Destroy();
            };

            Button buttonFeedback = new Button("Feedback");

            buttonFeedback.Clicked += delegate
            {
                string          feedbackString = String.Empty;
                List <MetaType> metaTypeList   = new List <MetaType>();

                // Packs the workspace into a single string for easy transfer

                foreach (Widget w in this.textviews)
                {
                    if (w.GetType() == typeof(MovableCasCalcView))
                    {
                        MetaType           metaType = new MetaType();
                        MovableCasCalcView calcView = (MovableCasCalcView)w;
                        metaType.type       = typeof(MovableCasCalcView);
                        metaType.metastring = calcView.calcview.input.Text;
                        metaType.locked     = calcView.textview.locked;
                        metaTypeList.Add(metaType);
                    }
                    else if (w is MovableCasCalcMulitlineView)
                    {
                        MetaType metaType = new MetaType();
                        MovableCasCalcMulitlineView calcview = (MovableCasCalcMulitlineView)w;
                        metaType.type       = typeof(MovableCasCalcMulitlineView);
                        metaType.metastring = calcview.calcview.SerializeCasTextView();
                        metaType.locked     = calcview.textview.locked;
                        metaTypeList.Add(metaType);
                    }
                    else if (w is MovableCasResult)
                    {
                        MetaType         metaType = new MetaType();
                        MovableCasResult casres   = (MovableCasResult)w;
                        metaType.type       = typeof(MovableCasResult);
                        metaType.metastring = Export.Serialize(casres.casresult.facitContainer);
                        metaType.locked     = casres.textview.locked;
                        metaTypeList.Add(metaType);
                    }
                    else if (w.GetType() == typeof(MovableCasTextView))
                    {
                        MetaType           metaType = new MetaType();
                        MovableCasTextView textView = (MovableCasTextView)w;
                        metaType.type       = typeof(MovableCasTextView);
                        metaType.metastring = textView.textview.SerializeCasTextView();
                        metaType.locked     = textView.textview.locked;
                        metaTypeList.Add(metaType);
                    }
                }

                if (metaTypeList.Count != 0 &&
                    string.IsNullOrEmpty(className) == false &&
                    string.IsNullOrEmpty(this.Filename) == false)
                {
                    feedbackString = Export.Serialize(metaTypeList);
                }

                string[] StudentList = this.user.teacher.GetCompletedList(this.Filename, className);

                grid.Destroy();
                grid = new Grid();

                for (int i = 0; i < StudentList.Length / 2; i++)
                {
                    int    j      = 2 * i;
                    Button button = new Button(StudentList[j]);
                    button.Clicked += delegate
                    {
                        this.user.teacher.AddFeedback(feedbackString, this.Filename, StudentList[j], className);

                        MessageDialog ms = new MessageDialog(this, DialogFlags.DestroyWithParent, MessageType.Info, ButtonsType.Close, "Added feedback");
                        ms.Run();
                        ms.Destroy();

                        Destroy();
                    };
                    grid.Attach(button, 1, 1 + i, 1, 1);
                }

                Add(grid);
                ShowAll();
            };

            grid.Attach(labClass, 1, 1, 1, 1);
            grid.Attach(entClass, 2, 1, 1, 1);
            grid.Attach(buttonCancel, 1, 3, 1, 1);
            grid.Attach(buttonFeedback, 2, 3, 1, 1);

            Add(grid);

            ShowAll();
        }
コード例 #7
0
        public StudentAddCompletedWindow(User user, TextViewList textviews, string Filename)
            : base("Upload Completed Assignment")
        {
            this.user      = user;
            this.textviews = textviews;
            this.Filename  = Filename;

            SetDefaultSize(300, 300);

            List <MetaType> metaTypeList = new List <MetaType>();

            // Packs the file into a single string
            foreach (Widget w in this.textviews)
            {
                if (w is MovableCasCalcView)
                {
                    MetaType           metaType = new MetaType();
                    MovableCasCalcView calcView = (MovableCasCalcView)w;
                    metaType.type       = typeof(MovableCasCalcView);
                    metaType.metastring = calcView.calcview.input.Text;
                    metaType.locked     = calcView.textview.locked;
                    metaTypeList.Add(metaType);
                }
                else if (w is MovableCasCalcMulitlineView)
                {
                    MetaType metaType = new MetaType();
                    MovableCasCalcMulitlineView calcview = (MovableCasCalcMulitlineView)w;
                    metaType.type       = typeof(MovableCasCalcMulitlineView);
                    metaType.metastring = calcview.calcview.SerializeCasTextView();
                    metaType.locked     = calcview.textview.locked;
                    metaTypeList.Add(metaType);
                }
                else if (w is MovableCasResult)
                {
                    MetaType         metaType = new MetaType();
                    MovableCasResult casres   = (MovableCasResult)w;
                    metaType.type       = typeof(MovableCasResult);
                    metaType.metastring = Export.Serialize(casres.casresult.facitContainer);
                    metaType.locked     = casres.textview.locked;
                    metaTypeList.Add(metaType);
                }
                else if (w.GetType() == typeof(MovableCasTextView))
                {
                    MetaType           metaType = new MetaType();
                    MovableCasTextView textView = (MovableCasTextView)w;
                    metaType.type       = typeof(MovableCasTextView);
                    metaType.metastring = textView.textview.SerializeCasTextView();
                    metaType.locked     = textView.textview.locked;
                    metaTypeList.Add(metaType);
                }
            }

            if (metaTypeList.Count != 0 && !string.IsNullOrEmpty(this.Filename))
            {
                string serializedString = ImEx.Export.Serialize(metaTypeList);
                this.user.student.AddCompleted(serializedString, this.Filename);

                MessageDialog ms = new MessageDialog(this, DialogFlags.DestroyWithParent, MessageType.Info, ButtonsType.Close, "Upload Successful");
                ms.Run();
                ms.Destroy();
            }
            else
            {
                MessageDialog ms = new MessageDialog(this, DialogFlags.DestroyWithParent, MessageType.Warning, ButtonsType.Close, "Upload failed");
                ms.Run();
                ms.Destroy();
            }


            Destroy();
        }
コード例 #8
0
        public TeacherAddAssignmentWindow(User user, TextViewList textviews)
            : base("Add Assignment")
        {
            this.user      = user;
            this.textviews = textviews;

            SetSizeRequest(300, 300);

            Grid grid = new Grid();

            Entry grad = new Entry();

            grad.WidthRequest = 200;
            Label classLabel = new Label("Class:");

            Entry name = new Entry();

            name.WidthRequest = 200;
            Label nameLabel = new Label("File name:");

            Label warningLabel = new Label();

            Button uploadButton = new Button("Upload");

            uploadButton.Clicked += delegate
            {
                List <MetaType> metaTypeList = new List <MetaType>();

                // Packs the workspace into a single string for easy transfer

                foreach (Widget w in this.textviews)
                {
                    if (w.GetType() == typeof(MovableCasCalcView))
                    {
                        MetaType           metaType = new MetaType();
                        MovableCasCalcView calcView = (MovableCasCalcView)w;
                        metaType.type       = typeof(MovableCasCalcView);
                        metaType.metastring = calcView.calcview.input.Text;
                        metaType.locked     = calcView.textview.locked;
                        metaTypeList.Add(metaType);
                    }
                    else if (w is MovableCasCalcMulitlineView)
                    {
                        MetaType metaType = new MetaType();
                        MovableCasCalcMulitlineView calcview = (MovableCasCalcMulitlineView)w;
                        metaType.type       = typeof(MovableCasCalcMulitlineView);
                        metaType.metastring = calcview.calcview.SerializeCasTextView();
                        metaType.locked     = calcview.textview.locked;
                        metaTypeList.Add(metaType);
                    }
                    else if (w is MovableCasResult)
                    {
                        MetaType         metaType = new MetaType();
                        MovableCasResult casres   = (MovableCasResult)w;
                        metaType.type       = typeof(MovableCasResult);
                        metaType.metastring = Export.Serialize(casres.casresult.facitContainer);
                        metaType.locked     = casres.textview.locked;
                        metaTypeList.Add(metaType);
                    }
                    else if (w.GetType() == typeof(MovableCasTextView))
                    {
                        MetaType           metaType = new MetaType();
                        MovableCasTextView textView = (MovableCasTextView)w;
                        metaType.type       = typeof(MovableCasTextView);
                        metaType.metastring = textView.textview.SerializeCasTextView();
                        metaType.locked     = textView.textview.locked;
                        metaTypeList.Add(metaType);
                    }
                }

                // Sends the file, if there are anything to send
                if (metaTypeList.Count != 0 &&
                    !string.IsNullOrEmpty(name.Text) &&
                    !string.IsNullOrEmpty(grad.Text))
                {
                    string Assignment = Export.Serialize(metaTypeList);
                    this.user.teacher.AddAssignment(Assignment, name.Text, grad.Text);

                    MessageDialog ms = new MessageDialog(this, DialogFlags.DestroyWithParent, MessageType.Info, ButtonsType.Close, "Added assignment");
                    ms.Run();
                    ms.Destroy();

                    Destroy();
                }
                else
                {
                    warningLabel.Text = "Warning, upload invalid";
                }
            };

            Button cancelButton = new Button("Cancel");

            cancelButton.Clicked += delegate
            {
                Destroy();
            };

            grid.Attach(nameLabel, 1, 1, 1, 1);
            grid.Attach(name, 2, 1, 1, 1);
            grid.Attach(classLabel, 1, 2, 1, 1);
            grid.Attach(grad, 2, 2, 1, 1);
            grid.Attach(warningLabel, 1, 3, 2, 1);
            grid.Attach(uploadButton, 2, 4, 1, 1);
            grid.Attach(cancelButton, 1, 4, 1, 1);

            Add(grid);
            ShowAll();
        }