Merge pull request #7985 from Jordie0608/tgstationisaparadiseforlumberjacks
Cleanup of changelog related files
@@ -167,7 +167,7 @@ var/next_external_rsc = 0
|
||||
send_resources()
|
||||
|
||||
if(prefs.lastchangelog != changelog_hash) //bolds the changelog button on the interface so we know there are updates.
|
||||
winset(src, "rpane.changelog", "background-color=#eaeaea;font-style=bold")
|
||||
winset(src, "rpane.changelogb", "background-color=#eaeaea;font-style=bold")
|
||||
|
||||
|
||||
//////////////
|
||||
|
||||
@@ -470,13 +470,6 @@ var/list/slot_equipment_priority = list( \
|
||||
if (popup)
|
||||
memory()
|
||||
|
||||
/*
|
||||
/mob/verb/help()
|
||||
set name = "Help"
|
||||
src << browse('html/help.html', "window=help")
|
||||
return
|
||||
*/
|
||||
|
||||
/mob/verb/abandon_mob()
|
||||
set name = "Respawn"
|
||||
set category = "OOC"
|
||||
@@ -513,8 +506,6 @@ var/list/slot_equipment_priority = list( \
|
||||
set name = "Changelog"
|
||||
set category = "OOC"
|
||||
getFiles(
|
||||
'html/postcardsmall.jpg',
|
||||
'html/somerights20.png',
|
||||
'html/88x31.png',
|
||||
'html/bug-minus.png',
|
||||
'html/cross-circle.png',
|
||||
@@ -537,7 +528,7 @@ var/list/slot_equipment_priority = list( \
|
||||
if(prefs.lastchangelog != changelog_hash)
|
||||
prefs.lastchangelog = changelog_hash
|
||||
prefs.save_preferences()
|
||||
winset(src, "rpane.changelog", "background-color=none;font-style=;")
|
||||
winset(src, "rpane.changelogb", "background-color=none;font-style=;")
|
||||
|
||||
/mob/verb/observe()
|
||||
set name = "Observe"
|
||||
|
||||
|
Before Width: | Height: | Size: 697 B |
@@ -1,53 +0,0 @@
|
||||
<html>
|
||||
<title>Shittiest Player Ever - PM</title>
|
||||
<style type="text/css">
|
||||
body
|
||||
{
|
||||
font-size: 10pt;
|
||||
font-family: Verdana, sans-serif;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6
|
||||
{
|
||||
color: #00f;
|
||||
font-family: Georgia, Arial, sans-serif;
|
||||
}
|
||||
|
||||
#chatlog
|
||||
{
|
||||
border: 1px grey solid;
|
||||
height: 280px;
|
||||
width: 500px;
|
||||
overflow-y: scroll;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
img {
|
||||
border: 0px;
|
||||
}
|
||||
p.lic {
|
||||
font-size: 6pt;
|
||||
}
|
||||
</style>
|
||||
<body>
|
||||
<div id="chatlog">
|
||||
<!-- Print logged text here, different colors for your own key and other user's key -->
|
||||
Badmin: Hey why the fuck are you killing that dude???<br><br>
|
||||
Shittiest Player Ever: he tok ym baten n id and i ahd to use the lasre on his *ss<br><br>
|
||||
Badmin: wow good fucking job, you are the best player ever!!!!!!<br><br>
|
||||
Badmin: where the fuck did you learn english?<br><br>
|
||||
Shittiest Player Ever: he tryed to k;ikll me<br><br>
|
||||
Badmin: you are shit!!!!!
|
||||
</div>
|
||||
<script language="JavaScript">
|
||||
var objDiv = document.getElementById("chatlog");
|
||||
objDiv.scrollTop = objDiv.scrollHeight;
|
||||
</script>
|
||||
<br>
|
||||
<form name="chatinput" action="byond://?src=/* ref src */" method="get">
|
||||
<input type="hidden" name="src" value="/* ref src */">
|
||||
<input type="text" name="message" maxlength="120" size="70">
|
||||
<input type="submit" value="Send">
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
|
Before Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 810 B |
@@ -1,392 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>Space Station 13 Help</title>
|
||||
<style type="text/css">
|
||||
body
|
||||
{
|
||||
color: #000;
|
||||
background: #fff;
|
||||
font-size: 9pt;
|
||||
font-family: Verdana, sans-serif;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6
|
||||
{
|
||||
color: #00f;
|
||||
font-family: Georgia, Arial, sans-serif;
|
||||
}
|
||||
|
||||
a, a:link, a:visited, a:active, a:hover
|
||||
{
|
||||
color: #00f;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
a:hover
|
||||
{
|
||||
text-decoration: none;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Space Station 13</h1>
|
||||
|
||||
<ul>
|
||||
<li><a href="#overview">Overview</a></li>
|
||||
<li><a href="#objectives">Objectives</a></li>
|
||||
<li>
|
||||
<a href="#modes">Modes</a>
|
||||
<ul>
|
||||
<li><a href="#mode_blob">Blob</a></li>
|
||||
<li><a href="#mode_traitor">Traitor</a></li>
|
||||
<li><a href="#mode_meteor">Meteor</a></li>
|
||||
<li><a href="#mode_monkey">Monkey</a></li>
|
||||
<li><a href="#mode_nuclear">Nuclear Emergency</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#getting_around">Getting Around</a></li>
|
||||
<li><a href="#getting_started">Getting Started</a></li>
|
||||
<li>
|
||||
<a href="#jobs">Jobs</a>
|
||||
<ul>
|
||||
<li><a href="#job_assistant">Assistant</a></li>
|
||||
<li><a href="#job_atmospheric">Atmospheric Technician</a></li>
|
||||
<li><a href="#job_doctor">Medical Doctor</a></li>
|
||||
<li><a href="#job_engineer">Station Engineer</a></li>
|
||||
<li><a href="#job_security">Security Officer</a></li>
|
||||
<li><a href="#job_scientist">Scientist</a></li>
|
||||
<li><a href="#job_forensic">Forensic Technician</a></li>
|
||||
<li><a href="#job_geneticist">Geneticist</a></li>
|
||||
<li><a href="#job_chaplain">Chaplain</a></li>
|
||||
<li><a href="#job_head_research">Head of Research</a></li>
|
||||
<li><a href="#job_head_personnel">Head of Personnel</a></li>
|
||||
<li><a href="#job_ai">AI</a></li>
|
||||
<li><a href="#job_captain">Captain</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#movement">Movement</a></li>
|
||||
<li><a href="#equipping">Equipping</a></li>
|
||||
<li><a href="#talking">Talking</a></li>
|
||||
<li><a href="#takegive">Taking Items / Giving Items</a></li>
|
||||
<li><a href="#death">Death</a></li>
|
||||
<li><a href="#links">External Links</a></li>
|
||||
</ul>
|
||||
|
||||
<a name="overview"></a>
|
||||
<h2>Overview</h2>
|
||||
<p>
|
||||
Space Station 13 was written for BYOND. Like many BYOND games, it is two
|
||||
dimensional with a top down view and runs terribly. It uses tile-based
|
||||
movement. Space Station 13 (or SS13 for short) starts you on a space station
|
||||
orbiting a very peculiar gaseous planet in a binary star system. Each round
|
||||
type is centred around a specific type of disaster, ranging from a meteor
|
||||
shower to a traitor within the crew. The game is constantly being developed,
|
||||
so new modes are added all the time!
|
||||
</p>
|
||||
|
||||
<a name="objectives"></a>
|
||||
<h2>Objectives</h2>
|
||||
<p>
|
||||
The primary objective in most modes of Space Station 13 is survival. You must
|
||||
try to stay alive long enough to escape on the evacuation shuttle. This
|
||||
doesn't mean you should immediately rush to the escape dock and wall yourself
|
||||
in; half the fun is in trying to keep the station running for as long as
|
||||
possible. Exactly how you do this is up to you and your assigned job.
|
||||
</p>
|
||||
|
||||
<a name="modes"></a>
|
||||
<h2>Modes</h2>
|
||||
|
||||
<a name="mode_blob"></a>
|
||||
<h3>Blob</h3>
|
||||
<p>
|
||||
A deadly mutagenous virus has been released and the crew must fight a green
|
||||
mass for control of the station. The blob spreads quickly, and only the
|
||||
sacred welder can fight it back! (Unless it spawns in the engine and dies
|
||||
instantly.)
|
||||
</p>
|
||||
<p>
|
||||
<b>PROTIP: USE A WELDER</b>
|
||||
</p>
|
||||
|
||||
<a name="mode_traitor"></a>
|
||||
<h3>Traitor</h3>
|
||||
<p>
|
||||
In traitor mode there is a traitor aboard the space station!!! The traitor is
|
||||
assigned a random objective, from escaping alone to stealing the captain's
|
||||
jumpsuit. The objective of everyone else is to stop the traitor and survive!
|
||||
</p>
|
||||
|
||||
<a name="mode_meteor"></a>
|
||||
<h3>Meteor</h3>
|
||||
<p>
|
||||
In Meteor, the station is threatened by a meteor shower. The objective is to
|
||||
do your best to repair and maintain the station, and eventually escape.
|
||||
</p>
|
||||
|
||||
<a name="mode_monkey"></a>
|
||||
<h3>Monkey</h3>
|
||||
<p>
|
||||
In Monkey mode a deadly mutagenous virus has been released and the crew must
|
||||
fight small underdeveloped primates for control of the station. The monkey's
|
||||
bite is deadly, and anyone bitten will soon join the primate horde.
|
||||
</p>
|
||||
<p>
|
||||
<b>PROTIP: ELECTRIC GRILLES ARE PRETTY DANGEROUS.</b>
|
||||
</p>
|
||||
|
||||
<a name="mode_nuclear"></a>
|
||||
<h3>Nuclear Emergency</h3>
|
||||
<p>
|
||||
A crack team of Syndicate operatives have assaulted the station in order to
|
||||
gather a nuclear activation key. If found, the team will detonate a NUCLEAR
|
||||
BOMB and the station will be destroyed! The team must escape with the nuclear
|
||||
activation key while fighting off the syndicate.
|
||||
</p>
|
||||
<p>
|
||||
<b>PROTIP: IF YOU KILL A MEMBER OF THE SYNDICATE STEAL HIS STUFF.</b>
|
||||
</p>
|
||||
|
||||
<a name="getting_around"></a>
|
||||
<h2>Getting Around</h2>
|
||||
<p>
|
||||
The interface for Space Station 13 is largely click driven. To use something,
|
||||
you will almost always click or double click.
|
||||
</p>
|
||||
|
||||
<a name="getting_started"></a>
|
||||
<h2>Getting Started</h2>
|
||||
<p>
|
||||
<i>(A Quick jump-start guide to get into the game)</i>
|
||||
</p>
|
||||
<p>
|
||||
Select your preferences using the character setup command and then use ready
|
||||
to enter the game.
|
||||
</p>
|
||||
<p>
|
||||
If you do this after the game has started you will spawn as an assistant;
|
||||
otherwise, a vague guide to the jobs you may choose follows.
|
||||
</p>
|
||||
|
||||
<a name="jobs"></a>
|
||||
<h2>Jobs</h2>
|
||||
|
||||
<a name="job_assistant"></a>
|
||||
<h3>Assistant</h3>
|
||||
<p>
|
||||
You'll spawn as this if you enter after a game has started. Assistants have a
|
||||
very low-access ID card, and really nothing else. They don't however have any
|
||||
duties, so this can be a pretty good way to learn the layout of the station
|
||||
if you join midway through a round. It's really not worth choosing this,
|
||||
though.
|
||||
</p>
|
||||
|
||||
<a name="job_atmospheric"></a>
|
||||
<h3>Atmospheric Technician</h3>
|
||||
<p>
|
||||
This involves looking after the atmospheric systems on the station, as you
|
||||
can probably guess. In theory, you'll be checking the air composition of the
|
||||
station with an analyzer and making sure that it's not going to kill people.
|
||||
In reality, you'll be cleaning up the constant gas spills caused by griefers
|
||||
and the traitor via use of the pipe filters in the maintenance tunnel (which
|
||||
are pretty self-explanatory) and the portable filters that are around the
|
||||
station and in Atmospheric Storage. This is probably the easiest job for a
|
||||
new player, so jump in as this and getting a feel for the station layout and
|
||||
the basic workings of the game before you try anything else.
|
||||
</p>
|
||||
|
||||
<a name="job_doctor"></a>
|
||||
<h3>Medical Doctor</h3>
|
||||
<p>
|
||||
Pretty much self explanatory. Grab a Medkit, and either patrol the station
|
||||
treating the gassed/beaten crewmembers who will be lying around within 20
|
||||
minutes of any game starting or stay in Medical and heal the people who get
|
||||
dragged in. More advanced medical is explained in weasello's guide below.
|
||||
</p>
|
||||
|
||||
<a name="job_engineer"></a>
|
||||
<h3>Station Engineer</h3>
|
||||
<p>
|
||||
This can be one of the more technical jobs, but it doesn't take a huge amount
|
||||
of time to learn. Basically, the Engineers handle the engine itself (which
|
||||
involves keeping it fed with plasma, igniting it, and so on.) and the repair
|
||||
of the station. Weasello's stuff has a reasonably good guide to the basics of
|
||||
this, and you should be able to work the rest out by jumping on one of the
|
||||
empty servers and tinkering about for twenty minutes or so. This isn't a bad
|
||||
place to start, but messing up with the engines can kill every single person
|
||||
on the station so be fucking careful.
|
||||
</p>
|
||||
|
||||
<a name="job_security"></a>
|
||||
<h3>Security Officer</h3>
|
||||
<p>
|
||||
Open your locker, grab a stun baton and then patrol the station and hit
|
||||
people. That's it.
|
||||
</p>
|
||||
<p>
|
||||
<b>PROTIP: KILLING PEOPLE OR BEING A DICK WILL GET YOU BANNED.</b>
|
||||
</p>
|
||||
|
||||
<a name="job_scientist"></a>
|
||||
<h3>Scientist</h3>
|
||||
<p>
|
||||
Scientists are essentially the bombmakers. Weasello's guide has a reasonably
|
||||
complex explanation of what you're supposed to do here, but basically you'll
|
||||
be heating plasma and assembling bomb circuitry. Security and the AI will
|
||||
almost certainly be keeping a close eye on you if you choose to do this, so
|
||||
I'd you play around a bit with Atmos and get some experience before trying
|
||||
this.
|
||||
</p>
|
||||
|
||||
<a name="job_forensic"></a>
|
||||
<h3>Forensic Technician</h3>
|
||||
<p>
|
||||
Seriously, don't bother with this. It's arguably the most boring job of all,
|
||||
and can be one of the most annoying to get to grips with. Forensic Techs take
|
||||
fingerprints from people and objects and check them against their records.
|
||||
That's pretty much it. With the relatively short length of games on the goon
|
||||
server, this isn't really worth doing in itself, as any security man can be a
|
||||
Forensic Tech if needed.
|
||||
</p>
|
||||
|
||||
<a name="job_geneticist"></a>
|
||||
<h3>Geneticist</h3>
|
||||
<p>
|
||||
This is pretty much the most complex job on the station. Don't touch this
|
||||
until you've played for a while. Geneticists can directly edit the DNA of
|
||||
other players and monkeys, and as such can bring people back to life, change
|
||||
their skin colour, or turn a human into a monkey or vice versa. It's all far
|
||||
too complex and annoying to be worth typing out here. There's probably a more
|
||||
complex guide for this around, go find it if you REALLY want to do this.
|
||||
</p>
|
||||
|
||||
<a name="job_chaplain"></a>
|
||||
<h3>Chaplain</h3>
|
||||
<p>
|
||||
AARHGFHGHGH I FUCKING LOVE TO PRAY
|
||||
</p>
|
||||
|
||||
<a name="job_head_research"></a>
|
||||
<h3>Head of Research</h3>
|
||||
<p>
|
||||
The Head of Research essentially administers Medical and Toxins research and
|
||||
has an ID-card with quite high access. This isn't really a good choice at all
|
||||
for a new player as it implies a degree of experience with the game.
|
||||
Practically, you'll be helping out Toxins and Medical and occasionally being
|
||||
attacked for your ID card.
|
||||
</p>
|
||||
|
||||
<a name="job_head_personnel"></a>
|
||||
<h3>Head of Personnel</h3>
|
||||
<p>
|
||||
This one really is only for players with a little bit of experience. The Head
|
||||
of Personnel is in charge of Security and managers the positions of the
|
||||
people on the station; they have access to the personnel records and can edit
|
||||
the ID cards and thus positions of crewmembers as they wish. They also start
|
||||
next to a locker which contains a laser pistol, which can be useful for a
|
||||
traitor or in self defense. Traitors will often target the HoP for his ID
|
||||
card and special equipment, as well.
|
||||
</p>
|
||||
|
||||
<a name="job_ai"></a>
|
||||
<h3>AI</h3>
|
||||
<p>
|
||||
Don't do this. It carries a huge amount of power as well as massive
|
||||
limitations, as the AI is bound by Asimov's laws. The AI can control any of
|
||||
the electrical systems on the station, including the air supply, engine blast
|
||||
doors and power. Making a stupid mistake as the AI will very possibly kill
|
||||
several people, so stay away from this until you have a little bit of
|
||||
experience with the game.
|
||||
</p>
|
||||
|
||||
<a name="job_captain"></a>
|
||||
<h3>Captain</h3>
|
||||
<p>
|
||||
Self explanatory. An all-access ID card, total power over the crew, guns and
|
||||
a personal teleporter. ABSOLUTELY DO NOT DO THIS UNTIL YOU HAVE SOME
|
||||
EXPERIENCE WITH THE GAME OR YOU WILL PISS OFF OTHER PLAYERS.
|
||||
</p>
|
||||
|
||||
<a name="movement"></a>
|
||||
<h2>Movement</h2>
|
||||
<p>
|
||||
Movement on SS13 is only in the 4 cardinal directions. The diagonal
|
||||
directions throw/drop items, switch hand/modes. If you move into a dense
|
||||
object you first try to push it. Not all items can be pushed. You can also
|
||||
right click on an object and select 'pull' and then every movement you make
|
||||
will ttempt to drag that object behind you. If you wish to stop pulling you
|
||||
must go onto your on-screen display and find the object with a person in a
|
||||
box. Click on it and you will stop pulling. If you ever desire to make sure
|
||||
of which direction you are facing use .center and then try to move what
|
||||
direction you want to face.
|
||||
</p>
|
||||
|
||||
<a name="equipping"></a>
|
||||
<h2>Equipping</h2>
|
||||
<p>
|
||||
You 'equip' items in SS13 by picking them up. In order to pick an item up all
|
||||
you must do is attack it with a free hand. Now you hae two hands. Which hand
|
||||
is being used is indicated by the blue button in the lower-left area of your
|
||||
HUD. You can change hands by clicking the hand button or pressing the
|
||||
.northeast macro. You can then also then transfer that item to another part
|
||||
of your body. In order to do this you just attack the green box (or blue
|
||||
storage box) on your hud that you would like to move it to. In order to
|
||||
'unequip' a equipped item that is not in your hand. Get a free hand and
|
||||
attack the item. Then in order to drop an item in your hand (and make it a
|
||||
free hand again) click the drop button (or throw to throw the item wherever
|
||||
you are facing).
|
||||
</p>
|
||||
|
||||
<a name="talking"></a>
|
||||
<h2>Talking</h2>
|
||||
<p>
|
||||
Talking on SS13 is still via the say verb so the normal say speech bubble on
|
||||
the command line will still work. Please note however that you can whisper.
|
||||
More on this in the items selection under radio, intercoms, and headsets.
|
||||
There are a lot of emotes that are accessed by preceding your text with a
|
||||
'*'. To view a list of available emotes for your character use the type
|
||||
'*help' into the say menu. To speak via your headset use a semicolon after
|
||||
say.
|
||||
</p>
|
||||
|
||||
<a name="takegive"></a>
|
||||
<h2>Taking Items / Giving Items</h2>
|
||||
<p>
|
||||
You can take items from people by dragging their mob onto your mob. A screen
|
||||
will pop up. From this screen you can select an object to remove from them.
|
||||
If you select a 'Nothing' slot then you will attempt to equip that slot with
|
||||
the object you are holding.
|
||||
</p>
|
||||
|
||||
<a name="death"></a>
|
||||
<h2>Death</h2>
|
||||
<p>
|
||||
If you are dead then you can use the watch verb to look through the eyes of
|
||||
another mob. Depending on circumstances you can use abandon mob to restart
|
||||
(leaving that box blank gives you a random name). A dead person hears
|
||||
everything that is said but might not hear all attack messages.
|
||||
</p>
|
||||
|
||||
<a name="links"></a>
|
||||
<h2>External Links</h2>
|
||||
<ul>
|
||||
<li>
|
||||
<a target="_blank" href="http://www.declassified-ss13.com/servers.php">Servers</a> (just
|
||||
a quick and dirty list of servers to connect to)
|
||||
</li>
|
||||
<li>
|
||||
<a target="_blank" href="http://www.declassified-ss13.com/cheatsheets.php">Cheat
|
||||
Sheets</a> (point-form processes, constantly being updated)
|
||||
</li>
|
||||
<li>
|
||||
<a target="_blank" href="http://www.maplib.net/atlas.php?id=347">Maps</a> (goon servers
|
||||
all use these maps)
|
||||
</li>
|
||||
<li>
|
||||
<a target="_blank" href="http://www.declassified-ss13.com/">Space Station 13
|
||||
Declassified</a>
|
||||
</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
||||
|
Before Width: | Height: | Size: 5.5 KiB |
@@ -1,77 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>New commit</title>
|
||||
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="changelog.css">
|
||||
<style>
|
||||
body {margin:0;padding:0 10px;}
|
||||
#addli {cursor:pointer;}
|
||||
span {font-weight:bold;}
|
||||
span.icon {width:16px;height:16px;display:inline-block;float:right;}
|
||||
input.li {width:100%;}
|
||||
#table {width:99%;}
|
||||
#result {width:100%;}
|
||||
</style>
|
||||
<script type="text/javascript">
|
||||
var i=1;
|
||||
function createli(event){
|
||||
event.preventDefault();
|
||||
var liclass = $('#litype').val();
|
||||
$('#table').append($('<tr><td><span class="icon '+liclass+'"></span><span>'+i+'.</span></td><td><input name="'+liclass+'" type="text" value="" class="li"></td></tr>'));
|
||||
i++;
|
||||
}
|
||||
function htmlEscape(str) {
|
||||
return String(str)
|
||||
.replace(/&/g, '&')
|
||||
.replace(/"/g, '"')
|
||||
.replace(/'/g, ''')
|
||||
.replace(/</g, '<')
|
||||
.replace(/>/g, '>');
|
||||
}
|
||||
$(document).ready(function(){
|
||||
$('#addli').click(createli);
|
||||
$('#commit').submit(function(event){
|
||||
event.preventDefault();
|
||||
var result = $('#result');
|
||||
var text = '<div class="commit sansserif">\n';
|
||||
text += '\t<h2 class="date">'+$(this.date).val()+'</h2>\n';
|
||||
text += '\t<h3 class="author">'+$(this.author).val()+' updated:</h3>\n';
|
||||
text += '\t<ul class="changes bgimages16">\n';
|
||||
$('input.li').each(function(){
|
||||
text += '\t\t<li class="'+$(this).attr('name')+'">'+$(this).val()+'</li>\n';
|
||||
});
|
||||
text += '\t</ul>\n';
|
||||
text += '</div>\n';
|
||||
result.val(text);
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<form id="commit" name="commit">
|
||||
<table id="table">
|
||||
<tr><td style="width:100px;"><span>Date:</span></td><td><input type="text" name="date" value="" title="Put date here"></td></tr>
|
||||
<tr><td><span>Author:</span></td><td><input type="text" name="author" value="" title="Put your name here"></td></tr>
|
||||
<tr><td><span>Add list item</span></td><td>
|
||||
<select name="litype" id="litype" title="Select change type and hit +">
|
||||
<option value="rscadd">Added feature</option>
|
||||
<option value="rscdel">Removed feature</option>
|
||||
<option value="bugfix">Bugfix</option>
|
||||
<option value="wip">Work in progress</option>
|
||||
<option value="tweak">Tweak</option>
|
||||
<option value="experiment">Experimental feature</option>
|
||||
<option value="imageadd">Added icon</option>
|
||||
<option value="imagedel">Removed icon</option>
|
||||
<option value="soundadd">Added sound</option>
|
||||
<option value="sounddel">Removed sound</option>
|
||||
</select>
|
||||
<button id="addli">+</button>
|
||||
</td></tr>
|
||||
</table>
|
||||
<input type="submit" value="Get HTML" title="Click here to get result">
|
||||
</form>
|
||||
<textarea id="result" rows="20" cols="50"></textarea>
|
||||
</body>
|
||||
</html>
|
||||
|
Before Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 958 B |
@@ -1,20 +0,0 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual C# Express 2010
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddToChangelog", "AddToChangelog\AddToChangelog.csproj", "{838EA2DE-A108-4213-8409-7F562F1009BE}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|x86 = Debug|x86
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{838EA2DE-A108-4213-8409-7F562F1009BE}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{838EA2DE-A108-4213-8409-7F562F1009BE}.Debug|x86.Build.0 = Debug|x86
|
||||
{838EA2DE-A108-4213-8409-7F562F1009BE}.Release|x86.ActiveCfg = Release|x86
|
||||
{838EA2DE-A108-4213-8409-7F562F1009BE}.Release|x86.Build.0 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
@@ -1,140 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
|
||||
<ProductVersion>8.0.30703</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{838EA2DE-A108-4213-8409-7F562F1009BE}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>AddToChangelog</RootNamespace>
|
||||
<AssemblyName>AddToChangelog</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<TargetFrameworkProfile>Client</TargetFrameworkProfile>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<PublishUrl>publish\</PublishUrl>
|
||||
<Install>true</Install>
|
||||
<InstallFrom>Disk</InstallFrom>
|
||||
<UpdateEnabled>false</UpdateEnabled>
|
||||
<UpdateMode>Foreground</UpdateMode>
|
||||
<UpdateInterval>7</UpdateInterval>
|
||||
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||
<UpdatePeriodically>false</UpdatePeriodically>
|
||||
<UpdateRequired>false</UpdateRequired>
|
||||
<MapFileExtensions>true</MapFileExtensions>
|
||||
<ApplicationRevision>0</ApplicationRevision>
|
||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ApplicationIcon>changelog.ico</ApplicationIcon>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Form1.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Form1.Designer.cs">
|
||||
<DependentUpon>Form1.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<EmbeddedResource Include="Form1.resx">
|
||||
<DependentUpon>Form1.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="bugfix.png" />
|
||||
<EmbeddedResource Include="experiment.png" />
|
||||
<Content Include="changelog.ico" />
|
||||
<EmbeddedResource Include="rscdel.png" />
|
||||
<EmbeddedResource Include="wip.png" />
|
||||
<EmbeddedResource Include="imagedel.png" />
|
||||
<EmbeddedResource Include="imageadd.png" />
|
||||
<EmbeddedResource Include="sounddel.png" />
|
||||
<EmbeddedResource Include="soundadd.png" />
|
||||
<EmbeddedResource Include="rscadd.png" />
|
||||
<EmbeddedResource Include="tweak.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<BootstrapperPackage Include=".NETFramework,Version=v4.0,Profile=Client">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>Microsoft .NET Framework 4 Client Profile %28x86 and x64%29</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>Windows Installer 3.1</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
@@ -1,263 +0,0 @@
|
||||
namespace AddToChangelog
|
||||
{
|
||||
partial class MainForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.authorBox = new System.Windows.Forms.TextBox();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.dateBox = new System.Windows.Forms.MaskedTextBox();
|
||||
this.dropdownBox = new System.Windows.Forms.ComboBox();
|
||||
this.getButton = new System.Windows.Forms.Button();
|
||||
this.addButton = new System.Windows.Forms.Button();
|
||||
this.resultsBox = new System.Windows.Forms.TextBox();
|
||||
this.addLineButton = new System.Windows.Forms.Button();
|
||||
this.addLineBox = new System.Windows.Forms.TextBox();
|
||||
this.listBox = new System.Windows.Forms.TextBox();
|
||||
this.saveButton = new System.Windows.Forms.Button();
|
||||
this.editBox = new System.Windows.Forms.TextBox();
|
||||
this.reloadButton = new System.Windows.Forms.Button();
|
||||
this.pictureBox = new System.Windows.Forms.PictureBox();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(20, 46);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(33, 13);
|
||||
this.label1.TabIndex = 10;
|
||||
this.label1.Text = "Date:";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(20, 21);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(41, 13);
|
||||
this.label2.TabIndex = 11;
|
||||
this.label2.Text = "Author:";
|
||||
//
|
||||
// authorBox
|
||||
//
|
||||
this.authorBox.Location = new System.Drawing.Point(67, 18);
|
||||
this.authorBox.Name = "authorBox";
|
||||
this.authorBox.Size = new System.Drawing.Size(154, 20);
|
||||
this.authorBox.TabIndex = 1;
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Location = new System.Drawing.Point(330, 21);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(68, 13);
|
||||
this.label3.TabIndex = 12;
|
||||
this.label3.Text = "Add change:";
|
||||
//
|
||||
// dateBox
|
||||
//
|
||||
this.dateBox.Location = new System.Drawing.Point(67, 43);
|
||||
this.dateBox.Mask = "00/00/0000";
|
||||
this.dateBox.Name = "dateBox";
|
||||
this.dateBox.Size = new System.Drawing.Size(79, 20);
|
||||
this.dateBox.TabIndex = 2;
|
||||
this.dateBox.ValidatingType = typeof(System.DateTime);
|
||||
//
|
||||
// dropdownBox
|
||||
//
|
||||
this.dropdownBox.DisplayMember = "\"";
|
||||
this.dropdownBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.dropdownBox.FormattingEnabled = true;
|
||||
this.dropdownBox.Items.AddRange(new object[] {
|
||||
"Added feature",
|
||||
"Removed feature",
|
||||
"Bugfix",
|
||||
"Work in progress",
|
||||
"Tweak",
|
||||
"Experimental feature",
|
||||
"Added icon",
|
||||
"Removed icon",
|
||||
"Added sound",
|
||||
"Removed sound"});
|
||||
this.dropdownBox.Location = new System.Drawing.Point(856, 17);
|
||||
this.dropdownBox.MaxDropDownItems = 10;
|
||||
this.dropdownBox.Name = "dropdownBox";
|
||||
this.dropdownBox.Size = new System.Drawing.Size(121, 21);
|
||||
this.dropdownBox.TabIndex = 7;
|
||||
this.dropdownBox.SelectedIndexChanged += new System.EventHandler(this.dropdownBox_SelectedIndexChanged);
|
||||
//
|
||||
// getButton
|
||||
//
|
||||
this.getButton.Location = new System.Drawing.Point(17, 70);
|
||||
this.getButton.Name = "getButton";
|
||||
this.getButton.Size = new System.Drawing.Size(69, 21);
|
||||
this.getButton.TabIndex = 3;
|
||||
this.getButton.Text = "Get HTML";
|
||||
this.getButton.UseVisualStyleBackColor = true;
|
||||
this.getButton.Click += new System.EventHandler(this.getButton_Click);
|
||||
//
|
||||
// addButton
|
||||
//
|
||||
this.addButton.Location = new System.Drawing.Point(92, 70);
|
||||
this.addButton.Name = "addButton";
|
||||
this.addButton.Size = new System.Drawing.Size(69, 21);
|
||||
this.addButton.TabIndex = 4;
|
||||
this.addButton.Text = "Lazy Add";
|
||||
this.addButton.UseVisualStyleBackColor = true;
|
||||
this.addButton.Click += new System.EventHandler(this.addButton_Click);
|
||||
//
|
||||
// resultsBox
|
||||
//
|
||||
this.resultsBox.Location = new System.Drawing.Point(11, 101);
|
||||
this.resultsBox.Multiline = true;
|
||||
this.resultsBox.Name = "resultsBox";
|
||||
this.resultsBox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
|
||||
this.resultsBox.Size = new System.Drawing.Size(318, 356);
|
||||
this.resultsBox.TabIndex = 10;
|
||||
//
|
||||
// addLineButton
|
||||
//
|
||||
this.addLineButton.Location = new System.Drawing.Point(983, 17);
|
||||
this.addLineButton.Name = "addLineButton";
|
||||
this.addLineButton.Size = new System.Drawing.Size(21, 21);
|
||||
this.addLineButton.TabIndex = 8;
|
||||
this.addLineButton.Text = "+";
|
||||
this.addLineButton.UseVisualStyleBackColor = true;
|
||||
this.addLineButton.Click += new System.EventHandler(this.addLineButton_Click);
|
||||
//
|
||||
// addLineBox
|
||||
//
|
||||
this.addLineBox.Location = new System.Drawing.Point(404, 18);
|
||||
this.addLineBox.Name = "addLineBox";
|
||||
this.addLineBox.Size = new System.Drawing.Size(415, 20);
|
||||
this.addLineBox.TabIndex = 6;
|
||||
//
|
||||
// listBox
|
||||
//
|
||||
this.listBox.Location = new System.Drawing.Point(335, 46);
|
||||
this.listBox.Multiline = true;
|
||||
this.listBox.Name = "listBox";
|
||||
this.listBox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
|
||||
this.listBox.Size = new System.Drawing.Size(669, 49);
|
||||
this.listBox.TabIndex = 9;
|
||||
//
|
||||
// saveButton
|
||||
//
|
||||
this.saveButton.Location = new System.Drawing.Point(260, 70);
|
||||
this.saveButton.Name = "saveButton";
|
||||
this.saveButton.Size = new System.Drawing.Size(69, 21);
|
||||
this.saveButton.TabIndex = 5;
|
||||
this.saveButton.Text = "Save";
|
||||
this.saveButton.UseVisualStyleBackColor = true;
|
||||
this.saveButton.Click += new System.EventHandler(this.saveButton_Click);
|
||||
//
|
||||
// editBox
|
||||
//
|
||||
this.editBox.Location = new System.Drawing.Point(335, 101);
|
||||
this.editBox.MaxLength = 9999999;
|
||||
this.editBox.Multiline = true;
|
||||
this.editBox.Name = "editBox";
|
||||
this.editBox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
|
||||
this.editBox.Size = new System.Drawing.Size(669, 356);
|
||||
this.editBox.TabIndex = 13;
|
||||
//
|
||||
// reloadButton
|
||||
//
|
||||
this.reloadButton.Location = new System.Drawing.Point(185, 70);
|
||||
this.reloadButton.Name = "reloadButton";
|
||||
this.reloadButton.Size = new System.Drawing.Size(69, 21);
|
||||
this.reloadButton.TabIndex = 14;
|
||||
this.reloadButton.Text = "Reload";
|
||||
this.reloadButton.UseVisualStyleBackColor = true;
|
||||
this.reloadButton.Click += new System.EventHandler(this.reloadButton_Click);
|
||||
//
|
||||
// pictureBox
|
||||
//
|
||||
this.pictureBox.Location = new System.Drawing.Point(834, 20);
|
||||
this.pictureBox.Name = "pictureBox";
|
||||
this.pictureBox.Size = new System.Drawing.Size(16, 16);
|
||||
this.pictureBox.TabIndex = 15;
|
||||
this.pictureBox.TabStop = false;
|
||||
//
|
||||
// MainForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.SystemColors.ControlLightLight;
|
||||
this.ClientSize = new System.Drawing.Size(1016, 469);
|
||||
this.Controls.Add(this.pictureBox);
|
||||
this.Controls.Add(this.reloadButton);
|
||||
this.Controls.Add(this.editBox);
|
||||
this.Controls.Add(this.saveButton);
|
||||
this.Controls.Add(this.listBox);
|
||||
this.Controls.Add(this.addLineBox);
|
||||
this.Controls.Add(this.addLineButton);
|
||||
this.Controls.Add(this.resultsBox);
|
||||
this.Controls.Add(this.addButton);
|
||||
this.Controls.Add(this.getButton);
|
||||
this.Controls.Add(this.dropdownBox);
|
||||
this.Controls.Add(this.dateBox);
|
||||
this.Controls.Add(this.label3);
|
||||
this.Controls.Add(this.authorBox);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.Name = "MainForm";
|
||||
this.Text = "Add To Changelog";
|
||||
this.Load += new System.EventHandler(this.MainForm_Load);
|
||||
this.Shown += new System.EventHandler(this.MainForm_Shown);
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.TextBox authorBox;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.MaskedTextBox dateBox;
|
||||
private System.Windows.Forms.ComboBox dropdownBox;
|
||||
private System.Windows.Forms.Button getButton;
|
||||
private System.Windows.Forms.Button addButton;
|
||||
private System.Windows.Forms.TextBox resultsBox;
|
||||
private System.Windows.Forms.Button addLineButton;
|
||||
private System.Windows.Forms.TextBox addLineBox;
|
||||
private System.Windows.Forms.TextBox listBox;
|
||||
private System.Windows.Forms.Button saveButton;
|
||||
private System.Windows.Forms.TextBox editBox;
|
||||
private System.Windows.Forms.Button reloadButton;
|
||||
private System.Windows.Forms.PictureBox pictureBox;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,268 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Windows.Forms;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
|
||||
namespace AddToChangelog
|
||||
{
|
||||
public partial class MainForm : Form
|
||||
{
|
||||
|
||||
public string changelogPath = "changelog.html";
|
||||
public string changelogMarker = "#ADDTOCHANGELOGMARKER#";
|
||||
public string longDateFormat = "d MMMM yyyy";
|
||||
public string shortDateFormat = "ddMMyyyy";
|
||||
|
||||
public Dictionary<string, string> ItemList = new Dictionary<string, string>()
|
||||
{
|
||||
{ "Added feature", "rscadd" },
|
||||
{ "Removed feature", "rscdel" },
|
||||
{ "Bugfix", "bugfix" },
|
||||
{ "Work in progress", "wip" },
|
||||
{ "Tweak", "tweak" },
|
||||
{ "Experimental feature", "experiment" },
|
||||
{ "Added icon", "imageadd" },
|
||||
{ "Removed icon", "imagedel" },
|
||||
{ "Added sound", "soundadd" },
|
||||
{ "Removed sound", "sounddel" }
|
||||
};
|
||||
|
||||
public Dictionary<string, Bitmap> ImageList = new Dictionary<string, Bitmap>();
|
||||
|
||||
public MainForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.dropdownBox.SelectedIndex = 0;
|
||||
this.dateBox.Text = DateTime.Now.ToString(shortDateFormat);
|
||||
this.listBox.Text = "# Enter your logs in the text box above and it'll be parsed into here. You can use 'Get HTML' to format it for the changelog. You can also use Lazy Add to automatically add the logs to the changelog, no effort needed (just remember to save)! Below is the changelog, you can edit and save it from here to easily fix mistakes. Save will save the changelog below, reload will undo any unsaved changes.";
|
||||
}
|
||||
|
||||
public void SaveChangelog()
|
||||
{
|
||||
DialogResult dialogResult = MessageBox.Show("Are you sure?", "Confirm", MessageBoxButtons.YesNo);
|
||||
if (dialogResult == DialogResult.Yes)
|
||||
{
|
||||
try
|
||||
{
|
||||
File.WriteAllText(changelogPath, editBox.Text);
|
||||
}
|
||||
catch
|
||||
{
|
||||
MessageBox.Show("Could not find '" + changelogPath + "'. Please place me on the same folder as " + changelogPath + ".");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void ScrollToMarker()
|
||||
{
|
||||
int selection = editBox.Text.IndexOf(changelogMarker);
|
||||
if (selection > 0)
|
||||
{
|
||||
// Hacky way to scroll the edit text box to the beginning of the changelog entries
|
||||
this.ActiveControl = editBox;
|
||||
this.Refresh();
|
||||
editBox.SelectionStart = editBox.Text.Length - 1;
|
||||
editBox.SelectionLength = 0;
|
||||
editBox.ScrollToCaret();
|
||||
editBox.SelectionStart = selection - 2;
|
||||
editBox.ScrollToCaret();
|
||||
}
|
||||
}
|
||||
|
||||
// Load up the changelog
|
||||
|
||||
public void ReadChangelog()
|
||||
{
|
||||
try
|
||||
{
|
||||
string changelog = File.ReadAllText(changelogPath);
|
||||
editBox.Text = changelog;
|
||||
ScrollToMarker();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
MessageBox.Show("Could not find '" + changelogPath + "'. Please place me on the same folder as " + changelogPath + "." + e);
|
||||
}
|
||||
}
|
||||
|
||||
// Get the log notes
|
||||
|
||||
public string GetHTMLLines()
|
||||
{
|
||||
StringReader stringReader = new StringReader(listBox.Text);
|
||||
string html = "";
|
||||
string aLine = "";
|
||||
|
||||
do
|
||||
{
|
||||
aLine = stringReader.ReadLine();
|
||||
if (aLine != null)
|
||||
{
|
||||
// remove < and >
|
||||
if (aLine.StartsWith("<") && aLine.Contains(">"))
|
||||
{
|
||||
string tag = aLine.Substring(1, aLine.IndexOf(">") - 1); // extract the tag
|
||||
aLine = aLine.Substring(aLine.IndexOf(">") + 1); // now remove the tag from the line
|
||||
aLine = "\t\t<li class='" + tag + "'>" + aLine + "</li>\r\n"; // give html
|
||||
}
|
||||
else
|
||||
{
|
||||
aLine = "\t\t<li class='rscadd'>" + aLine + "</li>\r\n";
|
||||
}
|
||||
|
||||
html += aLine;
|
||||
}
|
||||
|
||||
} while (aLine != null);
|
||||
|
||||
return html;
|
||||
}
|
||||
|
||||
private void addLineButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (addLineBox.Text == "")
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
string textAdd = this.addLineBox.Text;
|
||||
string listItem = this.dropdownBox.SelectedItem.ToString();
|
||||
string itemClass = ItemList[listItem];
|
||||
|
||||
if (itemClass == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (listBox.Text.StartsWith("#"))
|
||||
{
|
||||
listBox.Text = "";
|
||||
}
|
||||
|
||||
listBox.Text += "<" + itemClass + ">" + textAdd + "\r\n";
|
||||
addLineBox.Text = "";
|
||||
|
||||
}
|
||||
|
||||
private void getButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (listBox.Text != "")
|
||||
{
|
||||
DateTime dateTime;
|
||||
if (!DateTime.TryParse(dateBox.Text, out dateTime))
|
||||
{
|
||||
MessageBox.Show("Invalid date time.");
|
||||
return;
|
||||
}
|
||||
|
||||
resultsBox.Text = "<div class='commit sansserif'>\r\n";
|
||||
resultsBox.Text += "\t<h2 class='date'>" + dateTime.ToString(longDateFormat) + "</h2>\r\n";
|
||||
resultsBox.Text += "\t<h3 class='author'>" + authorBox.Text + " updated:</h3>\r\n";
|
||||
resultsBox.Text += "\t<ul class='changes bgimages16'>\r\n";
|
||||
resultsBox.Text += GetHTMLLines();
|
||||
resultsBox.Text += "\t</ul>\r\n";
|
||||
resultsBox.Text += "</div>";
|
||||
}
|
||||
}
|
||||
|
||||
// Automatically add to changelog
|
||||
|
||||
private void addButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (resultsBox.Text == "")
|
||||
{
|
||||
getButton_Click(this, EventArgs.Empty);
|
||||
}
|
||||
|
||||
if (resultsBox.Text == "")
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
string html = resultsBox.Text;
|
||||
|
||||
string[] changelogFile = null;
|
||||
|
||||
changelogFile = Regex.Split(editBox.Text, "\r\n");
|
||||
|
||||
if (changelogFile != null)
|
||||
{
|
||||
bool foundMarker = false;
|
||||
for (int i = 0; i < changelogFile.Length; i++)
|
||||
{
|
||||
if (foundMarker == false)
|
||||
{
|
||||
string line = changelogFile[i];
|
||||
if (line.Contains(changelogMarker))
|
||||
{
|
||||
line += "\r\n\r\n";
|
||||
line += resultsBox.Text;
|
||||
line += "\r\n";
|
||||
changelogFile[i] = line;
|
||||
foundMarker = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (foundMarker == false)
|
||||
{
|
||||
MessageBox.Show("Could not find '#ADDTOCHANGELOGMARKER#' in '" + changelogPath + "'. Please place one above where the changelog entries start, inside a comment.");
|
||||
}
|
||||
else
|
||||
{
|
||||
editBox.Text = String.Join("\r\n", changelogFile);
|
||||
ScrollToMarker();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void saveButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
SaveChangelog();
|
||||
}
|
||||
|
||||
private void reloadButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
ReadChangelog();
|
||||
}
|
||||
|
||||
private void MainForm_Shown(object sender, EventArgs e)
|
||||
{
|
||||
ReadChangelog();
|
||||
}
|
||||
|
||||
private void dropdownBox_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
// Change the image to reflect the drop down box selection
|
||||
if (ImageList.Count > 0)
|
||||
{
|
||||
string value = ItemList[dropdownBox.SelectedItem.ToString()];
|
||||
pictureBox.Image = ImageList[value];
|
||||
}
|
||||
}
|
||||
|
||||
private void MainForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
// Get our embedded images. Use our dictionaries to help.
|
||||
foreach (string value in ItemList.Values)
|
||||
{
|
||||
Assembly myAssembly = Assembly.GetExecutingAssembly();
|
||||
Stream myStream = myAssembly.GetManifestResourceStream("AddToChangelog." + value + ".png");
|
||||
Bitmap image = new Bitmap(myStream);
|
||||
|
||||
ImageList.Add(value, image);
|
||||
}
|
||||
|
||||
pictureBox.Image = ImageList["rscadd"];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace AddToChangelog
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
/// <summary>
|
||||
/// The main entry point for the application.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
Application.Run(new MainForm());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("AddToChangelog")]
|
||||
[assembly: AssemblyDescription("An open source application designed to allow the /tg/station open source project to easily add changelog notes to the changelog.html file.")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Nanotrasen")]
|
||||
[assembly: AssemblyProduct("AddToChangelog")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2013")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("3f069aeb-901f-4fc0-8104-29da028252dc")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
@@ -1,71 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.296
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace AddToChangelog.Properties
|
||||
{
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources
|
||||
{
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager
|
||||
{
|
||||
get
|
||||
{
|
||||
if ((resourceMan == null))
|
||||
{
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AddToChangelog.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture
|
||||
{
|
||||
get
|
||||
{
|
||||
return resourceCulture;
|
||||
}
|
||||
set
|
||||
{
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,117 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
@@ -1,30 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.296
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace AddToChangelog.Properties
|
||||
{
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
|
||||
{
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default
|
||||
{
|
||||
get
|
||||
{
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
||||
|
Before Width: | Height: | Size: 657 B |
|
Before Width: | Height: | Size: 104 KiB |
|
Before Width: | Height: | Size: 727 B |
|
Before Width: | Height: | Size: 580 B |
|
Before Width: | Height: | Size: 535 B |
|
Before Width: | Height: | Size: 660 B |
|
Before Width: | Height: | Size: 651 B |
|
Before Width: | Height: | Size: 462 B |
|
Before Width: | Height: | Size: 403 B |
|
Before Width: | Height: | Size: 684 B |
|
Before Width: | Height: | Size: 678 B |
|
Before Width: | Height: | Size: 19 KiB |