| View previous topic :: View next topic |
| Author |
Message |
Titeuf l33t


Joined: 19 Jun 2004 Posts: 759 Location: Middelkerke, Belgium
|
Posted: Wed Sep 14, 2005 11:22 pm Post subject: Comic Browser - A program to easily browse internet comics |
|
|
Comic Browser is a simple gui-interface to read online web comics such as Penny Arcade and User Friendly. It allows you to easily see when there's a new comic out and read an entire archive of a certain comic with simple buttons to go to the previous and next comic.
Here are some of it's features:
* Choose between many comics
* Easily go to the first, previous, next and last comic with a single click
* Mark comics bold when there's a new one out
* Download the previous/next comic while you're reading a comic so that going to it happens almost instantaneous
* Hide comics you don't like to read
* Supports comics using multiple images
* Works on Linux and Windows, probably on more too
You can find it here, there's also a screenshot there to see how it looks like.
If you find a bug, want a new feature or just want to give some suggestion post it here or mail me. I'll be glad to hear
Here's the original post:
I'm busy making a program to browse and watch internet comics more easy.
screenshot
It has been made using mono, gtk-sharp and glade-sharp (so you need that to run it).
Every comic is installed through a dll file, so it's very easy to add new comics.
You can now browse 3 comics: John & John, Sexy Losers and User Friendly. I'm working on some more.
source and binaries
It has been made in monodevelop, so there's no makefile (yet).
Here's what I still have to do (in no particular order):
-clean and comment the source a bit
-better logo
-make the jump to button work
-add more comics
-add a makefile
-create ebuild, rpm, deb, ...
-make window bigger when opened
-look for extra comic dll's in ~/.comicbrowser and /usr/share/comicbrowser instead of ./
If you have more ideas or noticed a bug, just tell me. I'll be glad to hear 
Last edited by Titeuf on Tue Jan 10, 2006 7:01 pm; edited 1 time in total |
|
| Back to top |
|
 |
Redeeman l33t


Joined: 25 Sep 2003 Posts: 957 Location: Denmark
|
Posted: Thu Sep 15, 2005 12:05 am Post subject: |
|
|
nice application, ill try it immediately _________________ Sandberg Enterprises |
|
| Back to top |
|
 |
Redeeman l33t


Joined: 25 Sep 2003 Posts: 957 Location: Denmark
|
Posted: Thu Sep 15, 2005 12:06 am Post subject: |
|
|
how do you build this thing? why not use nant? i can create you a nant build file if you like.. just tell me what should be linked into what. _________________ Sandberg Enterprises |
|
| Back to top |
|
 |
Titeuf l33t


Joined: 19 Jun 2004 Posts: 759 Location: Middelkerke, Belgium
|
Posted: Thu Sep 15, 2005 12:11 am Post subject: |
|
|
| Redeeman wrote: | | how do you build this thing? why not use nant? i can create you a nant build file if you like.. just tell me what should be linked into what. |
You can open it in monodevelop, there's a project file included
Otherwise if you want to do this manually:
To compile the main program:
| Code: |
mcs Main.cs IComic.cs -out:ComicBrowser.exe -pkg:glade-sharp -pkg:gtk-sharp -resource:gui.glade -resource:logo.png
|
And to compile comic plugins:
| Code: |
mcs JohnJohn/MyClass.cs -t:library -out:JohnJohn.dll -r:ComicBrowser.exe
|
I didn't use nant because I don't really know what it is, I'll look at how it works tomorrow. |
|
| Back to top |
|
 |
Redeeman l33t


Joined: 25 Sep 2003 Posts: 957 Location: Denmark
|
Posted: Thu Sep 15, 2005 12:22 am Post subject: |
|
|
i'll also create a ebuild.. if you tell me what i need for a nant build file.. well basically what to link with.. (i guess glade and gtk-sharp, but i need the path for references in nant) _________________ Sandberg Enterprises |
|
| Back to top |
|
 |
Titeuf l33t


Joined: 19 Jun 2004 Posts: 759 Location: Middelkerke, Belgium
|
Posted: Thu Sep 15, 2005 12:32 am Post subject: |
|
|
| Redeeman wrote: | | i'll also create a ebuild.. if you tell me what i need for a nant build file.. well basically what to link with.. (i guess glade and gtk-sharp, but i need the path for references in nant) |
Do you mean the path where the dll's have to be ? As for now they have to be in the same directory as ComicBrowser.exe.
So it's best to put it somewhere in /usr/lib/comicbrowser and create a small script in /usr/bin to launch it.
Is this what you wanted to know with the path for references ? |
|
| Back to top |
|
 |
Titeuf l33t


