Exclude RANGE from sintax, it must be a semantic validation for CONPROP, CONRESET and CONRATE

Validated from Parser , first argument must be a valid controller number (1 to 64)

--- T3000Grammar/T3000Grammar.cs
+++ T3000Grammar/T3000Grammar.cs
@@ -8,29 +8,34 @@
     [Language("Control Basic", "1.0", "T3000 Programming Language")]
     public class T3000Grammar : Grammar
     {
-        //public static readonly ReadOnlyCollection<string> Functions =
-        //    new ReadOnlyCollection<string>(
-        //    new []
-        //    {
-        //        "INTERVAL", "COM1", "ABS", "MAX", "MIN"
-        //    }
-        //);
+        public static readonly ReadOnlyCollection<string> Functions =
+            new ReadOnlyCollection<string>(
+            new[]
+            {
+               // "INTERVAL", "COM1", "ABS", "MAX", "MIN"
+                "INTERVAL", "COM1", "MAX", "MIN"
+            }
+        );

         public T3000Grammar() :
             base(caseSensitive: true) //Changed, Control Basic is Case Sensitive: SET-PRINTER vs Set-Printer
         {
             // 1. Terminals
-            var Text = new FreeTextLiteral("Text",
-                FreeTextOptions.AllowEmpty |
-                FreeTextOptions.AllowEof |
-                FreeTextOptions.IncludeTerminator, Environment.NewLine);
-            //var String = new StringLiteral("String", "'", StringOptions.AllowsAllEscapes);
+
+            //Comentarios
+            CommentTerminal Comment = new CommentTerminal("Comment", "REM", "\n", "\r\n");
+
+
+            //var Text = new FreeTextLiteral("Text",
+            //    FreeTextOptions.AllowEmpty |
+            //    FreeTextOptions.AllowEof |
+            //    FreeTextOptions.IncludeTerminator, Environment.NewLine);
+
             var Number = new NumberLiteral("Number");
+
             var IntegerNumber = new NumberLiteral("IntegerNumber", NumberOptions.IntOnly);
+
             //var Space = new RegexBasedTerminal("Space", "\\s+");
-            var Time = new TimeTerminal("Time");//new DataLiteralBase("Time", TypeCode.DateTime);
-
-

             //Non Control Points Identifiers TESTED
@@ -40,6 +45,7 @@
             Identifier.CaseRestriction = CaseRestriction.AllUpper;
             Identifier.AllFirstChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
             Identifier.Options = IdOptions.IsNotKeyword;
+            Identifier.Precedence = 2;

             var LoopVariable = new IdentifierTerminal("LoopVariable");
             LoopVariable.AllFirstChars = "ABCDEFGHIJK";
@@ -48,6 +54,12 @@
             var LocalVariable = new IdentifierTerminal("LocalVariable");
             LoopVariable.AllFirstChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
             LoopVariable.Options = IdOptions.IsNotKeyword;
+            LoopVariable.Precedence = 1;
+
+
+            ////Redesign of LocalVariable to RegExBasedTerminal
+            //var LocalVariable = new RegexBasedTerminal("LocalVariable", "[A-Z]");
+            //LocalVariable.Flags = TermFlags.IsLiteral;

             //RegEx Tested Strings, for ending valid Control Points
             string UPTO128 = "12[0-8]|1[0-1][0-9]|[1-9][0-9]?";
@@ -75,6 +87,8 @@
             var PIDS = new RegexBasedTerminal("PIDS", UPTO64, "PID");

             var ARR = new RegexBasedTerminal("ARR", UPTO48, "AY");
+            //Controllers
+            var CON = new RegexBasedTerminal("CON", UPTO64);

             //WRS ::= 'WR' UPTO32

@@ -87,12 +101,15 @@

             //Other sub-literals

-
+
             var DayNumber = new RegexBasedTerminal("DayNumber", UPTO31);

             var HH = new RegexBasedTerminal("HH", UPTO23);
             var MM = new RegexBasedTerminal("MM", UPTO59);
             var SS = new RegexBasedTerminal("SS", UPTO59);
+
+
+            var Ordinal = new RegexBasedTerminal("Ordinal", UPTO64);

             //KEYWORDS
@@ -165,7 +182,8 @@
             var USERA = ToTerm("USER-A");
             var USERB = ToTerm("USER-B");

-
+
+

@@ -178,6 +196,8 @@
             var DECLAREStatement = new NonTerminal("DECLAREStatement");
             var ENDStatement = new NonTerminal("ENDStatement");
             var ProgramLine = new NonTerminal("ProgramLine");
+            var BasicLine = new NonTerminal("BasicLine");
+
             var Subroutine = new NonTerminal("Subroutine");
             var SubroutineSentences = new NonTerminal("SubRoutineSentences");

@@ -185,7 +205,8 @@
             var EmptyLine = new NonTerminal("EmptyLine");

             var Statement = new NonTerminal("Statement");
-            var Comment = new NonTerminal("Comment");
+            var EndProgLine = new NonTerminal("CommentOpt");
+
             var Commands = new NonTerminal("Commands");

             //TODO : Add all commands names as terms
@@ -194,9 +215,14 @@

             //TDDO: Add all function names as terms
             var Function = new NonTerminal("Function");
-
-
-           //TODO: Create Assignment statement
+            var ABS = new NonTerminal("ABS");
+            var AVG = new NonTerminal("AVG");
+            var CONPROP = new NonTerminal("CONPROP");
+
+            var CONRATE = new NonTerminal("CONRATE");
+            var CONRESET = new NonTerminal("CONRESET");
+
+            //Create Assignment statement
             var Assignment = new NonTerminal("Assignment");

             //TODO: Add all branch statements
@@ -223,16 +249,29 @@
             var MonthLiteral = new NonTerminal("MonthLiteral");
             var DayLiteral = new NonTerminal("DayLiteral");
             var TimeLiteral = new NonTerminal("TimeLiteral");
-
+

             //Terms to Expressions
-            var Term = new NonTerminal("Term");
-
+
+            var UnaryExpression = new NonTerminal("UnaryExpression");
+            var BinaryExpression = new NonTerminal("BinaryExpression");
+            var EnclosableExpression = new NonTerminal("EnclosableExpression");
+            var Expression = new NonTerminal("Expression");
+
+

             // LISTAS
             var IdentifierList = new NonTerminal("IdentifierList");
             var LoopVariableList = new NonTerminal("LoopVariableList");
+            var ExpressionListOpt = new NonTerminal("ExpressionList");
+
             // 3. BNF rules
+
+            /////////////////////
+            //Set grammar root
+            /////////////////////
+            Root = CONTROL_BASIC;
+
             //CONTROL_BASIC ::= SentencesSequence | SubRoutine
             CONTROL_BASIC.Rule = SentencesSequence | Subroutine;
             //SubRoutine ::= (LineNumber DECLARE EndLine SentencesSequence LineNumber END)
@@ -246,22 +285,27 @@
             //SentencesSequence ::= ProgramLine+
             SentencesSequence.Rule = MakeStarRule(SentencesSequence, ProgramLine);
             //ProgramLine ::= EmptyLine | (LineNumber Sentence EndLine)
-            ProgramLine.Rule = EmptyLine | (LineNumber + Sentence + NewLine);
-            ProgramLine.NodeCaptionTemplate = "#{0} #{1}";
+            ProgramLine.Rule = EmptyLine | (LineNumber + Sentence + EndProgLine);
+
+            EndProgLine.Rule = Comment.Q() | NewLine;
+
             //EmptyLine ::= LineNumber? EndLine
             EmptyLine.Rule = LineNumber.Q() + NewLine;

             //Sentence ::= (Comment | (Commands| Assignment | Branch | Loop) Comment?)
-            Sentence.Rule = Comment | ((ToTerm("END") | Commands | Assignment | Branch | FOR | ENDFOR) + Comment.Q());
-            //Statement.NodeCaptionTemplate = "#{0} #{1}";
-            //Comment ::= 'REM' StringLiteral+
-            Comment.Rule = ToTerm("REM") + Text;
-            Comment.NodeCaptionTemplate = "REM #{1}";
+            //Sentence.Rule = Comment | ((ToTerm("END") + ReduceHere() | Commands | Assignment | Branch | FOR | ENDFOR) + Comment.Q()  );
+            Sentence.Rule = ToTerm("END") | Commands | Assignment | Branch | FOR | ENDFOR;
+
+
             //Commands::= Command (';' Command) *
             Commands.Rule = MakeStarRule(Command, CommandSeparator, Command);

             Command.Rule = "Command";
-            Assignment.Rule = "Assignment";
+
+
+            //Assignment ::= Designator AssignOp Expression
+            Assignment.Rule = Designator + AssignOp + Expression;
+
             Branch.Rule = "Branch";

             //Loop::= FOR SentencesSequence ENDFOR
@@ -278,13 +322,14 @@
             ArithmeticOps.Rule = SUM | SUB | MUL | DIV | MOD | EXP;
             ComparisonOps.Rule = EQ | NEQ | GT | LT | LTE | GTE;

-            UnaryOps.Rule  = NOT;
+            UnaryOps.Rule = NOT;
             BinaryOps.Rule = ArithmeticOps | ComparisonOps | LogicOps;
-
+

             LineNumber.Rule = IntegerNumber;
             //PointIdentifier ::= VARS | CONS | WRS | ARS | OUTS | INS | PRG | GRP | DMON | AMON | ARR
             PointIdentifier.Rule = VARS | PIDS | WRS | ARS | OUTS | INS | PRG | GRP | DMON | AMON | ARR;
+            PointIdentifier.Precedence = 3;
             //Designator ::= Identifier | PointIdentifier | LocalVariable
             Designator.Rule = PointIdentifier | Identifier | LocalVariable;
             RemoteDesignator.Rule = Designator;
@@ -297,53 +342,61 @@
             //TimeLiteral ::= HH ':' MM ':' SS
             TimeLiteral.Rule = HH + DDOT + MM + DDOT + SS;
             //Literal ::= NumbersLiteral | DatesLiteral | DaysLiteral | TimeLiteral
-            Literal.Rule = Number | DatesLiteral | DayLiteral | TimeLiteral ;
-            //Term ::= Function | Designator | Literal
-            Term.Rule = Designator | Literal | Function;
+            Literal.Rule = Number | DatesLiteral | DayLiteral | TimeLiteral;
+

             //Functions
             //Function::= ABS | AVG | CONPROP | CONRATE | CONRESET | DOM | DOW | DOY | INT | INTERVAL | LN | LN1 | MAX | MIN | POWERLOSS | SCANS | SQR | STATUS | TBL | TIME | TIMEOFF | TIMEON | WRON | WROFF | UNACK | USERA | USERB
-            Function.Rule = DOY | DOM | DOW | POWERLOSS | TIME | UNACK | USERA | USERB;
-
-
-            /////////////////////
-            //Set grammar root
-            /////////////////////
-            Root = CONTROL_BASIC;
-
-
-            //EXample
-            ////jarray.Rule = MakeStarRule(jarray, comma, jvalue);
-
+            Function.Rule = ABS | AVG | CONPROP | CONRATE |  DOY | DOM | DOW | POWERLOSS | TIME | UNACK | USERA | USERB;
+            ABS.Rule = "ABS" + PARIZQ + Expression + PARDER;
+            //AVG      ::= 'AVG' PARIZQ EXPRESSION ( Space ',' Space EXPRESSION )* PARDER
+            AVG.Rule = "AVG" + PARIZQ + Expression + ExpressionListOpt + PARDER;
+            //CONPROP  ::= 'CONPROP' PARIZQ Ordinal ',' Expression PARDER
+            //TODO: Verify MAX value for integer values of CONPROP
+            CONPROP.Rule = "CONPROP" + PARIZQ + CON + Comma + Expression + PARDER;
+
+            //CONRATE  ::= 'CONRATE' PARIZQ Ordinal ',' Expression PARDER RANGE
+            CONRATE.Rule = "CONRATE" + PARIZQ + CON + Comma + Expression + PARDER;
+
+            //CONRESET ::= 'CONRESET' PARIZQ Ordinal ',' Expression PARDER RANGE
+            CONRESET.Rule = "CONRESET" + PARIZQ + CON + Comma + Expression + PARDER;
+
+
+
+
+            //EXPR.Rule = number | variable | FUN_CALL | stringLiteral | BINARY_EXPR
+            //          | "(" + EXPR + ")" | UNARY_EXPR;
+            Expression.Rule = Function | Literal | Designator | BinaryExpression |  EnclosableExpression | UnaryExpression;
+
+            //UnaryExpression ::=  UnaryOps Term
+            UnaryExpression.Rule = UnaryOps + Expression;
+            //BinaryExpression::= Expression BinaryOps Expression
+            BinaryExpression.Rule = Expression + BinaryOps + Expression;
+
+            //EnclosableExpression ::= ParIzq SimpleExpression ParDer
+            EnclosableExpression.Rule = PARIZQ + Expression + PARDER;
+
+            ExpressionListOpt.Rule = MakeStarRule(ExpressionListOpt, Comma + Expression);
+
+
             RegisterBracePair(PARIZQ.ToString(), PARDER.ToString());

             // 4. Operators precedence
             RegisterOperators(100, Associativity.Right, EXP);
-            RegisterOperators(90, MUL);
-            RegisterOperators(90, DIV);
+            RegisterOperators(90, MUL,DIV);
             RegisterOperators(80, MOD);
-            RegisterOperators(70, SUM);
-            RegisterOperators(70, SUB);
-
-            RegisterOperators(60, NEQ);
-            RegisterOperators(60, LT);
-            RegisterOperators(60, GT);
-            RegisterOperators(60, LTE);
-            RegisterOperators(60, GTE);
-            RegisterOperators(60, EQ);
-
+            RegisterOperators(70, SUM, SUB);
+
+            RegisterOperators(60, LT,GT,LTE,GTE,EQ,NEQ);
+
             RegisterOperators(55, Associativity.Right, NOT);
-            RegisterOperators(50, AND);
-            RegisterOperators(50, OR);
-            RegisterOperators(50, XOR);
-
-            RegisterOperators(10, AssignOp);
-
-
-
+            RegisterOperators(50, AND,OR,XOR);
+
+
             //// 5. Punctuation and transient terms
             MarkPunctuation( PARIZQ.ToString()  , PARDER.ToString()  ,CommandSeparator.ToString() );
-
+
+            MarkTransient(LineNumber);

             //MarkTransient(CodeLine, ProgramLine,
             //    Term, Expression,
@@ -358,7 +411,7 @@
             #region Define Keywords

             //??
-            //MarkReservedWords("");
+            MarkReservedWords("DECLARE","FOR");

             #endregion
         }


add tests for ParseState buffering logic


棋譜コメントの出力を少し変更しました。

棋譜コメントの出力を少し変更しました。


Refactored a few for RequestStream.cs

Refactored a few for RequestStream.cs

--- websocket-sharp/Net/RequestStream.cs
+++ websocket-sharp/Net/RequestStream.cs
@@ -46,30 +46,30 @@
   {
     #region Private Fields

-    private byte [] _buffer;
+    private long    _bodyLeft;
+    private byte[]  _buffer;
+    private int     _count;
     private bool    _disposed;
-    private int     _length;
     private int     _offset;
-    private long    _remainingBody;
     private Stream  _stream;

     #endregion

     #region Internal Constructors

-    internal RequestStream (Stream stream, byte [] buffer, int offset, int length)
-      : this (stream, buffer, offset, length, -1)
+    internal RequestStream (Stream stream, byte[] buffer, int offset, int count)
+      : this (stream, buffer, offset, count, -1)
     {
     }

     internal RequestStream (
-      Stream stream, byte [] buffer, int offset, int length, long contentlength)
+      Stream stream, byte[] buffer, int offset, int count, long contentLength)
     {
       _stream = stream;
       _buffer = buffer;
       _offset = offset;
-      _length = length;
-      _remainingBody = contentlength;
+      _count = count;
+      _bodyLeft = contentLength;
     }

     #endregion
@@ -115,50 +115,43 @@
     #region Private Methods

     // Returns 0 if we can keep reading from the base stream,
-    // > 0 if we read something from the buffer.
+    // > 0 if we read something from the buffer,
     // -1 if we had a content length set and we finished reading that many bytes.
-    private int fillFromBuffer (byte [] buffer, int offset, int count)
+    private int fillFromBuffer (byte[] buffer, int offset, int count)
     {
       if (buffer == null)
         throw new ArgumentNullException ("buffer");

       if (offset < 0)
-        throw new ArgumentOutOfRangeException ("offset", "Less than zero.");
+        throw new ArgumentOutOfRangeException ("offset", "A negative value.");

       if (count < 0)
-        throw new ArgumentOutOfRangeException ("count", "Less than zero.");
+        throw new ArgumentOutOfRangeException ("count", "A negative value.");

       var len = buffer.Length;
-      if (offset > len)
-        throw new ArgumentException ("'offset' is greater than 'buffer' size.");
-
-      if (offset > len - count)
-        throw new ArgumentException ("Reading would overrun 'buffer'.");
-
-      if (_remainingBody == 0)
+      if (offset + count > len)
+        throw new ArgumentException (
+          "The sum of 'offset' and 'count' is greater than 'buffer' length.");
+
+      if (_bodyLeft == 0)
         return -1;

-      if (_length == 0)
+      if (_count == 0 || count == 0)
         return 0;

-      var size = _length < count ? _length : count;
-      if (_remainingBody > 0 && _remainingBody < size)
-        size = (int) _remainingBody;
-
-      var remainingBuffer = _buffer.Length - _offset;
-      if (remainingBuffer < size)
-        size = remainingBuffer;
-
-      if (size == 0)
-        return 0;
-
-      Buffer.BlockCopy (_buffer, _offset, buffer, offset, size);
-      _offset += size;
-      _length -= size;
-      if (_remainingBody > 0)
-        _remainingBody -= size;
-
-      return size;
+      if (count > _count)
+        count = _count;
+
+      if (_bodyLeft > 0 && count > _bodyLeft)
+        count = (int) _bodyLeft;
+
+      Buffer.BlockCopy (_buffer, _offset, buffer, offset, count);
+      _offset += count;
+      _count -= count;
+      if (_bodyLeft > 0)
+        _bodyLeft -= count;
+
+      return count;
     }

     #endregion
@@ -166,7 +159,7 @@
     #region Public Methods

     public override IAsyncResult BeginRead (
-      byte [] buffer, int offset, int count, AsyncCallback callback, object state)
+      byte[] buffer, int offset, int count, AsyncCallback callback, object state)
     {
       if (_disposed)
         throw new ObjectDisposedException (GetType ().ToString ());
@@ -184,14 +177,14 @@
       }

       // Avoid reading past the end of the request to allow for HTTP pipelining.
