Added a translatable manual
This commit is contained in:
parent
b9af6ced83
commit
f46033cac5
61
README.md
61
README.md
@ -28,66 +28,9 @@ I have started this effort as an open source project on Feb 13, 2016. Pull requ
|
|||||||
* arrow==0.6
|
* arrow==0.6
|
||||||
* microsofttranslator
|
* microsofttranslator
|
||||||
|
|
||||||
## Running
|
## Documentation
|
||||||
|
|
||||||
Just open the main.py file with the python interpreter. This file is located in the src directory. If you haven't configured your VK account, you will see a dialogue, just press yes and a new dialogue will prompt for an user email or phone number and the password for your account. Take into account that the provided information will be saved in a config file as plain text. This application will need your information for renegotiating the access token when it expires.
|
I am trying to write an updated manual for socializer. It can be found in the documentation folder once the program zip file is uncompressed, or in the manual.md file (in markdown). The idea of this manual is to be updated as socializer receives new features or improvements.
|
||||||
|
|
||||||
Note: Every time you grant access to socializer, probably You will receive an email from VK by telling you that someone has accessed to your account. It means that a new token has been negotiated between VK and socializer by using an authomatic process, you should ignore those advices, unless you receive an email when you are not logged in VK with socializer or other application. You can see your authorised applications in the configuration section in the VK website. New tokens are renegotiated every 24 hours.
|
|
||||||
|
|
||||||
## Main interface
|
|
||||||
|
|
||||||
If you have used [TWBlue](https://github.com/manuelcortez/twblue) before, the socializer's interface is quite similar. Once you have authorised your account, you will see a window with the following elements:
|
|
||||||
|
|
||||||
* A tree view at the left of the window, where you will see the list of buffers (at the moment, there are only five of these: news feed, my wall, my audios, populars and recommended). These buffers are divided in two categories, posts and music. You could expand each category for seeing the child buffers. There are some additional buffers, timelines and chats, wich will be filled with timelines for your friends or with chats, when you start or receive a chat session.
|
|
||||||
* A button for making a post to your wall.
|
|
||||||
* In audio buffers, Two buttons: Play and play all.
|
|
||||||
* A list where you will see the posts for the currently selected buffer.
|
|
||||||
* A status bar where the program will put some useful information about what it's doing at the moment.
|
|
||||||
* And a menu bar, which could be used for making a search for audio files in VK, or check for updates.
|
|
||||||
|
|
||||||
When socializer starts, it will try to load your news items, wall and audios. At the moment there are only a few supported actions for these items:
|
|
||||||
|
|
||||||
* Audio files: You can play the currently selected song, view the song's details (including lyrics, if available), add or remove from your library, and download it to a desired place in your hard drive. You can find audio files in your news feed or in your own audios buffers.
|
|
||||||
* News feed's post: In your news feed buffer, you can press return in any post and socializer will open a new dialogue which can be different, depending in the kind of post you are when the return key was pressed.
|
|
||||||
* At the moment you can't open your wall posts.
|
|
||||||
|
|
||||||
### Making a post
|
|
||||||
|
|
||||||
When you press the post button, a new dialogue will show up. This dialogue allows you to post something in your wall. In this dialogue you have to write a message. You can translate your message and fix your spelling mistakes. Also you can post an URL address, socializer will try to add it as an attachment, so you will not have to worry about this. When you're ready, just press the send button and it'll be done.
|
|
||||||
|
|
||||||
### Working with posts in news feed
|
|
||||||
|
|
||||||
You can press the return key in any post in your news feed for opening a new dialogue with some information. The information and dialogue will be different if you are viewing a friendship's notification (when someone has added some friends), an audio file, or a regular post.
|
|
||||||
|
|
||||||
If you open a regular post in your newsfeed, you will be able to see the comments in a list, indicate if you do like or dislike the post, or add a new comment.
|
|
||||||
|
|
||||||
For friend notifications, you can only view the new added friends in a list and there are some kind of posts that aren't handled. It should be improved.
|
|
||||||
|
|
||||||
### Working with songs
|
|
||||||
|
|
||||||
If you want to play or view audio's details, you'll have to navigate to the tree view, and, using the down arrow, look for "my audios", "populars" or "Recommendations". You will see two more buttons, play and play all. The play button will play the currently selected audio, and the play all button will play audios in the current buffer, starting with the current selected item. You can go to the song's list, look for a desired song and press the play button, or Ctrl+return, which is a keyboard shorcut. Take in to account that there are some keyboard shorcuts that only work in the list of items.
|
|
||||||
|
|
||||||
You can play audio from any buffer, just press ctrl+return for making the audio playback possible.
|
|
||||||
|
|
||||||
If someone has added multiple audios at once to his library, you will see something like this in your newsfeed: "(friend) has added 4 audios: audio 1, audio2, audio3 and audio4". You can press return in the post for opening the audio's details dialogue, where you will be able to see a list with these audios. By default the first detected song is selected, which means that you could read its details by pressing tab, download or add it to your library. If you change the audio in the list, the information will be updated and you will see details and actions will take effect in the new selected audio.
|
|
||||||
|
|
||||||
When an audio file is playing, you can press f5 and f6 for decreasing and increasing volume, respectively, or control+shift+return for play/pause.
|
|
||||||
|
|
||||||
If you want to see some details for the selected audio file, you can do it by pressing the return key. You will be able to read some useful information (title, artist, duration and the lyric, if available). Also you will be able to download the song to your hard drive, you have to press the download button in the details' dialogue.
|
|
||||||
|
|
||||||
When the download starts, you can close the details dialogue and check the status bar in the main window for seeing the current progress.
|
|
||||||
|
|
||||||
## menu Bar
|
|
||||||
|
|
||||||
You can go to the menu bar by pressing ALT. Right now, there are only two menus, buffer and help:
|
|
||||||
|
|
||||||
### Buffer menu
|
|
||||||
|
|
||||||
* New buffer: This submenu allows you to create a new buffer, at the moment, you can create only a kind of buffer, an audio search. The audio search will be located in the music category and will have the last 299 results of your query. It isn't possible to delete the buffers until you restart the client.
|
|
||||||
* Update current buffer: perform an update operation in the selected buffer, which will retrieve the new items.
|
|
||||||
* Remove buffer: Tries to remove the current buffer. It only works with audio searches, because the default buffers shouldn't be removed.
|
|
||||||
|
|
||||||
The help menu is self explanatory.
|
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
|
0
doc/__init__.py
Normal file
0
doc/__init__.py
Normal file
12
doc/application.py
Normal file
12
doc/application.py
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
name = "Socializer"
|
||||||
|
version = "0.13"
|
||||||
|
author = u"Manuel Cortéz"
|
||||||
|
authorEmail = "manuel@manuelcortez.net"
|
||||||
|
copyright = u"Copyright (C) 2016, Manuel cortéz."
|
||||||
|
description = unicode(name+" Is an accessible VK client for Windows.")
|
||||||
|
url = "https://github.com/manuelcortez/socializer"
|
||||||
|
update_url = "https://raw.githubusercontent.com/manuelcortez/socializer/master/update-files/socializer.json"
|
||||||
|
# The short name will be used for detecting translation files. See languageHandler for more details.
|
||||||
|
short_name = "socializer"
|
||||||
|
translators = [u"Valeria K (Russian)", u"Manuel Cortez (Spanish)"]
|
26
doc/documentation_importer.py
Normal file
26
doc/documentation_importer.py
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
""" This script converts the hold documentation (saved in markdown files) in a python file with a list of strings to translate it using gettext."""
|
||||||
|
|
||||||
|
def prepare_documentation_in_file(fileSource, fileDest):
|
||||||
|
""" This takes documentation written in a markdown file and put all the contents in a python file, to create a internationalized documentation.
|
||||||
|
@fileSource str: A markdown(.md) file.
|
||||||
|
@fileDest str: A file where this will put the new strings"""
|
||||||
|
|
||||||
|
f1 = open(fileSource, "r")
|
||||||
|
f2 = open(fileDest, "w")
|
||||||
|
lns = f1.readlines()
|
||||||
|
f2.write("# -*- coding: utf-8 -*-\n")
|
||||||
|
f2.write("documentation = [\n")
|
||||||
|
for i in lns:
|
||||||
|
if "\n" == i[-1]:
|
||||||
|
newvar = "_(u\"\"\"%s\"\"\"),\n" % (i[:-1])
|
||||||
|
else:
|
||||||
|
newvar = "_(u\"\"\"%s\"\"\"),\n" % (i)
|
||||||
|
# print i[-1:]
|
||||||
|
f2.write(newvar)
|
||||||
|
f1.close()
|
||||||
|
f2.write("]")
|
||||||
|
f2.close()
|
||||||
|
|
||||||
|
|
||||||
|
prepare_documentation_in_file("manual.md", "strings.py")
|
41
doc/generator.py
Normal file
41
doc/generator.py
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import markdown
|
||||||
|
import os
|
||||||
|
from codecs import open as _open
|
||||||
|
import languageHandler
|
||||||
|
languageHandler.setLanguage("en")
|
||||||
|
import strings
|
||||||
|
|
||||||
|
# the list of supported language codes of TW Blue
|
||||||
|
languages = ["en"]
|
||||||
|
|
||||||
|
def generate_document(language):
|
||||||
|
reload(languageHandler)
|
||||||
|
languageHandler.setLanguage(language)
|
||||||
|
reload(strings)
|
||||||
|
markdown_file = markdown.markdown("\n".join(strings.documentation[1:]), extensions=["markdown.extensions.toc"])
|
||||||
|
first_html_block = """<!doctype html>
|
||||||
|
<html lang="%s">
|
||||||
|
<head>
|
||||||
|
<title>%s</title>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<header><h1>%s</h1></header>
|
||||||
|
""" % (language, strings.documentation[0], strings.documentation[0])
|
||||||
|
first_html_block = first_html_block+ markdown_file
|
||||||
|
first_html_block = first_html_block + "\n</body>\n</html>"
|
||||||
|
if not os.path.exists(language):
|
||||||
|
os.mkdir(language)
|
||||||
|
mdfile = _open("%s/manual.html" % language, "w", encoding="utf-8")
|
||||||
|
mdfile.write(first_html_block)
|
||||||
|
mdfile.close()
|
||||||
|
|
||||||
|
def create_documentation():
|
||||||
|
print("Creating documentation in the supported languages...\n")
|
||||||
|
for i in languages:
|
||||||
|
print("Creating documentation for: %s" % (i,))
|
||||||
|
generate_document(i)
|
||||||
|
print("Done")
|
||||||
|
|
||||||
|
create_documentation()
|
176
doc/languageHandler.py
Normal file
176
doc/languageHandler.py
Normal file
@ -0,0 +1,176 @@
|
|||||||
|
import __builtin__
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import ctypes
|
||||||
|
import locale
|
||||||
|
import gettext
|
||||||
|
#import paths
|
||||||
|
import platform
|
||||||
|
|
||||||
|
# A fix for the mac locales
|
||||||
|
if platform.system() != 'Windows':
|
||||||
|
if locale.getlocale()[0] is None:
|
||||||
|
locale.setlocale(locale.LC_ALL, 'en_US')
|
||||||
|
|
||||||
|
#a few Windows locale constants
|
||||||
|
LOCALE_SLANGUAGE=0x2
|
||||||
|
LOCALE_SLANGDISPLAYNAME=0x6f
|
||||||
|
|
||||||
|
curLang="en"
|
||||||
|
|
||||||
|
def localeNameToWindowsLCID(localeName):
|
||||||
|
"""Retreave the Windows locale identifier (LCID) for the given locale name
|
||||||
|
@param localeName: a string of 2letterLanguage_2letterCountry or or just 2letterLanguage
|
||||||
|
@type localeName: string
|
||||||
|
@returns: a Windows LCID
|
||||||
|
@rtype: integer
|
||||||
|
"""
|
||||||
|
#Windows Vista is able to convert locale names to LCIDs
|
||||||
|
func_LocaleNameToLCID=getattr(ctypes.windll.kernel32,'LocaleNameToLCID',None)
|
||||||
|
if func_LocaleNameToLCID is not None:
|
||||||
|
localeName=localeName.replace('_','-')
|
||||||
|
LCID=func_LocaleNameToLCID(unicode(localeName),0)
|
||||||
|
else: #Windows doesn't have this functionality, manually search Python's windows_locale dictionary for the LCID
|
||||||
|
localeName=locale.normalize(localeName)
|
||||||
|
if '.' in localeName:
|
||||||
|
localeName=localeName.split('.')[0]
|
||||||
|
LCList=[x[0] for x in locale.windows_locale.iteritems() if x[1]==localeName]
|
||||||
|
if len(LCList)>0:
|
||||||
|
LCID=LCList[0]
|
||||||
|
else:
|
||||||
|
LCID=0
|
||||||
|
return LCID
|
||||||
|
|
||||||
|
def getLanguageDescription(language):
|
||||||
|
"""Finds out the description (localized full name) of a given local name"""
|
||||||
|
desc=None
|
||||||
|
if platform.system() == "Windows":
|
||||||
|
LCID=localeNameToWindowsLCID(language)
|
||||||
|
if LCID!=0:
|
||||||
|
buf=ctypes.create_unicode_buffer(1024)
|
||||||
|
if '_' not in language:
|
||||||
|
res=ctypes.windll.kernel32.GetLocaleInfoW(LCID,LOCALE_SLANGDISPLAYNAME,buf,1024)
|
||||||
|
else:
|
||||||
|
res=0
|
||||||
|
if res==0:
|
||||||
|
res=ctypes.windll.kernel32.GetLocaleInfoW(LCID,LOCALE_SLANGUAGE,buf,1024)
|
||||||
|
desc=buf.value
|
||||||
|
elif platform.system() == "Linux" or not desc:
|
||||||
|
desc={
|
||||||
|
"am":pgettext("languageName","Amharic"),
|
||||||
|
"an":pgettext("languageName","Aragonese"),
|
||||||
|
"es":pgettext("languageName","Spanish"),
|
||||||
|
"pt":pgettext("languageName","Portuguese"),
|
||||||
|
"ru":pgettext("languageName","Russian"),
|
||||||
|
"it":pgettext("languageName","italian"),
|
||||||
|
"tr":pgettext("languageName","Turkey"),
|
||||||
|
"gl":pgettext("languageName","Galician"),
|
||||||
|
"ca":pgettext("languageName","Catala"),
|
||||||
|
"eu":pgettext("languageName","Vasque"),
|
||||||
|
"pl":pgettext("languageName","polish"),
|
||||||
|
"ar":pgettext("languageName","Arabic"),
|
||||||
|
"ne":pgettext("languageName","Nepali"),
|
||||||
|
"sr":pgettext("languageName","Serbian (Latin)"),
|
||||||
|
}.get(language,None)
|
||||||
|
return desc
|
||||||
|
|
||||||
|
def getAvailableLanguages():
|
||||||
|
"""generates a list of locale names, plus their full localized language and country names.
|
||||||
|
@rtype: list of tuples
|
||||||
|
"""
|
||||||
|
#Make a list of all the locales found in NVDA's locale dir
|
||||||
|
l=[x for x in os.listdir("locales") if not x.startswith('.')]
|
||||||
|
l=[x for x in l if os.path.isfile('locales/%s/LC_MESSAGES/socializer-doc.mo' % x)]
|
||||||
|
#Make sure that en (english) is in the list as it may not have any locale files, but is default
|
||||||
|
if 'en' not in l:
|
||||||
|
l.append('en')
|
||||||
|
l.sort()
|
||||||
|
#For each locale, ask Windows for its human readable display name
|
||||||
|
d=[]
|
||||||
|
for i in l:
|
||||||
|
desc=getLanguageDescription(i)
|
||||||
|
label="%s, %s"%(desc,i) if desc else i
|
||||||
|
d.append(label)
|
||||||
|
#include a 'user default, windows' language, which just represents the default language for this user account
|
||||||
|
l.append("system")
|
||||||
|
# Translators: the label for the Windows default NVDA interface language.
|
||||||
|
d.append(_("User default"))
|
||||||
|
#return a zipped up version of both the lists (a list with tuples of locale,label)
|
||||||
|
return zip(l,d)
|
||||||
|
|
||||||
|
def makePgettext(translations):
|
||||||
|
"""Obtaina pgettext function for use with a gettext translations instance.
|
||||||
|
pgettext is used to support message contexts,
|
||||||
|
but Python 2.7's gettext module doesn't support this,
|
||||||
|
so NVDA must provide its own implementation.
|
||||||
|
"""
|
||||||
|
if isinstance(translations, gettext.GNUTranslations):
|
||||||
|
def pgettext(context, message):
|
||||||
|
message = unicode(message)
|
||||||
|
try:
|
||||||
|
# Look up the message with its context.
|
||||||
|
return translations._catalog[u"%s\x04%s" % (context, message)]
|
||||||
|
except KeyError:
|
||||||
|
return message
|
||||||
|
else:
|
||||||
|
def pgettext(context, message):
|
||||||
|
return unicode(message)
|
||||||
|
return pgettext
|
||||||
|
|
||||||
|
def setLanguage(lang):
|
||||||
|
system = platform.system()
|
||||||
|
global curLang
|
||||||
|
try:
|
||||||
|
if lang=="system":
|
||||||
|
if system == "Windows":
|
||||||
|
windowsLCID=ctypes.windll.kernel32.GetUserDefaultUILanguage()
|
||||||
|
localeName=locale.windows_locale[windowsLCID]
|
||||||
|
else:
|
||||||
|
localeName=locale.getlocale()[0]
|
||||||
|
trans=gettext.translation('socializer-doc', localedir="locales", languages=[localeName])
|
||||||
|
curLang=localeName
|
||||||
|
else:
|
||||||
|
trans=gettext.translation("socializer-doc", localedir="locales", languages=[lang])
|
||||||
|
curLang=lang
|
||||||
|
localeChanged=False
|
||||||
|
#Try setting Python's locale to lang
|
||||||
|
try:
|
||||||
|
locale.setlocale(locale.LC_ALL, lang)
|
||||||
|
localeChanged=True
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
if not localeChanged and '_' in lang:
|
||||||
|
#Python couldn'tsupport the language_country locale, just try language.
|
||||||
|
try:
|
||||||
|
locale.setlocale(locale.LC_ALL, lang.split('_')[0])
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
#Set the windows locale for this thread (NVDA core) to this locale.
|
||||||
|
if system == "Windows":
|
||||||
|
LCID=localeNameToWindowsLCID(lang)
|
||||||
|
ctypes.windll.kernel32.SetThreadLocale(LCID)
|
||||||
|
except IOError:
|
||||||
|
trans=gettext.translation("socializer-doc",fallback=True)
|
||||||
|
curLang="en"
|
||||||
|
trans.install(unicode=True)
|
||||||
|
# Install our pgettext function.
|
||||||
|
__builtin__.__dict__["pgettext"] = makePgettext(trans)
|
||||||
|
|
||||||
|
def getLanguage():
|
||||||
|
return curLang
|
||||||
|
|
||||||
|
def normalizeLanguage(lang):
|
||||||
|
"""
|
||||||
|
Normalizes a language-dialect string in to a standard form we can deal with.
|
||||||
|
Converts any dash to underline, and makes sure that language is lowercase and dialect is upercase.
|
||||||
|
"""
|
||||||
|
lang=lang.replace('-','_')
|
||||||
|
ld=lang.split('_')
|
||||||
|
ld[0]=ld[0].lower()
|
||||||
|
#Filter out meta languages such as x-western
|
||||||
|
if ld[0]=='x':
|
||||||
|
return None
|
||||||
|
if len(ld)>=2:
|
||||||
|
ld[1]=ld[1].upper()
|
||||||
|
return "_".join(ld)
|
||||||
|
|
98
doc/manual.md
Normal file
98
doc/manual.md
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
socializer's manual
|
||||||
|
|
||||||
|
## Introduction
|
||||||
|
|
||||||
|
Socializer is an application to use [VK.com](https://vk.com) in an easy and accessible way with minimal CPU resource usage. Socializer will allow you to interact with the VK social network by giving you access to the most relevant features such as:
|
||||||
|
|
||||||
|
* Basic post creation in your wall (including photos).
|
||||||
|
* Audio addition, removal, download and search.
|
||||||
|
* Post comments.
|
||||||
|
* like, unlike and repost other's posts.
|
||||||
|
* Open other's timelines so you could track someone's friends, posts or audio files.
|
||||||
|
* Basic chat features.
|
||||||
|
|
||||||
|
Note: When new features are added to socializer they will be added to this section.
|
||||||
|
|
||||||
|
## Running
|
||||||
|
|
||||||
|
If you are using a built version, unzip the file in a new directory with no special characters, and open the socializer.exe file. If you haven't configured your VK account, you will see a dialogue, just press yes and a new dialogue will prompt for an user email or phone number and the password for your account. Take into account that the provided information will be saved in a config file as plain text. This application will need your information for renegotiating the access token when it expires.
|
||||||
|
|
||||||
|
Note: Every time you grant access to socializer, probably You will receive an email from VK by telling you that someone has accessed to your account. It means that a new token has been negotiated between VK and socializer by using an authomatic process, you should ignore those advices, unless you receive an email when you are not logged in VK with socializer or other application. You can see your authorised applications in the configuration section in the VK website. New tokens are renegotiated every 24 hours.
|
||||||
|
|
||||||
|
## Main interface
|
||||||
|
|
||||||
|
If you have used [TWBlue](https://github.com/manuelcortez/twblue) before, the socializer's interface is quite similar. Once you have authorised your account, you will see a window with the following elements:
|
||||||
|
|
||||||
|
* A tree view at the left of the window, where you will see the list of buffers. These buffers are divided in three categories, posts, music and people. You could expand each category for seeing the child buffers. There are some additional buffers, timelines and chats, wich will be filled with timelines for your friends or with chats, when you start or receive a chat session.
|
||||||
|
* A button for making a post to your wall.
|
||||||
|
* In audio buffers, Two buttons: Play and play all.
|
||||||
|
* A list where you will see the posts for the currently selected buffer.
|
||||||
|
* In people buffers, like the friends buffer, a button for sending a message to your friends. Pressing that button will cause a chat buffer to be created.
|
||||||
|
* A status bar where the program will put some useful information about what it's doing at the moment.
|
||||||
|
* And a menu bar.
|
||||||
|
|
||||||
|
When socializer starts, it will try to load your news items, wall, audios (your audios, recommended and populars) and friends. At the moment there are only a few supported actions for these items:
|
||||||
|
|
||||||
|
* Audio files: You can play the currently selected song, view the song's details (including lyrics, if available), add or remove from your library, and download it to a desired place in your hard drive. You can find audio files in your news feed or in your own audios buffers. You can find audios as post's attachments. You can create an audios timeline for displaying other's audios.
|
||||||
|
* News feed's post: In your news feed buffer, you can press return in any post and socializer will open a new dialogue which can be different, depending in the kind of post you are when the return key was pressed. For example it will open the post if you are focusing a "normal" post, a list of people if you are in a post wich indicates that someone has added friends, an audio displayer if you are in a post wich indicates that someone has added an audio, etc.
|
||||||
|
* Wall posts: It will show the post in a dialogue so you could interact with its attachments, view and post comments, or like/unlike/share the post.
|
||||||
|
* You can send a message to someone by pressing the send message button in the buffer where you are, if available. Deactivated accounts cannot receive messages.
|
||||||
|
|
||||||
|
### Making a post
|
||||||
|
|
||||||
|
When you press the post button, a new dialogue will show up. This dialogue allows you to post something in your wall. In this dialogue you have to write a message. You can translate your message and fix your spelling mistakes. Also you can post an URL address, socializer will try to add it as an attachment, so you will not have to worry about this. When you're ready, just press the send button and it'll be done.
|
||||||
|
|
||||||
|
If you want to add some photos, you can press the attach button, then press the kind of attachment you want to add. After this, select the file you want to add and you will see it in the list, once processed. When you are done with attachments, press the OK button, and continue with your post. When you are ready, press the send button. Your post could take some time to be published, depending in the amount of files you have added, but it should be displayed in your wall and newsfeed as soon as it is posted.
|
||||||
|
|
||||||
|
### Working with posts in news feed
|
||||||
|
|
||||||
|
You can press the return key in any post in your news feed for opening a new dialogue with some information. The information and dialogue will be different if you are viewing a friendship's notification (when someone has added some friends), an audio file, or a regular post.
|
||||||
|
|
||||||
|
If you open a regular post in your newsfeed, you will be able to see the comments in a list, indicate if you do like or dislike the post, repost or add a new comment. If the post has some attachments, you'll find a list populated with them, you can press return in an attachment to execute its default action, wich will be different depending on the kind of attachment that you are viewing.
|
||||||
|
|
||||||
|
For friend notifications, you can only view the new added friends in a list and there are some kind of posts that aren't handled. It should be improved.
|
||||||
|
|
||||||
|
### Working with songs
|
||||||
|
|
||||||
|
Note: the following applies to audio timelines too.
|
||||||
|
|
||||||
|
If you want to play or view audio's details, you'll have to navigate to the tree view, and, using the down arrow, look for "my audios", "populars" or "Recommendations". You will see two more buttons, play and play all. The play button will play the currently selected audio, and the play all button will play audios in the current buffer, starting with the current selected item. You can go to the song's list, look for a desired song and press the play button, or Ctrl+return, which is a keyboard shorcut. Take in to account that there are some keyboard shorcuts that only work in the list of items.
|
||||||
|
|
||||||
|
You can play audio from any buffer, just press ctrl+return for making the audio playback possible.
|
||||||
|
|
||||||
|
If someone has added multiple audios at once to his library, you will see something like this in your newsfeed: "(friend) has added 4 audios: audio 1, audio2, audio3 and audio4". You can press return in the post for opening the audio's details dialogue, where you will be able to see a list with these audios. By default the first detected song is selected, which means that you could read its details by pressing tab, download or add it to your library. If you change the audio in the list, the information will be updated and you will see details and actions will take effect in the new selected audio.
|
||||||
|
|
||||||
|
When an audio file is playing, you can press f5 and f6 for decreasing and increasing volume, respectively, or control+shift+return for play/pause.
|
||||||
|
|
||||||
|
If you want to see some details for the selected audio file, you can do it by pressing the return key. You will be able to read some useful information (title, artist, duration and the lyric, if available). Also you will be able to download the song to your hard drive, you have to press the download button in the details' dialogue.
|
||||||
|
|
||||||
|
When the download starts, you can close the details dialogue and check the status bar in the main window for seeing the current progress.
|
||||||
|
|
||||||
|
Additionally, you can search for audios by using the menu bar, in the buffer menu, select search, then audio. It will display a dialog where you have to set your search preferences.
|
||||||
|
|
||||||
|
## menu Bar
|
||||||
|
|
||||||
|
You can go to the menu bar by pressing ALT. Right now, there are three menus, application, buffer and help:
|
||||||
|
|
||||||
|
### Application menu
|
||||||
|
|
||||||
|
|
||||||
|
* At the moment, you can set your preferences by opening the preferences dialog located in this menu.
|
||||||
|
|
||||||
|
### Buffer menu
|
||||||
|
|
||||||
|
* search: This submenu allows you to create a new buffer, at the moment, you can create only a kind of buffer, an audio search. The audio search will be located in the music category and will have the last 299 results of your query. It isn't possible to delete the buffers until you restart the client.
|
||||||
|
* new timeline: This option allows you to create a new timeline. This kind of buffers is capable of download all posts in an user's profile.
|
||||||
|
* Update current buffer: perform an update operation in the selected buffer, which will retrieve the new items.
|
||||||
|
* Load previous items: Get the previous items for the currently focused buffer.
|
||||||
|
* Remove buffer: Tries to remove the current buffer. It only works with audio searches, because the default buffers shouldn't be removed.
|
||||||
|
|
||||||
|
The help menu is self explanatory.
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
If you notice some errors in this document, or features that are not documented yet, you can suggest those changes by contacting me (more information can be find in the following section).
|
||||||
|
|
||||||
|
## contact
|
||||||
|
|
||||||
|
If you have questions, don't esitate to contact me in [Twitter,](https://twitter.com/manuelcortez00) or sending me an email to manuel(at)manuelcortez(dot)net. Just replace the words in parentheses with the original signs.
|
101
doc/strings.py
Normal file
101
doc/strings.py
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
documentation = [
|
||||||
|
_(u"""socializer's manual """),
|
||||||
|
_(u""""""),
|
||||||
|
_(u"""## Introduction"""),
|
||||||
|
_(u""""""),
|
||||||
|
_(u"""Socializer is an application to use [VK.com](https://vk.com) in an easy and accessible way with minimal CPU resource usage. Socializer will allow you to interact with the VK social network by giving you access to the most relevant features such as:"""),
|
||||||
|
_(u""""""),
|
||||||
|
_(u"""* Basic post creation in your wall (including photos)."""),
|
||||||
|
_(u"""* Audio addition, removal, download and search."""),
|
||||||
|
_(u"""* Post comments."""),
|
||||||
|
_(u"""* like, unlike and repost other's posts."""),
|
||||||
|
_(u"""* Open other's timelines so you could track someone's friends, posts or audio files."""),
|
||||||
|
_(u"""* Basic chat features."""),
|
||||||
|
_(u""""""),
|
||||||
|
_(u"""Note: When new features are added to socializer they will be added to this section."""),
|
||||||
|
_(u""""""),
|
||||||
|
_(u"""## Running"""),
|
||||||
|
_(u""""""),
|
||||||
|
_(u"""If you are using a built version, unzip the file in a new directory with no special characters, and open the socializer.exe file. If you haven't configured your VK account, you will see a dialogue, just press yes and a new dialogue will prompt for an user email or phone number and the password for your account. Take into account that the provided information will be saved in a config file as plain text. This application will need your information for renegotiating the access token when it expires."""),
|
||||||
|
_(u""""""),
|
||||||
|
_(u"""Note: Every time you grant access to socializer, probably You will receive an email from VK by telling you that someone has accessed to your account. It means that a new token has been negotiated between VK and socializer by using an authomatic process, you should ignore those advices, unless you receive an email when you are not logged in VK with socializer or other application. You can see your authorised applications in the configuration section in the VK website. New tokens are renegotiated every 24 hours."""),
|
||||||
|
_(u""""""),
|
||||||
|
_(u"""## Main interface"""),
|
||||||
|
_(u""""""),
|
||||||
|
_(u"""If you have used [TWBlue](https://github.com/manuelcortez/twblue) before, the socializer's interface is quite similar. Once you have authorised your account, you will see a window with the following elements:"""),
|
||||||
|
_(u""""""),
|
||||||
|
_(u"""* A tree view at the left of the window, where you will see the list of buffers. These buffers are divided in three categories, posts, music and people. You could expand each category for seeing the child buffers. There are some additional buffers, timelines and chats, wich will be filled with timelines for your friends or with chats, when you start or receive a chat session."""),
|
||||||
|
_(u"""* A button for making a post to your wall."""),
|
||||||
|
_(u"""* In audio buffers, Two buttons: Play and play all."""),
|
||||||
|
_(u"""* A list where you will see the posts for the currently selected buffer."""),
|
||||||
|
_(u"""* In people buffers, like the friends buffer, a button for sending a message to your friends. Pressing that button will cause a chat buffer to be created."""),
|
||||||
|
_(u"""* A status bar where the program will put some useful information about what it's doing at the moment."""),
|
||||||
|
_(u"""* And a menu bar."""),
|
||||||
|
_(u""""""),
|
||||||
|
_(u"""When socializer starts, it will try to load your news items, wall, audios (your audios, recommended and populars) and friends. At the moment there are only a few supported actions for these items:"""),
|
||||||
|
_(u""""""),
|
||||||
|
_(u"""* Audio files: You can play the currently selected song, view the song's details (including lyrics, if available), add or remove from your library, and download it to a desired place in your hard drive. You can find audio files in your news feed or in your own audios buffers. You can find audios as post's attachments. You can create an audios timeline for displaying other's audios."""),
|
||||||
|
_(u"""* News feed's post: In your news feed buffer, you can press return in any post and socializer will open a new dialogue which can be different, depending in the kind of post you are when the return key was pressed. For example it will open the post if you are focusing a "normal" post, a list of people if you are in a post wich indicates that someone has added friends, an audio displayer if you are in a post wich indicates that someone has added an audio, etc."""),
|
||||||
|
_(u"""* Wall posts: It will show the post in a dialogue so you could interact with its attachments, view and post comments, or like/unlike/share the post."""),
|
||||||
|
_(u"""* You can send a message to someone by pressing the send message button in the buffer where you are, if available. Deactivated accounts cannot receive messages."""),
|
||||||
|
_(u""""""),
|
||||||
|
_(u"""### Making a post"""),
|
||||||
|
_(u""""""),
|
||||||
|
_(u"""When you press the post button, a new dialogue will show up. This dialogue allows you to post something in your wall. In this dialogue you have to write a message. You can translate your message and fix your spelling mistakes. Also you can post an URL address, socializer will try to add it as an attachment, so you will not have to worry about this. When you're ready, just press the send button and it'll be done."""),
|
||||||
|
_(u""""""),
|
||||||
|
_(u"""If you want to add some photos, you can press the attach button, then press the kind of attachment you want to add. After this, select the file you want to add and you will see it in the list, once processed. When you are done with attachments, press the OK button, and continue with your post. When you are ready, press the send button. Your post could take some time to be published, depending in the amount of files you have added, but it should be displayed in your wall and newsfeed as soon as it is posted."""),
|
||||||
|
_(u""""""),
|
||||||
|
_(u"""### Working with posts in news feed"""),
|
||||||
|
_(u""""""),
|
||||||
|
_(u"""You can press the return key in any post in your news feed for opening a new dialogue with some information. The information and dialogue will be different if you are viewing a friendship's notification (when someone has added some friends), an audio file, or a regular post."""),
|
||||||
|
_(u""""""),
|
||||||
|
_(u"""If you open a regular post in your newsfeed, you will be able to see the comments in a list, indicate if you do like or dislike the post, repost or add a new comment. If the post has some attachments, you'll find a list populated with them, you can press return in an attachment to execute its default action, wich will be different depending on the kind of attachment that you are viewing."""),
|
||||||
|
_(u""""""),
|
||||||
|
_(u"""For friend notifications, you can only view the new added friends in a list and there are some kind of posts that aren't handled. It should be improved."""),
|
||||||
|
_(u""""""),
|
||||||
|
_(u"""### Working with songs"""),
|
||||||
|
_(u""""""),
|
||||||
|
_(u"""Note: the following applies to audio timelines too."""),
|
||||||
|
_(u""""""),
|
||||||
|
_(u"""If you want to play or view audio's details, you'll have to navigate to the tree view, and, using the down arrow, look for "my audios", "populars" or "Recommendations". You will see two more buttons, play and play all. The play button will play the currently selected audio, and the play all button will play audios in the current buffer, starting with the current selected item. You can go to the song's list, look for a desired song and press the play button, or Ctrl+return, which is a keyboard shorcut. Take in to account that there are some keyboard shorcuts that only work in the list of items."""),
|
||||||
|
_(u""""""),
|
||||||
|
_(u"""You can play audio from any buffer, just press ctrl+return for making the audio playback possible."""),
|
||||||
|
_(u""""""),
|
||||||
|
_(u"""If someone has added multiple audios at once to his library, you will see something like this in your newsfeed: "(friend) has added 4 audios: audio 1, audio2, audio3 and audio4". You can press return in the post for opening the audio's details dialogue, where you will be able to see a list with these audios. By default the first detected song is selected, which means that you could read its details by pressing tab, download or add it to your library. If you change the audio in the list, the information will be updated and you will see details and actions will take effect in the new selected audio."""),
|
||||||
|
_(u""""""),
|
||||||
|
_(u"""When an audio file is playing, you can press f5 and f6 for decreasing and increasing volume, respectively, or control+shift+return for play/pause."""),
|
||||||
|
_(u""""""),
|
||||||
|
_(u"""If you want to see some details for the selected audio file, you can do it by pressing the return key. You will be able to read some useful information (title, artist, duration and the lyric, if available). Also you will be able to download the song to your hard drive, you have to press the download button in the details' dialogue."""),
|
||||||
|
_(u""""""),
|
||||||
|
_(u"""When the download starts, you can close the details dialogue and check the status bar in the main window for seeing the current progress."""),
|
||||||
|
_(u""""""),
|
||||||
|
_(u"""Additionally, you can search for audios by using the menu bar, in the buffer menu, select search, then audio. It will display a dialog where you have to set your search preferences."""),
|
||||||
|
_(u""""""),
|
||||||
|
_(u"""## menu Bar"""),
|
||||||
|
_(u""""""),
|
||||||
|
_(u"""You can go to the menu bar by pressing ALT. Right now, there are three menus, application, buffer and help:"""),
|
||||||
|
_(u""""""),
|
||||||
|
_(u"""### Application menu"""),
|
||||||
|
_(u""""""),
|
||||||
|
_(u""""""),
|
||||||
|
_(u"""* At the moment, you can set your preferences by opening the preferences dialog located in this menu."""),
|
||||||
|
_(u""""""),
|
||||||
|
_(u"""### Buffer menu"""),
|
||||||
|
_(u""""""),
|
||||||
|
_(u"""* search: This submenu allows you to create a new buffer, at the moment, you can create only a kind of buffer, an audio search. The audio search will be located in the music category and will have the last 299 results of your query. It isn't possible to delete the buffers until you restart the client."""),
|
||||||
|
_(u"""* new timeline: This option allows you to create a new timeline. This kind of buffers is capable of download all posts in an user's profile."""),
|
||||||
|
_(u"""* Update current buffer: perform an update operation in the selected buffer, which will retrieve the new items."""),
|
||||||
|
_(u"""* Load previous items: Get the previous items for the currently focused buffer."""),
|
||||||
|
_(u"""* Remove buffer: Tries to remove the current buffer. It only works with audio searches, because the default buffers shouldn't be removed."""),
|
||||||
|
_(u""""""),
|
||||||
|
_(u"""The help menu is self explanatory."""),
|
||||||
|
_(u""""""),
|
||||||
|
_(u"""## Contributing"""),
|
||||||
|
_(u""""""),
|
||||||
|
_(u"""If you notice some errors in this document, or features that are not documented yet, you can suggest those changes by contacting me (more information can be find in the following section)."""),
|
||||||
|
_(u""""""),
|
||||||
|
_(u"""## contact"""),
|
||||||
|
_(u""""""),
|
||||||
|
_(u"""If you have questions, don't esitate to contact me in [Twitter,](https://twitter.com/manuelcortez00) or sending me an email to manuel(at)manuelcortez(dot)net. Just replace the words in parentheses with the original signs."""),
|
||||||
|
]
|
Loading…
Reference in New Issue
Block a user