Joined: 19 Jun 2004 Posts: 759 Location: Middelkerke, Belgium
|
Posted: Thu Sep 15, 2005 3:14 pm Post subject: |
|
|
I've made a new version, here's the changelog:
-Now using nant to build (after some googling, so don't know if it's the correct way to make this)
-Show a progressbar while downloading a comic
-You can abort the download
-You can directly jump to a comic#
-It looks now for the dll's in the same directory as the main program, not in ./ anymore
-New comic: Gaston Lagaffe (in French)
ComicBrowser-0.1.0.0.tgz
Here are the things still to do:
-Don't make it crash with a 403/404/... error
-Look for plugins in your home dir
-More comics
-Better logo (can someone make this, my Gimp skills are really bad )
If you found a bug, want to help me or have a new idea, just post it. |
|
| Back to top |
|
 |
Titeuf l33t


Joined: 19 Jun 2004 Posts: 759 Location: Middelkerke, Belgium
|
Posted: Fri Sep 16, 2005 12:39 am Post subject: |
|
|
New version: ComicBrowser-0.2.0.0.tgz
Changelog:
| Code: |
Version 0.2.0.0
===============
[+] Added Little Gamers comic
[+] Added Nozzman cartoons
[+] Added Penny Arcade comic
[*] Made startup faster: first load the gui, then the comics
[+] Added progress bar at startup to see how much comics still to initialize
[*] Goto dialog now doesn't crash with letters
[*] Goto dialog now doesn't try to show invalid comic numbers
|
If someone is using this, I'm glad to hear comments. |
|
| Back to top |
|
 |
Redeeman l33t


Joined: 25 Sep 2003 Posts: 957 Location: Denmark
|
Posted: Sat Sep 17, 2005 2:32 am Post subject: |
|
|
| Code: |
using System;
using System.IO;
using System.Net;
public class MyClass:IComic {
public string GetComicURL(int ComicNumber) {
return "";
}
public Stream GetComic(int ComicNumber) {
percent = 0;
stop = false;
WebRequest request = WebRequest.Create(new Uri("http://hackles.org/strips/cartoon" + ComicNumber.ToString() +".png"));
WebResponse response = request.GetResponse();
Stream img = response.GetResponseStream();
Stream writer = new MemoryStream();
byte[] buffer = new Byte[1024];
int bytesRead;
float position = 0;
float length = response.ContentLength;
while ((bytesRead = img.Read(buffer, 0, 1024)) > 0) {
if (stop) {
writer.Close();
img.Close();
response.Close();
percent = 1;
return null;
}
writer.Write(buffer,0,bytesRead);
position += bytesRead;
percent =position / length;
}
writer.Flush();
img.Close();
response.Close();
writer.Seek(0, SeekOrigin.Begin);
return writer;
}
public int NumberOfComics {
get {
return 364;
}
}
public string Name {
get {
return "Hackles";
}
}
public float Progress {
get {
return percent;
}
}
public void Stop() {
stop = true;
}
private float percent;
private bool stop;
}
:)
|
_________________ Sandberg Enterprises |
|
| Back to top |
|
 |
Redeeman l33t


Joined: 25 Sep 2003 Posts: 957 Location: Denmark
|
Posted: Sat Sep 17, 2005 3:37 am Post subject: |
|
|
| Code: |
// project created on 14/09/2005 at 22:48
using System;
using System.IO;
using System.Net;
using System.Collections;
public class MyClass:IComic {
private ArrayList Comics;
public MyClass() {
Comics = new ArrayList();
WebRequest request = WebRequest.Create( new Uri( "http://www.ctrlaltdel-online.com/?t=archives" ) );
WebResponse response = request.GetResponse();
StreamReader reader = new StreamReader( response.GetResponseStream() );
string line = "";
string comic = "";
while( line != null ) {
line = reader.ReadLine();
if( line == null ) {
reader.Close();
break;
}
if( line.IndexOf( "<OPTION VALUE" ) != -1 ) {
comic = SplitByString( line, "date=", true )[1];
comic = SplitByString( comic, "\">", true )[0];
if( int.Parse( comic.Replace( "-", "" ) ) > 20030105 )
Comics.Add( comic.Replace( "-", "" ) + ".jpg" );
else Comics.Add( comic.Replace( "-", "" ) + ".gif" );
}
}
reader.Close();
}
public string GetComicURL( int ComicNumber ) {
return "";
}
public Stream GetComic( int ComicNumber ) {
percent = 0;
stop = false;
WebRequest request = WebRequest.Create( new Uri( "http://www.ctrlaltdel-online.com/images/comics/" + Comics[( Comics.Count - ComicNumber )].ToString() ) );
WebResponse response = request.GetResponse();
Stream img = response.GetResponseStream();
Stream writer = new MemoryStream();
byte[] buffer = new Byte[1024];
int bytesRead;
float position = 0;
float length = response.ContentLength;
while( ( bytesRead = img.Read( buffer, 0, 1024 ) ) > 0 ) {
if( stop ) {
writer.Close();
img.Close();
response.Close();
percent = 1;
return null;
}
writer.Write( buffer, 0, bytesRead);
position += bytesRead;
percent =position / length;
}
writer.Flush();
img.Close();
response.Close();
writer.Seek( 0, SeekOrigin.Begin );
return writer;
}
public int NumberOfComics {
get {
return Comics.Count;
}
}
public string Name {
get {
return "Ctrl Alt Del";
}
}
public float Progress {
get {
return percent;
}
}
public void Stop() {
stop = true;
}
private float percent;
private bool stop;
private string[] SplitByString ( string input, string split, bool caseSensitive )
{
string data = caseSensitive ? input : input.ToLower( );
if( ! caseSensitive ) split = split.ToLower( );
ArrayList al = new ArrayList( );
int indx = 0;
int indx2 = data.IndexOf( split, 0 );
while( indx2 != -1 )
{
al.Add( input.Substring( indx, indx2 - indx ) );
indx = indx2 + split.Length ;
indx2 = data.IndexOf( split, indx );
}
if( indx != input.Length - 1 )
al.Add( input.Substring( indx, input.Length - indx ) );
return (string[]) al.ToArray( typeof( string ));
}
}
|
this is one more  _________________ Sandberg Enterprises |
|
| Back to top |
|
 |
