示例#1
0
        void removeRow()
        {
            Console.WriteLine("in removeRow");
            try {
//				if(arg != null){
                var model = RequestTreeView.Model;
//					Console.WriteLine ("in removeRow 2");
//					TreeIter iter;
//					Console.WriteLine ("in removeRow 3");
//					model.GetIter (out iter, arg.Path);
                var title     = model.GetValue(currIter, 0);
                var body      = model.GetValue(currIter, 1);
                var user      = model.GetValue(currIter, 2);
                var createdAt = model.GetValue(currIter, 3);
                var status    = model.GetValue(currIter, 4);
                var number    = model.GetValue(currIter, 5);
                Console.WriteLine("Title: " + title + "\nNumber: " + number + "\nUser: "******"\nCreated: " + createdAt + "\n\nComments:\n\n" + body);
                requestListStore.Remove(ref currIter);
                Console.WriteLine("in removeRow 5");
                textview1.Buffer.Text = "";
//				}
            } catch (Exception ex) {
                Console.WriteLine(ex);
            }
        }
示例#2
0
        protected virtual void OnBtnDeleteFilterClicked(object sender, System.EventArgs e)
        {
            TreeSelection ts = tvFilter.Selection;

            TreeIter ti = new TreeIter();

            ts.GetSelected(out ti);

            TreePath[] tp = ts.GetSelectedRows();
            if (tp.Length < 1)
            {
                return;
            }

            LogicalSystem cd = (LogicalSystem)tvFilter.Model.GetValue(ti, 1);

            if (cd == null)
            {
                return;
            }

            MessageDialogs md     = new MessageDialogs(MessageDialogs.DialogButtonType.YesNo, MainClass.Languages.Translate("delete_filter", cd.Display), "", Gtk.MessageType.Question, parentWindow);
            int            result = md.ShowDialog();

            if (result != (int)Gtk.ResponseType.Yes)
            {
                return;
            }

            conditions.Remove(cd);
            maskStore.Clear();
            filterStore.Remove(ref ti);
        }
示例#3
0
        protected void OnBtnDeleteClicked(object sender, EventArgs e)
        {
            MessageDialogs md     = new MessageDialogs(MessageDialogs.DialogButtonType.YesNo, MainClass.Languages.Translate("are_you_sure"), "", Gtk.MessageType.Question, parentWindow);
            int            result = md.ShowDialog();

            if (result != (int)Gtk.ResponseType.Yes)
            {
                return;
            }

            TreeSelection ts = tvExtension.Selection;

            TreeIter ti = new TreeIter();

            ts.GetSelected(out ti);

            TreePath[] tp = ts.GetSelectedRows();
            if (tp.Length < 1)
            {
                return;
            }

            MainClass.Settings.ExtensionList.Remove(selectedExtensionSetting);
            resolStore.Remove(ref ti);
            tvExtension.Selection.SelectPath(new TreePath("0"));
        }
示例#4
0
        protected virtual void OnBtnDeleteFieldClicked(object sender, System.EventArgs e)
        {
            TreeSelection ts = tvFields.Selection;

            TreeIter ti = new TreeIter();

            ts.GetSelected(out ti);

            TreePath[] tp = ts.GetSelectedRows();
            if (tp.Length < 1)
            {
                return;
            }

            FieldTable cd = (FieldTable)tvFields.Model.GetValue(ti, 2);

            if (cd == null)
            {
                return;
            }

            MessageDialogs md     = new MessageDialogs(MessageDialogs.DialogButtonType.YesNo, MainClass.Languages.Translate("delete_field", cd.Name), "", Gtk.MessageType.Question, this);
            int            result = md.ShowDialog();

            if (result != (int)Gtk.ResponseType.Yes)
            {
                return;
            }

            fields.Remove(cd);
            fieldsStore.Remove(ref ti);
        }
示例#5
0
        private void manager_FileTransferRemoved(object sender, FileTransferEventArgs e)
        {
            try {
                // Remove transfer from list
                Gtk.TreeIter iter;
                transferListStore.GetIterFirst(out iter);
                if (transferListStore.IterIsValid(iter))
                {
                    do
                    {
                        IFileTransfer currentItem = (IFileTransfer)transferListStore.GetValue(iter, 0);
                        if (currentItem == e.Transfer)
                        {
                            transferListStore.Remove(ref iter);
                            return;
                        }
                    }  while (transferListStore.IterNext(ref iter));
                }

                Gui.MainWindow.RefreshCounts();
            } catch (Exception ex) {
                Core.LoggingService.LogError(ex);
                Gui.ShowErrorDialog(ex.ToString(), Gui.MainWindow.Window);
            }
        }
示例#6
0
 private void on_item_removed(object Sender, ListRemoveEventArgs args)
 {
     //sterge din store iterul
     Gtk.TreeIter iter;
     this.Model.GetIterFromString(out iter, args.Index.ToString());
     store.Remove(ref iter);
     this.QueueDraw();
 }
        protected void OnTreeviewPatternsCursorChanged(object sender, EventArgs e)
        {
            TreeModel model;
            TreeIter  iter;

            if ((sender as TreeView).Selection.GetSelected(out model, out iter))
            {
                SelectedPattern = (Pattern)model.GetValue(iter, PatternColumn);

                if (ignoreNextClick)
                {
                    ignoreNextClick = false;
                    return;
                }

                TreePath       path;
                TreeViewColumn column;
                (sender as TreeView).GetCursor(out path, out column);

                if (column == (sender as TreeView).Columns[4]) //Delete clicked
                {
                    if (MainWindow.ConfirmDelete())
                    {
                        ignoreNextClick = true;
                        PatternListStore.Remove(ref iter);
                        DataModel.Patterns.Remove(SelectedPattern);
                        SelectedPattern = null;
                    }
                }
                else if (column == (sender as TreeView).Columns[3]) //Copy clicked
                {
                    Pattern pattern = new Pattern();
                    pattern.Assign(SelectedPattern);
                    pattern.Name = DataModel.GetPatternName(SelectedPattern.Name, 2);

                    if (EditPatternDialog.ShowForm(pattern, DataModel, "Copy Pattern " + SelectedPattern.Name))
                    {
                        AddPattern(pattern);
                    }
                }
                else if (column == (sender as TreeView).Columns[2]) //Edit clicked
                {
                    EditPatternDialog.ShowForm(SelectedPattern, DataModel, "Edit Pattern");
                }
                else if (column == (sender as TreeView).Columns[0]) //Play clicked
                {
                    if (SelectedPattern == PlayingPattern)
                    {
                        StopPattern();
                    }
                    else
                    {
                        PlayPattern(SelectedPattern);
                        model.SetValue(iter, 0, "icon-dark-stop");
                    }
                }
            }
        }
