dotFusion.net

gsub2srt 0.1, a sub2srt GUI released

Posted on: March 21st, 2011.
Category: Plain C

Hi everybody! I didn’t write for such a long time. Last months I don’t have enough free time to work on my favourite spare time projects. I’m publishing a link to the sub2srt GUI application rewritten in plain C using the GTK+ runtime.
 

Right now the application works on Unix/Linux/*BSD. It won’t be much porting to make it work on Windows which will probably be done in the next version.
 

Go to gsub2srt project website
 
gsub2srt screenshot

Source code numberings remover 0.2

Posted on: June 10th, 2010.
Category: C++

Didn’t write for a long time. Just a quick post to add the new version of my Source code numberings remover…

#ifndef __linux__
       #include <conio.h>
#else
       #include "getch.h"
#endif
 
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <fstream>
#include <cstring>
 
using namespace std;
 
    void RemStartingChars(string &input, bool spacesRemoved)
    {
         if (!spacesRemoved)
               while (input[0] == ' ')
                    input = input.substr( 1, strlen(input.c_str()) );
 
         char numbers[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
         int i = -1;
         bool hasMore = false, tmp = false;
 
         while (numbers[++i])
               while(tmp = (input[0] == numbers[i]))
               {
                     hasMore = hasMore || tmp;
                     input = input.substr( 1, strlen(input.c_str()) );
               }
 
         if (hasMore)
            RemStartingChars(input, true);
    }
 
    int main(int argc, char *argv[])
    {
		cout<<"Source code numberings remover 0.2"<<endl;
		cout<<"Written by Iskren Slavov"<<endl;
		cout<<"Copyright (C) 2009,2010"<<endl;
 
		cout<<"\nThis computer software must be ";
		cout<<"redistributed and edited under the terms of GNU GPLv2. ";
		cout<<"For more information about licensing read COPYING file.\n\n";
 
 
        if (argc > 1)
        {
                 ifstream inFile;
                 ofstream outFile;
 
                 inFile.open(argv[1]);
                 outFile.open(argv[2]);
 
                 if (!inFile)
                 {
                    cerr<<"Unable to open file: "<<argv[1]<<endl;
                    system("PAUSE");
                    exit(1);
                 }
 
                 string input;
                 cout<<"=========================\nConverting... ";
                 while (getline(inFile, input))
                 {
                       RemStartingChars(input, false);
                       outFile<<input<<endl;
                 }
                 cout<<"All done!\n========================="<<endl;
 
                 outFile.flush();
                 outFile.close();
                 inFile.close();
        }
		else
		{
			#ifdef __linux__
            			char * progname = argv[0];
			#else
						char * progname = strrchr(argv[0], '\\')+1;
			#endif
            cout<<"================================================================"<<endl;
            cout<<"Description: Removes leading numbers from source code."<<endl;
            cout<<"Usage: "<<progname<<" <input-file.txt> <output-file.txt>"<<endl;
            cout<<"================================================================"<<endl;
      		cout<<"Press any key to exit . . ."<<endl;
 
      		#ifdef __linux__
            	getchar();
            #else
            	getch();
            #endif
		}
        return 0;
    }

Source code numberings remover 0.2

Sub2Srt GUI in FreePascal (Lazarus)

Posted on: April 23rd, 2009.
Category: Lazarus (FreePascal)

I’ve been very busy lately, so I didn’t have much time to write almost anything.
But these days (around Easter) I bought a WDTV Media Player for my television. And I found that the player didn’t play simple text subtitles (*.sub without *.idx). So I found this little script sub2srt.pl (Thanks Robelix) and I wrote a simple GUI for it in FreePascal so that it should compile on every platform.

 

Sub2Srt GUI Win32 0.2 Screenshot

 

I’m releasing the binary of the Win32 version for now. But stay tuned – soon I will be releasing a Win64 (AMD64) version, Linux (X86, AMD64) and MacOS X (Universal binary) versions of the program. And as soon as I’m sure the program works on all platforms I’ll release the the final source code.

 

Download the 32-bit Windows version of Sub2Srt GUI

Source code numberings remover (C++ Rewrite)

Posted on: January 23rd, 2009.
Category: C++

This is the C++ rewrite of the Numberings remover tool. It compiles with MingW/GCC and any other major C++ compiler under Windows. Under Linux it is tested with GCC only. I think it should work fine on some other Unix-like operating systems but it is not tested. If you test it on some OS other than Linux or Windows you can send me your fixes/suggestions and/or the results of the test.
 

Here is the source code:

#ifndef __linux__
       #include <conio.h>
#else
       #include "getch.h"
#endif
 
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <string>
 
using namespace std;
 
    void RemStartingChars(string &input, bool spacesRemoved)
    {
         if (!spacesRemoved)
               while (input[0] == ' ')
                    input = input.substr( 1, strlen(input.c_str()) );
 
         char numbers[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
         int i = -1;
         bool hasMore = false, tmp = false;
 
         while (numbers[++i])
               while(tmp = (input[0] == numbers[i]))
               {
                     hasMore = hasMore || tmp;
                     input = input.substr( 1, strlen(input.c_str()) );
               }
 
         if (hasMore)
            RemStartingChars(input, true);
    }
 
    int main(int argc, char *argv[])
    {
		cout<<"Source code numberings remover (C++ rewrite) 0.1"<<endl;
		cout<<"Written by Iskren Slavov"<<endl;
		cout<<"Copyright (C) 2009"<<endl;
 
		cout<<"\nThis computer software must be ";
		cout<<"redistributed and edited under the terms of GNU GPLv2. ";
		cout<<"For more information about licensing read LICENSE.TXT\n\n";
 
 
        if (argc > 1)
        {
                 ifstream inFile;
                 ofstream outFile;
 
                 inFile.open(argv[1]);
                 outFile.open(argv[2]);
 
                 if (!inFile)
                 {
                    cerr<<"Unable to open file: "<<argv[1]<<endl;
                    system("PAUSE");
                    exit(1);
                 }
 
                 string input;
                 cout<<"=========================\nConverting... ";
                 while (getline(inFile, input))
                 {
                       RemStartingChars(input, false);
                       outFile<<input<<endl;
                 }
                 cout<<"All done!\n========================="<<endl;
 
                 outFile.flush();
                 outFile.close();
                 inFile.close();
        }
		else
		{
			#ifdef __linux__
				char * progname = argv[0];
			#else
				char * progname = strrchr(argv[0], '\\')+1;
			#endif
            cout<<"======================"<<endl;
            cout<<"Description: Removes leading numbers from source code."<<endl;
            cout<<"Usage: "<<progname<<" <input-file.txt> <output-file.txt>"<<endl;
            cout<<"======================"<<endl;
      		cout<<"Press any key to exit . . ."<<endl;
            getch();
		}
        return 0;
    }

 
Download the full Source Code (C++)

Source code numbering remover

Posted on: January 20th, 2009.
Category: C#

I’ve been copying a lot of source code from different sites recently. But when I copy the source code it is being pasted with numberings in front of every line.
 

So I wrote this program to remove all the numbers before each line of source code.

 
Here’s the nuberings remover source:

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
 
namespace RemFirstNums
{
    class Program
    {
        static void RemStartSymbols(ref String input, bool firstSpacesRemoved)
        {
            String numbers = "0123456789";
            CharEnumerator charEnum = numbers.GetEnumerator();
            bool foundMore = false, tmp = false;
 
            if (!firstSpacesRemoved)
                while (input.StartsWith(" ") || input.StartsWith("\\s+"))
                    input = input.Substring(1, input.Length - 1);
 
            while (charEnum.MoveNext())
                while (tmp = input.StartsWith(charEnum.Current.ToString()))
                {
                    foundMore = foundMore || tmp;
                    input = input.Substring(1, input.Length - 1);
                }
            if (foundMore)
                RemStartSymbols(ref input, true);
        }
        static void Main(String[] args)
        {
            TextReader TextRead = null;
            TextWriter TextWrite = null;
 
            Console.WriteLine("NumberingRemover for C# 0.1");
            Console.WriteLine("Written by Iskren Slavov");
            Console.WriteLine("Copyright (C) 2009");
 
            Console.Write("\nThis computer software must be ");
            Console.Write("redistributed and edited under the terms of GNU GPL v2. ");
            Console.Write("For more information about licensing read LICENSE.TXT\n\n");
 
            try
            {
                if ((args[0].Trim() != null) && (args[1].Trim() != null))
                {
                    String workStr = "";
                    TextRead = new StreamReader(args[0]);
                    TextWrite = new StreamWriter(args[1]);
 
                    Console.Write("=========================\nConverting... ");
                    while ((workStr = TextRead.ReadLine()) != null)
                    {
                        RemStartSymbols(ref workStr, false);
                        TextWrite.WriteLine(workStr);
                    }
                    Console.WriteLine("All done!\n=========================");
                }
 
                TextRead.Close();
                TextWrite.Close();
            }
            catch (IOException ex)
            {
                Console.Error.WriteLine("{0}", ex.Message);
                Console.WriteLine("\nPress any key to exit . . .");
                Console.ReadKey();
            }
            catch (IndexOutOfRangeException)
            {
                Console.WriteLine("==================");
                Console.WriteLine("Description: Removes leading numbers from source code.");
                Console.WriteLine("Usage: NumberingRemover.exe <input-file.txt> <output-file.txt>");
                Console.WriteLine("==================");
                Console.WriteLine("\nPress any key to exit . . .");
                Console.ReadKey();
            }
        }
    }
}

 
Download the source code and binaries (MS Visual C# Express edition project)

I hope this little program will be helpful for you, developers. I’m thinking of a rewrite in C++, so stay tuned…