Dlareh Advocate


Joined: 06 Aug 2005 Posts: 2102
|
Posted: Sat Sep 17, 2005 3:48 am Post subject: |
|
|
I use dailystrip and gqview.
What are the advantages of your software? _________________ "Mr Thomas Edison has been up on the two previous nights discovering 'a bug' in his phonograph." --Pall Mall Gazette (1889)
Are we THERE yet? |
|
| Back to top |
|
 |
Redeeman l33t


Joined: 25 Sep 2003 Posts: 957 Location: Denmark
|
Posted: Sat Sep 17, 2005 4:09 am Post subject: |
|
|
| Code: | using System;
using System.IO;
using System.Net;
public class MyClass:IComic {
private int numberOfComics;
public MyClass() {
WebRequest request = WebRequest.Create( new Uri( "http://geekz.co.uk/lovesraymond/archives/" ) );
WebResponse response = request.GetResponse();
StreamReader reader = new StreamReader( response.GetResponseStream() );
numberOfComics = 0;
string line = String.Empty;
while( line != null ) {
line = reader.ReadLine();
if( line == null ) {
reader.Close();
break;
}
if( line.IndexOf( "<li><a href='http://geekz.co.uk/lovesraymond/archive/" ) != -1 ) {
numberOfComics++;
}
}
reader.Close();
}
public string GetComicURL( int ComicNumber ) {
return "";
}
public Stream GetComic( int ComicNumber ) {
percent = 0;
stop = false;
WebRequest request = WebRequest.Create( new Uri( "http://geekz.co.uk/lovesraymond/wp-content/ep" + (ComicNumber - 1).ToString( "000" ) + ".jpg" ) );
WebResponse response = request.GetResponse();
Stream img = response.GetResponseStream();
Stream writer = new MemoryStream();
byte[] buffer = new Byte[1024];
int bytesRead;
float position = 0;
float length = response.ContentLength;
while( ( bytesRead = img.Read( buffer, 0, 1024 ) ) > 0 ) {
if( stop ) {
writer.Close();
img.Close();
response.Close();
percent = 1;
return null;
}
writer.Write( buffer, 0, bytesRead);
position += bytesRead;
percent =position / length;
}
writer.Flush();
img.Close();
response.Close();
writer.Seek( 0, SeekOrigin.Begin );
return writer;
}
public int NumberOfComics {
get {
return numberOfComics;
}
}
public string Name {
get {
return "Everybody loves Eric Raymond";
}
}
public float Progress {
get {
return percent;
}
}
public void Stop() {
stop = true;
}
private float percent;
private bool stop;
}
|
another one  _________________ Sandberg Enterprises |
|
| Back to top |
|
 |
Redeeman l33t


Joined: 25 Sep 2003 Posts: 957 Location: Denmark
|
Posted: Sat Sep 17, 2005 4:10 am Post subject: |
|
|
| Dlareh wrote: | I use dailystrip and gqview.
What are the advantages of your software? |
well.. its a nice little application, and its written in C#! _________________ Sandberg Enterprises |
|
| Back to top |
|
 |
Titeuf l33t


Joined: 19 Jun 2004 Posts: 759 Location: Middelkerke, Belgium
|
Posted: Sat Sep 17, 2005 11:32 am Post subject: |
|
|
| Redeeman wrote: | | Dlareh wrote: | I use dailystrip and gqview.
What are the advantages of your software? |
well.. its a nice little application, and its written in C#! |
It also works a bit different than dailystrip: it shows the comics in the program itself and doesn't create html pages for it.
Redeeman: thanks for the comics, but ctrl+alt+del was already included in the upcoming 0.3 release
Is it fine for me to include the others one ? |
|
| Back to top |
|
 |