示例#8
0
        protected virtual void OnBtnDeleteCond1Clicked(object sender, System.EventArgs e)
        {
            if (!MainClass.LicencesSystem.CheckFunction("conditions", parentWindow))
            {
                return;
            }

            TreeSelection ts = tvConditions.Selection;

            TreeIter ti = new TreeIter();

            ts.GetSelected(out ti);

            TreePath[] tp = ts.GetSelectedRows();
            if (tp.Length < 1)
            {
                return;
            }
            Condition cd = (Condition)tvConditions.Model.GetValue(ti, 2);

            if (cd == null)
            {
                return;
            }

            TreeSelection tsR = tvRules.Selection;
            TreeIter      tiR = new TreeIter();

            tsR.GetSelected(out tiR);

            TreePath[] tpR = tsR.GetSelectedRows();
            if (tpR.Length < 1)
            {
                return;
            }

            Rule rl = (Rule)tvRules.Model.GetValue(tiR, 2);

            if (rl == null)
            {
                return;
            }


            MessageDialogs md     = new MessageDialogs(MessageDialogs.DialogButtonType.YesNo, MainClass.Languages.Translate("delete_rule", rl.Name), "", Gtk.MessageType.Question, parentWindow);
            int            result = md.ShowDialog();

            if (result != (int)Gtk.ResponseType.Yes)
            {
                return;
            }
            ruleStore.Remove(ref tiR);

            Condition cd2 = conditions.Find(x => x.Id == cd.Id);

            cd2.Rules.Remove(rl);
            conditionStore.SetValues(ti, cd2.Id, cd2.Name, cd2);
        }
示例#9
0
 protected void OnRemove(object se, EventArgs args)
 {
     Gtk.TreeIter  iter;
     Gtk.TreeModel model;
     if (libraryList.Selection.GetSelected(out model, out iter))
     {
         string s = (string)store.GetValue(iter, 0);
         store.Remove(ref iter);
         SteticMain.SteticApp.RemoveWidgetLibrary(s);
     }
 }
示例#10
0
 void RemoveJob(JobInfo job)
 {
     lock (listStore)
     {
         TreeIter iter = FindJob(job);
         if (!iter.Equals(TreeIter.Zero))
         {
             listStore.Remove(ref iter);
         }
     }
 }
示例#11
0
        private void on_removeSharedFolderButton_clicked(object o, EventArgs args)
        {
            TreeModel model;
            TreeIter  iter;

            sharedFoldersList.Selection.GetSelected(out model, out iter);
            if (sharedFoldersListStore.IterIsValid(iter))
            {
                sharedFoldersListStore.Remove(ref iter);
            }
        }
 public static void ClearData()
 {
     Gtk.TreeIter Iter = new Gtk.TreeIter();
     if (MusicListStore.GetIterFirst(out Iter))
     {
         do
         {
             MusicListStore.Remove(ref Iter);
         } while (MusicListStore.IterIsValid(Iter));
     }
 }
示例#13
0
        protected virtual void OnBtnDeleteMaskClicked(object sender, System.EventArgs e)
        {
            TreeSelection ts = tvFilter.Selection;

            TreeIter ti = new TreeIter();

            ts.GetSelected(out ti);

            TreePath[] tp = ts.GetSelectedRows();
            if (tp.Length < 1)
            {
                return;
            }
            LogicalSystem cd = (LogicalSystem)tvFilter.Model.GetValue(ti, 1);

            if (cd == null)
            {
                return;
            }

            TreeSelection tsR = tvMask.Selection;
            TreeIter      tiR = new TreeIter();

            tsR.GetSelected(out tiR);

            TreePath[] tpR = tsR.GetSelectedRows();
            if (tpR.Length < 1)
            {
                return;
            }

            string rl = (string)tvMask.Model.GetValue(tiR, 0);

            if (String.IsNullOrEmpty(rl))
            {
                return;
            }


            MessageDialogs md     = new MessageDialogs(MessageDialogs.DialogButtonType.YesNo, MainClass.Languages.Translate("delete_mask", rl), "", Gtk.MessageType.Question, parentWindow);
            int            result = md.ShowDialog();

            if (result != (int)Gtk.ResponseType.Yes)
            {
                return;
            }
            maskStore.Remove(ref tiR);

            LogicalSystem cd2 = conditions.Find(x => x.Display.ToUpper() == cd.Display.ToUpper());

            cd2.Mask.Remove(rl);
            filterStore.SetValues(ti, cd2.Display, cd2);
        }
示例#14
0
        public void RemoveSelectedRow()
        {
            Gtk.TreeIter iter = new Gtk.TreeIter();

            store.GetIterFirst(out iter);
            if (tree.Selection.IterIsSelected(iter))
            {
                store.Remove(ref iter);
                return;
            }

            while (store.IterNext(ref iter))
            {
                if (tree.Selection.IterIsSelected(iter))
                {
                    store.Remove(ref iter);
                    break;
                }
            }
            return;
        }
示例#15
0
    protected void RemoveStream(object sender, EventArgs e)
    {
        TreeIter  iter;
        TreeModel model;

        if (streamList.Selection.GetSelected(out model, out iter))
        {
            streamListStore.Remove(ref iter);
        }

        // Save to list file
        SaveList(streamListStore, Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData).ToString() + "/gLiveStreamer/");
    }