-      if (_remainingBody >= 0 && _remainingBody < count)
-        count = (int) _remainingBody;
+      if (_bodyLeft >= 0 && count > _bodyLeft)
+        count = (int) _bodyLeft;

       return _stream.BeginRead (buffer, offset, count, callback, state);
     }

     public override IAsyncResult BeginWrite (
-      byte [] buffer, int offset, int count, AsyncCallback callback, object state)
+      byte[] buffer, int offset, int count, AsyncCallback callback, object state)
     {
       throw new NotSupportedException ();
     }
@@ -219,8 +212,8 @@

       // Close on exception?
       var nread = _stream.EndRead (asyncResult);
-      if (nread > 0 && _remainingBody > 0)
-        _remainingBody -= nread;
+      if (nread > 0 && _bodyLeft > 0)
+        _bodyLeft -= nread;

       return nread;
     }
@@ -234,13 +227,12 @@
     {
     }

-    public override int Read (byte [] buffer, int offset, int count)
+    public override int Read (byte[] buffer, int offset, int count)
     {
       if (_disposed)
         throw new ObjectDisposedException (GetType ().ToString ());

-      // Call fillFromBuffer to check for buffer boundaries even when
-      // _remainingBody is 0.
+      // Call the fillFromBuffer method to check for buffer boundaries even when _bodyLeft is 0.
       var nread = fillFromBuffer (buffer, offset, count);
       if (nread == -1) // No more bytes available (Content-Length).
         return 0;
@@ -249,8 +241,8 @@
         return nread;

       nread = _stream.Read (buffer, offset, count);
-      if (nread > 0 && _remainingBody > 0)
-        _remainingBody -= nread;
+      if (nread > 0 && _bodyLeft > 0)
+        _bodyLeft -= nread;

       return nread;
     }
@@ -265,7 +257,7 @@
       throw new NotSupportedException ();
     }

-    public override void Write (byte [] buffer, int offset, int count)
+    public override void Write (byte[] buffer, int offset, int count)
     {
       throw new NotSupportedException ();
     }


[Modify] Edit it

[Modify] Edit it

--- websocket-sharp/Server/HttpServer.cs
+++ websocket-sharp/Server/HttpServer.cs
@@ -257,8 +257,8 @@
     /// <paramref name="address"/> and <paramref name="port"/>.
     /// </remarks>
     /// <param name="address">
-    /// A <see cref="System.Net.IPAddress"/> that specifies the local IP address
-    /// on which to listen.
+    /// A <see cref="System.Net.IPAddress"/> that specifies the local IP
+    /// address on which to listen.
     /// </param>
     /// <param name="port">
     /// An <see cref="int"/> that specifies the number of the port on which


[Modify] Polish it

[Modify] Polish it