Titeuf l33t


Joined: 19 Jun 2004 Posts: 759 Location: Middelkerke, Belgium
|
Posted: Sat Sep 17, 2005 12:38 pm Post subject: |
|
|
New version: ComicBrowser-0.3.0.0.tgz
Here's the changelog:
| Code: |
Version 0.3.0.0
===============
[+] Added Matrix Bastardization
[+] Added Mega Tokyo comic
[+] Added Ctrl+Alt+Del, replaced by the one of Redeeman (it's a little faster)
[+] Added Everybody loves Eric Raymond (plugin made by Redeeman)
[+] Added Hackles (plugin made by Redeeman)
[+] Added Applegeeks
[+] Added Dog Complex
[*] Made initialization of Penny Arcade a lot faster
[*] Fixed a bug in build system that Penny Arcade didn't compile
|
I'll look for creating an installer (like make install) with nant. Anyone knows more about this stuff ? |
|
| Back to top |
|
 |
Redeeman l33t


Joined: 25 Sep 2003 Posts: 957 Location: Denmark
|
Posted: Sat Sep 17, 2005 2:42 pm Post subject: |
|
|
| Code: |
using System;
using System.IO;
using System.Net;
using System.Collections;
public class MyClass:IComic {
private int numberOfComics;
public MyClass() {
WebRequest request = WebRequest.Create( new Uri( "http://qwantz.com/" ) );
WebResponse response = request.GetResponse();
StreamReader reader = new StreamReader( response.GetResponseStream() );
numberOfComics = 0;
string line = String.Empty;
while( line != null ) {
line = reader.ReadLine();
if( line == null ) {
reader.Close();
break;
}
if( line.IndexOf( "<a href=\"index.pl?comic=" ) != -1 && line.IndexOf( "\">previous</a>" ) != -1 ) {
string comic = String.Empty;
comic = SplitByString( line, "<a href=\"index.pl?comic=", true )[1];
comic = SplitByString( comic, "\">previous</a>", true )[0];
numberOfComics = ( int.Parse( comic ) + 1 );
}
}
reader.Close();
}
public string GetComicURL( int ComicNumber ) {
return "";
}
public Stream GetComic( int ComicNumber ) {
percent = 0;
stop = false;
/**
With some investigation we could probably avoid doing this extra call
however i am not sure it would be a good idea, the naming of the files
seems eradic at best, and this way it will work in the future too.
*/
WebRequest request = WebRequest.Create( new Uri( "http://qwantz.com/index.pl?comic=" + ComicNumber ) );
WebResponse response = request.GetResponse();
StreamReader reader = new StreamReader( response.GetResponseStream() );
string comic = String.Empty;
string line = String.Empty;
while( line != null ) {
line = reader.ReadLine();
if( line == null ) {
reader.Close();
break;
}
if( line.IndexOf( "<img src=\"/comics/" ) != -1 && line.IndexOf( "\" title=" ) != -1 ) {
comic = SplitByString( line, "<img src=\"/comics/", true )[1];
comic = SplitByString( comic, "\" title=", true )[0];
}
}
request = WebRequest.Create( new Uri( "http://qwantz.com/comics/" + comic ) );
response = request.GetResponse();
Stream img = response.GetResponseStream();
Stream writer = new MemoryStream();
byte[] buffer = new Byte[1024];
int bytesRead;
float position = 0;
float length = response.ContentLength;
while( ( bytesRead = img.Read( buffer, 0, 1024 ) ) > 0 ) {
if( stop ) {
writer.Close();
img.Close();
response.Close();
percent = 1;
return null;
}
writer.Write( buffer, 0, bytesRead);
position += bytesRead;
percent =position / length;
}
writer.Flush();
img.Close();
response.Close();
writer.Seek( 0, SeekOrigin.Begin );
return writer;
}
public int NumberOfComics {
get {
return numberOfComics;
}
}
public string Name {
get {
return "Qwantz Dinosaur Comics";
}
}
public float Progress {
get {
return percent;
}
}
public void Stop() {
stop = true;
}
private float percent;
private bool stop;
private string[] SplitByString ( string input, string split, bool caseSensitive )
{
string data = caseSensitive ? input : input.ToLower( );
if( ! caseSensitive ) split = split.ToLower( );
ArrayList al = new ArrayList( );
int indx = 0;
int indx2 = data.IndexOf( split, 0 );
while( indx2 != -1 )
{
al.Add( input.Substring( indx, indx2 - indx ) );
indx = indx2 + split.Length ;
indx2 = data.IndexOf( split, indx );
}
if( indx != input.Length - 1 )
al.Add( input.Substring( indx, input.Length - indx ) );
return (string[]) al.ToArray( typeof( string ));
}
}
|
oh and btw, i made your nant build thing alittle nicer, atleast i believe it is, use it if you like:
| Code: |
<project name="comicbrowser" default="build">
<property name="debug" value="false" />
<target name="build">
<call target="Plugins" />
</target>
<target name="Main">
<mkdir dir="bin" unless="${directory::exists('bin')}" />
<csc target="exe" output="bin/ComicBrowser.exe">
<arg value="/pkg:glade-sharp" />
<arg value="/pkg:gtk-sharp" />
<sources>
<include name="AssemblyInfo.cs" />
<include name="Main.cs" />
<include name="IComic.cs" />
</sources>
<resources>
<include name="logo.png" />
<include name="gui.glade" />
</resources>
</csc>
</target>
<target name="Plugins" depends="Main">
<csc target="library" output="bin/UserFriendly.dll">
<sources>
<include name="Plugins/UserFriendly.cs" />
</sources>
<references>
<include name="bin/ComicBrowser.exe" />
</references>
</csc>
<csc target="library" output="bin/QwantzDinosaurComics.dll">
<sources>
<include name="Plugins/QwantzDinosaurComics.cs" />
</sources>
<references>
<include name="bin/ComicBrowser.exe" />
</references>
</csc>
<csc target="library" output="bin/LittleGamers.dll">
<sources>
<include name="Plugins/LittleGamers.cs" />
</sources>
<references>
<include name="bin/ComicBrowser.exe" />
</references>
</csc>
<csc target="library" output="bin/Gaston.dll">
<sources>
<include name="Plugins/Gaston.cs" />
</sources>
<references>
<include name="bin/ComicBrowser.exe" />
</references>
</csc>
<csc target="library" output="bin/SexyLosers.dll">
<sources>
<include name="Plugins/SexyLosers.cs" />
</sources>
<references>
<include name="bin/ComicBrowser.exe" />
</references>
</csc>
<csc target="library" output="bin/JohnJohn.dll">
<sources>
<include name="Plugins/JohnJohn.cs" />
</sources>
<references>
<include name="bin/ComicBrowser.exe" />
</references>
</csc>
<csc target="library" output="bin/Nozzman.dll">
<sources>
<include name="Plugins/Nozzman.cs" />
</sources>
<references>
<include name="bin/ComicBrowser.exe" />
</references>
</csc>
<csc target="library" output="bin/PennyArcade.dll">
<sources>
<include name="Plugins/PennyArcade.cs" />
</sources>
<references>
<include name="bin/ComicBrowser.exe" />
</references>
</csc>
<csc target="library" output="bin/MatrixBastardization.dll">
<sources>
<include name="Plugins/MatrixBastardization.cs" />
</sources>
<references>
<include name="bin/ComicBrowser.exe" />
</references>
</csc>
<csc target="library" output="bin/MegaTokyo.dll">
<sources>
<include name="Plugins/MegaTokyo.cs" />
</sources>
<references>
<include name="bin/ComicBrowser.exe" />
</references>
</csc>
<csc target="library" output="bin/CtrlAltDel.dll">
<sources>
<include name="Plugins/CtrlAltDel.cs" />
</sources>
<references>
<include name="bin/ComicBrowser.exe" />
</references>
</csc>
<csc target="library" output="bin/EverybodyLovesEricRaymond.dll">
<sources>
<include name="Plugins/EverybodyLovesEricRaymond.cs" />
</sources>
<references>
<include name="bin/ComicBrowser.exe" />
</references>
</csc>
<csc target="library" output="bin/Hackles.dll">
<sources>
<include name="Plugins/Hackles.cs" />
</sources>
<references>
<include name="bin/ComicBrowser.exe" />
</references>
</csc>
<csc target="library" output="bin/Applegeeks.dll">
<sources>
<include name="Plugins/Applegeeks.cs" />
</sources>
<references>
<include name="bin/ComicBrowser.exe" />
</references>
</csc>
<csc target="library" output="bin/DogComplex.dll">
<sources>
<include name="Plugins/DogComplex.cs" />
</sources>
<references>
<include name="bin/ComicBrowser.exe" />
</references>
</csc>
</target>
<target name="clean">
<delete file="bin/ComicBrowser.exe" if="${file::exists('bin/ComicBrowser.exe')}" />
<delete file="bin/Gaston.dll" if="${file::exists('bin/Gaston.dll')}" />
<delete file="bin/UserFriendly.dll" if="${file::exists('bin/UserFriendly.dll')}" />
<delete file="bin/SexyLosers.dll" if="${file::exists('bin/SexyLosers.dll')}" />
<delete file="bin/JohnJohn.dll" if="${file::exists('bin/JohnJohn.dll')}" />
<delete file="bin/LittleGamers.dll" if="${file::exists('bin/LittleGamers.dll')}" />
<delete file="bin/Nozzman.dll" if="${file::exists('bin/Nozzman.dll')}" />
<delete file="bin/PennyArcade.dll" if="${file::exists('bin/PennyArcade.dll')}" />
<delete file="bin/MatrixBastardization.dll" if="${file::exists('bin/MatrixBastardization.dll')}" />
<delete file="bin/MegaTokyo.dll" if="${file::exists('bin/MegaTokyo.dll')}" />
<delete file="bin/CtrlAltDel.dll" if="${file::exists('bin/CtrlAltDel.dll')}" />
<delete file="bin/EverybodyLovesEricRaymond.dll" if="${file::exists('bin/EverybodyLovesEricRaymond.dll')}" />
<delete file="bin/Hackles.dll" if="${file::exists('bin/Hackles.dll')}" />
<delete file="bin/Applegeeks.dll" if="${file::exists('bin/Applegeeks.dll')}" />
<delete file="bin/DogComplex.dll" if="${file::exists('bin/DogComplex.dll')}" />
</target>
<target name="release" depends="clean,build">
<property name="debug" value="false"/>
<tar destfile="../ComicBrowser-${assemblyname::get-version(assembly::get-name(assembly::load-from-file('bin/ComicBrowser.exe')) )}.tgz" compression="GZip">
<fileset prefix="ComicBrowser-${assemblyname::get-version(assembly::get-name(assembly::load-from-file('bin/ComicBrowser.exe')))}">
<include name="ComicBrowser.build" />
<include name="AssemblyInfo.cs" />
<include name="Main.cs" />
<include name="IComic.cs" />
<include name="README" />
<include name="LICENSE" />
<include name="NEWS" />
<include name="Plugins/JohnJohn.cs" />
<include name="Plugins/SexyLosers.cs" />
<include name="Plugins/Gaston.cs" />
<include name="Plugins/UserFriendly.cs" />
<include name="Plugins/LittleGamers.cs" />
<include name="Plugins/Nozzman.cs" />
<include name="Plugins/PennyArcade.cs" />
<include name="Plugins/MatrixBastardization.cs" />
<include name="Plugins/MegaTokyo.cs" />
<include name="Plugins/CtrlAltDel.cs" />
<include name="Plugins/EverybodyLovesEricRaymond.cs" />
<include name="Plugins/Hackles.cs" />
<include name="Plugins/Applegeeks.cs" />
<include name="Plugins/DogComplex.cs" />
<include name="gui.glade" />
<include name="logo.png" />
<include name="bin/ComicBrowser.exe" />
<include name="bin/UserFriendly.dll" />
<include name="bin/Gaston.dll" />
<include name="bin/JohnJohn.dll" />
<include name="bin/SexyLosers.dll" />
<include name="bin/LittleGamers.dll" />
<include name="bin/Nozzman.dll" />
<include name="bin/PennyArcade.dll" />
<include name="bin/MatrixBastardization.dll" />
<include name="bin/MegaTokyo.dll" />
<include name="bin/CtrlAltDel.dll" />
<include name="bin/EverybodyLovesEricRaymond.dll" />
<include name="bin/Hackles.dll" />
<include name="bin/Applegeeks.dll" />
<include name="bin/DogComplex.dll" />
</fileset>
</tar>
</target>
</project>
|
btw, about the nant build file, i am SURE i have seen a for loop being used, i think it would be possible to do something like:
| Code: | foreach (file("Plugins/*.cs")) {
nant-do-compile-plugin();
} |
so that it could be much nicer, however i just cant find where i saw it anymore
btw, i also recommend making the window abit larger, so that the entire name of the comics can be shown, and so that you dont have to scroll as much. _________________ Sandberg Enterprises |
|
| Back to top |
|
 |
Titeuf l33t


Joined: 19 Jun 2004 Posts: 759 Location: Middelkerke, Belgium
|
Posted: Tue Sep 20, 2005 12:33 pm Post subject: |
|
|
New version: Comic Browser 0.4
Changelog:
| Code: |
Version 0.4.0.0
===============
[+] Added program to get all comics
[+] Added Qwantz (Redeeman)
[+] Added title to comics
[+] Added pvp comic
[+] Added url box
[*] User Friendly: fixed a bug where it started with comic #2 instead of #1
[*] Made window bigger
[*] Reworked a bit on the plugins
[*] Fixed a small bug in showing the title in Hackles
|
There's also a svn repository now at http://kaspersandberg.com/ComicBrowser/ (thanks to Redeeman for hosting) |
|
| Back to top |
|
 |
johanseg n00b


Joined: 27 Nov 2003 Posts: 18 Location: Sweden
|
Posted: Tue Sep 20, 2005 7:00 pm Post subject: |
|
|
Looking good, a bit slow but that will probably improve...
Cant say I liked you're nant build file though , and since I was a bit bored I fixed it up a bit, feel free to use it if you want
| Code: |
<project name="comicbrowser" default="build">
<property name="debug" value="false" />
<property name="build.dir" value="bin" />
<property name="plugin.dir" value="Plugins" />
<property name="cb.exe" value="${build.dir}/ComicBrowser.exe" />
<property name="comic.dll" value="${build.dir}/comic.dll" />
<property name="get.exe" value="${build.dir}/get.exe" />
<target name="init">
<mkdir dir="${build.dir}" failonerror="false" />
</target>
<target name="build" depends="build-main,build-get,build-plugins" />
<target name="build-comic" depends="init">
<csc target="library" output="${comic.dll}">
<sources>
<include name="comic.cs" />
<include name="IComic.cs" />
</sources>
</csc>
</target>
<target name="build-main" depends="build-comic">
<csc target="exe" output="${cb.exe}">
<pkg-references>
<package name="glade-sharp" />
<package name="gtk-sharp" />
</pkg-references>
<sources>
<include name="AssemblyInfo.cs" />
<include name="Main.cs" />
</sources>
<references>
<include name="${comic.dll}" />
</references>
<resources>
<include name="logo.png" />
<include name="gui.glade" />
</resources>
</csc>
</target>
<target name="build-get" depends="build-comic">
<csc target="exe" output="${get.exe}">
<sources>
<include name="get.cs" />
</sources>
<references>
<include name="${comic.dll}" />
</references>
</csc>
</target>
<target name="build-plugins" depends="build-comic">
<foreach item="File" property="filename">
<in>
<items>
<include name="${plugin.dir}/*" />
</items>
</in>
<do>
<regex pattern="^(.*(\\|/)|(/|\\))(?'fname'.*)\.(\w+)$" input="${filename}" />
<csc target="library" output="${build.dir}/${fname}.dll">
<sources>
<include name="${filename}" />
</sources>
<references>
<include name="${comic.dll}" />
</references>
</csc>
</do>
</foreach>
</target>
<target name="clean">
<delete dir="${build.dir}" failonerror="false" />
</target>
<target name="release" depends="clean,build">
<tar destfile="../ComicBrowser-${assemblyname::get-version(assembly::get-name(assembly::load-from-file('bin/ComicBrowser.exe')) )}.tgz" compression="GZip">
<fileset prefix="ComicBrowser-${assemblyname::get-version(assembly::get-name(assembly::load-from-file('bin/ComicBrowser.exe')))}">
<include name="ComicBrowser.build" />
<include name="*.cs" />
<include name="README" />
<include name="LICENSE" />
<include name="NEWS" />
<include name="${plugin.dir}/*.cs" />
<include name="gui.glade" />
<include name="logo.png" />
<include name="${build.dir}/*.exe" />
<include name="${build.dir}/*.dll" />
</fileset>
</tar>
</target>
</project>
|
I'm not very good at regex so you might want to test it, it work when I tried it though... _________________ /Johan
Quis custodiet ipsos custodes?
Blog | screenshots |
|
| Back to top |
|
 |
Titeuf l33t


Joined: 19 Jun 2004 Posts: 759 Location: Middelkerke, Belgium
|
Posted: Tue Sep 20, 2005 8:47 pm Post subject: |
|
|
| johanseg wrote: | Looking good, a bit slow but that will probably improve...
Cant say I liked you're nant build file though , and since I was a bit bored I fixed it up a bit, feel free to use it if you want
...
I'm not very good at regex so you might want to test it, it work when I tried it though... |
Thank you, I was looking to add the plugins in a for loop, but haven't found how to do this yet.
This will be included in the next version.
You say it's a bit slow: is it startup that you find slow ? If so it is because it needs to look for every comic on the comic page what the latest is, because some comics have slow websites it doesn't go so fast. If anyone know a way to speed this up, I'm glad to hear about it
I'm currently working on a way so that you can see when there are new comics out, and remember which comics you have read and which not. It will be released within some days, I don't have that much free time anymore as school has started  |
|
| Back to top |
|
 |
Redeeman l33t


Joined: 25 Sep 2003 Posts: 957 Location: Denmark
|
Posted: Tue Sep 20, 2005 8:51 pm Post subject: |
|
|
well.. you could make it not read the number of comics at startup, and simply do it the first time one presses on the comic. _________________ Sandberg Enterprises |
|
| Back to top |
|
 |
khiloa Guru


Joined: 27 Jan 2004 Posts: 333 Location: Florence, SC
|
Posted: Wed Sep 21, 2005 12:38 am Post subject: |
|
|
Its looking great my friend!  _________________ Registered Linux user #398059! |
|
| Back to top |
|
 |
gaminggeek Apprentice


Joined: 13 Nov 2003 Posts: 231 Location: New Zealand
|
Posted: Wed Sep 21, 2005 3:30 am Post subject: |
|
|
Awsome!!!
Can someone write me a plugin for http://www.sokora.com/ or tell me how to make a plug-in |
|
| Back to top |
|
 |
johanseg n00b


Joined: 27 Nov 2003 Posts: 18 Location: Sweden
|
Posted: Wed Sep 21, 2005 6:30 am Post subject: |
|
|
Well, right of the top of my head....
1. The most important ting, as Redeeman said, dont load the comics at startup.
2. I cant think of any good reason to have each comic in a separate dll, not since you load all of them anyway...
3. Why do you need to have each comic "in code" so to speak? Almost all comic sites follow a simple pattern, they have a frontpage showing the latest comic and contain links to the previous and first comic, they have a view page showing a particular comic and contains links to the first, previous, next and latest comic. So to simplify the plugins part to only a few strings, what you need is: a link to the frontpage, 3 regex for the frontpage (to find the comic(s), the link to the first comic, the link to the previous comic), 4 regex for the view page (to find the comic(s), the link to the first comic, the link to the previous comic, the link to the next comic). In short a plugin now consists of a text file with 8 lines of text. You can probably shorten this to but this is abstract enough to include most comic sites (if not all)... _________________ /Johan
Quis custodiet ipsos custodes?
Blog | screenshots |
|
| Back to top |
|
 |
Dlareh Advocate


Joined: 06 Aug 2005 Posts: 2102
|
Posted: Wed Sep 21, 2005 8:27 am Post subject: |
|
|
| Quote: | 2. I cant think of any good reason to have each comic in a separate dll, not since you load all of them anyway...
3. Why do you need to have each comic "in code" so to speak? Almost all comic sites follow a simple pattern, they have a frontpage showing the latest comic and contain links to the previous and first comic, they have a view page showing a particular comic and contains links to the first, previous, next and latest comic. So to simplify the plugins part to only a few strings, what you need is: a link to the frontpage, 3 regex for the frontpage (to find the comic(s), the link to the first comic, the link to the previous comic), 4 regex for the view page (to find the comic(s), the link to the first comic, the link to the previous comic, the link to the next comic). In short a plugin now consists of a text file with 8 lines of text. You can probably shorten this to but this is abstract enough to include most comic sites (if not all)... |
I strongly agree. The phrase "brain dead" most readily comes to mind when considering the current scheme. No offence meant...
Parsing dailystrips' /etc/strips.def ought to be a good start. No sense reinventing the wheel...
Actually I still don't understand why this entire program isn't reinventing the wheel. C# ain't that exciting, and this one of those report-related tasks that Perl actually excells at.
But I'll certainly give it a try as soon as you start defining comics with a sane non-code format. I suppose you'll be reaching into the XML cookie jar for this, too. Kids these days  _________________ "Mr Thomas Edison has been up on the two previous nights discovering 'a bug' in his phonograph." --Pall Mall Gazette (1889)
Are we THERE yet? |
|
| Back to top |
|
 |
johanseg n00b


Joined: 27 Nov 2003 Posts: 18 Location: Sweden
|
Posted: Wed Sep 21, 2005 9:11 am Post subject: |
|
|
| Dlareh wrote: | | I strongly agree. The phrase "brain dead" most readily comes to mind when considering the current scheme. No offence meant... |
Well... thats what makes programming intresting, many different ways to do things, some bad some good. Cant think of anyone that found the "right" one on the first try
| Dlareh wrote: | | Parsing dailystrips' /etc/strips.def ought to be a good start. No sense reinventing the wheel... |
That would probably be a better ide than my "number 3".
| Dlareh wrote: | | Actually I still don't understand why this entire program isn't reinventing the wheel. C# ain't that exciting, and this one of those report-related tasks that Perl actually excells at. |
I thought it was reinventing the wheel, make up your mind . However I sort of agree with you, a better way would be to use dailystrips "in the back". However, dailystrips hasn't released anything for what, 2 years so dead? (you still could build on it though but that require that you can perl). Another thing, this program is way more userfriendly than dailystrips, not all of us likes to use the terminal (not all of the time anyway, and yes you could set it as a cronjob) or use the webbrowser for everything, and appears to focus on showing a strip as opposed to dailystrip downloading them.
| Dlareh wrote: | But I'll certainly give it a try as soon as you start defining comics with a sane non-code format. I suppose you'll be reaching into the XML cookie jar for this, too. Kids these days  |
All things has it uses, including c# and xml  _________________ /Johan
Quis custodiet ipsos custodes?
Blog | screenshots |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|