示例#16
0
        // <summary>
        // This will remove the tag from every note that is currently tagged
        // and from the main list of tags.
        // </summary>
        public static void RemoveTag(Tag tag)
        {
            if (tag == null)
            {
                throw new ArgumentNullException("TagManager.RemoveTag () called with a null tag");
            }

            if (tag.IsProperty || tag.IsSystem)
            {
                lock (locker) {
                    internal_tags.Remove(tag.NormalizedName);
                }
            }
            bool tag_removed = false;

            if (tag_map.ContainsKey(tag.NormalizedName))
            {
                lock (locker) {
                    if (tag_map.ContainsKey(tag.NormalizedName))
                    {
                        Gtk.TreeIter iter = tag_map [tag.NormalizedName];
                        if (!tags.Remove(ref iter))
                        {
                            Logger.Debug("TagManager: Removed tag: {0}", tag.NormalizedName);
                        }
                        else
                        {
                            // FIXME: For some really weird reason, this block actually gets called sometimes!
                            Logger.Warn("TagManager: Call to remove tag from ListStore failed: {0}", tag.NormalizedName);
                        }

                        tag_map.Remove(tag.NormalizedName);
                        Logger.Debug("Removed TreeIter from tag_map: {0}", tag.NormalizedName);
                        tag_removed = true;

                        foreach (Note note in tag.Notes)
                        {
                            note.RemoveTag(tag);
                        }
                    }
                }
            }

            if (tag_removed && TagRemoved != null)
            {
                TagRemoved(tag.NormalizedName);
            }
        }
示例#17
0
 protected void OnRemoveResource(object ob, EventArgs args)
 {
     Gtk.TreeIter  iter;
     Gtk.TreeModel model;
     if (resourceList.Selection.GetSelected(out model, out iter))
     {
         string            res = (string)resourceListStore.GetValue(iter, 2);
         Gtk.MessageDialog msg = new Gtk.MessageDialog(dialog, DialogFlags.Modal, MessageType.Question, ButtonsType.YesNo, "Are you sure you want to delete the resource '{0}'?", res);
         if (msg.Run() == (int)ResponseType.Yes)
         {
             resourceProvider.RemoveResource(res);
             resourceListStore.Remove(ref iter);
         }
         msg.Destroy();
     }
 }
        protected virtual void RemoveActivated(object sender, System.EventArgs e)
        {
            TreeIter iter;

            if (targetView.Selection.GetSelected(out iter))
            {
                WebDeployTarget targetToRemove = (WebDeployTarget)targetList.GetValue(iter, LISTCOL_TARGET);
                localCollection.Remove(targetToRemove);
                targetList.Remove(ref iter);
            }

            if (targetList.IterIsValid(iter) || (localCollection.Count > 0 && targetList.IterNthChild(out iter, localCollection.Count - 1)))
            {
                targetView.Selection.SelectIter(iter);
            }
        }
示例#19
0
        protected void OnBtnRemoveCompilerClicked(object sender, System.EventArgs e)
        {
            Gtk.TreeIter iter;
            if (cmbCompilers.GetActiveIter(out iter))
            {
                Gtk.TreeIter iter2 = iter;
                compilerStore.Remove(ref iter2);

                if (compilerStore.IterNext(ref iter) || compilerStore.GetIterFirst(out iter))
                {
                    cmbCompilers.SetActiveIter(iter);
                }
                else
                {
                    Load(null);
                }
            }
        }
示例#20
0
        /// <summary>
        /// Event Handler for Remove Button Clicked
        /// </summary>
        public void OnRemoveButtonClicked(object o, EventArgs args)
        {
            TreeModel tModel;
            Queue     iterQueue;

            iterQueue = new Queue();
            TreeSelection tSelect   = SelTreeView.Selection;
            Array         treePaths = tSelect.GetSelectedRows(out tModel);

            // remove compiler warning
            if (tModel != null)
            {
                tModel = null;
            }

            // We can't remove anything while getting the iters
            // because it will change the paths and we'll remove
            // the wrong stuff.
            foreach (TreePath tPath in treePaths)
            {
                TreeIter iter;

                if (SelTreeStore.GetIter(out iter, tPath))
                {
                    iterQueue.Enqueue(iter);
                }
            }

            // Now that we have all of the TreeIters, loop and
            // remove them all
            while (iterQueue.Count > 0)
            {
                TreeIter   iter   = (TreeIter)iterQueue.Dequeue();
                MemberInfo member =
                    (MemberInfo)SelTreeStore.GetValue(iter, 0);
                selectedUsers.Remove(member.UserID);
                SelTreeStore.Remove(ref iter);
            }

            if (SelTreeStore.IterNChildren() == 0)
            {
                SetResponseSensitive(ResponseType.Ok, false);
            }
        }
示例#21
0
        private void StoreSearch(string query)
        {
            Gtk.TreeIter iter;

            if (history.GetIterFirst(out iter))
            {
                string val;

                do
                {
                    val = (string)history.GetValue(iter, 0);

                    if (val == query)
                    {
                        history.Remove(ref iter);
                    }
                } while (val != query && history.IterNext(ref iter));
            }

            iter = history.Insert(0);
            history.SetValue(iter, 0, query);
        }
示例#22
0
        protected void OnBtnDeleteRuleClicked(object sender, System.EventArgs e)
        {
            TreeSelection ts = tvResolution.Selection;

            TreeIter ti = new TreeIter();

            ts.GetSelected(out ti);

            TreePath[] tp = ts.GetSelectedRows();
            if (tp.Length < 1)
            {
                return;
            }

            Rule cd = (Rule)tvResolution.Model.GetValue(ti, 3);

            if (cd == null)
            {
                return;
            }

            if (cd.Id == -1)
            {
                MessageDialogs mdError = new MessageDialogs(MessageDialogs.DialogButtonType.Ok, MainClass.Languages.Translate("delete_resolution_system"), "", Gtk.MessageType.Error, parentWindow);
                mdError.ShowDialog();
                return;
            }

            MessageDialogs md     = new MessageDialogs(MessageDialogs.DialogButtonType.YesNo, MainClass.Languages.Translate("delete_resolution", cd.Name), "", Gtk.MessageType.Question, parentWindow);
            int            result = md.ShowDialog();

            if (result != (int)Gtk.ResponseType.Yes)
            {
                return;
            }

            MainClass.Settings.Resolution.Rules.Remove(cd);
            resolStore.Remove(ref ti);
        }
示例#23
0
        protected virtual void OnBtnRemoveClicked(object sender, System.EventArgs e)
        {
            TreeSelection ts = tvFiles.Selection;

            TreeIter ti = new TreeIter();

            ts.GetSelected(out ti);

            TreePath[] tp = ts.GetSelectedRows();
            if (tp.Length < 1)
            {
                return;
            }

            EmulatorDisplay dd = (EmulatorDisplay)tvFiles.Model.GetValue(ti, 2);


            MessageDialogs md     = new MessageDialogs(MessageDialogs.DialogButtonType.YesNo, MainClass.Languages.Translate("question_delete_file", dd.FilePath), "", Gtk.MessageType.Question, parentWindow);
            int            result = md.ShowDialog();

            if (result != (int)Gtk.ResponseType.Yes)
            {
                return;
            }

            if (!System.IO.File.Exists(dd.FilePath))
            {
                return;
            }

            try {
                //fileListStore
                fileListStore.SetValue(ti, 2, null);
                fileListStore.Remove(ref ti);
                System.IO.File.Delete(dd.FilePath);
            } catch {
                return;
            }
        }
