diff --git a/.gitignore b/.gitignore index 3d68fa7..b6afbc1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ dist/* -pesterchum.spec *.sw? *~ logs/* diff --git a/PCskins.png b/PCskins.png new file mode 100755 index 0000000..da83820 Binary files /dev/null and b/PCskins.png differ diff --git a/Pesterchum.png b/Pesterchum.png new file mode 100755 index 0000000..4e76f52 Binary files /dev/null and b/Pesterchum.png differ diff --git a/README-karxi.mkdn b/README-karxi.mkdn new file mode 100755 index 0000000..a2a86ce --- /dev/null +++ b/README-karxi.mkdn @@ -0,0 +1,184 @@ +Welcome to Pesterchum 3.41! +============================= + +## FOR NEW USERS +This modification of Pesterchum is intended for people who are already familiar +with using the base client. + +If you aren't, please check the standard build's [documentation][pchum-doc]. + +[pchum-orig]: https://github.com/illuminatedwax/pesterchum +[pchum-doc]: https://github.com/illuminatedwax/pesterchum/blob/master/README.mkdn + +## FOR EVERYONE ELSE +Greetings! This is a modification of Pesterchum, made because Pesterchum is +effectively no longer maintained, that is intended to fix a number of issues. + +The code used as a base is a newer version of Pesterchum than the one in +circulation, and thus has plenty of useful features that can be found in the +[CHANGELOG][changes]. + +In addition, there are other features and improvements that have been made, and +there are many more planned. Check the [TODO list][todo-done] to see what's +been fixed, as well as what's [planned][todo-upcoming]. + +[changes]: https://github.com/karxi/pesterchum/blob/master/CHANGELOG.mkdn +[todo-done]: https://github.com/karxi/pesterchum/blob/master/TODO.mkdn#tododone +[todo-upcoming]: https://github.com/karxi/pesterchum/blob/master/TODO.mkdn#features + +### Installation +There isn't an automated installer yet, but the steps involved aren't all that +difficult. + +#### Pitfalls +* If you're on a 64-bit system (and most are these days), use those links. You + can also use the 32 bit versions, if you choose, but you *cannot* mix them. +* If you're on a 32-bit system but use the 64-bit installers, you'll get an + error along the lines of "not a valid Win32 application", or the + installer will simply fail. +* This version of Pesterchum does not come compiled as an executable, and thus + does not have Python/PyQt4 packaged with it. Those are necessary for + Pesterchum to run, so you have to install them manually. + +#### First-Time Install +Download links are for Windows, but a quick Google search will find everything +necessary. + +1. Install **Python 2.7** or higher if you don't already have it: + * [32 bit][python2-32] + * [64 bit][python2-64] + + Be **sure** to add Python to the PATH if asked to do so during + installation. It means Python will be usable from the console, + which is necessary for this to run. + +2. Install **PyQt4**: + * [32 bit][pyqt4-32] + * [64 bit][pyqt4-64] + +3. **(LINUX)** Install **pygame**: + * [pygame download page][pygame-dl] + * You don't need to install this if you're using Windows. Linux users need + to install it to enable sound, but it will otherwise work without it. + * If you want to download this, you should probably do so using your native + package manager. + +4. Download **Pesterchum**: + * [Download from main branch][pchum-zip] + +5. Unzip Pesterchum somewhere easily-accessible. + +6. **If you have any custom themes**, copy/paste them into the 'themes' folder. + You can find this in `%LOCALAPPDATA%\pesterchum`, which is the same as + `%APPDATA%\..\Local\pesterchum`. Copy/paste one into Explorer's address bar + and you'll end up where you need to be. + + Oftentimes the 'themes' folder doesn't exist in Pesterchum's user-specific + config folder, so you'll have to make it and copy the custom themes into + it. + + __If, for some reason, that doesn't work:__ + + You can also copy the missing themes into the 'themes' folder of the version + you just unzipped. **Don't overwrite any files** if you do this - the themes + used by this have been updated, and the older default themes may break when + used. + +7. Run Pesterchum! How you do this depends on the OS: + * **(WINDOWS)** Run `w32-run-pchum.bat`. + * **(LINUX)** Run `./pesterchum`, preferably via terminal. + * Note that this is made to provide debugging information - so that if + errors come up, they can be reported to me, and I can fix them. + +[python2-32]: https://www.python.org/ftp/python/2.7.12/python-2.7.12.msi +[python2-64]: https://www.python.org/ftp/python/2.7.12/python-2.7.12.amd64.msi +[pyqt4-32]: http://sourceforge.net/projects/pyqt/files/PyQt4/PyQt-4.11.4/PyQt4-4.11.4-gpl-Py2.7-Qt4.8.7-x32.exe +[pyqt4-64]: http://sourceforge.net/projects/pyqt/files/PyQt4/PyQt-4.11.4/PyQt4-4.11.4-gpl-Py2.7-Qt4.8.7-x64.exe +[pygame-dl]: http://www.pygame.org/download.shtml +[pchum-zip]: https://github.com/karxi/pesterchum/archive/master.zip + +#### Upgrading +**NOTE: This only applies to those who already have this patched Pesterchum +installed.** +**DO NOT extract this into a folder containing pesterchum.exe, because it WILL +break.** Read up to **First-Time Install** if you're installing this version +for the first time. +Otherwise... + +Just re-download the [Pesterchum zip][pchum-zip] and extract it over your old +installation, replacing everything that was already there. That's all there is +to it! + +#### Having Problems? +I can't offer much help in this regard; if you're getting errors, feel free to +try to contact me, but if you're having trouble with the installers, there's +little I can do. [How to install Python][howtogetpython] might help; failing +that, Google saves lives. + +[howtogetpython]: http://www.howtogeek.com/197947/how-to-install-python-on-windows/ + + + +SMILIES +------- +None of the smilies have changed or been added, yet; this list is kept for +posterity and easy reference. + +* `:rancorous:` +* `:apple:` +* `:bathearst:` +* `:cathearst:` +* `:woeful:` +* `:pleasant:` +* `:blueghost:` +* `:slimer:` +* `:candycorn:` +* `:cheer:` +* `:duhjohn:` +* `:datrump:` +* `:facepalm:` +* `:bonk:` +* `:mspa:` +* `:gun:` +* `:cal:` +* `:amazedfirman:` +* `:amazed:` +* `:chummy:` +* `:cool:` +* `:smooth:` +* `:distraughtfirman:` +* `:distraught:` +* `:insolent:` +* `:bemused:` +* `:3:` +* `:mystified:` +* `:pranky:` +* `:tense:` +* `:record:` +* `:squiddle:` +* `:tab:` +* `:beetip:` +* `:flipout:` +* `:befuddled:` +* `:pumpkin:` +* `:trollcool:` +* `:jadecry:` +* `:ecstatic:` +* `:relaxed:` +* `:discontent:` +* `:devious:` +* `:sleek:` +* `:detestful:` +* `:mirthful:` +* `:manipulative:` +* `:vigorous:` +* `:perky:` +* `:acceptant:` +* `:olliesouty:` +* `:billiards:` +* `:billiardslarge:` +* `:whatdidyoudo:` + + + +[modeline]: vim:set autoindent ts=4 sts=4 sw=4 tw=79 expandtab: diff --git a/README-pesterchum.mkdn b/README-pesterchum.mkdn new file mode 100755 index 0000000..6b7c6c4 --- /dev/null +++ b/README-pesterchum.mkdn @@ -0,0 +1,840 @@ +Welcome to Pesterchum 3.41! +============================= + +WHAT'S NEW? +----------- +* Check out the CHANGELOG file to see what's changed! + +What do I do now? +----------------- + +Most questions can be answered by visiting the forums! Go to HELP->HELP +and you'll be transported to the proper thread! + +Here's some tips to help you get started: +----------------------------------------- + +- Some themes can be confusing if you haven't used the program +already! Some hints: + * Trollian: Moods are set by clicking the timelines, and you +can add chums by clicking "Chumproll." Moods correspond to the troll +that would most likely exhibit them. You can go offline by hitting the +"Timelines" menu bar. + + * Gold: Add chums by hitting the two chumpeoples in the upper left +corner. Go offline by clicking the "CHUMHANDLE:" label. + + * Enamel: Add chums by hitting the "CHUMROLL" label. Go offline by +clicking the upper left hand corner. + +- Right-click is your friend! There are useful right click +options on the chumroll, by clicking the chumhandle in a conversation, +online userlist, or the list of memo browsers. + +Cool features: +-------------- + +- Profile switching. Instantly switch profiles, loading your color and +quirks with it. +- Theme switching and creation. So far this comes with a few official +themes! But you can also make your own: just make a new directory in +the themes folder with the proper images and style.js file. The +style.js file will be documented soon, but feel free to poke at it. +- Memos. Memos that are a lot more like the ones in the comic and +allow you to appear at multiple times in one chat. +- Quirks: Prefix, suffix, simple replace, regexp replace (like in +2.5), random replacement, and an auto-mispeller :P +- Chum groups. Organize your chums into collapsible groups for easy +management. +- Block/user list +- Add/block chums directly from a conversation, the userlist, or memo +userlist. +- Timestamps saved in logs and shown in conversations if wanted. +- Logging. Logs are output in bbcode (for easy forum posting), html, +and plain text. +- Logviewer for easy log reading inside Pesterchum +- Idling. You can set yourself idle manually, and the computer will +set it for you after a configurable amount of time. +- Improved /me. Any letters immediately following /me will be +processed correctly. e.g. /me'd rather be fishing -> `-- ghostDunk'd +[GD'D] rather be fishing --` +- Hyperlinks! Now if someone types http://whatever it will turn into a +link you can just click and follow. No more copy/paste. +- Memo links. Link your friends to your memos. +- Smilies. We've added about 30-40 smilies from the forums. There is a +list later on in this readme. +- Submit quotes directly to the Pesterchum QDB! + +FA% +--- +__Q:__ Norton says it has a virus and then deletes it! +__A:__ Read this helpful Norton FAQ: + +Alright, here's a guide to by-passing Norton: + +* First, to download Pesterchum: + 1. Make sure you're on a Moderator account. Moreso for the Norton steps than these ones. + 2. Download the .zip file, not the .exe file. + 3. Unzip the .zip file onto memory. Pesterchum should now be installed. + +* Now, to by-pass Norton: + 1. Make sure you're still on a moderator account. + 2. Open up Norton. + 3. Click on 'Settings' up in the upperright hand corner. + 4. Click on 'Anitivirus', off to the upper left. It has a small image of a needle or something similar off to it's side. + 5. There's a word that reads 'SONAR protection' halfway to the bottomleft. Off to it's right, there's a bar that's half green. Click on the bar. + 6. It will warn you about turning off SONAR. Have it set to turn back on when the system restarts. + 7. If done properly, the background for the main page of Norton(what you saw on steps 2-3) has turned an apocaliptic red. Feel free to close Norton now. Keep in mind to stay off suspicious online sites now. + 8. Open up Pesterchum, and let the chummy convos begin. + +* When finished: + 1. Log off of Pesterchum. LOG OFF, NOT CLOSE IT. + 2. Then, you can either shut off your comp, and Norton will re-enable SONAR, or you can repeat steps 1-5, except turning the red bar green. If done right, Norton will be it's happy color again. + 3, Keep in mind that you must repeat all of this(other than the download) every time you want to get on Pesterchum. + +* Hope this is helpful! + +(This guide brought to you by the slightly combined efforts of empireomega and Xanaomin) + +------------------------------------------------------------------------------------ + +__Q:__ I can't connect because my school/university/network/stolen wifi is blocking my connection! OR I can't seem to connect to the server at all and I'm not running any firewalls! +__A:__ Edit your pesterchum.js file. Open it up in notepad or something, and then edit the beginning so it looks like this: + +``` +{"port": "1413", .... +``` + +where the .... is the rest of the gobbledygook there. + +------------------------------------------------------------------------------------ + +__Q:__ The mood buttons on Pesterchum 6.0 don't match up to what it sets your mood to! What gives? +__A:__ The mood names are just there to look canon. It is intentional. + +------------------------------------------------------------------------------------ + +__Q:__ I'm appearing as offline to 2.5 users/other users appear the wrong +mood? What's happeninggggg +__A:__ The 2.5 people decided to change the mood protocol. When I made +this program, I decided to go with Tinychat's original protocol (and +extend it). So some moods will appear wrong between 2.5 +users. (\*COUGH\*tell them to switch to 3.14\*COUGH\*) + +------------------------------------------------------------------------------------ + +__Q:__ Pesterchum 2.5 users don't get my /me messages correctly! +__A:__ That's because they implemented the /me command differently. + +------------------------------------------------------------------------------------ + +__Q:__ Can we resize the main window? +__A:__ No. This is done so we can offer more flexible UI creation. It's a +lot easier to make themes that look canon this way. + +------------------------------------------------------------------------------------ + +__Q:__ Can we have different chum rolls for different users? +__A:__ No. Instead what we now have crum groups to organize people. + +------------------------------------------------------------------------------------ + +__Q:__ Can we delete profiles? +__A:__ Yes. Go to the profile switcher, choose a profile and press DELETE. + +------------------------------------------------------------------------------------ + +__Q:__ You should make it so you can ban specific time frames in memos. +__A:__ This was too complicated to implement, and I don't have the UI +quite figured out. This will probably go in a future update. + + +DOCUMENTATION +------------- + +STARTING +-------- + +If this is your first time running Pesterchum 3.14, you need to create +a new profile. Just type in your chum handle in the box and click the +color swatch to pick your color. Check the "default" checkbox to make +this your default profile. + +BASIC PESTERING +--------------- + +To begin pestering, first click the "ADD CHUM" button and type in +their pester handle. The handle must be all lower case except for one +capital letter. Once you've added that person, they will appear on +your chumroll. You can double click to begin pestering them, or +right-click to bring up a menu where you can pester them, block them, +or remove them from your chumroll. (Or you can select them and hit +"enter" OR hit the "PESTER" button.) + +Once you begin pestering somebody (or they begin pestering you), it +will bring up the conversation window. Here you can type to your +chum. Also remember that if you right-click on the area just above the +Pesterlog, it will bring up a list of options: Quirks Off will turn +your quirks off, Add Chum will add this chum to your list, and Block +will block them. (Those last two options are useful if you are being +pestered by someone you don't have on your list yet!) + +While pestering your chum, here are some useful features: + +* Type /me to create a system message. "/me facepalms." will generate: + + ``` + -- ghostDunk [GD] facepalms. -- + ``` + + You can also append 's after /me like so: "/me's computer exploded." + + ``` + -- ghostDunk's [GD'S] computer exploded. -- + ``` + + In fact, any characters you type after a /me before the space will + be added: "/meing is the Ghost Nation's official pastime." + + ``` + -- ghostDunking [GDING] is the Ghost Nation's official pastime. -- + ``` + +* Color tags! If you feel the need to talk about The Green Sun or add + some appleberry blast to your conversation, just use color + tags. These work like in TC 1.5: `colored text`. But in + PC 3.14, you can type your color in a lot of different ways: + + - You can use the familiar r,g,b method: + `The Green Sun` + - You can use HTML tags: + `DURR I'M KARKAT AND I'M A HUGE IDIOT` + - You can even use [plain color names](http://en.wikipedia.org/wiki/Web_colors): + `D4V3 TH1S 1S SO D3C4D3NT` + - You don't even have to add the `` if you are lazy. Just use a + new color tag whenever you want to change colors and PC 3.14 will + add the extra tags for you. + +* URLs (anything with `http://` or `www.` in front of it) will automatically be + detected and made into a link you can CLICK. + +* You can also link people to memos by typing "#" and the name of the + menu like so: #R41NBOW_RUMPUS_P4RTYTOWN + Clicking the link will open up the memo select menu. + +* Smilies! There are a list of smilies at the end of this document; + they are based on the MSPA Forum smilies. + +* Don't worry about your quirks screwing up any of the above: PC will + apply your quirks AFTER it figures out color codes, links, smilies, etc. + +* Pressing the up arrow will cycle through a history of your comments, + so if you want to retype something, you can pull it up. + +* You can submit directly to the Pesterchum Quote Database! If you + have a particualarly awesome conversation, you can submit it to the + database by simply highlighting the good part of the conversation, + right clicking it and choosing "Submit to Pesterchum QDB!" + + +MEMOS +----- + +One of the most interesting features to make was the memos, and make +them as close to the comic as I could without actually inventing time +travel. So here is the TIME TUTORIAL: + +* __Joining:__ When you go CLIENT->MEMOS, you'll see a list of memos pop up +-- those are memos people already have open. To join one, just +highlight one of them. If you want to make a new memo, just type it in +the input. If you'd like to make it secret, so that it doesn't appear +in the list, check "HIDDEN CHANNEL". Then, choose what timeframe you +want to appear to be in. So if you wanted to be in the future, you +could move the slider to the right. You can also enter the time +manually. Then hit JOIN. + +* __Explaining time:__ Time in memos, unlike Homestuck, will not be relative +to your position. That is, if you choose 4:13 in the future, you will +not see someone who has set their time as "current" (or "0") in the +past: you will see them as "current" and yourself as "future." This is +because we do not have time travel! Memo time setting is basically an +RP mechanic: you are pretending to be from the future! It will also +help keep everyone straight: everyone will see the same thing! + +* __The time slider:__ The slider shows your current position in the time +stream. If you want to change your time frame, simply move the slider +(or type a time in) and hit GO. This will open a new time frame, and +the next time you type a message, the memo will show that you've +responded to it in that time frame. You can now switch between your +time frames simply by clicking the arrows in the right hand +corner. (THIS COMES IN HANDY IF YOU WANT TO ARGUE WITH YOURSELF.) You +can have any number of open time frames, and the program will number +them in the order in which you open them (like in the comic). You can +have one of your time frames cease responding to the memo by hitting +"CLOSE." If you open that time frame again, the program will remember +the number it originally gave it. If you want to be mysteeeeeeeerious, +you can type in "?" and you will appear as ???. + +* __The memo viewer list:__ To the right is a list of people currently +browsing the memo. A shade icon next to their name means they are the +"operator" of the memo: meaning they can kick ("ban") people from the +memo and make other people operators as well. A "ban" is not permanent +(like in the comic), and the program will ask if you want to reconnect +to the memo. You kick and op people by right clicking their name in +the window. You can also add them to your chumroll! + +* __Inviting people to your memo:__ You can link to a memo by simply typing +"#nameofmemo" in any conversation or memo window. So you can say: + + ``` + CG: NOW YOU, ME, AND EGBERT NEED TO HAVE A CHAT. + CG: CLICK IT. + CG: #FRUITYRUMPUSASSHOLEFACTORY + ``` + + and it will appear as a link that you can click, which will open the + memo chooser window. + +CLIENT MENU +----------- + +### OPTIONS: ### + +* __Chum List__ + * __Hide Offline Chums:__ Turning this option on will hide all offline chums + off your chumroll. + + * __Show Empty Groups:__ Turning this option on will show empty groups. + + * __Show Number of Online Chums:__ Show number of online chums in each group. + + * __Sort Chums:__ How would you like your chums sorted? + +* __Conversations__ + * __Time Stamps:__ Turning this on will show timestamps in your chats. + + * __12/24 hour:__ Formatting for timestamps. Whether you want them in 12 or + 24 hour time. + + * __Show Seconds:__ Turning this on will show the seconds in your timestamps. + + * __Show OP and Voice Messages in Memos:__ Whether or not you would like + to see messages when people gain/lose OP or Voice. + + * __Use animated smilies:__ To animate or not to animate. + +* __Interface__ + * __Tabbed Conversations:__ Turns tabbed conversations on and off. Don't + worry if you do this in the middle of a conversation, PC will save + them for you. + + * __Minimize:__ What do you want the minimize button to do? + + * __Close:__ What do you want the close button to do? + +* __Sound__ + * __Sounds On:__ Uncheck to shut it the fuck up. + + * __Pester Sounds:__ Uncheck to only turn off Pester sounds. + + * __Memo Sounds:__ Uncheck to only turn off Memo sounds. + + * __Memo Mentions:__ Check to have a separate noise when your initials + get mentioned in a memo. + +* __Logging__ + * __Log all Pesters:__ Log one-on-one chats. + + * __Log all Memos:__ Log everything said in memos. + + * __Log Time Stamps for Pesters__ + + * __Log Time Stamps for Memos__ + +* __Idle/Updates__ + * __Minutes before Idle:__ How long before you should be considered idle. + + * __Check for Pesterchum Updates:__ How often to check for updates + to Pesterchum. + + * __Check for MSPA Updates:__ Check the MSPA site for updates to comics. + +* __Theme__ + * __Pick a Theme__ + +### MEMOS: ### + +Opens the Memo list as above. + +### USERLIST: ### + +Shows a list of all the users that are currently logged onto +Pesterchum. Right-click their names and select "ADD CHUM" to add them +to your chum roll! + +### IDLE: ### + +Make yourself an idle chum. You will appear as idle until you +uncheck this box, or if you *actually* go idle (stop using the +computer) for 10 minutes and then come back. + +### IMPORT: ### + +Imports your old Pesterchum 2.0, 2.5 and Tinychum chum +rolls. This will also import your old quirks from Pesterchum 2.5. + +### RECONNECT: ### + +Forces PC to reconnect to the server. + +### EXIT: ### + +noooooooooooooooooooooooo + + +PROFILE MENU +------------ + +### QUIRKS: ### + +Opens the quirks menu. More on that below! + +### TROLLSLUM: ### + +Opens up the window where you can view people you've +blocked. You can add and remove people to the list from here as well. + +### COLOR: #### + +Change your text color here! + +### SWITCH: ### + +Switch your profile! You can have any number of profiles, and +PC will save your color, quirks, and theme for that profile. Chumrolls +and block lists are the same for all profiles. Feel free to have +multiple instances of PC running on two or more handles! + + +HELP MENU +--------- + +### HELP: ### + +Get taken to a handy dandy tutorial for Pesterchum! + +### CALSPRITE: ### + +Open a chat with calSprite (learn more about calSprite below). + +### NICKSERV: ### + +Open a chat with NickServ. If you don't know what NickServ is, you don't need to. + +### ABOUT: ### + +See which version of Pesterchum you have. Learn about all the awesome people +that helped bring Pesterchum 3.14 to you! + +### REPORT BUG: ### + +Report any bugs you come across so we can fix them and make Pesterchum +even better! + + +CALSPRITE +--------- + +calSprite is the bot that helps moderate canon handle usage! Simply pester +calSprite with the world "HELP" (turn your quirks off!) and you +will get instructions on how to use calSprite! + + +QUIRKS +------ + +There are six kinds of quirks! I'll teach you how to use them all! +(In this section, I will use quotes ("") around things so it's clearer +to see exactly what to type! Don't include these quotes when using +these examples! + +Also, note that your quirks will not work until you save them by +hitting "OK" on the Quirk window. + +* __Prefix/Suffix:__ + This will put text before or after everything you + say. So for example, we can use prefixes to emulate part of Nepeta or + Equius' quirks: + + ``` + PREFIX: ":33 < " + You type: "*ac twitches her friendly whiskers at ct*" + Result: + AC: :33 < *ac twitches her friendly whiskers at ct* + ``` + + ``` + PREFIX: "D --> " + You type: "Hi" + Result: + CT: D --> Hi + ``` + + Suffixes work the same way, but at the end of the message: + + ``` + SUFFIX: "!!!" + You type: hey there + Result: + GD: hey there!!! + ``` + + Remember that it doesn't automatically add a space! You'll need to add + it in (see CT and AC examples again!) + +* __Simple Replace:__ +This will simply take a set of characters and replace them with other +characters. + * Let's add a quirk to our Nepeta: + + ``` + Replace: "ee" With: "33" + You type: "*ac saunters from her dark cave a little bit sleepy from + the recent kill*" + Result: + AC: :33 < *ac saunters from her dark cave a little bit sl33py from the + recent kill* + ``` + + * Let's add two to Equius: + + ``` + Replace: "loo" With: "100" + Replace: "x" With "%" + You type: "look" + Result: + CT: D --> 100k + ``` + + ``` + You type: "What are you expecting to accomplish with this" + Result: + CT: D --> What are you e%pecting to accomplish with this + ``` + + * Aradia: + + ``` + Replace: "o" With: "0" + You type: "and the reward would be within our reach" + Result: + AA: and the reward w0uld be within 0ur reach + ``` + + Notice that it is CASE SENSITIVE. So in the above case, if you typed + "ABSCOND", it would not replace the "O". + + * Sollux: + + ``` + Replace: "i" With: "ii" + Replace: "s" With: "2" + ``` + + * Eridan: + + ``` + Replace: "v" With: "vv" + Replace: "w" With: "ww" + ``` + + * Feferi: + + ``` + Replace: "h" with: ")(" + Replace: "H" with: ")(" + Replace: "E" with: "-E" + ``` + +* __Regexp Replace:__ +This is a more complex kind of replacement. [Regexp](http://en.wikipedia.org/wiki/Regexp) +stands for "regular expression", a kind of programming language (yes, it is a language) +used to find and replace text. PC 3.14 also includes a few functions (`upper()`, +`lower()`, `scramble()`). If you want to learn it on your own, +I suggest you start with the [Python tutorial](http://docs.python.org/howto/regex.html) +since PC 3.14 uses Python's regexps. Check out V2.5's tutorial too, as that is a pretty +good start as well. + + * Let's start with Karkat. Regexps are just like your every day find and + replace: they search for a string that matches what you want to + replace, and replaces it with... the replacement. + + ``` + Regexp: "(.)" Replace with: "upper(\1)" + ``` + + Three concepts here. Let's look at the regexp. "(.)" has two things + going on. The first is that ".". In regexp speak, "." is the wildcard: + it will match *any* character -- and just one. + + The parentheses tell the regexp to *save* what's inside them so you + can put it back when you replace. That's what the "\1" is for -- it + means, "put the match inside parentheses #1 here". You can have any + number of parentheses. + + * __"upper()"__ is a function special to PC 3.14 -- it will uppercase + anything inside the parentheses. So in this case, upper will uppercase + "\1" -- which, as you recall is what we found inside the + parentheses. Which was *every* character. So to sum up, it replaces + every character with an uppercase version of that character. WHICH + MAKES YOU TALK LIKE THIS. + + * Let's look at Terezi next. + + ``` + Regexp: "[aA]" Replace with: "4" + Regexp: "[iI]" Replace with: "1" + Regexp: "[eE]" Replace with: "3" + Regexp: "(.)" Replace with: "upper(\1)" + ``` + + We already know what the last line does. But what's up with those + brackets? What's their deal? Basically, in regular expressions, + brackets indicate a list of matching characters. So, basically any + single character within the brackets will be matched. In this case, + either "a" or "A" will be matched and replaced with "4," and likewise, + "i" and "I" will be replaced with "1", and "e" and "E" will be + replaced with "3." + + Just like there is an `upper()` function, there is also a `lower()` + function. It acts just like `upper()` but instead makes everything + inside the parentheses lowercase. This allows you to do things like: + + ``` + Regexp: "(.)" Replace with: "lower(\1)" + You type: "I AM YELLING" + Result: + GD: i am yelling + ``` + + Along with the upper and lower functions is a `scramble()` function. + The purpose of this function is to randomly scramble anything inside + the parentheses. + + ``` + Regexp: "(\w)(\w*)(\w)" Replace with: "\1scramble(\2)\3" + You type: "hello there" + Result: + GD: hlelo trhee + ``` + + This particular regular expression scrambles all of the letters in + the middle of a word. Notice that the "h" and "o" at the beginning + and end of hello remain in place while the other letters are scrambled. + + You should also know that "^" is a special character in brackets. If + placed immediately after the opening bracket (like "[^"), then the + brackets instead match every character *except* the ones in the + brackets. So, for example, if you wanted to have a quirk where you + capitalized all your letters *except* o, you'd do this: + + ``` + Regexp: "([^o])" Replace with: "upper(\1)" + You type: "hello there" + Result: + GD: HELLo THERE + ``` + + You can also specify a *range* of characters inside the brackets, by + using the "-" character. [a-z] will match any lowercase letter. You + can combine them, too: [a-z0-9] will match any digit and lowercase letter. + + There are also different shortcuts for character types: + + ``` + \d matches any digit; same as [0-9] + \D matches any non-digit; same as [^0-9] + \s matches any spaces + \S matches any non-space + \w matches any alphanumeric character; same as [a-zA-Z0-9_] + \W matches any non-alphanumeric character; same as [^a-zA-Z0-9_] + + Note \w and \W also match extended Latin or Unicode alphanumerics. + ``` + + You can include this inside brackets, too. + + There's also a special character, \\b. What \\b does is make sure that + you are at the beginning or end of a word. + * So with that knowledge, let's try Kanaya: + + ``` + Regexp: \b(\w) Replace with: upper(\1) + You type: "i suggest you come to terms with it" + Result: + GA: I Suggest You Come To Terms With It + ``` + + Another feature of regular expressions is the ability to match + *repeated* characters. There are three repeat characters: the "\*", the + "+", "?", and "{m,n}". They work by playing them after the character, + or character type you want to match. (So, you could say "\s+" or ".*") + + The "\*" character matches ZERO or more of that character. So, for + example, "f\*" would match "", "f" and "ff" -- and any other character! + That's right, every character counts as matching it zero times. Yeah, + it's weird. I suggest you use... + + The "+" character matches ONE or more of that character. So, if we + wanted to have a character that wanted to elongate their s's so that + they used four 's's every time, like sssso, but didn't want to have + eight s's when using words with double s's, like pass, we'd do this: + + ``` + Regexp: "s+" Replace with: "ssss" + You type: "you shall not pass" + Result: + UU: you sssshall not passss + ``` + + As for the other two, I can't really think of any useful quirks to be + made with them. But to let you know, "?" matches either 0 or 1 of that + character, so "trolls?" would match "troll" and "trolls". "{m,n}" + matches between m and n characters. (If you leave out 'n', any number + of characters more than m will be matched: "s{3,}" will match 3 or more 's'.) + So "s{2,4}" will match "ss", "sss", and "ssss" and that's it. + + Also, "?" is equivalent to "{0,1}", "*" is equivalent to "{0,}", and + "+" is equivalent to "{1,}". + + Now with repeating expressions, we can do something like make EVERY + other WORD capitalized: + + ``` + Regexp: "(\w+) (\w+)" Replace with: "upper(\1) \2" + You type: "this is pretty annoying i bet" + Result: + GD: THIS is PRETTY annoying I bet + ``` + + The \1 represents the first word -- which has been matched because the + word is alphanumeric characters, repeated once or more -- and \2 + represents the second word. + + Another operator to use is the "|", which will match more than one set + of characters. For example, "black|red" will match "black" or + "red". If you want to match something in the middle of words, you have + to use parentheses: "(black|red) romance" will match "black romance" + and "red romance". + + Finally, there are the "^" and "$" characters. Yes, we already did the + "^" character, but this is OUTSIDE of brackets, not INSIDE. "^" + matches the beginning of a message, and "$" matches the end of it. You + can use this to make more sophisticated prefix and suffix + behaviors. For example, if we have a quirk that adds "..." to the end + of all our messages, we can set it up so it doesn't do that if we put + punctuation [?!.] at the end. So: + + ``` + Regexp: "([^?!.])$" Replace with: "\1..." + ``` + + This will match the end of any message as long as it doesn't have + "?", "!", or "." at the end. Then it will replace it with whatever the + last character of the sentence was (remember we're replacing it, so we + have to put it back!) and add "..." at the end. + + Careful with the beginning and ending replaces -- if you use more than + one, you may not get what you expect because they will ALL be applied, + one after the other! This is a bug in my opinion, that I plan to fix! + +* __Random replace:__ + Just like the regexp replace, except that instead of just one thing to + replace it with, you give it a list. PC will then choose from that + list randomly. So let's say I want to randomly end my sentences with + either "bro" or "dog": + + ``` + Regexp: "$" Replace with: "bro" and "dog" + ``` + + * You can also imitate Araida's random "ribbits" in between words: + + ``` + Regexp: "\s" Replace with: " ribbit ", " ", " ", " ", " ", " ", etc.... + ``` + + where " " is just a blank space added a bunch of times. (You can see + how many blank spaces you've added by clicking on the list.) You have + to add the spaces because each entry has the same chance of being + selected. (Yes, I know this could be improved.) If you add " ribbit " + and 9 spaces, " ribbit " will have a 1/10 chance of being picked. + + Also note that if you add more than one prefix or more than one + suffix, it will pick randomly from them instead of adding them both! + +* __Mispeller__: +Be careful with thsi one. The mispeller will randomly mispell x% of +the words you type -- where x is the percentage you set the slider +to. I have attempted to mimic SBaHJ mispelling style but whoof knows +what will happen oh god ive created a mosnter + + +SMILIES +------- +Here's a list of smilies: + +* `:rancorous:` +* `:apple:` +* `:bathearst:` +* `:cathearst:` +* `:woeful:` +* `:pleasant:` +* `:blueghost:` +* `:slimer:` +* `:candycorn:` +* `:cheer:` +* `:duhjohn:` +* `:datrump:` +* `:facepalm:` +* `:bonk:` +* `:mspa:` +* `:gun:` +* `:cal:` +* `:amazedfirman:` +* `:amazed:` +* `:chummy:` +* `:cool:` +* `:smooth:` +* `:distraughtfirman:` +* `:distraught:` +* `:insolent:` +* `:bemused:` +* `:3:` +* `:mystified:` +* `:pranky:` +* `:tense:` +* `:record:` +* `:squiddle:` +* `:tab:` +* `:beetip:` +* `:flipout:` +* `:befuddled:` +* `:pumpkin:` +* `:trollcool:` +* `:jadecry:` +* `:ecstatic:` +* `:relaxed:` +* `:discontent:` +* `:devious:` +* `:sleek:` +* `:detestful:` +* `:mirthful:` +* `:manipulative:` +* `:vigorous:` +* `:perky:` +* `:acceptant:` +* `:olliesouty:` +* `:billiards:` +* `:billiardslarge:` +* `:whatdidyoudo:` diff --git a/pesterchum.ico b/pesterchum.ico new file mode 100755 index 0000000..5b8fa1c Binary files /dev/null and b/pesterchum.ico differ diff --git a/pesterchum.spec b/pesterchum.spec new file mode 100644 index 0000000..6e23c73 --- /dev/null +++ b/pesterchum.spec @@ -0,0 +1,48 @@ +# -*- mode: python ; coding: utf-8 -*- + +block_cipher = None + +added_files = [ + ( "quirks", 'quirks' ), + ( "smilies", 'smilies' ), + ( "themes", 'themes' ), + ( "README.md", '.' ), + ( "README-karxi.mkdn", '.' ), + ( "README-pesterchum.mkdn", '.' ), + ( "themes.txt", '.' ), + ( "server.json", '.' ), + ( "PCskins.png", '.' ), + ( "Pesterchum.png", '.' ) + ] + +a = Analysis(['pesterchum.py'], + binaries=[], + datas=added_files, + hiddenimports=[], + hookspath=[], + runtime_hooks=[], + excludes=[], + win_no_prefer_redirects=False, + win_private_assemblies=False, + cipher=block_cipher, + noarchive=False) +pyz = PYZ(a.pure, a.zipped_data, + cipher=block_cipher) +exe = EXE(pyz, + a.scripts, + [], + exclude_binaries=True, + name='pesterchum', + debug=False, + bootloader_ignore_signals=False, + strip=False, + upx=True, + console=True ) +coll = COLLECT(exe, + a.binaries, + a.zipfiles, + a.datas, + strip=False, + upx=True, + upx_exclude=[], + name='pesterchum') diff --git a/setup-py2app.py b/setup-py2app.py deleted file mode 100644 index 8b1e280..0000000 --- a/setup-py2app.py +++ /dev/null @@ -1,54 +0,0 @@ -""" -This is a setup.py script generated by py2applet - -Usage: - python setup.py py2app -""" - -from setuptools import setup -from version import lexVersion - -APP = ['pesterchum.py'] -#DATA_FILES = ['pesterchum.js', 'profiles', 'themes', 'smilies', 'logs'] -DATA_FILES = ['quirks', 'themes', 'smilies'] -# TODO: Grep this version out of version.py -SHORT_VERSION = lexVersion(True) #'3.41.2B5' -LONG_VERSION = lexVersion() #'3.41.2 Beta 5 Bleeding Edge' -OPTIONS = { - 'argv_emulation': False, - 'prefer_ppc': True, - 'includes': [ - 'sip', - 'PyQt4', - 'PyQt4.QtCore', - 'PyQt4.QtGui' - ], - 'excludes': [ - 'PyQt4.QtDesigner', - 'PyQt4.QtNetwork', - 'PyQt4.QtOpenGL', - 'PyQt4.QtScript', - 'PyQt4.QtSql', - 'PyQt4.QtTest', - 'PyQt4.QtWebKit', - 'PyQt4.QtXml', - 'PyQt4.phonon' - ], - 'iconfile': 'trayicon32.icns' - , - 'plist': { - 'NSHumanReadableCopyright': 'GPL v3', - 'CFBundleIdentifier': 'skaianet.Pesterchum', - } -} -setup( - name='Pesterchum', - description='A client for the pesterchum network', - version=LONG_VERSION, - license='GPL v3', - app=APP, - data_files=DATA_FILES, - platforms=['i386', 'x86_64'], - options={'py2app': OPTIONS}, - setup_requires=['py2app'], -) diff --git a/setup32.py b/setup32.py deleted file mode 100644 index e878383..0000000 --- a/setup32.py +++ /dev/null @@ -1,52 +0,0 @@ -# Windows-only cx_freeze setup file -from cx_Freeze import setup, Executable -import sys -import os -import shutil - -from version import _pcVersion - -if sys.platform == "win32": - base = "Win32GUI" - -build_exe_options = { - "includes": ["requests","urllib"], - 'excludes': ['collections.sys', - 'collections._sre', - 'collections._json', - 'collections._locale', - 'collections._struct', - 'collections.array', - 'collections._weakref'], -} - -setup( - name = "Pesterchum", - version = str(_pcVersion), - description = "Pesterchum Alt. 2.0 :)", - options = {"build_exe": build_exe_options}, - executables = [Executable("pesterchum.py", - base=base, - icon="pesterchum.ico", - ), - Executable("pesterchum_debug.py", - base=base, - icon="pesterchum.ico", - )]) - -#if sys.platform == "win32": -# os.rename("build/exe.win32-2.7", "build/pesterchum") - -shutil.copytree("themes", "build/pesterchum/themes") -shutil.copytree("smilies", "build/pesterchum/smilies") -shutil.copytree("quirks", "build/pesterchum/quirks") -#shutil.copy("pesterchum.nsi", "build/pesterchum/") -#shutil.copy("pesterchum-update.nsi", "build/pesterchum/") -#os.mkdir("build/pesterchum/profiles") -#os.mkdir("build/pesterchum/logs") - -#Readme & txt -#shutil.copy("README.md", "build/pesterchum/") -#shutil.copy("README-pesterchum.mkdn", "build/pesterchum/") -#shutil.copy("README-karxi.mkdn", "build/pesterchum/") -#shutil.copy("themes.txt", "build/pesterchum/") diff --git a/themes.txt b/themes.txt new file mode 100755 index 0000000..376ed97 --- /dev/null +++ b/themes.txt @@ -0,0 +1,474 @@ +HOW TO MAKE YOUR OWN THEMES: + +Pesterchum 3.14 themes are very flexible and allow you to create +almost any kind of main window you can imagine (notable exception +being animation). This document should help you make your own themes +or make adjustments to existing themes! + +Try following along with existing themes -- it'll make this document +much less confusing! + +A note on editing existing themes: Don't edit current themes! If you +make changes in the existing themes directory, they *will* be +overwritten when you install any updates. + +CREATING A THEME +---------------- +Every theme is just a separate directory in the "themes" +directory. That directory contains all the images used in that theme +as well as a "style.js" file which is the configuration file for the +theme. + +FORMAT +------ +The theme file is unlike most configuration files. It uses a format +called JSON, which at its core looks like this: + +{"option": "value", "option2": 5, "category": {"option1": [10, 50] } } + +The idea is that it's basically a list of: "name": "value" +separated by commas, inside brackets. So to give another example: + +{"color": "red", "size": 50 } + +means "color" is "red, and "size" is 50. Note that strings should have +quotes around them and numbers should not. You can also make certain +values into categories by making the value a bracketed list, like so: + +{"memos": {"color": "red", "size": 50}, "convos": {"color": "green", "size": 50 } } + +This creates two categories: memos and convos, each with their own +color and size value. Also note that spaces don't really matter. It +helps to indent each category: + +{"memos": {"color": "red", "size": 50"}, + "convos": {"color": "green", "size": 50" } +} + +or even + +{"memos": {"color": "red", + "size": 50" }, + "convos": {"color": "green", + "size": 50" } +} + +SETTINGS +-------- + +INHERITS: You can make writing themes easier on yourself by using the +"inherits" setting. This sets all the settings to be the same as the +inherited theme unless you change it. So you only need to set the +settings you want to change! + +When specifying file locations, you use the term "$path" to represent +the path to the current theme. The program will automatically +subtitute the correct location. + +A note about styles: + +PC3.14 uses Qt's Stylesheets. That means that there are several +options in the style file that use CSS-like options. Most CSS options +are actually available in these settings. See this page for details +about Qt's stylesheets: + +http://doc.qt.nokia.com/latest/stylesheet.html + +and here for how CSS works: + +http://www.w3schools.com/css/default.asp + +If you know CSS, note that there is no cascading or need to type in +tag names. The program does this for you. + +CSS values are like this: + +background:#000000; font: bold; + +with name:value; separated by ";". + +NOTE that if you change a style from a theme you inherited, you MUST +put in all the options the old style had if you want to keep them! + +I'll go over some of the most commonly used options in styles: + +background-color: Self-explanatory. A note, though: colors can be +color names ("black"), standard HTML colors ("#000000") or rgba +(red, green, blue, alpha) values ("rgba(0, 34, 151, 75%)"). + +background-image: Sets the background image to be this image. You +specify the location of the image by using "url(location)". So it +could be: "url($path/background.png)". + +background-repeat: Sets how the background should repeat if the area +is larger than the image. Values are repeat-x, repeat-y, repeat, and +no-repeat. + +border: Sets the border of the item. Should be in the form "Xpx style +color". Example: "border: 2px solid black;" See reference for styles. + +border-top/right/left/bottom: You can specify values for individual +borders the same way by using these. Example: "border-right: 1px solid +#ffff00;" + +border-image: This one is complicated. Basically it's a good way of +having a resizable image with borders. See this page for a good +tutorial: http://www.lrbabe.com/sdoms/borderImage/ + +border-radius: Set this to a certain pixel length to get a rounded +border. Example: "border-radius: 4px;" + +color: The color to make text. Example: "color: #ff0000;" + +font: A shortcut. You can specify most different font properties from +this setting. Read on... + +font-family: A string representing the font name. Be careful as +everyone's computer may not have the same fonts! Popular fonts like +"Arial" are fine. Example: "font-family: 'Arial';" Don't forget the +quotes! + +font-size: A font's size in pixels. Example: "font-size: 12px;" + +font-style: Basically italic or not. Example: "font-style: italic;" + +font-weight: Basically bold or not. Example: "font-weight: bold;" + +margin: Sets the amount of space between this object and other +objects. This is really only useful in memo and conversation +settings. You can set individual margins for right/left/top/bottom +by margin-top/left/right/bottom. Examples: "margin-top: 15px;" "margin: +5px;" + +max/min-height/width: Sets the maximum/minimum height/width for something. + +padding: Same thing as margin, kinda... basically this sets the space +between the outside of the box and the stuff inside it. See +http://doc.qt.nokia.com/latest/stylesheet-customizing.html#the-box-model +for more detail. + +selection-color: The color of the text when an item is +selected. Example: "selection-color: black;" + +selection-background-color: The color of the background of an item +when it is selected. Example: "selection-background-color: white;" + +text-align: Centers, left-justifies, and right-justifies +text. Example: "text-align: center;" + +-------- + +A note about sizes and coordinates: + +Wherever it says "size", Pesterchum expects a value of the form [width, +height], where width and height are NUMBERS. No quotes should be +involved. Example: + +"size": [232,280] + +Same with coordinates, and with coordinates, they are always the +distance away from the top left corner. So [50, 60] would be 50 pixels +to the right and 60 pixels down. + + +OK, onto the main event: + +MAIN +---- + +"main": { .... } + +This is the section that controls the main chum window. + +"style": Sets the style of the main window (as above). This value will +affect other parts of the window. DO NOT put a background image +here. You must set that separately; this is necessary to support +themes that are not square (e.g. gold xl). + +"background-image": Sets the background image. This will define the +shape of your pesterchum! This is your canvas! See the included themes +for examples of what background images look like. + +"size": The size of the window. Usually this is the same as the size +of your background image. + +"icon": The file name of the image you want to appear in the tray and +your taskbar. Example: "icon": "$path/trayicon.png" + +"newmsgicon": The file name of the image that will appear in the tray +when you have a new message. + +"windowtitle": The title of the window. + +"close": Category: + "image": Location of the image of the "X" button. + "loc": The coordinates of the "X" button. +Example: +"close": {"image": "$path/x.png", "loc": [210,2]} + +"minimize": Category. Same as "close" but for the minimize button. + +"menubar": Category. Contains one element: + "style": Style of the main menubar. + +"menu": Category. + "style": Style of each individual menu. + "menuitem": Affects each menu item on the main menu. Usually used + for spacing. + "selected": Style information for when you hover over a menu option. + "loc": Location of the main menubar. + +"sounds": Category. + "alertsound": Path to the alert sound. Should be a wav. + "ceasesound": Path to the sound when people cease pestering. + +"menus": Category. This is where you change the text of the menus. + "client": Category. The client menu. + "_name": The text for the client menu header. + (These are self explanatory:) + "options" + "memos" + "userlist" + "import" + "reconnect" + "idle" + "exit" + "profile": Category. Profile menu. + "_name": Text of the profile menu header. + "switch" + "color" + "theme" + "block" + "quirks" + "help": Category. Help menu. + "_name": Text of the help menu header + "about" + "rclickchumlist": Category. Text for right click menus. + "pester" + "removechum" + "blockchum" + "addchum" + "unblockchum" + "banuser" + "opuser" + "quirksoff" + +"chums": Category. Creates your chumroll, where all the users are. All +of them. + + "style": Style for the chumroll + "loc": Location of the chumroll + "size": Size of the chumroll + "userlistcolor": Default text color of the users + "moods": Category. Contains a list of mood icons and colors; when a + user has that mood, their handle will appear with that icon and text + color. Basically follows the form "mood": { "icon": "$path/file.png", "color": "colorname" } + Moods are: + "chummy", "rancorous", "offline", "pleasant", "distraught", + "pranky", "smooth", "mystified", "amazed", "insolent", "bemused", + "ecstatic", "relaxed", "discontent", "devious", "sleek", + "detestful", "mirthful", "manipulative", "vigorous", "perky", + "acceptant", "protective", "blocked" + (Note: blocked is not technically a "mood", but the icon is used + when you block someone.) + + "trollslum": Category. The settings for the trollslum. + "style": Style for the trollslum. + "size": Size of the window. + "label": Category. Sets the label of the trollslum. + "style": Style of the label. + "text": The text displayed. + "chumroll": Category. + "style": Sets the style for the list of users. + + "mychumhandle": Category. Settings for the text label, the user's + current handle, and color swatch. + "label": Category. + "text": Text of label indicating chumhandle. + "loc": Location of label. + "style": Style of label. + "handle": Category. User's current handle. + "style": Style of handle. + "loc": Location of handle. + "size": Size of handle. + "colorswatch": Category. Color swatch. + "loc": Location of swatch. + "size": Size of swatch. + "text": Text displayed inside swatch. + "currentmood": Location of icon of user's current mood. + + "defaultwindow": Category. + "style": Style of the default window. (Quirks, profile changer, + etc) + + "addchum": Category. Add chum button. + "style": Style of button. + "pressed": Style of button when pressed down. + "loc": Location of button. + "size": Size of button. + "text": Text of button. + The same attributes apply for these categories: + "pester": Button to pester selected user. + "block": Button to block selected user. + + "defaultmood": Default mood of this theme. + "moodlabel": Category. Text label indicating mood buttons. + "style": Style of label. + "loc": Location of label. + "text": Text of label. + + "moods": OK this can get complicated. Basically this is a list of + categories, one for each mood button present in the interface. You + make a list like this example: + +"moods": [{"style": "", "option": "value"}, {"style": "", "option": "value"}] + + The square brackets are important! + Anyway, for each mood, here are the possible settings: + "style": Style of the mood button. + "selected": Style of the mood button when selected. + "loc": Location of the mood button. + "size": Size of the mood button. + "text": Text displayed on the mood button. + "icon": Path to icon displayed on the mood button. + "mood": Mood # of the button. See mood numbers -> mood names index + at the end of this document. + +CONVO SECTION +------------- + +{"main": { ... }, + "convo": { ... } + +This controls the conversation windows. + + "style": Style of the conversation window. Only affects the main + window; does not cascade to the other parts. + "scrollbar": Category. This item is OPTIONAL. It can be a little + complicated: if you add this item, you MUST specify ALL of the + settings yourself. If you don't add this item, it will use default + system scrollbars. If you are inheriting a theme that does have + scrollbar customization and you want to remove it, enter "scrollbar: null". + + Anyway, onto the scrollbar options: + "style": General style of whole scrollbar. + "handle": Style for the handle of the scrollbar. + "downarrow": Style for the down arrow. + "darrowstyle": Generally this is where you set the image of the + down arrow with "image:url($path/downarrow.png)". + "uparrow": Same as down arrow. + "uarrowstyle": Same as darrowstyle but for up arrow. + + "margins": Category. Sets the margins around the contents of the + conversation window. + "top": Top margin + "bottom", "left", "right" + + "size": Initial size of the conversation window. + "chumlabel": Category. The part that says who youre chatting with. + "style": Style for the chumlabel. + "align": Category. + "h": Horizontal alignment + "v": Vertical alignment + "minheight": The minimum height the chum label can be. + "maxheight": The tallest the chum label can be. + "text": The text of the label. Use $handle to represent the name + of the person you're talking to. Example: ":: $handle ::" + + "textarea": Category. The window with the pesterlog in it. + "style": Style of the window. + + "input": Category. The place where you type. + "style": Style of the input area. + + "tabwindow": Category. The window that holds the tabs. + "style": Style of the window. + + "tabs": Category. Style of the tabs in tabbed conversation. + "style": Style of the tabs. + "selectedstyle": Style of the currently selected tabs. + "newmsgcolor": The color the text should turn when you get a new + msg. + "tabstyle": Usually 0. See the Qt Stylesheets for more + information. + + "text": Category. Flavor text for system messages. In the following + examples, the text in all caps will be replaced with these values: + "beganpester": " BEGAN PESTERING at