--- websocket-sharp/Server/HttpServer.cs
+++ websocket-sharp/Server/HttpServer.cs
@@ -1006,17 +1006,8 @@
     private void stop (ushort code, string reason)
     {
       lock (_sync) {
-        if (_state == ServerState.ShuttingDown) {
-          _log.Info ("The server is shutting down.");
-
+        if (_state != ServerState.Start)
           return;
-        }
-
-        if (_state == ServerState.Stop) {
-          _log.Info ("The server has already stopped.");
-
-          return;
-        }

         _state = ServerState.ShuttingDown;
       }


[Modify] Edit it

[Modify] Edit it

--- websocket-sharp/Server/HttpServer.cs
+++ websocket-sharp/Server/HttpServer.cs
@@ -1217,7 +1217,7 @@
     /// </param>
     /// <param name="initializer">
     ///   <para>
-    ///   An <c>Action<TBehaviorWithNew></c> delegate or
+    ///   An <c>Action<TBehavior></c> delegate or
     ///   <see langword="null"/> if not needed.
     ///   </para>
     ///   <para>
@@ -1225,7 +1225,7 @@
     ///   a new session instance for the service.
     ///   </para>
     /// </param>
-    /// <typeparam name="TBehaviorWithNew">
+    /// <typeparam name="TBehavior">
     ///   <para>
     ///   The type of the behavior for the service.
     ///   </para>


TileMap: Fixing rendering for non-GL platforms

* reverting from raw vert/index buffers to MG Vertex/IndexBuffers

--- src/tileMap_parallax_nodes/CCTileMapLayer.cs
+++ src/tileMap_parallax_nodes/CCTileMapLayer.cs
@@ -183,6 +183,8 @@
                     }
                 }
             }
+
+            drawBufferManager.UpdateQuadBuffers();
         }

         #endregion Constructors
@@ -318,12 +320,11 @@

             foreach (var buffer in drawBufferManager.Buffers)
             {
-                if (buffer.ShouldDrawBuffer == false)
+                if (buffer.ShouldDrawBuffer == false || buffer.NumberOfVisibleVertices == 0)
                     continue;

-                drawManager.DrawRawBuffer(buffer.QuadsVertexBuffer,
-                    buffer.StartingQuadVertIndex, buffer.NumberOfVisibleVertices,
-                    buffer.IndexBuffer, 0, buffer.NumberOfVisiblePrimitives);
+                drawManager.DrawBuffer(buffer.QuadsVertexBuffer, buffer.IndexBuffer, 0,
+                    buffer.NumberOfVisiblePrimitives);
             }

             drawManager.PopEffect();
@@ -664,10 +665,16 @@

             CCTileMapVertAndIndexBuffer drawBuffer = drawBufferManager.GetDrawBufferAtIndex(flattenedTileIndex);
             int adjustedTileIndex = flattenedTileIndex - drawBuffer.TileStartIndex;
+            int adjustedStartVertexIndex = adjustedTileIndex * NumOfCornersPerQuad;

             if (tileGID.Gid == 0)
             {
-                drawBuffer.QuadsVertexBuffer[adjustedTileIndex] = new CCV3F_C4B_T2F_Quad();
+                for (int i = 0; i < NumOfCornersPerQuad; i++)
+                    drawBuffer.QuadsVertexBuffer.Data[adjustedStartVertexIndex + i] = new CCV3F_C4B_T2F();
+
+                if (updateBuffer)
+                    drawBuffer.QuadsVertexBuffer.UpdateBuffer(adjustedStartVertexIndex, NumOfCornersPerQuad);
+
                 return;
             }

@@ -679,7 +686,8 @@
             CCSize texSize = TileSetInfo.TilesheetSize;
             CCPoint tilePos = TilePosition(tileCoordX, tileCoordY);

-            var quad = drawBuffer.QuadsVertexBuffer[adjustedTileIndex];
+            var quadVertexData = drawBuffer.QuadsVertexBuffer.Data;
+            var quad = new CCV3F_C4B_T2F_Quad();

             // vertices
             if ((tileGID.Flags & CCTileFlags.TileDiagonal) != 0)
@@ -745,7 +753,13 @@
             quad.TopLeft.Colors = CCColor4B.White;
             quad.TopRight.Colors = CCColor4B.White;

-            drawBuffer.QuadsVertexBuffer[adjustedTileIndex] = quad;
+            drawBuffer.QuadsVertexBuffer.Data[adjustedStartVertexIndex] = quad.BottomLeft;
+            drawBuffer.QuadsVertexBuffer.Data[adjustedStartVertexIndex + 1] = quad.BottomRight;
+            drawBuffer.QuadsVertexBuffer.Data[adjustedStartVertexIndex + 2] = quad.TopLeft;
+            drawBuffer.QuadsVertexBuffer.Data[adjustedStartVertexIndex + 3] = quad.TopRight;
+
+            if (updateBuffer)
+                drawBuffer.QuadsVertexBuffer.UpdateBuffer(adjustedStartVertexIndex, NumOfCornersPerQuad);
         }

         void UpdateVisibleTileRange()
@@ -865,6 +879,8 @@
                     {
                         CCTileMapVertAndIndexBuffer buffer = Buffers [0];
                         Buffers.RemoveAt (0);
+                        buffer.QuadsVertexBuffer.Dispose();
+                        buffer.IndexBuffer.Dispose();
                         buffer.QuadsVertexBuffer = null;
                         buffer.IndexBuffer = null;
                     }
@@ -873,21 +889,29 @@

             void CreateDrawBuffer(int tileCount, int firstTileId)
             {
-                int quadsInThisBuffer = tileCount * NumOfCornersPerQuad;
-                int verticesInThisBuffer = tileCount * NumOfVerticesPerQuad;
+                int vertsInThisBuffer = tileCount * NumOfCornersPerQuad;
+                int indicesInThisBuffer = tileCount * NumOfVerticesPerQuad;

                 var buffer = new CCTileMapVertAndIndexBuffer
                 {
                     TileStartIndex    = firstTileId,
                     TileEndIndex      = firstTileId + tileCount - 1,
-                    QuadsVertexBuffer = new CCV3F_C4B_T2F_Quad[quadsInThisBuffer],
-                    IndexBuffer       = new short[verticesInThisBuffer],
+                    QuadsVertexBuffer = new CCVertexBuffer<CCV3F_C4B_T2F>(vertsInThisBuffer, CCBufferUsage.WriteOnly),
+                    IndexBuffer = new CCIndexBuffer<short>(indicesInThisBuffer, BufferUsage.WriteOnly),
                     TileGIDAndFlagsArray = TileGIDAndFlagsArray
                 };

                 Buffers.Add(buffer);
             }

+            public void UpdateQuadBuffers()
+            {
+                foreach (var buffer in Buffers)
+                {
+                    buffer.QuadsVertexBuffer.Count = buffer.NumberOfTiles * NumOfCornersPerQuad;
+                    buffer.QuadsVertexBuffer.UpdateBuffer();
+                }
+            }
         }

         class CCTileMapVertAndIndexBuffer
@@ -896,8 +920,8 @@

             public int TileStartIndex { get; set; }
             public int TileEndIndex { get; set; }
-            public CCV3F_C4B_T2F_Quad[] QuadsVertexBuffer { get; set; }
-            public short[] IndexBuffer { get; set; }
+            public CCVertexBuffer<CCV3F_C4B_T2F> QuadsVertexBuffer { get; set; }
+            public CCIndexBuffer<short> IndexBuffer { get; set; }
             public CCTileGidAndFlags[] TileGIDAndFlagsArray { get; set; }

             public bool ShouldDrawBuffer { get; private set; }
@@ -919,7 +943,7 @@
                 IndexBufferSize = 0;
                 NumberOfVisiblePrimitives = 0;
                 NumberOfVisibleVertices = 0;
-                StartingQuadVertIndex = startTileIndex > TileStartIndex ? startTileIndex - TileStartIndex : 0;
+                StartingQuadVertIndex = startTileIndex > TileStartIndex ? (startTileIndex - TileStartIndex) * NumOfCornersPerQuad : 0;
                 ShouldDrawBuffer = false;
             }

@@ -938,15 +962,16 @@
                     if (TileGIDAndFlagsArray[tileIndex].Gid == 0)
                         continue;

-                    int quadVertIndex = (tileIndex - TileStartIndex) * NumOfCornersPerQuad - StartingQuadVertIndex;
+                    int quadVertIndex = (tileIndex - TileStartIndex) * NumOfCornersPerQuad;
                     int indexBufferOffset = IndexBufferSize;
-
-                    IndexBuffer[indexBufferOffset + 0] = (short)(quadVertIndex + 0);
-                    IndexBuffer[indexBufferOffset + 1] = (short)(quadVertIndex + 1);
-                    IndexBuffer[indexBufferOffset + 2] = (short)(quadVertIndex + 2);
-                    IndexBuffer[indexBufferOffset + 3] = (short)(quadVertIndex + 3);
-                    IndexBuffer[indexBufferOffset + 4] = (short)(quadVertIndex + 2);
-                    IndexBuffer[indexBufferOffset + 5] = (short)(quadVertIndex + 1);
+                    var indices = IndexBuffer.Data.Elements;
+
+                    indices[indexBufferOffset + 0] = (short)(quadVertIndex + 0);
+                    indices[indexBufferOffset + 1] = (short)(quadVertIndex + 1);
+                    indices[indexBufferOffset + 2] = (short)(quadVertIndex + 2);
+                    indices[indexBufferOffset + 3] = (short)(quadVertIndex + 3);
+                    indices[indexBufferOffset + 4] = (short)(quadVertIndex + 2);
+                    indices[indexBufferOffset + 5] = (short)(quadVertIndex + 1);

                     IndexBufferSize += NumOfVerticesPerQuad;
                     NumberOfVisiblePrimitives += NumOfPrimitivesPerQuad;
@@ -956,7 +981,8 @@

             public void EndUpdateIndexBuffer()
             {
-                // No op for now
+                IndexBuffer.Count = IndexBufferSize;
+                IndexBuffer.UpdateBuffer();
             }
         }


Minor label change

Minor label change

--- MainForm.Designer.cs
+++ MainForm.Designer.cs
@@ -607,7 +607,7 @@
             this.label14.Size = new System.Drawing.Size(681, 32);
             this.label14.TabIndex = 8;
             this.label14.Text = "Determines the quality of the video. Keep blank to let the program pick one based" +
-    " on size limit.";
+    " on size limit and duration.";
             this.label14.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
             //
             // tableLayoutPanel8


Complete redesign, now using tabs

Complete redesign, now using tabs

This should make it less of a clusterfuck.