示例#24
0
    void HandleTreeview2KeyPressEvent(object o, KeyPressEventArgs args)
    {
        Gtk.TreeSelection selection = (o as Gtk.TreeView).Selection;
        Gtk.TreeIter      iter;
        Gtk.TreeModel     model;

        if (selection.GetSelected(out model, out iter))
        {
            userLine line = (userLine)model.GetValue(iter, 0);
            if (args.Event.HardwareKeycode == 119)            // DEL
            {
                Console.WriteLine("Removing " + line.m_name);
                user_lines.Remove((userLine)model.GetValue(iter, 0));
                treeview_lines_store.Remove(ref iter);
            }
        }
        if (args.Event.HardwareKeycode == 57)        // n
        {
            userLine line = new userLine("", false, "", "", user_lines.Count + 1, false, 0);
            treeview_lines_store.AppendValues(line);
            user_lines.Add(line);
        }
    }
		void MoveItem (TreeView sourceList, ListStore sourceStore, TreeView targetList, ListStore targetStore)
		{
			TreeModel model;
			TreeIter iter;
			
			if (sourceList.Selection.GetSelected (out model, out iter)) {
				TreeIter newiter = targetStore.AppendValues (sourceStore.GetValue (iter, 0), sourceStore.GetValue (iter, 1));
				targetList.Selection.SelectIter (newiter);
				
				TreeIter oldIter = iter;
				if (sourceStore.IterNext (ref iter))
					sourceList.Selection.SelectIter (iter);
				sourceStore.Remove (ref oldIter);
			}
		}
        protected void OnTreeviewEventsCursorChanged(object sender, EventArgs e)
        {
            if (ignoreNexClick)
            {
                ignoreNexClick = false;
                return;
            }

            TreeModel model;
            TreeIter  iter;

            TreeSelection selection = (sender as TreeView).Selection;

            if (selection.GetSelected(out model, out iter))
            {
                SelectedNotification = (CustomNotification)model.GetValue(iter, 0);

                TreePath       path;
                TreeViewColumn column;
                (sender as TreeView).GetCursor(out path, out column);

                if (column == (sender as TreeView).Columns[DeleteColumnIndex]) //Delete clicked
                {
                    if (MainWindow.ConfirmDelete())
                    {
                        ignoreNexClick = true;
                        DataModel.Notifications.Remove(SelectedNotification);
                        NotificationListStore.Remove(ref iter);
                        DataModel.Save();
                    }
                }
                else if (column == (sender as TreeView).Columns[DeleteColumnIndex - 1]) //Copy clicked
                {
                    if (SelectedNotification.IsUnique())
                    {
                        MessageBox.Show(ParentForm, String.Format("Only one {0} notification can be used", SelectedNotification.GetTypeName()), MessageType.Error);
                        return;
                    }

                    CustomNotification notification = SelectedNotification.Copy();
                    notification.Name = DataModel.GetNotificationName(SelectedNotification.Name, 2);

                    if (EditNotification(notification, "Copy Notification"))
                    {
                        NotificationListStore.AppendValues(notification, "icon-dark-pencil-square-o", "icon-dark-clone", "icon-dark-trash", NotificationRegistry.FindIcon(notification.GetType()));
                        DataModel.Notifications.Add(notification);
                        ignoreNexClick = true;
                        SelectNotificationInTree(notification);
                    }
                }
                else if (column == (sender as TreeView).Columns[DeleteColumnIndex - 2]) //Edit clicked
                {
                    EditNotification();
                }
                else if (column == (sender as TreeView).Columns[0]) //Enabled-Disabled clicked
                {
                    SelectedNotification.Enabled = !SelectedNotification.Enabled;
                    DataModel.Save();
                    DataModel.Notifications.NotifyUpdate(SelectedNotification);
                }
            }
        }
示例#27
0
        /// <summary>
        /// Event Handler for Rename Event Handler
        /// </summary>
        protected void RenameFileHandler(object o, EventArgs args)
        {
            string newFileName = nameConflictEntry.Text;

            TreeModel      tModel;
            ConflictHolder ch = null;

            TreeSelection tSelect = ConflictTreeView.Selection;

            if (tSelect.CountSelectedRows() == 1)
            {
                Array    treePaths = tSelect.GetSelectedRows(out tModel);
                TreeIter iter;
                if (ConflictTreeStore.GetIter(out iter, (TreePath)treePaths.GetValue(0)))
                {
                    ch = (ConflictHolder)tModel.GetValue(iter, 0);
                    Conflict lnc = ch.LocalNameConflict;
                    Conflict snc = ch.ServerNameConflict;

                    try
                    {
                        if (snc != null && ifolder.CurrentUserRights == "ReadOnly")
                        {
                            ifws.RenameAndResolveConflict(snc.iFolderID,
                                                          snc.ConflictID,
                                                          newFileName);
                        }
                        else
                        {
                            if (lnc != null)
                            {
                                //server file rename is not certified so we are not allowing the local file renamed to same name
                                // this is a work around later we will fix the sever rename as well
                                if (newFileName == oldFileName)
                                {
                                    iFolderMsgDialog dg = new iFolderMsgDialog(
                                        this,
                                        iFolderMsgDialog.DialogType.Error,
                                        iFolderMsgDialog.ButtonSet.Ok,
                                        "",
                                        Util.GS("Name Already Exists"),
                                        Util.GS("The specified name already exists.  Please choose a different name."),
                                        null);
                                    dg.Run();
                                    dg.Hide();
                                    dg.Destroy();
                                    return;
                                }
                                Conflict[] conflictList = ifws.GetiFolderConflicts(lnc.iFolderID);

                                ifws.ResolveNameConflict(lnc.iFolderID, lnc.ConflictID, newFileName);

                                foreach (Conflict con in conflictList)
                                {
                                    if (con.IsNameConflict && con.ServerName != null)
                                    {
                                        if (String.Compare(lnc.LocalFullPath, con.ServerFullPath, true) == 0)
                                        {
                                            if (ifolder.CurrentUserRights == "ReadOnly")
                                            {
                                                ifws.RenameAndResolveConflict(con.iFolderID, con.ConflictID, con.ServerName);
                                                break;
                                            }
                                            else
                                            {
                                                ifws.ResolveNameConflict(con.iFolderID, con.ConflictID, con.ServerName);
                                                break;
                                            }
                                        }
                                    }
                                }
                                ifws.SynciFolderNow(lnc.iFolderID);
                            }
                            // If this is a name conflict because of case-sensitivity
                            // on Linux, there won't be a conflict on the server.
                            if (snc != null)
                            {
                                //server file rename is not certified so we are not allowing the server file rename, rather rename to the same name
                                // this is a work around later we will fix the sever rename as well
                                if (newFileName != oldFileName)
                                {
                                    iFolderMsgDialog dg = new iFolderMsgDialog(
                                        this,
                                        iFolderMsgDialog.DialogType.Error,
                                        iFolderMsgDialog.ButtonSet.Ok,
                                        "",
                                        Util.GS("Name Already Exists"),
                                        Util.GS("The specified name already exists.  Please choose a different name."),
                                        null);
                                    dg.Run();
                                    dg.Hide();
                                    dg.Destroy();
                                    return;
                                }

                                ifws.ResolveNameConflict(snc.iFolderID,
                                                         snc.ConflictID,
                                                         ch.Name);
                            }
                        }

                        ConflictTreeStore.Remove(ref iter);
                    }
                    catch (Exception e)
                    {
                        bool   bKnownError = true;
                        string headerText  = Util.GS("iFolder Conflict Error");
                        string errText     = Util.GS("An error was encountered while resolving the conflict.");

                        if (e.Message.IndexOf("Malformed") >= 0)
                        {
                            headerText = Util.GS("Invalid Characters in Name");
                            errText    = string.Format(Util.GS("The specified name contains invalid characters.  Please choose a different name and try again.\n\nNames must not contain any of these characters: {0}"),
                                                       simws.GetInvalidSyncFilenameChars());
                        }
                        else if (e.Message.IndexOf("already exists") >= 0)
                        {
                            headerText = Util.GS("Name Already Exists");
                            errText    = Util.GS("The specified name already exists.  Please choose a different name.");
                        }
                        else
                        {
                            //bKnownError = false;
                        }

                        iFolderMsgDialog dg = new iFolderMsgDialog(
                            this,
                            iFolderMsgDialog.DialogType.Error,
                            iFolderMsgDialog.ButtonSet.Ok,
                            "",
                            headerText,
                            errText,
                            bKnownError ? null : e.Message);
                        dg.Run();
                        dg.Hide();
                        dg.Destroy();

                        tSelect.SelectIter(iter);

                        // FIXME: Figure out why if the user clicks the "Save" button the focus doesn't return back to the entry text box.  (i.e., the next line of code isn't really doing anything)
                        this.FocusChild = nameConflictEntry;
                        return;
                    }

                    UpdateFields(null, false);
                }
            }
        }
		public override void LaunchDialogue ()
		{
			//the Type in the collection
			IList collection = (IList) Value;
			string displayName = Property.DisplayName;

			//populate list with existing items
			ListStore itemStore = new ListStore (typeof (object), typeof (int), typeof (string));
			for (int i=0; i<collection.Count; i++)
				itemStore.AppendValues(collection [i], i, collection [i].ToString ());

			#region Building Dialogue
			
			TreeView itemTree;
			PropertyGrid grid;
			TreeIter previousIter = TreeIter.Zero;

			//dialogue and buttons
			Dialog dialog = new Dialog () {
				Title = displayName + " Editor",
				Modal = true,
				AllowGrow = true,
				AllowShrink = true,
			};
			var toplevel = this.Container.Toplevel as Window;
			if (toplevel != null)
				dialog.TransientFor = toplevel;
			
			dialog.AddActionWidget (new Button (Stock.Cancel), ResponseType.Cancel);
			dialog.AddActionWidget (new Button (Stock.Ok), ResponseType.Ok);
			
			//three columns for items, sorting, PropGrid
			HBox hBox = new HBox ();
			dialog.VBox.PackStart (hBox, true, true, 5);

			//propGrid at end
			grid = new PropertyGrid (base.EditorManager) {
				CurrentObject = null,
				WidthRequest = 200,
				ShowHelp = false
			};
			hBox.PackEnd (grid, true, true, 5);

			//followed by a ButtonBox
			VBox buttonBox = new VBox ();
			buttonBox.Spacing = 6;
			hBox.PackEnd (buttonBox, false, false, 5);
			
			//add/remove buttons
			Button addButton = new Button (new Image (Stock.Add, IconSize.Button));
			buttonBox.PackStart (addButton, false, false, 0);
			if (types [0].IsAbstract)
				addButton.Sensitive = false;
			Button removeButton = new Button (new Gtk.Image (Stock.Remove, IconSize.Button));
			buttonBox.PackStart (removeButton, false, false, 0);
			
			//sorting buttons
			Button upButton = new Button (new Image (Stock.GoUp, IconSize.Button));
			buttonBox.PackStart (upButton, false, false, 0);
			Button downButton = new Button (new Image (Stock.GoDown, IconSize.Button));
			buttonBox.PackStart (downButton, false, false, 0);

			//Third column has list (TreeView) in a ScrolledWindow
			ScrolledWindow listScroll = new ScrolledWindow ();
			listScroll.WidthRequest = 200;
			listScroll.HeightRequest = 320;
			hBox.PackStart (listScroll, false, false, 5);
			
			itemTree = new TreeView (itemStore);
			itemTree.Selection.Mode = SelectionMode.Single;
			itemTree.HeadersVisible = false;
			listScroll.AddWithViewport (itemTree);

			//renderers and attribs for TreeView
			CellRenderer rdr = new CellRendererText ();
			itemTree.AppendColumn (new TreeViewColumn ("Index", rdr, "text", 1));
			rdr = new CellRendererText ();
			itemTree.AppendColumn (new TreeViewColumn ("Object", rdr, "text", 2));

			#endregion

			#region Events

			addButton.Clicked += delegate {
				//create the object
				object instance = System.Activator.CreateInstance (types[0]);
				
				//get existing selection and insert after it
				TreeIter oldIter, newIter;
				if (itemTree.Selection.GetSelected (out oldIter))
					newIter = itemStore.InsertAfter (oldIter);
				//or append if no previous selection 
				else
					newIter = itemStore.Append ();
				itemStore.SetValue (newIter, 0, instance);
				
				//select, set name and update all the indices
				itemTree.Selection.SelectIter (newIter);
				UpdateName (itemStore, newIter);
				UpdateIndices (itemStore);
			};
			
			removeButton.Clicked += delegate {
				//get selected iter and the replacement selection
				TreeIter iter, newSelection;
				if (!itemTree.Selection.GetSelected (out iter))
					return;
				
				newSelection = iter;
				if (!IterPrev (itemStore, ref newSelection)) {
					newSelection = iter;
					if (!itemStore.IterNext (ref newSelection))
						newSelection = TreeIter.Zero;
				}
				
				//new selection. Zeroing previousIter prevents trying to update name of deleted iter.
				previousIter = TreeIter.Zero;
				if (itemStore.IterIsValid (newSelection))
					itemTree.Selection.SelectIter (newSelection);
				
				//and the removal and index update
				itemStore.Remove (ref iter);
				UpdateIndices (itemStore);
			};
			
			upButton.Clicked += delegate {
				TreeIter iter, prev;
				if (!itemTree.Selection.GetSelected (out iter))
					return;
	
				//get previous iter
				prev = iter;
				if (!IterPrev (itemStore, ref prev))
					return;
	
				//swap the two
				itemStore.Swap (iter, prev);
	
				//swap indices too
				object prevVal = itemStore.GetValue (prev, 1);
				object iterVal = itemStore.GetValue (iter, 1);
				itemStore.SetValue (prev, 1, iterVal);
				itemStore.SetValue (iter, 1, prevVal);
			};
			
			downButton.Clicked += delegate {
				TreeIter iter, next;
				if (!itemTree.Selection.GetSelected (out iter))
					return;
	
				//get next iter
				next = iter;
				if (!itemStore.IterNext (ref next))
					return;
				
				//swap the two
				itemStore.Swap (iter, next);
	
				//swap indices too
				object nextVal = itemStore.GetValue (next, 1);
				object iterVal = itemStore.GetValue (iter, 1);
				itemStore.SetValue (next, 1, iterVal);
				itemStore.SetValue (iter, 1, nextVal);
			};
			
			itemTree.Selection.Changed += delegate {
				TreeIter iter;
				if (!itemTree.Selection.GetSelected (out iter)) {
					removeButton.Sensitive = false;
					return;
				}
				removeButton.Sensitive = true;
	
				//update grid
				object obj = itemStore.GetValue (iter, 0);
				grid.CurrentObject = obj;
				
				//update previously selected iter's name
				UpdateName (itemStore, previousIter);
				
				//update current selection so we can update
				//name next selection change
				previousIter = iter;
			};
			
			grid.Changed += delegate {
				TreeIter iter;
				if (itemTree.Selection.GetSelected (out iter))
					UpdateName (itemStore, iter);
			};
			
			TreeIter selectionIter;
			removeButton.Sensitive = itemTree.Selection.GetSelected (out selectionIter);
			
			dialog.ShowAll ();
			grid.ShowToolbar = false;
			
			#endregion
			
			//if 'OK' put items back in collection
			//if (MonoDevelop.Ide.MessageService.ShowCustomDialog (dialog, toplevel) == (int)ResponseType.Ok)
			{
				DesignerTransaction tran = CreateTransaction (Instance);
				object old = collection;
			
				try {
					collection.Clear();
					foreach (object[] o in itemStore)
						collection.Add (o[0]);
					EndTransaction (Instance, tran, old, collection, true);
				}
				catch {
					EndTransaction (Instance, tran, old, collection, false);
					throw;
				}
			}
		}
		private void RemoveItems(ref Contacts cnts, ref ListStore lstore, TreePath[] tPath)
		{
			
			for(int p=(tPath.Length-1); p>=0; p--)
			{
				// remove contact from list
				cnts.SimContacts.RemoveAt(tPath[p].Indices[0]);
			}
			
			for(int p=(tPath.Length-1); p>=0; p--)
			{
				// remove contact from list
				TreeIter ti;
				bool isIter = lstore.GetIter(out ti, tPath[p]);
				if (isIter)
				{
					lstore.Remove(ref ti);
				}
			}
		}