--- MainForm.Designer.cs
+++ MainForm.Designer.cs
@@ -30,11 +30,25 @@
         {
             System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
             this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
+            this.groupBox1 = new System.Windows.Forms.GroupBox();
+            this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
+            this.buttonBrowseOut = new System.Windows.Forms.Button();
+            this.textBoxOut = new System.Windows.Forms.TextBox();
+            this.label4 = new System.Windows.Forms.Label();
+            this.label1 = new System.Windows.Forms.Label();
+            this.textBoxIn = new System.Windows.Forms.TextBox();
+            this.buttonGo = new System.Windows.Forms.Button();
+            this.buttonBrowseIn = new System.Windows.Forms.Button();
+            this.tabControl1 = new System.Windows.Forms.TabControl();
+            this.tabPage1 = new System.Windows.Forms.TabPage();
+            this.tabPage2 = new System.Windows.Forms.TabPage();
+            this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel();
+            this.tableLayoutPanel4 = new System.Windows.Forms.TableLayoutPanel();
             this.groupBox3 = new System.Windows.Forms.GroupBox();
-            this.tableLayoutPanel4 = new System.Windows.Forms.TableLayoutPanel();
+            this.tableLayoutPanel10 = new System.Windows.Forms.TableLayoutPanel();
             this.label7 = new System.Windows.Forms.Label();
             this.label9 = new System.Windows.Forms.Label();
-            this.tableLayoutPanel10 = new System.Windows.Forms.TableLayoutPanel();
+            this.tableLayoutPanel12 = new System.Windows.Forms.TableLayoutPanel();
             this.trackThreads = new System.Windows.Forms.TrackBar();
             this.labelThreads = new System.Windows.Forms.Label();
             this.label18 = new System.Windows.Forms.Label();
@@ -42,11 +56,6 @@
             this.label3 = new System.Windows.Forms.Label();
             this.textBoxArguments = new System.Windows.Forms.TextBox();
             this.label21 = new System.Windows.Forms.Label();
-            this.groupBox5 = new System.Windows.Forms.GroupBox();
-            this.tableLayoutPanel11 = new System.Windows.Forms.TableLayoutPanel();
-            this.label19 = new System.Windows.Forms.Label();
-            this.boxMetadataTitle = new System.Windows.Forms.TextBox();
-            this.label20 = new System.Windows.Forms.Label();
             this.groupBox4 = new System.Windows.Forms.GroupBox();
             this.tableLayoutPanel5 = new System.Windows.Forms.TableLayoutPanel();
             this.tableLayoutPanel9 = new System.Windows.Forms.TableLayoutPanel();
@@ -71,95 +80,261 @@
             this.boxResH = new System.Windows.Forms.TextBox();
             this.boxResW = new System.Windows.Forms.TextBox();
             this.label8 = new System.Windows.Forms.Label();
-            this.groupBox1 = new System.Windows.Forms.GroupBox();
-            this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
-            this.buttonBrowseOut = new System.Windows.Forms.Button();
-            this.textBoxOut = new System.Windows.Forms.TextBox();
-            this.label4 = new System.Windows.Forms.Label();
-            this.label1 = new System.Windows.Forms.Label();
-            this.textBoxIn = new System.Windows.Forms.TextBox();
-            this.buttonGo = new System.Windows.Forms.Button();
-            this.buttonBrowseIn = new System.Windows.Forms.Button();
+            this.groupBox5 = new System.Windows.Forms.GroupBox();
+            this.tableLayoutPanel11 = new System.Windows.Forms.TableLayoutPanel();
+            this.label19 = new System.Windows.Forms.Label();
+            this.boxMetadataTitle = new System.Windows.Forms.TextBox();
+            this.label20 = new System.Windows.Forms.Label();
             this.tableLayoutPanel1.SuspendLayout();
+            this.groupBox1.SuspendLayout();
+            this.tableLayoutPanel2.SuspendLayout();
+            this.tabControl1.SuspendLayout();
+            this.tabPage1.SuspendLayout();
+            this.tabPage2.SuspendLayout();
+            this.tableLayoutPanel3.SuspendLayout();
+            this.tableLayoutPanel4.SuspendLayout();
             this.groupBox3.SuspendLayout();
-            this.tableLayoutPanel4.SuspendLayout();
             this.tableLayoutPanel10.SuspendLayout();
+            this.tableLayoutPanel12.SuspendLayout();
             ((System.ComponentModel.ISupportInitialize)(this.trackThreads)).BeginInit();
-            this.groupBox5.SuspendLayout();
-            this.tableLayoutPanel11.SuspendLayout();
             this.groupBox4.SuspendLayout();
             this.tableLayoutPanel5.SuspendLayout();
             this.tableLayoutPanel9.SuspendLayout();
             this.tableLayoutPanel7.SuspendLayout();
             this.tableLayoutPanel8.SuspendLayout();
             this.tableLayoutPanel6.SuspendLayout();
-            this.groupBox1.SuspendLayout();
-            this.tableLayoutPanel2.SuspendLayout();
+            this.groupBox5.SuspendLayout();
+            this.tableLayoutPanel11.SuspendLayout();
             this.SuspendLayout();
             //
             // tableLayoutPanel1
             //
             this.tableLayoutPanel1.ColumnCount = 1;
             this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
-            this.tableLayoutPanel1.Controls.Add(this.groupBox3, 0, 3);
-            this.tableLayoutPanel1.Controls.Add(this.groupBox5, 0, 1);
-            this.tableLayoutPanel1.Controls.Add(this.groupBox4, 0, 2);
             this.tableLayoutPanel1.Controls.Add(this.groupBox1, 0, 0);
+            this.tableLayoutPanel1.Controls.Add(this.tabControl1, 0, 1);
             this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
             this.tableLayoutPanel1.Location = new System.Drawing.Point(3, 3);
             this.tableLayoutPanel1.Name = "tableLayoutPanel1";
-            this.tableLayoutPanel1.RowCount = 3;
-            this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 18.07512F));
-            this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 12.20657F));
-            this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
-            this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 36.85446F));
-            this.tableLayoutPanel1.Size = new System.Drawing.Size(959, 432);
+            this.tableLayoutPanel1.RowCount = 2;
+            this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 84F));
+            this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
+            this.tableLayoutPanel1.Size = new System.Drawing.Size(953, 346);
             this.tableLayoutPanel1.TabIndex = 0;
             //
+            // groupBox1
+            //
+            this.groupBox1.Controls.Add(this.tableLayoutPanel2);
+            this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.groupBox1.Location = new System.Drawing.Point(3, 3);
+            this.groupBox1.Name = "groupBox1";
+            this.groupBox1.Size = new System.Drawing.Size(947, 78);
+            this.groupBox1.TabIndex = 0;
+            this.groupBox1.TabStop = false;
+            this.groupBox1.Text = "Main";
+            //
+            // tableLayoutPanel2
+            //
+            this.tableLayoutPanel2.ColumnCount = 4;
+            this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 69F));
+            this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
+            this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 68F));
+            this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 77F));
+            this.tableLayoutPanel2.Controls.Add(this.buttonBrowseOut, 2, 1);
+            this.tableLayoutPanel2.Controls.Add(this.textBoxOut, 1, 1);
+            this.tableLayoutPanel2.Controls.Add(this.label4, 0, 1);
+            this.tableLayoutPanel2.Controls.Add(this.label1, 0, 0);
+            this.tableLayoutPanel2.Controls.Add(this.textBoxIn, 1, 0);
+            this.tableLayoutPanel2.Controls.Add(this.buttonGo, 3, 0);
+            this.tableLayoutPanel2.Controls.Add(this.buttonBrowseIn, 2, 0);
+            this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.tableLayoutPanel2.Location = new System.Drawing.Point(3, 16);
+            this.tableLayoutPanel2.Name = "tableLayoutPanel2";
+            this.tableLayoutPanel2.RowCount = 2;
+            this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
+            this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
+            this.tableLayoutPanel2.Size = new System.Drawing.Size(941, 59);
+            this.tableLayoutPanel2.TabIndex = 0;
+            //
+            // buttonBrowseOut
+            //
+            this.buttonBrowseOut.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.buttonBrowseOut.Location = new System.Drawing.Point(799, 32);
+            this.buttonBrowseOut.Name = "buttonBrowseOut";
+            this.buttonBrowseOut.Size = new System.Drawing.Size(62, 24);
+            this.buttonBrowseOut.TabIndex = 5;
+            this.buttonBrowseOut.Text = "Browse";
+            this.buttonBrowseOut.UseVisualStyleBackColor = true;
+            this.buttonBrowseOut.Click += new System.EventHandler(this.buttonBrowseOut_Click);
+            //
+            // textBoxOut
+            //
+            this.textBoxOut.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+            this.textBoxOut.Location = new System.Drawing.Point(72, 34);
+            this.textBoxOut.Name = "textBoxOut";
+            this.textBoxOut.Size = new System.Drawing.Size(721, 20);
+            this.textBoxOut.TabIndex = 4;
+            //
+            // label4
+            //
+            this.label4.AutoSize = true;
+            this.label4.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.label4.Location = new System.Drawing.Point(3, 29);
+            this.label4.Name = "label4";
+            this.label4.Size = new System.Drawing.Size(63, 30);
+            this.label4.TabIndex = 3;
+            this.label4.Text = "Output file";
+            this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+            //
+            // label1
+            //
+            this.label1.AutoSize = true;
+            this.label1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.label1.Location = new System.Drawing.Point(3, 0);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(63, 29);
+            this.label1.TabIndex = 0;
+            this.label1.Text = "Input file";
+            this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+            //
+            // textBoxIn
+            //
+            this.textBoxIn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+            this.textBoxIn.Location = new System.Drawing.Point(72, 4);
+            this.textBoxIn.Name = "textBoxIn";
+            this.textBoxIn.Size = new System.Drawing.Size(721, 20);
+            this.textBoxIn.TabIndex = 1;
+            //
+            // buttonGo
+            //
+            this.buttonGo.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.buttonGo.Location = new System.Drawing.Point(867, 3);
+            this.buttonGo.Name = "buttonGo";
+            this.tableLayoutPanel2.SetRowSpan(this.buttonGo, 2);
+            this.buttonGo.Size = new System.Drawing.Size(71, 53);
+            this.buttonGo.TabIndex = 6;
+            this.buttonGo.Text = "Convert";
+            this.buttonGo.UseVisualStyleBackColor = true;
+            this.buttonGo.Click += new System.EventHandler(this.buttonGo_Click);
+            //
+            // buttonBrowseIn
+            //
+            this.buttonBrowseIn.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.buttonBrowseIn.Location = new System.Drawing.Point(799, 3);
+            this.buttonBrowseIn.Name = "buttonBrowseIn";
+            this.buttonBrowseIn.Size = new System.Drawing.Size(62, 23);
+            this.buttonBrowseIn.TabIndex = 2;
+            this.buttonBrowseIn.Text = "Browse";
+            this.buttonBrowseIn.UseVisualStyleBackColor = true;
+            this.buttonBrowseIn.Click += new System.EventHandler(this.buttonBrowseIn_Click);
+            //
+            // tabControl1
+            //
+            this.tabControl1.Controls.Add(this.tabPage1);
+            this.tabControl1.Controls.Add(this.tabPage2);
+            this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.tabControl1.Location = new System.Drawing.Point(3, 87);
+            this.tabControl1.Name = "tabControl1";
+            this.tabControl1.SelectedIndex = 0;
+            this.tabControl1.Size = new System.Drawing.Size(947, 256);
+            this.tabControl1.TabIndex = 6;
+            //
+            // tabPage1
+            //
+            this.tabPage1.BackColor = System.Drawing.SystemColors.Control;
+            this.tabPage1.Controls.Add(this.tableLayoutPanel3);
+            this.tabPage1.Location = new System.Drawing.Point(4, 22);
+            this.tabPage1.Name = "tabPage1";
+            this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
+            this.tabPage1.Size = new System.Drawing.Size(939, 230);
+            this.tabPage1.TabIndex = 0;
+            this.tabPage1.Text = "Basic";
+            //
+            // tabPage2
+            //
+            this.tabPage2.BackColor = System.Drawing.SystemColors.Control;
+            this.tabPage2.Controls.Add(this.tableLayoutPanel4);
+            this.tabPage2.Location = new System.Drawing.Point(4, 22);
+            this.tabPage2.Name = "tabPage2";
+            this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
+            this.tabPage2.Size = new System.Drawing.Size(939, 230);
+            this.tabPage2.TabIndex = 1;
+            this.tabPage2.Text = "Advanced";
+            //
+            // tableLayoutPanel3
+            //
+            this.tableLayoutPanel3.ColumnCount = 1;
+            this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
+            this.tableLayoutPanel3.Controls.Add(this.groupBox5, 0, 0);
+            this.tableLayoutPanel3.Controls.Add(this.groupBox4, 0, 1);
+            this.tableLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.tableLayoutPanel3.Location = new System.Drawing.Point(3, 3);
+            this.tableLayoutPanel3.Name = "tableLayoutPanel3";
+            this.tableLayoutPanel3.RowCount = 2;
+            this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 31.49351F));
+            this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 68.50649F));
+            this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
+            this.tableLayoutPanel3.Size = new System.Drawing.Size(933, 224);
+            this.tableLayoutPanel3.TabIndex = 0;
+            //
+            // tableLayoutPanel4
+            //
+            this.tableLayoutPanel4.ColumnCount = 1;
+            this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
+            this.tableLayoutPanel4.Controls.Add(this.groupBox3, 0, 0);
+            this.tableLayoutPanel4.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.tableLayoutPanel4.Location = new System.Drawing.Point(3, 3);
+            this.tableLayoutPanel4.Name = "tableLayoutPanel4";
+            this.tableLayoutPanel4.RowCount = 2;
+            this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
+            this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 74F));
+            this.tableLayoutPanel4.Size = new System.Drawing.Size(933, 224);
+            this.tableLayoutPanel4.TabIndex = 0;
+            //
             // groupBox3
             //
             this.groupBox3.AutoSize = true;