示例#30
0
        private void GenerateNotebookPages()
        {
            string platformName = MainClass.Settings.Platform.Name;

            foreach(Rule rl in MainClass.Settings.Platform.Rules){

                bool iOsNoMac = false;

                if( (rl.Tag == -1 ) && !MainClass.Settings.ShowUnsupportedDevices) continue;
                if( (rl.Tag == -2 ) && !MainClass.Settings.ShowDebugDevices) continue;

                bool validDevice = true;

                if(!Device.CheckDevice(rl.Specific) ){
                    Tool.Logger.Debug("Invalid Device " + rl.Specific);
                    validDevice = false;
                }

                ScrolledWindow sw= new ScrolledWindow();
                sw.ShadowType = ShadowType.EtchedOut;

                TreeView tvList = new TreeView();

                List<CombinePublish> lcp =  project.ProjectUserSetting.CombinePublish.FindAll(x=> x.combineRule.FindIndex(y=>y.ConditionName==platformName && y.RuleId == rl.Id) >-1);
                List<CombinePublish> lcpDennied = new List<CombinePublish>();
                string deviceName = rl.Name;
                int deviceTyp = rl.Id;

                ListStore ls = new ListStore(typeof(bool),typeof(string),typeof(CombinePublish),typeof(string),typeof(bool));

                string ico="empty.png";
                switch (deviceTyp) {
                case (int)DeviceType.Android_1_6:{
                    ico = "android.png";
                    break;}
                case (int)DeviceType.Android_2_2:{
                    ico = "android.png";
                    break;}
                case (int)DeviceType.Bada_1_0:
                case (int)DeviceType.Bada_1_1:
                case (int)DeviceType.Bada_1_2:
                case (int)DeviceType.Bada_2_0:{
                    ico = "bada.png";
                    break;}
                case (int)DeviceType.Symbian_9_4:{
                    ico = "symbian.png";
                    break;}
                case (int)DeviceType.iOS_5_0:{
                    ico = "apple.png";
                    if(!MainClass.Platform.IsMac){
                        iOsNoMac = true;
                    }

                    break;
                }
                case (int)DeviceType.PocketPC_2003SE:
                case (int)DeviceType.WindowsMobile_5:
                case (int)DeviceType.WindowsMobile_6:{
                    ico = "windows.png";
                    break;}
                case (int)DeviceType.Windows:{
                    ico = "win32.png";
                    break;}
                case (int)DeviceType.MacOs:{
                    ico = "macos.png";
                    break;}
                }

                List<CombinePublish> tmp =  lcp.FindAll(x=>x.IsSelected == true);

                NotebookLabel nl = new NotebookLabel(ico,String.Format("{0} ({1})",deviceName,tmp.Count ));
                nl.Tag=deviceTyp;

                if(iOsNoMac){
                    Label lbl=new Label(MainClass.Languages.Translate("ios_available_Mac"));

                    Pango.FontDescription customFont =  Pango.FontDescription.FromString(MainClass.Settings.ConsoleTaskFont);
                    customFont.Weight = Pango.Weight.Bold;
                    lbl.ModifyFont(customFont);

                    notebook.AppendPage(lbl, nl);
                    continue;
                }
                if(!validDevice){
                    Label lbl=new Label(MainClass.Languages.Translate("publish_tool_missing"));

                    Pango.FontDescription customFont =  Pango.FontDescription.FromString(MainClass.Settings.ConsoleTaskFont);
                    customFont.Weight = Pango.Weight.Bold;
                    lbl.ModifyFont(customFont);

                    notebook.AppendPage(lbl, nl);
                    continue;
                }

                ;
                CellRendererToggle crt = new CellRendererToggle();
                crt.Activatable = true;
                crt.Sensitive = true;
                tvList.AppendColumn ("", crt, "active", 0);

                Gtk.CellRendererText fileNameRenderer = new Gtk.CellRendererText();
                Gtk.CellRendererText collumnResolRenderer = new Gtk.CellRendererText();

                tvList.AppendColumn(MainClass.Languages.Translate("file_name"),fileNameRenderer, "text", 1);
                tvList.AppendColumn(MainClass.Languages.Translate("resolution_f1"), collumnResolRenderer, "text", 1);

                tvList.Columns[1].SetCellDataFunc(fileNameRenderer, new Gtk.TreeCellDataFunc(RenderCombine));
                tvList.Columns[2].SetCellDataFunc(collumnResolRenderer, new Gtk.TreeCellDataFunc(RenderResolution));

                // povolene resolution pre danu platformu
                PlatformResolution listPR = MainClass.Settings.PlatformResolutions.Find(x=>x.IdPlatform ==deviceTyp);

                Device dvc  = project.DevicesSettings.Find(x=>x.TargetPlatformId ==deviceTyp);

                string stringTheme = "";
                List<System.IO.DirectoryInfo> themeResolution = new List<System.IO.DirectoryInfo>(); // resolution z adresara themes po novom

                if((project.NewSkin) && (dvc != null)){
                    Skin skin =dvc.Includes.Skin;
                    if((skin != null) && ( !String.IsNullOrEmpty(skin.Name)) && (!String.IsNullOrEmpty(skin.Theme)) ){
                        string skinDir = System.IO.Path.Combine(MainClass.Workspace.RootDirectory,  MainClass.Settings.SkinDir);
                        stringTheme = System.IO.Path.Combine(skinDir,skin.Name);
                        stringTheme = System.IO.Path.Combine(stringTheme, "themes");
                        stringTheme = System.IO.Path.Combine(stringTheme, skin.Theme);

                        if (System.IO.Directory.Exists(stringTheme)){
                            System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(stringTheme);
                            themeResolution = new List<System.IO.DirectoryInfo>(di.GetDirectories());
                        }
                    }
                }

                crt.Toggled += delegate(object o, ToggledArgs args) {
                    if((deviceTyp == (int)DeviceType.Windows)||(deviceTyp == (int)DeviceType.MacOs)){
                        if(!MainClass.LicencesSystem.CheckFunction("windowsandmac",this)){
                            return;
                        }
                    }

                    TreeIter iter;
                    if (ls.GetIter (out iter, new TreePath(args.Path))) {
                        bool old = (bool) ls.GetValue(iter,0);
                        CombinePublish cp =(CombinePublish) ls.GetValue(iter,2);
                        cp.IsSelected = !old;
                        ls.SetValue(iter,0,!old);

                        List<CombinePublish> tmp2 =  lcp.FindAll(x=>x.IsSelected == true);
                        nl.SetLabel (String.Format("{0} ({1})",deviceName,tmp2.Count ));

                        //if(dvc == null) return;
                        //if(dvc.Includes == null) return;
                        if(dvc.Includes.Skin == null) return;
                        if(String.IsNullOrEmpty(dvc.Includes.Skin.Name) || String.IsNullOrEmpty(dvc.Includes.Skin.Theme)) return;

                        if(cp.IsSelected){
                            // Najdem ake je rozlisenie v danej combinacii
                            CombineCondition cc = cp.combineRule.Find(x=>x.ConditionId == MainClass.Settings.Resolution.Id);

                            if(cc == null) return; /// nema ziadne rozlisenie v combinacii

                            int indxResol = themeResolution.FindIndex(x=>x.Name.ToLower() == cc.RuleName.ToLower());
                            if(indxResol<0){
                                // theme chyba prislusne rozlisenie
                                string error =String.Format("Invalid {0} Skin and {1} Theme, using in {2}. Missing resolutions: {3}. ",dvc.Includes.Skin.Name,dvc.Includes.Skin.Theme,deviceName,cc.RuleName.ToLower());
                                MainClass.MainWindow.OutputConsole.WriteError(error+"\n");
                                List<string> lst = new List<string>();
                                lst.Add(error);
                                MainClass.MainWindow.ErrorWritte("","",lst);
                            }
                        }
                    }
                };

                int cntOfAdded = 0;
                foreach (CombinePublish cp in lcp){
                    bool isValid = cp.IsSelected;

                    if (!validDevice) isValid = false;

                    // Najdem ake je rozlisenie v danej combinacii
                    CombineCondition cc = cp.combineRule.Find(x=>x.ConditionId == MainClass.Settings.Resolution.Id);

                    if(cc == null) continue; /// nema ziadne rozlisenie v combinacii

                    int indx = MainClass.Settings.Resolution.Rules.FindIndex(x=> x.Id == cc.RuleId );
                    if(indx<0) continue; /// rozlisenie pouzite v danej combinacii nexistuje

                    if(cc!= null){
                        bool isValidResolution = false;

                        //ak nema definovane ziadne povolenia, tak povolene su vsetky
                        if((listPR==null) || (listPR.AllowResolution == null) ||
                           (listPR.AllowResolution.Count<1)){
                            isValidResolution = true;
                        } else {
                            isValidResolution = listPR.IsValidResolution(cc.RuleId);
                        }

                        if(isValidResolution){
                            // po novom vyhodom aj tie ktore niesu v adresaru themes - pokial je thema definovana
                            if((project.NewSkin) && (themeResolution.Count > 0)){
                                //cntResolution = 0;
                                int indxResol = themeResolution.FindIndex(x=>x.Name.ToLower() == cc.RuleName.ToLower());
                                if(indxResol>-1){
                                    ls.AppendValues(isValid,cp.ProjectName,cp,cp.ProjectName,true);
                                    cntOfAdded++;
                                } else {
                                    lcpDennied.Add(cp);
                                }
                            } else {
                                ls.AppendValues(isValid,cp.ProjectName,cp,cp.ProjectName,true);
                                cntOfAdded++;
                            }

                        } else {
                            lcpDennied.Add(cp);
                        }
                    }
                    //}
                }
                // pridam tie zakazane, ktore su vybrate na publish
                foreach (CombinePublish cp in lcpDennied){
                    if(cp.IsSelected){
                        ls.AppendValues(cp.IsSelected,cp.ProjectName,cp,cp.ProjectName,false);
                        cntOfAdded++;
                    }
                }

                if(cntOfAdded == 0){
                    MainClass.MainWindow.OutputConsole.WriteError(String.Format("Missing publish settings for {0}.\n",deviceName));
                }

                bool showAll = false;
                tvList.ButtonReleaseEvent += delegate(object o, ButtonReleaseEventArgs args){

                    if (args.Event.Button == 3) {
                        TreeSelection ts = tvList.Selection;
                        Gtk.TreePath[] selRow = ts.GetSelectedRows();

                        if(selRow.Length<1){
                            TreeIter tiFirst= new TreeIter();
                            ls.GetIterFirst(out tiFirst);

                            tvList.Selection.SelectIter(tiFirst);
                            selRow = ts.GetSelectedRows();
                        }
                        if(selRow.Length<1) return;

                        Gtk.TreePath tp = selRow[0];
                        TreeIter ti = new TreeIter();

                        ls.GetIter(out ti,tp);

                        CombinePublish combinePublish= (CombinePublish)ls.GetValue(ti,2);

                        if(combinePublish!=null){

                            Menu popupMenu = new Menu();
                            if(!showAll){
                                MenuItem miShowDenied = new MenuItem( MainClass.Languages.Translate("show_denied" ));
                                miShowDenied.Activated+= delegate(object sender, EventArgs e) {

                                    // odoberem zakazane, ktore sa zobrazuju kedze su zaceknute na publish
                                    List<TreeIter> lst= new List<TreeIter>();
                                    ls.Foreach((model, path, iterr) => {

                                        bool cp =(bool) ls.GetValue(iterr,4);
                                        bool selected =(bool) ls.GetValue(iterr,0);
                                        if(!cp && selected){
                                            lst.Add(iterr);
                                        }
                                        return false;
                                    });

                                    foreach(TreeIter ti2 in lst){
                                        TreeIter ti3 =ti2;
                                        ls.Remove(ref ti3);
                                    }

                                    // pridam zakazane
                                    if( (lcpDennied==null) || (lcpDennied.Count<1))
                                        return;

                                    foreach (CombinePublish cp in lcpDennied){
                                        ls.AppendValues(cp.IsSelected,cp.ProjectName,cp,cp.ProjectName,false);
                                    }
                                    showAll = true;
                                };
                                popupMenu.Append(miShowDenied);
                            } else {
                                MenuItem miHideDenied = new MenuItem( MainClass.Languages.Translate("hide_denied" ));
                                miHideDenied.Activated+= delegate(object sender, EventArgs e) {

                                    List<TreeIter> lst= new List<TreeIter>();
                                    ls.Foreach((model, path, iterr) => {

                                        bool cp =(bool) ls.GetValue(iterr,4);
                                        bool selected =(bool) ls.GetValue(iterr,0);
                                        if(!cp && !selected){
                                            lst.Add(iterr);
                                        }
                                        return false;
                                    });

                                    foreach(TreeIter ti2 in lst){
                                        TreeIter ti3 =ti2;
                                        ls.Remove(ref ti3);
                                    }

                                    showAll = false;
                                };
                                popupMenu.Append(miHideDenied);
                            }
                            popupMenu.Append(new SeparatorMenuItem());

                            MenuItem miCheckAll = new MenuItem( MainClass.Languages.Translate("check_all" ));
                            miCheckAll.Activated+= delegate(object sender, EventArgs e) {
                                if((deviceTyp == (int)DeviceType.Windows)||(deviceTyp == (int)DeviceType.MacOs)){
                                    if(!MainClass.LicencesSystem.CheckFunction("windowsandmac",this)){
                                        return;
                                    }
                                }

                                int cnt = 0;
                                ls.Foreach((model, path, iterr) => {
                                    CombinePublish cp =(CombinePublish) ls.GetValue(iterr,2);
                                    cp.IsSelected = true;
                                    ls.SetValue(iterr,0,true);
                                    cnt ++;
                                    return false;
                                });
                                nl.SetLabel (String.Format("{0} ({1})",deviceName,cnt ));

                            };
                            popupMenu.Append(miCheckAll);

                            MenuItem miUnCheckAll = new MenuItem( MainClass.Languages.Translate("uncheck_all" ));
                            miUnCheckAll.Activated+= delegate(object sender, EventArgs e) {
                                ls.Foreach((model, path, iterr) => {
                                    CombinePublish cp =(CombinePublish) ls.GetValue(iterr,2);
                                    cp.IsSelected = false;
                                    ls.SetValue(iterr,0,false);
                                    return false;
                                });
                                nl.SetLabel (String.Format("{0} ({1})",deviceName,0 ));
                            };
                            popupMenu.Append(miUnCheckAll);

                            popupMenu.Popup();
                            popupMenu.ShowAll();
                        }
                    }
                };

                tvList.Model = ls;

                if (!validDevice) tvList.Sensitive = false;

                sw.Add(tvList);
                notebook.AppendPage(sw, nl);
            }
        }