-            this.groupBox3.Controls.Add(this.tableLayoutPanel4);
+            this.groupBox3.Controls.Add(this.tableLayoutPanel10);
             this.groupBox3.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.groupBox3.Location = new System.Drawing.Point(3, 275);
+            this.groupBox3.Location = new System.Drawing.Point(3, 3);
             this.groupBox3.Name = "groupBox3";
-            this.groupBox3.Size = new System.Drawing.Size(953, 154);
-            this.groupBox3.TabIndex = 6;
+            this.groupBox3.Size = new System.Drawing.Size(927, 144);
+            this.groupBox3.TabIndex = 8;
             this.groupBox3.TabStop = false;
             this.groupBox3.Text = "Advanced";
             //
-            // tableLayoutPanel4
-            //
-            this.tableLayoutPanel4.ColumnCount = 3;
-            this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 31.19658F));
-            this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 68.80342F));
-            this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 695F));
-            this.tableLayoutPanel4.Controls.Add(this.label7, 0, 1);
-            this.tableLayoutPanel4.Controls.Add(this.label9, 2, 1);
-            this.tableLayoutPanel4.Controls.Add(this.tableLayoutPanel10, 1, 1);
-            this.tableLayoutPanel4.Controls.Add(this.label18, 2, 2);
-            this.tableLayoutPanel4.Controls.Add(this.checkBox2Pass, 0, 2);
-            this.tableLayoutPanel4.Controls.Add(this.label3, 0, 3);
-            this.tableLayoutPanel4.Controls.Add(this.textBoxArguments, 1, 3);
-            this.tableLayoutPanel4.Controls.Add(this.label21, 0, 0);
-            this.tableLayoutPanel4.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.tableLayoutPanel4.Location = new System.Drawing.Point(3, 16);
-            this.tableLayoutPanel4.Name = "tableLayoutPanel4";
-            this.tableLayoutPanel4.RowCount = 4;
-            this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
-            this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
-            this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 28.57143F));
-            this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 38.77551F));
-            this.tableLayoutPanel4.Size = new System.Drawing.Size(947, 135);
-            this.tableLayoutPanel4.TabIndex = 0;
+            // tableLayoutPanel10
+            //
+            this.tableLayoutPanel10.ColumnCount = 3;
+            this.tableLayoutPanel10.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 31.19658F));
+            this.tableLayoutPanel10.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 68.80342F));
+            this.tableLayoutPanel10.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 696F));
+            this.tableLayoutPanel10.Controls.Add(this.label7, 0, 1);
+            this.tableLayoutPanel10.Controls.Add(this.label9, 2, 1);
+            this.tableLayoutPanel10.Controls.Add(this.tableLayoutPanel12, 1, 1);
+            this.tableLayoutPanel10.Controls.Add(this.label18, 2, 2);
+            this.tableLayoutPanel10.Controls.Add(this.checkBox2Pass, 0, 2);
+            this.tableLayoutPanel10.Controls.Add(this.label3, 0, 3);
+            this.tableLayoutPanel10.Controls.Add(this.textBoxArguments, 1, 3);
+            this.tableLayoutPanel10.Controls.Add(this.label21, 0, 0);
+            this.tableLayoutPanel10.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.tableLayoutPanel10.Location = new System.Drawing.Point(3, 16);
+            this.tableLayoutPanel10.Name = "tableLayoutPanel10";
+            this.tableLayoutPanel10.RowCount = 4;
+            this.tableLayoutPanel10.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28F));
+            this.tableLayoutPanel10.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
+            this.tableLayoutPanel10.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
+            this.tableLayoutPanel10.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
+            this.tableLayoutPanel10.Size = new System.Drawing.Size(921, 125);
+            this.tableLayoutPanel10.TabIndex = 0;
             //
             // label7
             //
             this.label7.AutoSize = true;
             this.label7.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.label7.Location = new System.Drawing.Point(3, 20);
+            this.label7.Location = new System.Drawing.Point(3, 28);
             this.label7.Name = "label7";
-            this.label7.Size = new System.Drawing.Size(72, 38);
+            this.label7.Size = new System.Drawing.Size(64, 32);
             this.label7.TabIndex = 28;
             this.label7.Text = "Threads:";
             this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
@@ -168,28 +343,28 @@
             //
             this.label9.AutoSize = true;
             this.label9.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.label9.Location = new System.Drawing.Point(254, 20);
+            this.label9.Location = new System.Drawing.Point(227, 28);
             this.label9.Name = "label9";
-            this.label9.Size = new System.Drawing.Size(690, 38);
+            this.label9.Size = new System.Drawing.Size(691, 32);
             this.label9.TabIndex = 27;
             this.label9.Text = "Determines amount of threads ffmpeg uses. Try setting this to 1 if ffmpeg.exe cra" +
     "shes as soon as you click Convert.";
             this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
             //
-            // tableLayoutPanel10
-            //
-            this.tableLayoutPanel10.ColumnCount = 2;
-            this.tableLayoutPanel10.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 86.18421F));
-            this.tableLayoutPanel10.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 13.81579F));
-            this.tableLayoutPanel10.Controls.Add(this.trackThreads, 0, 0);
-            this.tableLayoutPanel10.Controls.Add(this.labelThreads, 1, 0);
-            this.tableLayoutPanel10.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.tableLayoutPanel10.Location = new System.Drawing.Point(81, 23);
-            this.tableLayoutPanel10.Name = "tableLayoutPanel10";
-            this.tableLayoutPanel10.RowCount = 1;
-            this.tableLayoutPanel10.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
-            this.tableLayoutPanel10.Size = new System.Drawing.Size(167, 32);
-            this.tableLayoutPanel10.TabIndex = 26;
+            // tableLayoutPanel12
+            //
+            this.tableLayoutPanel12.ColumnCount = 2;
+            this.tableLayoutPanel12.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 86.18421F));
+            this.tableLayoutPanel12.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 13.81579F));
+            this.tableLayoutPanel12.Controls.Add(this.trackThreads, 0, 0);
+            this.tableLayoutPanel12.Controls.Add(this.labelThreads, 1, 0);
+            this.tableLayoutPanel12.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.tableLayoutPanel12.Location = new System.Drawing.Point(73, 31);
+            this.tableLayoutPanel12.Name = "tableLayoutPanel12";
+            this.tableLayoutPanel12.RowCount = 1;
+            this.tableLayoutPanel12.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
+            this.tableLayoutPanel12.Size = new System.Drawing.Size(148, 26);
+            this.tableLayoutPanel12.TabIndex = 26;
             //
             // trackThreads
             //
@@ -199,7 +374,7 @@
             this.trackThreads.Maximum = 16;
             this.trackThreads.Minimum = 1;
             this.trackThreads.Name = "trackThreads";
-            this.trackThreads.Size = new System.Drawing.Size(143, 32);
+            this.trackThreads.Size = new System.Drawing.Size(127, 26);
             this.trackThreads.TabIndex = 0;
             this.trackThreads.Value = 1;
             this.trackThreads.Scroll += new System.EventHandler(this.trackThreads_Scroll);
@@ -208,10 +383,10 @@
             //
             this.labelThreads.AutoSize = true;
             this.labelThreads.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.labelThreads.Location = new System.Drawing.Point(143, 0);
+            this.labelThreads.Location = new System.Drawing.Point(127, 0);
             this.labelThreads.Margin = new System.Windows.Forms.Padding(0);
             this.labelThreads.Name = "labelThreads";
-            this.labelThreads.Size = new System.Drawing.Size(24, 32);
+            this.labelThreads.Size = new System.Drawing.Size(21, 26);
             this.labelThreads.TabIndex = 1;
             this.labelThreads.Text = "1";
             this.labelThreads.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -220,23 +395,22 @@
             //
             this.label18.AutoSize = true;
             this.label18.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.label18.Location = new System.Drawing.Point(254, 58);
+            this.label18.Location = new System.Drawing.Point(227, 60);
             this.label18.Name = "label18";
-            this.label18.Size = new System.Drawing.Size(690, 32);
+            this.label18.Size = new System.Drawing.Size(691, 32);
             this.label18.TabIndex = 16;
             this.label18.Text = "Will make ffmpeg use two passes, which can increase the quality/size ratio, but a" +
     "lso increases the time it takes to encode. Disable if you run into any issues.";
             this.label18.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
-            this.label18.Click += new System.EventHandler(this.label18_Click);
             //
             // checkBox2Pass
             //
             this.checkBox2Pass.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
-            this.tableLayoutPanel4.SetColumnSpan(this.checkBox2Pass, 2);
+            this.tableLayoutPanel10.SetColumnSpan(this.checkBox2Pass, 2);
             this.checkBox2Pass.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.checkBox2Pass.Location = new System.Drawing.Point(3, 61);
+            this.checkBox2Pass.Location = new System.Drawing.Point(3, 63);
             this.checkBox2Pass.Name = "checkBox2Pass";
-            this.checkBox2Pass.Size = new System.Drawing.Size(245, 26);
+            this.checkBox2Pass.Size = new System.Drawing.Size(218, 26);
             this.checkBox2Pass.TabIndex = 12;
             this.checkBox2Pass.Text = "Enable 2-pass encoding:";
             this.checkBox2Pass.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
@@ -247,9 +421,9 @@
             this.label3.AutoSize = true;
             this.label3.Dock = System.Windows.Forms.DockStyle.Fill;
             this.label3.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
-            this.label3.Location = new System.Drawing.Point(3, 90);
+            this.label3.Location = new System.Drawing.Point(3, 92);
             this.label3.Name = "label3";
-            this.label3.Size = new System.Drawing.Size(72, 45);
+            this.label3.Size = new System.Drawing.Size(64, 33);
             this.label3.TabIndex = 29;
             this.label3.Text = "Arguments";
             this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
@@ -257,91 +431,33 @@
             // textBoxArguments
             //
             this.textBoxArguments.Anchor = System.Windows.Forms.AnchorStyles.Left;
-            this.tableLayoutPanel4.SetColumnSpan(this.textBoxArguments, 2);
-            this.textBoxArguments.Location = new System.Drawing.Point(81, 102);
+            this.tableLayoutPanel10.SetColumnSpan(this.textBoxArguments, 2);
+            this.textBoxArguments.Location = new System.Drawing.Point(73, 98);
             this.textBoxArguments.Name = "textBoxArguments";
-            this.textBoxArguments.Size = new System.Drawing.Size(858, 20);
+            this.textBoxArguments.Size = new System.Drawing.Size(845, 20);
             this.textBoxArguments.TabIndex = 30;
             //
             // label21
             //
             this.label21.AutoSize = true;
-            this.tableLayoutPanel4.SetColumnSpan(this.label21, 3);
+            this.tableLayoutPanel10.SetColumnSpan(this.label21, 3);
             this.label21.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.label21.Location = new System.Drawing.Point(3, 0);
+            this.label21.Location = new System.Drawing.Point(3, 3);
+            this.label21.Margin = new System.Windows.Forms.Padding(3);
             this.label21.Name = "label21";
-            this.label21.Size = new System.Drawing.Size(941, 20);
+            this.label21.Size = new System.Drawing.Size(915, 22);
             this.label21.TabIndex = 31;
             this.label21.Text = "Don\'t modify these unless you know what you\'re doing!";
-            //
-            // groupBox5
-            //
-            this.groupBox5.Controls.Add(this.tableLayoutPanel11);
-            this.groupBox5.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.groupBox5.Location = new System.Drawing.Point(3, 80);
-            this.groupBox5.Name = "groupBox5";
-            this.groupBox5.Size = new System.Drawing.Size(953, 46);
-            this.groupBox5.TabIndex = 5;
-            this.groupBox5.TabStop = false;
-            this.groupBox5.Text = "Metadata";
-            //
-            // tableLayoutPanel11
-            //
-            this.tableLayoutPanel11.ColumnCount = 3;
-            this.tableLayoutPanel11.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 76F));
-            this.tableLayoutPanel11.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 413F));
-            this.tableLayoutPanel11.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
-            this.tableLayoutPanel11.Controls.Add(this.label19, 0, 0);
-            this.tableLayoutPanel11.Controls.Add(this.boxMetadataTitle, 1, 0);
-            this.tableLayoutPanel11.Controls.Add(this.label20, 2, 0);
-            this.tableLayoutPanel11.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.tableLayoutPanel11.Location = new System.Drawing.Point(3, 16);
-            this.tableLayoutPanel11.Name = "tableLayoutPanel11";
-            this.tableLayoutPanel11.RowCount = 1;
-            this.tableLayoutPanel11.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
-            this.tableLayoutPanel11.Size = new System.Drawing.Size(947, 27);
-            this.tableLayoutPanel11.TabIndex = 0;
-            //
-            // label19
-            //
-            this.label19.AutoSize = true;
-            this.label19.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.label19.Location = new System.Drawing.Point(3, 0);
-            this.label19.Name = "label19";
-            this.label19.Size = new System.Drawing.Size(70, 27);
-            this.label19.TabIndex = 0;
-            this.label19.Text = "Title:";
-            this.label19.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
-            //
-            // boxMetadataTitle
-            //
-            this.boxMetadataTitle.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
-            this.boxMetadataTitle.Location = new System.Drawing.Point(79, 3);
-            this.boxMetadataTitle.Name = "boxMetadataTitle";
-            this.boxMetadataTitle.Size = new System.Drawing.Size(407, 20);
-            this.boxMetadataTitle.TabIndex = 1;
-            this.boxMetadataTitle.TextChanged += new System.EventHandler(this.UpdateArguments);
-            //
-            // label20
-            //
-            this.label20.AutoSize = true;
-            this.label20.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.label20.Location = new System.Drawing.Point(492, 0);
-            this.label20.Name = "label20";
-            this.label20.Size = new System.Drawing.Size(452, 27);
-            this.label20.TabIndex = 2;
-            this.label20.Text = "Adds a string of text to the metadata of the video, which can be used to indicate" +
-    " the source of a video, for example. Leave blank for no title.";
-            this.label20.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+            this.label21.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
             //
             // groupBox4
             //
             this.groupBox4.Controls.Add(this.tableLayoutPanel5);
             this.groupBox4.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.groupBox4.Location = new System.Drawing.Point(3, 132);
+            this.groupBox4.Location = new System.Drawing.Point(3, 73);
             this.groupBox4.Name = "groupBox4";
-            this.groupBox4.Size = new System.Drawing.Size(953, 137);
-            this.groupBox4.TabIndex = 4;
+            this.groupBox4.Size = new System.Drawing.Size(927, 148);
+            this.groupBox4.TabIndex = 5;
             this.groupBox4.TabStop = false;
             this.groupBox4.Text = "Video";
             //
@@ -371,7 +487,7 @@
             this.tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F));
             this.tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F));
             this.tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F));
-            this.tableLayoutPanel5.Size = new System.Drawing.Size(947, 118);
+            this.tableLayoutPanel5.Size = new System.Drawing.Size(921, 129);
             this.tableLayoutPanel5.TabIndex = 0;
             //
             // tableLayoutPanel9
@@ -384,18 +500,18 @@
             this.tableLayoutPanel9.Controls.Add(this.boxCropFrom, 0, 0);
             this.tableLayoutPanel9.Controls.Add(this.label17, 1, 0);
             this.tableLayoutPanel9.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.tableLayoutPanel9.Location = new System.Drawing.Point(76, 29);
+            this.tableLayoutPanel9.Location = new System.Drawing.Point(76, 32);
             this.tableLayoutPanel9.Margin = new System.Windows.Forms.Padding(0);
             this.tableLayoutPanel9.Name = "tableLayoutPanel9";
             this.tableLayoutPanel9.RowCount = 1;
             this.tableLayoutPanel9.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
-            this.tableLayoutPanel9.Size = new System.Drawing.Size(158, 29);
+            this.tableLayoutPanel9.Size = new System.Drawing.Size(158, 32);
             this.tableLayoutPanel9.TabIndex = 4;
             //
             // boxCropTo
             //
             this.boxCropTo.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
-            this.boxCropTo.Location = new System.Drawing.Point(90, 4);
+            this.boxCropTo.Location = new System.Drawing.Point(90, 6);
             this.boxCropTo.Name = "boxCropTo";
             this.boxCropTo.Size = new System.Drawing.Size(65, 20);
             this.boxCropTo.TabIndex = 2;
@@ -404,7 +520,7 @@
             // boxCropFrom
             //
             this.boxCropFrom.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
-            this.boxCropFrom.Location = new System.Drawing.Point(3, 4);
+            this.boxCropFrom.Location = new System.Drawing.Point(3, 6);
             this.boxCropFrom.Name = "boxCropFrom";
             this.boxCropFrom.Size = new System.Drawing.Size(65, 20);
             this.boxCropFrom.TabIndex = 0;
@@ -417,7 +533,7 @@
             this.label17.Location = new System.Drawing.Point(71, 0);
             this.label17.Margin = new System.Windows.Forms.Padding(0);
             this.label17.Name = "label17";
-            this.label17.Size = new System.Drawing.Size(16, 29);
+            this.label17.Size = new System.Drawing.Size(16, 32);
             this.label17.TabIndex = 1;
             this.label17.Text = "to";
             this.label17.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
@@ -430,18 +546,18 @@
             this.tableLayoutPanel7.Controls.Add(this.boxLimit, 0, 0);
             this.tableLayoutPanel7.Controls.Add(this.label16, 1, 0);
             this.tableLayoutPanel7.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.tableLayoutPanel7.Location = new System.Drawing.Point(76, 87);
+            this.tableLayoutPanel7.Location = new System.Drawing.Point(76, 96);
             this.tableLayoutPanel7.Margin = new System.Windows.Forms.Padding(0);
             this.tableLayoutPanel7.Name = "tableLayoutPanel7";
             this.tableLayoutPanel7.RowCount = 1;
             this.tableLayoutPanel7.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
-            this.tableLayoutPanel7.Size = new System.Drawing.Size(158, 31);
+            this.tableLayoutPanel7.Size = new System.Drawing.Size(158, 33);
             this.tableLayoutPanel7.TabIndex = 10;
             //
             // boxLimit
             //
             this.boxLimit.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
-            this.boxLimit.Location = new System.Drawing.Point(3, 5);
+            this.boxLimit.Location = new System.Drawing.Point(3, 6);
             this.boxLimit.Name = "boxLimit";
             this.boxLimit.Size = new System.Drawing.Size(112, 20);
             this.boxLimit.TabIndex = 0;
@@ -453,7 +569,7 @@
             this.label16.Dock = System.Windows.Forms.DockStyle.Fill;
             this.label16.Location = new System.Drawing.Point(121, 0);
             this.label16.Name = "label16";
-            this.label16.Size = new System.Drawing.Size(34, 31);
+            this.label16.Size = new System.Drawing.Size(34, 33);
             this.label16.TabIndex = 1;
             this.label16.Text = "MB";
             this.label16.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -462,9 +578,9 @@
             //
             this.label15.AutoSize = true;
             this.label15.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.label15.Location = new System.Drawing.Point(3, 87);
+            this.label15.Location = new System.Drawing.Point(3, 96);
             this.label15.Name = "label15";
-            this.label15.Size = new System.Drawing.Size(70, 31);
+            this.label15.Size = new System.Drawing.Size(70, 33);
             this.label15.TabIndex = 9;
             this.label15.Text = "Size limit:";
             this.label15.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
@@ -473,9 +589,9 @@
             //
             this.label6.AutoSize = true;
             this.label6.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.label6.Location = new System.Drawing.Point(237, 87);
+            this.label6.Location = new System.Drawing.Point(237, 96);
             this.label6.Name = "label6";
-            this.label6.Size = new System.Drawing.Size(707, 31);
+            this.label6.Size = new System.Drawing.Size(681, 33);
             this.label6.TabIndex = 11;
             this.label6.Text = "Will adjust the quality to attempt to stay below this limit, and cut off the end " +
     "of a video if needed. Leave blank for no limit. The limit on 4chan is 3 MB. If e" +
@@ -486,12 +602,12 @@
             //
             this.label14.AutoSize = true;
             this.label14.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.label14.Location = new System.Drawing.Point(237, 58);
+            this.label14.Location = new System.Drawing.Point(237, 64);
             this.label14.Name = "label14";
-            this.label14.Size = new System.Drawing.Size(707, 29);
+            this.label14.Size = new System.Drawing.Size(681, 32);
             this.label14.TabIndex = 8;
-            this.label14.Text = "Advanced users only. Keep blank if you don\'t know what this means, it\'ll get calc" +
-    "ulated automatically based on size limit.";
+            this.label14.Text = "Determines the quality of the video. Keep blank to let the program pick one based" +
+    " on size limit.";
             this.label14.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
             //
             // tableLayoutPanel8
@@ -502,19 +618,19 @@
             this.tableLayoutPanel8.Controls.Add(this.boxBitrate, 0, 0);
             this.tableLayoutPanel8.Controls.Add(this.label13, 1, 0);
             this.tableLayoutPanel8.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.tableLayoutPanel8.Location = new System.Drawing.Point(76, 58);
+            this.tableLayoutPanel8.Location = new System.Drawing.Point(76, 64);
             this.tableLayoutPanel8.Margin = new System.Windows.Forms.Padding(0);
             this.tableLayoutPanel8.Name = "tableLayoutPanel8";
             this.tableLayoutPanel8.RowCount = 1;
             this.tableLayoutPanel8.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
-            this.tableLayoutPanel8.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F));
-            this.tableLayoutPanel8.Size = new System.Drawing.Size(158, 29);
+            this.tableLayoutPanel8.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 29F));
+            this.tableLayoutPanel8.Size = new System.Drawing.Size(158, 32);
             this.tableLayoutPanel8.TabIndex = 7;
             //
             // boxBitrate
             //
             this.boxBitrate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
-            this.boxBitrate.Location = new System.Drawing.Point(3, 4);
+            this.boxBitrate.Location = new System.Drawing.Point(3, 6);
             this.boxBitrate.Name = "boxBitrate";
             this.boxBitrate.Size = new System.Drawing.Size(112, 20);
             this.boxBitrate.TabIndex = 0;
@@ -526,7 +642,7 @@
             this.label13.Dock = System.Windows.Forms.DockStyle.Fill;
             this.label13.Location = new System.Drawing.Point(121, 0);
             this.label13.Name = "label13";
-            this.label13.Size = new System.Drawing.Size(34, 29);
+            this.label13.Size = new System.Drawing.Size(34, 32);
             this.label13.TabIndex = 1;
             this.label13.Text = "Kb/s";
             this.label13.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -535,9 +651,9 @@
             //
             this.label12.AutoSize = true;
             this.label12.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.label12.Location = new System.Drawing.Point(3, 58);
+            this.label12.Location = new System.Drawing.Point(3, 64);
             this.label12.Name = "label12";
-            this.label12.Size = new System.Drawing.Size(70, 29);
+            this.label12.Size = new System.Drawing.Size(70, 32);
             this.label12.TabIndex = 6;
             this.label12.Text = "Bitrate:";
             this.label12.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
@@ -546,9 +662,9 @@
             //
             this.label11.AutoSize = true;
             this.label11.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.label11.Location = new System.Drawing.Point(237, 29);
+            this.label11.Location = new System.Drawing.Point(237, 32);
             this.label11.Name = "label11";
-            this.label11.Size = new System.Drawing.Size(707, 29);
+            this.label11.Size = new System.Drawing.Size(681, 32);
             this.label11.TabIndex = 5;
             this.label11.Text = resources.GetString("label11.Text");
             this.label11.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -557,9 +673,9 @@
             //
             this.label10.AutoSize = true;
             this.label10.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.label10.Location = new System.Drawing.Point(3, 29);
+            this.label10.Location = new System.Drawing.Point(3, 32);
             this.label10.Name = "label10";
-            this.label10.Size = new System.Drawing.Size(70, 29);
+            this.label10.Size = new System.Drawing.Size(70, 32);
             this.label10.TabIndex = 3;
             this.label10.Text = "Crop video:";
             this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
@@ -570,7 +686,7 @@
             this.label5.Dock = System.Windows.Forms.DockStyle.Fill;
             this.label5.Location = new System.Drawing.Point(237, 0);
             this.label5.Name = "label5";
-            this.label5.Size = new System.Drawing.Size(707, 29);
+            this.label5.Size = new System.Drawing.Size(681, 32);
             this.label5.TabIndex = 2;
             this.label5.Text = "Enter nothing to keep resolution intact. Enter -1 in one of the fields to scale a" +
     "ccording to aspect ratio.";
@@ -582,7 +698,7 @@
             this.label2.Dock = System.Windows.Forms.DockStyle.Fill;
             this.label2.Location = new System.Drawing.Point(3, 0);
             this.label2.Name = "label2";
-            this.label2.Size = new System.Drawing.Size(70, 29);
+            this.label2.Size = new System.Drawing.Size(70, 32);
             this.label2.TabIndex = 0;
             this.label2.Text = "Resolution:";
             this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
@@ -602,14 +718,14 @@
             this.tableLayoutPanel6.Name = "tableLayoutPanel6";
             this.tableLayoutPanel6.RowCount = 1;
             this.tableLayoutPanel6.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
-            this.tableLayoutPanel6.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F));
-            this.tableLayoutPanel6.Size = new System.Drawing.Size(158, 29);
+            this.tableLayoutPanel6.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 29F));
+            this.tableLayoutPanel6.Size = new System.Drawing.Size(158, 32);
             this.tableLayoutPanel6.TabIndex = 1;
             //
             // boxResH
             //
             this.boxResH.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
-            this.boxResH.Location = new System.Drawing.Point(90, 4);
+            this.boxResH.Location = new System.Drawing.Point(90, 6);
             this.boxResH.Name = "boxResH";
             this.boxResH.Size = new System.Drawing.Size(65, 20);
             this.boxResH.TabIndex = 2;
@@ -618,7 +734,7 @@
             // boxResW
             //
             this.boxResW.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
-            this.boxResW.Location = new System.Drawing.Point(3, 4);
+            this.boxResW.Location = new System.Drawing.Point(3, 6);
             this.boxResW.Name = "boxResW";
             this.boxResW.Size = new System.Drawing.Size(65, 20);
             this.boxResW.TabIndex = 0;
@@ -631,142 +747,101 @@
             this.label8.Location = new System.Drawing.Point(71, 0);
             this.label8.Margin = new System.Windows.Forms.Padding(0);
             this.label8.Name = "label8";
-            this.label8.Size = new System.Drawing.Size(16, 29);
+            this.label8.Size = new System.Drawing.Size(16, 32);
             this.label8.TabIndex = 1;
             this.label8.Text = "x";
             this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
             //
-            // groupBox1
-            //
-            this.groupBox1.Controls.Add(this.tableLayoutPanel2);
-            this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.groupBox1.Location = new System.Drawing.Point(3, 3);
-            this.groupBox1.Name = "groupBox1";
-            this.groupBox1.Size = new System.Drawing.Size(953, 71);
-            this.groupBox1.TabIndex = 0;
-            this.groupBox1.TabStop = false;
-            this.groupBox1.Text = "Main";
-            //
-            // tableLayoutPanel2
-            //
-            this.tableLayoutPanel2.ColumnCount = 4;
-            this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 69F));
-            this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
-            this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 68F));
-            this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 77F));
-            this.tableLayoutPanel2.Controls.Add(this.buttonBrowseOut, 2, 1);
-            this.tableLayoutPanel2.Controls.Add(this.textBoxOut, 1, 1);
-            this.tableLayoutPanel2.Controls.Add(this.label4, 0, 1);
-            this.tableLayoutPanel2.Controls.Add(this.label1, 0, 0);
-            this.tableLayoutPanel2.Controls.Add(this.textBoxIn, 1, 0);
-            this.tableLayoutPanel2.Controls.Add(this.buttonGo, 3, 0);
-            this.tableLayoutPanel2.Controls.Add(this.buttonBrowseIn, 2, 0);
-            this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.tableLayoutPanel2.Location = new System.Drawing.Point(3, 16);
-            this.tableLayoutPanel2.Name = "tableLayoutPanel2";
-            this.tableLayoutPanel2.RowCount = 2;
-            this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
-            this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
-            this.tableLayoutPanel2.Size = new System.Drawing.Size(947, 52);
-            this.tableLayoutPanel2.TabIndex = 0;
-            //
-            // buttonBrowseOut
-            //
-            this.buttonBrowseOut.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.buttonBrowseOut.Location = new System.Drawing.Point(805, 29);
-            this.buttonBrowseOut.Name = "buttonBrowseOut";
-            this.buttonBrowseOut.Size = new System.Drawing.Size(62, 20);
-            this.buttonBrowseOut.TabIndex = 5;
-            this.buttonBrowseOut.Text = "Browse";
-            this.buttonBrowseOut.UseVisualStyleBackColor = true;
-            this.buttonBrowseOut.Click += new System.EventHandler(this.buttonBrowseOut_Click);
-            //
-            // textBoxOut
-            //
-            this.textBoxOut.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
-            this.textBoxOut.Location = new System.Drawing.Point(72, 29);
-            this.textBoxOut.Name = "textBoxOut";
-            this.textBoxOut.Size = new System.Drawing.Size(727, 20);
-            this.textBoxOut.TabIndex = 4;
-            //
-            // label4
-            //
-            this.label4.AutoSize = true;
-            this.label4.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.label4.Location = new System.Drawing.Point(3, 26);
-            this.label4.Name = "label4";
-            this.label4.Size = new System.Drawing.Size(63, 26);
-            this.label4.TabIndex = 3;
-            this.label4.Text = "Output file";
-            this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
-            //
-            // label1
-            //
-            this.label1.AutoSize = true;
-            this.label1.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.label1.Location = new System.Drawing.Point(3, 0);
-            this.label1.Name = "label1";
-            this.label1.Size = new System.Drawing.Size(63, 26);
-            this.label1.TabIndex = 0;
-            this.label1.Text = "Input file";
-            this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
-            //
-            // textBoxIn
-            //
-            this.textBoxIn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
-            this.textBoxIn.Location = new System.Drawing.Point(72, 3);
-            this.textBoxIn.Name = "textBoxIn";
-            this.textBoxIn.Size = new System.Drawing.Size(727, 20);
-            this.textBoxIn.TabIndex = 1;
-            //
-            // buttonGo
-            //
-            this.buttonGo.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.buttonGo.Location = new System.Drawing.Point(873, 3);
-            this.buttonGo.Name = "buttonGo";
-            this.tableLayoutPanel2.SetRowSpan(this.buttonGo, 2);
-            this.buttonGo.Size = new System.Drawing.Size(71, 46);
-            this.buttonGo.TabIndex = 6;
-            this.buttonGo.Text = "Convert";
-            this.buttonGo.UseVisualStyleBackColor = true;
-            this.buttonGo.Click += new System.EventHandler(this.buttonGo_Click);
-            //
-            // buttonBrowseIn
-            //
-            this.buttonBrowseIn.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.buttonBrowseIn.Location = new System.Drawing.Point(805, 3);
-            this.buttonBrowseIn.Name = "buttonBrowseIn";
-            this.buttonBrowseIn.Size = new System.Drawing.Size(62, 20);
-            this.buttonBrowseIn.TabIndex = 2;
-            this.buttonBrowseIn.Text = "Browse";
-            this.buttonBrowseIn.UseVisualStyleBackColor = true;
-            this.buttonBrowseIn.Click += new System.EventHandler(this.buttonBrowseIn_Click);
+            // groupBox5
+            //
+            this.groupBox5.Controls.Add(this.tableLayoutPanel11);
+            this.groupBox5.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.groupBox5.Location = new System.Drawing.Point(3, 3);
+            this.groupBox5.Name = "groupBox5";
+            this.groupBox5.Size = new System.Drawing.Size(927, 64);
+            this.groupBox5.TabIndex = 6;
+            this.groupBox5.TabStop = false;
+            this.groupBox5.Text = "Metadata";
+            //
+            // tableLayoutPanel11
+            //
+            this.tableLayoutPanel11.ColumnCount = 3;
+            this.tableLayoutPanel11.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 76F));
+            this.tableLayoutPanel11.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 413F));
+            this.tableLayoutPanel11.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
+            this.tableLayoutPanel11.Controls.Add(this.label19, 0, 0);
+            this.tableLayoutPanel11.Controls.Add(this.boxMetadataTitle, 1, 0);
+            this.tableLayoutPanel11.Controls.Add(this.label20, 2, 0);
+            this.tableLayoutPanel11.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.tableLayoutPanel11.Location = new System.Drawing.Point(3, 16);
+            this.tableLayoutPanel11.Name = "tableLayoutPanel11";
+            this.tableLayoutPanel11.RowCount = 1;
+            this.tableLayoutPanel11.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
+            this.tableLayoutPanel11.Size = new System.Drawing.Size(921, 45);
+            this.tableLayoutPanel11.TabIndex = 0;
+            //
+            // label19
+            //
+            this.label19.AutoSize = true;
+            this.label19.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.label19.Location = new System.Drawing.Point(3, 0);
+            this.label19.Name = "label19";
+            this.label19.Size = new System.Drawing.Size(70, 45);
+            this.label19.TabIndex = 0;
+            this.label19.Text = "Title:";
+            this.label19.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+            //
+            // boxMetadataTitle
+            //
+            this.boxMetadataTitle.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+            this.boxMetadataTitle.Location = new System.Drawing.Point(79, 12);
+            this.boxMetadataTitle.Name = "boxMetadataTitle";
+            this.boxMetadataTitle.Size = new System.Drawing.Size(407, 20);
+            this.boxMetadataTitle.TabIndex = 1;
+            this.boxMetadataTitle.TextChanged += new System.EventHandler(this.UpdateArguments);
+            //
+            // label20
+            //
+            this.label20.AutoSize = true;
+            this.label20.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.label20.Location = new System.Drawing.Point(492, 0);
+            this.label20.Name = "label20";
+            this.label20.Size = new System.Drawing.Size(426, 45);
+            this.label20.TabIndex = 2;
+            this.label20.Text = "Adds a string of text to the metadata of the video, which can be used to indicate" +
+    " the source of a video, for example. Leave blank for no title.";
+            this.label20.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
             //
             // MainForm
             //
             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-            this.ClientSize = new System.Drawing.Size(959, 432);
+            this.ClientSize = new System.Drawing.Size(959, 352);
             this.Controls.Add(this.tableLayoutPanel1);
             this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D;
             this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
             this.MaximizeBox = false;
-            this.MinimumSize = new System.Drawing.Size(975, 470);
+            this.MinimumSize = new System.Drawing.Size(975, 270);
             this.Name = "MainForm";
             this.Padding = new System.Windows.Forms.Padding(3);
             this.Text = "WebM for Retards";
             this.Load += new System.EventHandler(this.MainForm_Load);
             this.tableLayoutPanel1.ResumeLayout(false);
-            this.tableLayoutPanel1.PerformLayout();
-            this.groupBox3.ResumeLayout(false);
+            this.groupBox1.ResumeLayout(false);
+            this.tableLayoutPanel2.ResumeLayout(false);
+            this.tableLayoutPanel2.PerformLayout();
+            this.tabControl1.ResumeLayout(false);
+            this.tabPage1.ResumeLayout(false);
+            this.tabPage2.ResumeLayout(false);
+            this.tableLayoutPanel3.ResumeLayout(false);
             this.tableLayoutPanel4.ResumeLayout(false);
             this.tableLayoutPanel4.PerformLayout();
+            this.groupBox3.ResumeLayout(false);
             this.tableLayoutPanel10.ResumeLayout(false);
             this.tableLayoutPanel10.PerformLayout();
+            this.tableLayoutPanel12.ResumeLayout(false);
+            this.tableLayoutPanel12.PerformLayout();
             ((System.ComponentModel.ISupportInitialize)(this.trackThreads)).EndInit();
-            this.groupBox5.ResumeLayout(false);
-            this.tableLayoutPanel11.ResumeLayout(false);
-            this.tableLayoutPanel11.PerformLayout();
             this.groupBox4.ResumeLayout(false);
             this.tableLayoutPanel5.ResumeLayout(false);
             this.tableLayoutPanel5.PerformLayout();
@@ -778,9 +853,9 @@
             this.tableLayoutPanel8.PerformLayout();
             this.tableLayoutPanel6.ResumeLayout(false);
             this.tableLayoutPanel6.PerformLayout();
-            this.groupBox1.ResumeLayout(false);
-            this.tableLayoutPanel2.ResumeLayout(false);
-            this.tableLayoutPanel2.PerformLayout();
+            this.groupBox5.ResumeLayout(false);
+            this.tableLayoutPanel11.ResumeLayout(false);
+            this.tableLayoutPanel11.PerformLayout();
             this.ResumeLayout(false);

         }
@@ -797,15 +872,9 @@
         private System.Windows.Forms.TextBox textBoxIn;
         private System.Windows.Forms.Button buttonGo;
         private System.Windows.Forms.Button buttonBrowseIn;
-        private System.Windows.Forms.GroupBox groupBox3;
-        private System.Windows.Forms.TableLayoutPanel tableLayoutPanel4;
-        private System.Windows.Forms.Label label7;
-        private System.Windows.Forms.Label label9;
-        private System.Windows.Forms.TableLayoutPanel tableLayoutPanel10;
-        private System.Windows.Forms.TrackBar trackThreads;
-        private System.Windows.Forms.Label labelThreads;
-        private System.Windows.Forms.Label label18;
-        private System.Windows.Forms.CheckBox checkBox2Pass;
+        private System.Windows.Forms.TabControl tabControl1;
+        private System.Windows.Forms.TabPage tabPage1;
+        private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3;
         private System.Windows.Forms.GroupBox groupBox5;
         private System.Windows.Forms.TableLayoutPanel tableLayoutPanel11;
         private System.Windows.Forms.Label label19;
@@ -835,6 +904,17 @@
         private System.Windows.Forms.TextBox boxResH;
         private System.Windows.Forms.TextBox boxResW;
         private System.Windows.Forms.Label label8;
+        private System.Windows.Forms.TabPage tabPage2;
+        private System.Windows.Forms.TableLayoutPanel tableLayoutPanel4;
+        private System.Windows.Forms.GroupBox groupBox3;
+        private System.Windows.Forms.TableLayoutPanel tableLayoutPanel10;
+        private System.Windows.Forms.Label label7;
+        private System.Windows.Forms.Label label9;
+        private System.Windows.Forms.TableLayoutPanel tableLayoutPanel12;
+        private System.Windows.Forms.TrackBar trackThreads;
+        private System.Windows.Forms.Label labelThreads;
+        private System.Windows.Forms.Label label18;
+        private System.Windows.Forms.CheckBox checkBox2Pass;
         private System.Windows.Forms.Label label3;
         private System.Windows.Forms.TextBox textBoxArguments;
         private System.Windows.Forms.Label label21;


Set TabStop to prevent path being selected

--- MainForm.Designer.cs
+++ MainForm.Designer.cs
@@ -58,16 +58,17 @@
             // folderTextBox
             //
             this.folderTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-            | System.Windows.Forms.AnchorStyles.Right)));
+            | System.Windows.Forms.AnchorStyles.Right)));
             this.folderTextBox.BorderStyle = System.Windows.Forms.BorderStyle.None;
             this.folderTextBox.Location = new System.Drawing.Point(66, 31);
             this.folderTextBox.Name = "folderTextBox";
             this.folderTextBox.Size = new System.Drawing.Size(428, 22);
             this.folderTextBox.TabIndex = 1;
+            this.folderTextBox.TabStop = false;
             //
             // browseButton
             //
-            this.browseButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+            this.browseButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
             this.browseButton.FlatAppearance.BorderSize = 0;
             this.browseButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
             this.browseButton.Location = new System.Drawing.Point(513, 25);
@@ -80,7 +81,7 @@
             //
             // goButton
             //
-            this.goButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+            this.goButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
             this.goButton.FlatAppearance.BorderSize = 0;
             this.goButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
             this.goButton.Location = new System.Drawing.Point(513, 68);
@@ -95,9 +96,9 @@
             //
             this.logTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
             | System.Windows.Forms.AnchorStyles.Left)
-            | System.Windows.Forms.AnchorStyles.Right)));
+            | System.Windows.Forms.AnchorStyles.Right)));
             this.logTextBox.BorderStyle = System.Windows.Forms.BorderStyle.None;
-            this.logTextBox.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.logTextBox.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
             this.logTextBox.Location = new System.Drawing.Point(210, 134);
             this.logTextBox.Multiline = true;
             this.logTextBox.Name = "logTextBox";


Fix Windowed doc to reflect fix in #152

Fix Windowed doc to reflect fix in #152

--- MoreLinq/Windowed.cs
+++ MoreLinq/Windowed.cs
@@ -27,8 +27,6 @@
         /// Processes a sequence into a series of subsequences representing a windowed subset of the original
         ///
         /// <remarks>
-        /// This operator is guaranteed to return at least one result, even if the source sequence is smaller
-        /// than the window size.

         /// The number of sequences returned is: <c>Max(0, sequence.Count() - windowSize) + 1</c>

         /// Returned subsequences are buffered, but the overall operation is streamed.

         /// </remarks>


Remove zero only if serialized key is 33 bytes long.

--- Novacoin/CKeyPair.cs
+++ Novacoin/CKeyPair.cs
@@ -184,7 +184,7 @@
             {
                 var secretBytes = new List<byte>(_Private.D.ToByteArray());

-                if (secretBytes[0] == 0x00)
+                if (secretBytes.Count == 33 && secretBytes[0] == 0x00)
                 {
                     // Remove sign
                     secretBytes.RemoveAt(0);


Update Navigator.cs

Update Navigator.cs

JSONFormatter for Enabled on Navigator is incorrect #1

--- Options/Navigator.cs
+++ Options/Navigator.cs
@@ -35,7 +35,7 @@
         /// Enable or disable the navigator.
         /// Defaults to true.
         /// </summary>
-        [JsonFormatter("{{ {0} }}")]
+        [JsonFormatter("{{ 0 }}")]
         public bool? Enabled
         {
             get;
@@ -112,4 +112,4 @@
             set;
         }
     }
-}+}


Added: DeleteObjetcs

Added: DeleteObjetcs


delete useless event

delete useless event